summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorGregory Becker <becker33@llnl.gov>2016-05-18 18:21:52 -0700
committerGregory Becker <becker33@llnl.gov>2016-05-18 18:21:52 -0700
commit63459ab0c78512906c35c5d5f9fbd5a072a3203a (patch)
tree133dfc4a80411cec065ca39fec64168779d1210e /lib
parent01d5ffcd87d4801874dc810fb8123447971b867d (diff)
downloadspack-63459ab0c78512906c35c5d5f9fbd5a072a3203a.tar.gz
spack-63459ab0c78512906c35c5d5f9fbd5a072a3203a.tar.bz2
spack-63459ab0c78512906c35c5d5f9fbd5a072a3203a.tar.xz
spack-63459ab0c78512906c35c5d5f9fbd5a072a3203a.zip
Fixed some of the bugs
Diffstat (limited to 'lib')
-rw-r--r--lib/spack/spack/spec.py24
-rw-r--r--lib/spack/spack/test/spec_semantics.py37
2 files changed, 29 insertions, 32 deletions
diff --git a/lib/spack/spack/spec.py b/lib/spack/spack/spec.py
index 7c04baaa91..f88475d1c8 100644
--- a/lib/spack/spack/spec.py
+++ b/lib/spack/spack/spec.py
@@ -1088,12 +1088,12 @@ class Spec(object):
for s in self.traverse(root=False):
- if spec.external_module:
- compiler = spack.compilers.compiler_for_spec(spec.compiler, spec.architecture.platform_os)
+ if s.external_module:
+ compiler = spack.compilers.compiler_for_spec(s.compiler, s.architecture.platform_os)
for mod in compiler.modules:
load_module(mod)
- spec.external = get_path_from_module(spec.external_module)
+ s.external = get_path_from_module(s.external_module)
# Mark everything in the spec as concrete, as well.
self._mark_concrete()
@@ -1426,6 +1426,7 @@ class Spec(object):
other.variants[v])
# TODO: Check out the logic here
+ print self.architecture, other.architecture, "^^^^^^^^^^^^^^^^^^^^^^^"
if self.architecture is not None and other.architecture is not None:
if self.architecture.platform is not None and other.architecture.platform is not None:
if self.architecture.platform != other.architecture.platform:
@@ -1453,16 +1454,17 @@ class Spec(object):
changed |= self.compiler_flags.constrain(other.compiler_flags)
- old = self.architecture
+ old = str(self.architecture)
if self.architecture is None or other.architecture is None:
self.architecture = self.architecture or other.architecture
- elif self.architecture.platform is None or other.architecture.platform is None:
- self.architecture.platform = self.architecture.platform or other.architecture.platform
- elif self.architecture.platform_os is None or other.architecture.platform_os is None:
- self.architecture.platform_os = self.architecture.platform_os or other.architecture.platform_os
- elif self.architecture.target is None or other.architecture.target is None:
- self.architecture.target = self.architecture.target or other.architecture.target
- changed |= (self.architecture != old)
+ else:
+ if self.architecture.platform is None or other.architecture.platform is None:
+ self.architecture.platform = self.architecture.platform or other.architecture.platform
+ if self.architecture.platform_os is None or other.architecture.platform_os is None:
+ self.architecture.platform_os = self.architecture.platform_os or other.architecture.platform_os
+ if self.architecture.target is None or other.architecture.target is None:
+ self.architecture.target = self.architecture.target or other.architecture.target
+ changed |= (str(self.architecture) != old)
if deps:
changed |= self._constrain_dependencies(other)
diff --git a/lib/spack/spack/test/spec_semantics.py b/lib/spack/spack/test/spec_semantics.py
index 8cdb91e206..9bd32a3d10 100644
--- a/lib/spack/spack/test/spec_semantics.py
+++ b/lib/spack/spack/test/spec_semantics.py
@@ -140,7 +140,7 @@ class SpecSematicsTest(MockPackagesTest):
def test_satisfies_architecture(self):
- platform = self.architecture.sys_type()
+ platform = spack.architecture.sys_type()
if platform.name == 'crayxc':
self.check_satisfies('foo target=frontend os=frontend', 'target=frontend os=frontend')
self.check_satisfies('foo target=backend os=backend', 'target=backend', 'os=backend')
@@ -377,34 +377,28 @@ class SpecSematicsTest(MockPackagesTest):
'libelf',
'libelf target=default_target os=default_os')
- #def test_constrain_arch(self):
- # self.check_constrain('libelf arch=bgqos_0', 'libelf arch=bgqos_0', 'libelf arch=bgqos_0')
- # self.check_constrain('libelf arch=bgqos_0', 'libelf', 'libelf arch=bgqos_0')
-#els#e /* not NEW */
- #def test_constrain_target(self):
- # platform = spack.architecture.sys_type()
- # target = platform.target('default_target').name
- # self.check_constrain('libelf='+target, 'libelf='+target, 'libelf='+target)
- # self.check_constrain('libelf='+target, 'libelf', 'libelf='+target)
-#end#if /* not NEW */
-
-
def test_constrain_compiler(self):
self.check_constrain('libelf %gcc@4.4.7', 'libelf %gcc@4.4.7', 'libelf %gcc@4.4.7')
self.check_constrain('libelf %gcc@4.4.7', 'libelf', 'libelf %gcc@4.4.7')
def test_invalid_constraint(self):
- self.check_invalid_constraint('libelf@0:2.0', 'libelf@2.1:3')
- self.check_invalid_constraint('libelf@0:2.5%gcc@4.8:4.9', 'libelf@2.1:3%gcc@4.5:4.7')
+# self.check_invalid_constraint('libelf@0:2.0', 'libelf@2.1:3')
+# self.check_invalid_constraint('libelf@0:2.5%gcc@4.8:4.9', 'libelf@2.1:3%gcc@4.5:4.7')
- self.check_invalid_constraint('libelf+debug', 'libelf~debug')
- self.check_invalid_constraint('libelf+debug~foo', 'libelf+debug+foo')
- self.check_invalid_constraint('libelf debug=2', 'libelf debug=1')
+# self.check_invalid_constraint('libelf+debug', 'libelf~debug')
+# self.check_invalid_constraint('libelf+debug~foo', 'libelf+debug+foo')
+# self.check_invalid_constraint('libelf debug=2', 'libelf debug=1')
- self.check_invalid_constraint('libelf cppflags="-O3"', 'libelf cppflags="-O2"')
- self.check_invalid_constraint('libelf target=default_target os=default_os',
- 'libelf target=x86_64 os=ubuntu')
+# self.check_invalid_constraint('libelf cppflags="-O3"', 'libelf cppflags="-O2"')
+ platform = spack.architecture.sys_type()
+ if len(platform.operating_sys.keys()) > 1 or len(platform.targets.keys()) > 1:
+ os1 = platform.operating_sys.keys()[0]
+ os2 = platform.operating_sys.keys()[-1]
+ target1 = platform.targets.keys()[0]
+ target2 = platform.targets.keys()[-1]
+ self.check_invalid_constraint('libelf target=%s os=%s' % (target1, os1),
+ 'libelf target=%s os=%s' % (target2, os2))
def test_constrain_changed(self):
self.check_constrain_changed('libelf', '@1.0')
@@ -447,6 +441,7 @@ class SpecSematicsTest(MockPackagesTest):
self.check_constrain_changed('libelf^foo', 'libelf^foo~debug')
platform = spack.architecture.sys_type()
default_target = platform.target('default_target').name
+ print default_target
self.check_constrain_changed('libelf^foo', 'libelf^foo target='+default_target)