summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorMassimiliano Culpo <massimiliano.culpo@gmail.com>2019-09-26 22:51:16 +0200
committerTodd Gamblin <tgamblin@llnl.gov>2019-10-01 19:18:27 -0700
commit1b18ec90abadf6e476a5e5fe1c82d18849c1d18d (patch)
treec33be5ade5fd6d5874c311520a021743645f626c /lib
parentd20e3517c20633534e0d358de1e400b5f8d8a4ec (diff)
downloadspack-1b18ec90abadf6e476a5e5fe1c82d18849c1d18d.tar.gz
spack-1b18ec90abadf6e476a5e5fe1c82d18849c1d18d.tar.bz2
spack-1b18ec90abadf6e476a5e5fe1c82d18849c1d18d.tar.xz
spack-1b18ec90abadf6e476a5e5fe1c82d18849c1d18d.zip
Add all compatible system types directory to module paths
fixes #12915 closes #12916 Since Spack has support for specific targets it might happen that software is built for targets that are not exactly the host because it was either an explicit user request or the compiler being used is too old to support the host. Modules for different targets are written into different directories and by default Spack was adding to MODULEPATH only the directory corresponding to the current host. This PR modifies this behavior to add all the directories that are **compatible** with the current host.
Diffstat (limited to 'lib')
-rw-r--r--lib/spack/spack/architecture.py12
-rw-r--r--lib/spack/spack/main.py3
2 files changed, 14 insertions, 1 deletions
diff --git a/lib/spack/spack/architecture.py b/lib/spack/spack/architecture.py
index c67b63cba0..53cbc44ca5 100644
--- a/lib/spack/spack/architecture.py
+++ b/lib/spack/spack/architecture.py
@@ -493,3 +493,15 @@ def sys_type():
"""
arch = Arch(platform(), 'default_os', 'default_target')
return str(arch)
+
+
+@memoized
+def compatible_sys_types():
+ """Returns a list of all the systypes compatible with the current host."""
+ compatible_archs = []
+ current_host = cpu.host()
+ compatible_targets = [current_host] + current_host.ancestors
+ for target in compatible_targets:
+ arch = Arch(platform(), 'default_os', target)
+ compatible_archs.append(str(arch))
+ return compatible_archs
diff --git a/lib/spack/spack/main.py b/lib/spack/spack/main.py
index a2220a9ba8..c3746b6b26 100644
--- a/lib/spack/spack/main.py
+++ b/lib/spack/spack/main.py
@@ -585,7 +585,8 @@ def print_setup_info(*info):
# print sys type
shell_set('_sp_sys_type', spack.architecture.sys_type())
-
+ shell_set('_sp_compatible_sys_types',
+ ':'.join(spack.architecture.compatible_sys_types()))
# print roots for all module systems
module_roots = spack.config.get('config:module_roots')
module_to_roots = {