summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/spack/spack/architecture.py10
-rw-r--r--lib/spack/spack/build_environment.py9
2 files changed, 17 insertions, 2 deletions
diff --git a/lib/spack/spack/architecture.py b/lib/spack/spack/architecture.py
index 818731cbf8..1f25bc14ea 100644
--- a/lib/spack/spack/architecture.py
+++ b/lib/spack/spack/architecture.py
@@ -195,6 +195,7 @@ class Platform(object):
name = self.back_os
return self.operating_sys.get(name, None)
+
@classmethod
def detect(self):
@@ -333,6 +334,12 @@ class OperatingSystem(object):
return list(compilers.values())
+ def to_dict(self):
+ d = {}
+ d['name'] = self.name
+ d['version'] = self.version
+
+ return d
@key_ordering
class Arch(object):
@@ -410,7 +417,8 @@ def _operating_system_from_dict(os_name, platform=None):
"""
if not platform:
platform = sys_type()
- if isinstance(os_name, spack.util.spack_yaml.syaml_dict):
+ if isinstance(os_name, spack.util.spack_yaml.syaml_dict) or \
+ isinstance(os_name, dict):
name = os_name['name']
version = os_name['version']
return platform.operating_system(name+version)
diff --git a/lib/spack/spack/build_environment.py b/lib/spack/spack/build_environment.py
index 4483b9d132..7c65091d49 100644
--- a/lib/spack/spack/build_environment.py
+++ b/lib/spack/spack/build_environment.py
@@ -384,6 +384,13 @@ def parent_class_modules(cls):
return result
+def load_external_modules(pkg):
+ """ traverse the spec list and find any specs that have external modules.
+ """
+ for dep in list(pkg.spec.traverse()):
+ if dep.external_module:
+ load_module(dep.external_module)
+
def setup_package(pkg):
"""Execute all environment setup routines."""
spack_env = EnvironmentModifications()
@@ -407,7 +414,7 @@ def setup_package(pkg):
set_compiler_environment_variables(pkg, spack_env)
set_build_environment_variables(pkg, spack_env)
-
+ load_external_modules(pkg)
# traverse in postorder so package can use vars from its dependencies
spec = pkg.spec
for dspec in pkg.spec.traverse(order='post', root=False):