Fixed the first set of merge bugs

This commit is contained in:
Gregory Becker 2016-05-18 17:42:11 -07:00
parent 16431f7a4c
commit 01d5ffcd87
6 changed files with 16 additions and 20 deletions

View file

@ -323,8 +323,8 @@ def to_dict(self):
target = self.target
d['platform'] = self.platform.name
d['platform_os'] = self.platform_os.to_dict()
d['target'] = self.target.to_dict()
d['platform_os'] = self.platform_os.to_dict() if self.platform_os else None
d['target'] = self.target.to_dict() if self.target else None
return d
@ -362,8 +362,8 @@ def arch_from_dict(d):
os_dict = d['platform_os']
target_dict = d['target']
target = _target_from_dict(target_dict)
platform_os = _operating_system_from_dict(os_dict)
target = _target_from_dict(target_dict) if os_dict else None
platform_os = _operating_system_from_dict(os_dict) if os_dict else None
arch.target = target
arch.platform_os = platform_os

View file

@ -239,5 +239,5 @@ def find(parser, args):
mode=args.mode,
long=args.long,
very_long=args.very_long,
show_flags=args.show_flags)
show_flags=args.show_flags,
namespace=args.namespace)

View file

@ -261,11 +261,7 @@ def get_compilers(cspec):
compilers.append(cls(cspec, operating_system, compiler_paths, mods, alias, **flags))
##ifdef NEW
# return cls(cspec, *compiler_paths, **flags)
##else /* not NEW */
# return compilers
##endif /* not NEW */
return compilers
matches = set(find(compiler_spec, scope))
compilers = []

View file

@ -282,11 +282,8 @@ def _proper_compiler_style(cspec, architecture):
return False
#Find the another spec that has a compiler, or the root if none do
#ifdef NEW
other_spec = spec if spec.compiler else find_spec(spec, lambda(x) : x.compiler)
#else /* not NEW */
other_spec = find_spec(spec, lambda(x) : x.compiler)
#endif /* not NEW */
if not other_spec:
other_spec = spec.root
other_compiler = other_spec.compiler
@ -321,6 +318,10 @@ def concretize_compiler_flags(self, spec):
compiler is used, defaulting to no compiler flags in the spec.
Default specs set at the compiler level will still be added later.
"""
if not spec.architecture.platform_os:
#Although this usually means changed, this means awaiting other changes
return True
ret = False
for flag in spack.spec.FlagMap.valid_compiler_flags():
try:
@ -352,7 +353,7 @@ def concretize_compiler_flags(self, spec):
# Include the compiler flag defaults from the config files
# This ensures that spack will detect conflicts that stem from a change
# in default compiler flags.
compiler = spack.compilers.compiler_for_spec(spec.compiler)
compiler = spack.compilers.compiler_for_spec(spec.compiler, spec.architecture.platform_os)
for flag in compiler.flags:
if flag not in spec.compiler_flags:
spec.compiler_flags[flag] = compiler.flags[flag]

View file

@ -1458,7 +1458,7 @@ def constrain(self, other, deps=True):
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 of other.architecture.platform_os is None:
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

View file

@ -72,7 +72,7 @@ def test_user_front_end_input(self):
"""
frontend_os = self.platform.operating_system("frontend")
frontend_target = self.platform.target("frontend")
frontend_spec = Spec("libelf=frontend")
frontend_spec = Spec("libelf os=frontend target=frontend")
frontend_spec.concretize()
self.assertEqual(frontend_os, frontend_spec.architecture.platform_os)
self.assertEqual(frontend_target, frontend_spec.architecture.target)
@ -83,7 +83,7 @@ def test_user_back_end_input(self):
"""
backend_os = self.platform.operating_system("backend")
backend_target = self.platform.target("backend")
backend_spec = Spec("libelf=backend")
backend_spec = Spec("libelf os=backend target=backend")
backend_spec.concretize()
self.assertEqual(backend_os, backend_spec.architecture.platform_os)
self.assertEqual(backend_target, backend_spec.architecture.target)
@ -109,8 +109,7 @@ def test_user_input_combination(self):
results = []
for arch in combinations:
o,t = arch
arch_spec = "-".join(arch)
spec = Spec("libelf=%s" % arch_spec)
spec = Spec("libelf os=%s target=%s" % (o, t))
spec.concretize()
results.append(spec.architecture.platform_os == self.platform.operating_system(o))
results.append(spec.architecture.target == self.platform.target(t))