summaryrefslogtreecommitdiff
path: root/var
diff options
context:
space:
mode:
Diffstat (limited to 'var')
-rwxr-xr-xvar/spack/repos/builtin/packages/cray-libsci/package.py50
-rw-r--r--var/spack/repos/builtin/packages/mvapich2/package.py30
2 files changed, 66 insertions, 14 deletions
diff --git a/var/spack/repos/builtin/packages/cray-libsci/package.py b/var/spack/repos/builtin/packages/cray-libsci/package.py
index c0313a1e39..d391f471c3 100755
--- a/var/spack/repos/builtin/packages/cray-libsci/package.py
+++ b/var/spack/repos/builtin/packages/cray-libsci/package.py
@@ -2,10 +2,9 @@
# Spack Project Developers. See the top-level COPYRIGHT file for details.
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
-
-from llnl.util.filesystem import LibraryList
-from spack import *
-import os
+from spack.concretize import NoBuildError
+from spack.util.module_cmd import module
+from spack.util.module_cmd import get_path_args_from_module_line
class CrayLibsci(Package):
@@ -22,14 +21,53 @@ class CrayLibsci(Package):
version("16.06.1")
version("16.03.1")
+ variant("shared", default=True, description="enable shared libs")
+ variant("openmp", default=False, description="link with openmp")
+ variant("mpi", default=False, description="link with mpi libs")
+
provides("blas")
provides("lapack")
provides("scalapack")
- # NOTE: Cray compiler wrappers already include linking for the following
+ canonical_names = {
+ 'gcc': 'GNU',
+ 'cce': 'CRAY',
+ 'intel': 'INTEL',
+ }
+
+ @property
+ def modname(self):
+ return "cray-libsci/{0}".format(self.version)
+
+ @property
+ def external_prefix(self):
+ libsci_module = module("show", self.modname).splitlines()
+
+ for line in libsci_module:
+ if "CRAY_LIBSCI_PREFIX_DIR" in line:
+ return get_path_args_from_module_line(line)[0]
+
@property
def blas_libs(self):
- return LibraryList(os.path.join(self.prefix.lib, 'libsci.so'))
+ shared = True if "+shared" in self.spec else False
+ compiler = self.spec.compiler.name
+
+ if "+openmp" in self.spec and "+mpi" in self.spec:
+ lib = "libsci_{0}_mpi_mp"
+ elif "+openmp" in self.spec:
+ lib = "libsci_{0}_mp"
+ elif "+mpi" in self.spec:
+ lib = "libsci_{0}_mpi"
+ else:
+ lib = "libsci_{0}"
+
+ libname = lib.format(self.canonical_names[compiler].lower())
+
+ return find_libraries(
+ libname,
+ root=self.prefix.lib,
+ shared=shared,
+ recursive=False)
@property
def lapack_libs(self):
diff --git a/var/spack/repos/builtin/packages/mvapich2/package.py b/var/spack/repos/builtin/packages/mvapich2/package.py
index f6301a564a..d8398b336d 100644
--- a/var/spack/repos/builtin/packages/mvapich2/package.py
+++ b/var/spack/repos/builtin/packages/mvapich2/package.py
@@ -208,10 +208,17 @@ class Mvapich2(AutotoolsPackage):
env.set('SLURM_MPI_TYPE', 'pmi2')
def setup_dependent_build_environment(self, env, dependent_spec):
- env.set('MPICC', os.path.join(self.prefix.bin, 'mpicc'))
- env.set('MPICXX', os.path.join(self.prefix.bin, 'mpicxx'))
- env.set('MPIF77', os.path.join(self.prefix.bin, 'mpif77'))
- env.set('MPIF90', os.path.join(self.prefix.bin, 'mpif90'))
+ # On Cray, the regular compiler wrappers *are* the MPI wrappers.
+ if 'platform=cray' in self.spec:
+ env.set('MPICC', spack_cc)
+ env.set('MPICXX', spack_cxx)
+ env.set('MPIF77', spack_fc)
+ env.set('MPIF90', spack_fc)
+ else:
+ env.set('MPICC', join_path(self.prefix.bin, 'mpicc'))
+ env.set('MPICXX', join_path(self.prefix.bin, 'mpicxx'))
+ env.set('MPIF77', join_path(self.prefix.bin, 'mpif77'))
+ env.set('MPIF90', join_path(self.prefix.bin, 'mpif90'))
env.set('MPICH_CC', spack_cc)
env.set('MPICH_CXX', spack_cxx)
@@ -220,10 +227,17 @@ class Mvapich2(AutotoolsPackage):
env.set('MPICH_FC', spack_fc)
def setup_dependent_package(self, module, dependent_spec):
- self.spec.mpicc = os.path.join(self.prefix.bin, 'mpicc')
- self.spec.mpicxx = os.path.join(self.prefix.bin, 'mpicxx')
- self.spec.mpifc = os.path.join(self.prefix.bin, 'mpif90')
- self.spec.mpif77 = os.path.join(self.prefix.bin, 'mpif77')
+ if 'platform=cray' in self.spec:
+ self.spec.mpicc = spack_cc
+ self.spec.mpicxx = spack_cxx
+ self.spec.mpifc = spack_fc
+ self.spec.mpif77 = spack_f77
+ else:
+ self.spec.mpicc = join_path(self.prefix.bin, 'mpicc')
+ self.spec.mpicxx = join_path(self.prefix.bin, 'mpicxx')
+ self.spec.mpifc = join_path(self.prefix.bin, 'mpif90')
+ self.spec.mpif77 = join_path(self.prefix.bin, 'mpif77')
+
self.spec.mpicxx_shared_libs = [
os.path.join(self.prefix.lib, 'libmpicxx.{0}'.format(dso_suffix)),
os.path.join(self.prefix.lib, 'libmpi.{0}'.format(dso_suffix))