Merge branch 'features/newarch' of https://github.com/NERSC/spack into features/newarch
This commit is contained in:
commit
16431f7a4c
@ -213,13 +213,12 @@ def set_compiler_environment_variables(pkg):
|
|||||||
if flags[flag] != []:
|
if flags[flag] != []:
|
||||||
env.set('SPACK_' + flag.upper(), ' '.join(f for f in flags[flag]))
|
env.set('SPACK_' + flag.upper(), ' '.join(f for f in flags[flag]))
|
||||||
|
|
||||||
#ifdef NEW
|
|
||||||
env.set('SPACK_COMPILER_SPEC', str(pkg.spec.compiler))
|
env.set('SPACK_COMPILER_SPEC', str(pkg.spec.compiler))
|
||||||
return env
|
|
||||||
#else /* not NEW */
|
|
||||||
for mod in compiler.modules:
|
for mod in compiler.modules:
|
||||||
load_module(mod)
|
load_module(mod)
|
||||||
#endif /* not NEW */
|
|
||||||
|
return env
|
||||||
|
|
||||||
|
|
||||||
def set_build_environment_variables(pkg, env):
|
def set_build_environment_variables(pkg, env):
|
||||||
@ -283,16 +282,13 @@ def set_build_environment_variables(pkg, env):
|
|||||||
pcdir = join_path(p, maybe, 'pkgconfig')
|
pcdir = join_path(p, maybe, 'pkgconfig')
|
||||||
if os.path.isdir(pcdir):
|
if os.path.isdir(pcdir):
|
||||||
pkg_config_dirs.append(pcdir)
|
pkg_config_dirs.append(pcdir)
|
||||||
#ifdef NEW
|
|
||||||
env.set_path('PKG_CONFIG_PATH', pkg_config_dirs)
|
|
||||||
|
|
||||||
return env
|
env.prepend_path('PKG_CONFIG_PATH', pkg_config_dirs)
|
||||||
#else /* not NEW */
|
|
||||||
path_put_first("PKG_CONFIG_PATH", pkg_config_dirs)
|
|
||||||
|
|
||||||
if pkg.spec.architecture.target.module_name:
|
if pkg.spec.architecture.target.module_name:
|
||||||
load_module(pkg.spec.architecture.target.module_name)
|
load_module(pkg.spec.architecture.target.module_name)
|
||||||
#endif /* not NEW */
|
|
||||||
|
return env
|
||||||
|
|
||||||
|
|
||||||
def set_module_variables_for_package(pkg, module):
|
def set_module_variables_for_package(pkg, module):
|
||||||
@ -368,16 +364,13 @@ def set_module_variables_for_package(pkg, module):
|
|||||||
|
|
||||||
def get_rpaths(pkg):
|
def get_rpaths(pkg):
|
||||||
"""Get a list of all the rpaths for a package."""
|
"""Get a list of all the rpaths for a package."""
|
||||||
for spec in pkg.spec.traverse(root=False):
|
|
||||||
if spec.external_module:
|
|
||||||
load_module(spec.external_module)
|
|
||||||
spec.external = get_path_from_module(spec.external_module)
|
|
||||||
|
|
||||||
rpaths = [pkg.prefix.lib, pkg.prefix.lib64]
|
rpaths = [pkg.prefix.lib, pkg.prefix.lib64]
|
||||||
rpaths.extend(d.prefix.lib for d in pkg.spec.dependencies.values()
|
rpaths.extend(d.prefix.lib for d in pkg.spec.dependencies.values()
|
||||||
if os.path.isdir(d.prefix.lib))
|
if os.path.isdir(d.prefix.lib))
|
||||||
rpaths.extend(d.prefix.lib64 for d in pkg.spec.dependencies.values()
|
rpaths.extend(d.prefix.lib64 for d in pkg.spec.dependencies.values()
|
||||||
if os.path.isdir(d.prefix.lib64))
|
if os.path.isdir(d.prefix.lib64))
|
||||||
|
for mod in pkg.spec.compiler.modules:
|
||||||
|
rpaths.append(get_path_for_module(mod))
|
||||||
return rpaths
|
return rpaths
|
||||||
|
|
||||||
|
|
||||||
|
@ -120,6 +120,7 @@
|
|||||||
from spack.util.string import *
|
from spack.util.string import *
|
||||||
from spack.util.prefix import Prefix
|
from spack.util.prefix import Prefix
|
||||||
from spack.virtual import ProviderIndex
|
from spack.virtual import ProviderIndex
|
||||||
|
from spack.build_environment import get_path_from_module, load_module
|
||||||
|
|
||||||
# Valid pattern for an identifier in Spack
|
# Valid pattern for an identifier in Spack
|
||||||
identifier_re = r'\w[\w-]*'
|
identifier_re = r'\w[\w-]*'
|
||||||
@ -1085,6 +1086,15 @@ def concretize(self):
|
|||||||
if s.namespace is None:
|
if s.namespace is None:
|
||||||
s.namespace = spack.repo.repo_for_pkg(s.name).namespace
|
s.namespace = spack.repo.repo_for_pkg(s.name).namespace
|
||||||
|
|
||||||
|
|
||||||
|
for s in self.traverse(root=False):
|
||||||
|
if spec.external_module:
|
||||||
|
compiler = spack.compilers.compiler_for_spec(spec.compiler, spec.architecture.platform_os)
|
||||||
|
for mod in compiler.modules:
|
||||||
|
load_module(mod)
|
||||||
|
|
||||||
|
spec.external = get_path_from_module(spec.external_module)
|
||||||
|
|
||||||
# Mark everything in the spec as concrete, as well.
|
# Mark everything in the spec as concrete, as well.
|
||||||
self._mark_concrete()
|
self._mark_concrete()
|
||||||
|
|
||||||
|
@ -31,8 +31,8 @@
|
|||||||
from llnl.util.tty.colify import colify
|
from llnl.util.tty.colify import colify
|
||||||
from spack.test.tally_plugin import Tally
|
from spack.test.tally_plugin import Tally
|
||||||
"""Names of tests to be included in Spack's test suite"""
|
"""Names of tests to be included in Spack's test suite"""
|
||||||
#ifdef NEW
|
|
||||||
test_names = ['versions', 'url_parse', 'url_substitution', 'packages', 'stage',
|
test_names = ['architecture', 'versions', 'url_parse', 'url_substitution', 'packages', 'stage',
|
||||||
'spec_syntax', 'spec_semantics', 'spec_dag', 'concretize',
|
'spec_syntax', 'spec_semantics', 'spec_dag', 'concretize',
|
||||||
'multimethod', 'install', 'package_sanity', 'config',
|
'multimethod', 'install', 'package_sanity', 'config',
|
||||||
'directory_layout', 'pattern', 'python_version', 'git_fetch',
|
'directory_layout', 'pattern', 'python_version', 'git_fetch',
|
||||||
@ -41,42 +41,6 @@
|
|||||||
'make_executable', 'configure_guess', 'lock', 'database',
|
'make_executable', 'configure_guess', 'lock', 'database',
|
||||||
'namespace_trie', 'yaml', 'sbang', 'environment',
|
'namespace_trie', 'yaml', 'sbang', 'environment',
|
||||||
'cmd.uninstall', 'cmd.test_install']
|
'cmd.uninstall', 'cmd.test_install']
|
||||||
#else /* not NEW */
|
|
||||||
test_names = ['architecture',
|
|
||||||
'versions',
|
|
||||||
'url_parse',
|
|
||||||
'url_substitution',
|
|
||||||
'packages',
|
|
||||||
'stage',
|
|
||||||
'spec_syntax',
|
|
||||||
'spec_semantics',
|
|
||||||
'spec_dag',
|
|
||||||
'concretize',
|
|
||||||
'multimethod',
|
|
||||||
'install',
|
|
||||||
'package_sanity',
|
|
||||||
'config',
|
|
||||||
'directory_layout',
|
|
||||||
'pattern',
|
|
||||||
'python_version',
|
|
||||||
'git_fetch',
|
|
||||||
'svn_fetch',
|
|
||||||
'hg_fetch',
|
|
||||||
'mirror',
|
|
||||||
'url_extrapolate',
|
|
||||||
'cc',
|
|
||||||
'link_tree',
|
|
||||||
'spec_yaml',
|
|
||||||
'optional_deps',
|
|
||||||
'make_executable',
|
|
||||||
'configure_guess',
|
|
||||||
'unit_install',
|
|
||||||
'lock',
|
|
||||||
'database',
|
|
||||||
'namespace_trie',
|
|
||||||
'yaml',
|
|
||||||
'sbang']
|
|
||||||
#endif /* not NEW */
|
|
||||||
|
|
||||||
|
|
||||||
def list_tests():
|
def list_tests():
|
||||||
|
@ -142,19 +142,6 @@ def check_config(self, comps, *compiler_names):
|
|||||||
"""Check that named compilers in comps match Spack's config."""
|
"""Check that named compilers in comps match Spack's config."""
|
||||||
config = spack.config.get_config('compilers')
|
config = spack.config.get_config('compilers')
|
||||||
compiler_list = ['cc', 'cxx', 'f77', 'fc']
|
compiler_list = ['cc', 'cxx', 'f77', 'fc']
|
||||||
#ifdef NEW
|
|
||||||
for key in compiler_names:
|
|
||||||
for c in compiler_list:
|
|
||||||
expected = comps[arch][key][c]
|
|
||||||
actual = config[arch][key][c]
|
|
||||||
self.assertEqual(expected, actual)
|
|
||||||
|
|
||||||
def test_write_list_in_memory(self):
|
|
||||||
spack.config.update_config('repos', repos_low, 'test_low_priority')
|
|
||||||
spack.config.update_config('repos', repos_high, 'test_high_priority')
|
|
||||||
config = spack.config.get_config('repos')
|
|
||||||
self.assertEqual(config, repos_high+repos_low)
|
|
||||||
#else /* not NEW */
|
|
||||||
param_list = ['modules', 'paths', 'spec', 'operating_system']
|
param_list = ['modules', 'paths', 'spec', 'operating_system']
|
||||||
for alias, compiler in config.items():
|
for alias, compiler in config.items():
|
||||||
if compiler['spec'] in compiler_names:
|
if compiler['spec'] in compiler_names:
|
||||||
@ -166,7 +153,12 @@ def test_write_list_in_memory(self):
|
|||||||
expected = comps[alias]['paths'][c]
|
expected = comps[alias]['paths'][c]
|
||||||
actual = config[alias]['paths'][c]
|
actual = config[alias]['paths'][c]
|
||||||
self.assertEqual(expected, actual)
|
self.assertEqual(expected, actual)
|
||||||
#endif /* not NEW */
|
|
||||||
|
def test_write_list_in_memory(self):
|
||||||
|
spack.config.update_config('repos', repos_low, 'test_low_priority')
|
||||||
|
spack.config.update_config('repos', repos_high, 'test_high_priority')
|
||||||
|
config = spack.config.get_config('repos')
|
||||||
|
self.assertEqual(config, repos_high+repos_low)
|
||||||
|
|
||||||
def test_write_key_in_memory(self):
|
def test_write_key_in_memory(self):
|
||||||
# Write b_comps "on top of" a_comps.
|
# Write b_comps "on top of" a_comps.
|
||||||
@ -187,9 +179,8 @@ def test_write_key_to_disk(self):
|
|||||||
spack.config.clear_config_caches()
|
spack.config.clear_config_caches()
|
||||||
|
|
||||||
# Same check again, to ensure consistency.
|
# Same check again, to ensure consistency.
|
||||||
#ifdef NEW
|
self.check_config(a_comps, 'gcc@4.7.3', 'gcc@4.5.0')
|
||||||
self.check_config(a_comps, 'x86_64_E5v2_IntelIB', 'gcc@4.7.3', 'gcc@4.5.0')
|
self.check_config(b_comps, 'icc@10.0', 'icc@11.1', 'clang@3.3')
|
||||||
self.check_config(b_comps, 'x86_64_E5v3', 'icc@10.0', 'icc@11.1', 'clang@3.3')
|
|
||||||
|
|
||||||
def test_write_to_same_priority_file(self):
|
def test_write_to_same_priority_file(self):
|
||||||
# Write b_comps in the same file as a_comps.
|
# Write b_comps in the same file as a_comps.
|
||||||
@ -200,9 +191,5 @@ def test_write_to_same_priority_file(self):
|
|||||||
spack.config.clear_config_caches()
|
spack.config.clear_config_caches()
|
||||||
|
|
||||||
# Same check again, to ensure consistency.
|
# Same check again, to ensure consistency.
|
||||||
self.check_config(a_comps, 'x86_64_E5v2_IntelIB', 'gcc@4.7.3', 'gcc@4.5.0')
|
|
||||||
self.check_config(b_comps, 'x86_64_E5v3', 'icc@10.0', 'icc@11.1', 'clang@3.3')
|
|
||||||
#else /* not NEW */
|
|
||||||
self.check_config(a_comps, 'gcc@4.7.3', 'gcc@4.5.0')
|
self.check_config(a_comps, 'gcc@4.7.3', 'gcc@4.5.0')
|
||||||
self.check_config(b_comps, 'icc@10.0', 'icc@11.1', 'clang@3.3')
|
self.check_config(b_comps, 'icc@10.0', 'icc@11.1', 'clang@3.3')
|
||||||
#endif /* not NEW */
|
|
||||||
|
@ -92,36 +92,18 @@ def test_default_works(self):
|
|||||||
self.assertEqual(pkg.has_a_default(), 'default')
|
self.assertEqual(pkg.has_a_default(), 'default')
|
||||||
|
|
||||||
|
|
||||||
#ifdef NEW
|
|
||||||
def test_architecture_match(self):
|
|
||||||
pkg = spack.repo.get('multimethod arch=x86_64')
|
|
||||||
self.assertEqual(pkg.different_by_architecture(), 'x86_64')
|
|
||||||
|
|
||||||
pkg = spack.repo.get('multimethod arch=ppc64')
|
|
||||||
self.assertEqual(pkg.different_by_architecture(), 'ppc64')
|
|
||||||
|
|
||||||
pkg = spack.repo.get('multimethod arch=ppc32')
|
|
||||||
self.assertEqual(pkg.different_by_architecture(), 'ppc32')
|
|
||||||
|
|
||||||
pkg = spack.repo.get('multimethod arch=arm64')
|
|
||||||
self.assertEqual(pkg.different_by_architecture(), 'arm64')
|
|
||||||
|
|
||||||
pkg = spack.repo.get('multimethod arch=macos')
|
|
||||||
self.assertRaises(NoSuchMethodError, pkg.different_by_architecture)
|
|
||||||
#else /* not NEW */
|
|
||||||
def test_target_match(self):
|
def test_target_match(self):
|
||||||
platform = spack.architecture.sys_type()
|
platform = spack.architecture.sys_type()
|
||||||
targets = platform.targets.values()
|
targets = platform.targets.values()
|
||||||
for target in targets[:-1]:
|
for target in targets[:-1]:
|
||||||
pkg = spack.repo.get('multimethod='+target.name)
|
pkg = spack.repo.get('multimethod target='+target.name)
|
||||||
self.assertEqual(pkg.different_by_target(), target.name)
|
self.assertEqual(pkg.different_by_target(), target.name)
|
||||||
|
|
||||||
pkg = spack.repo.get('multimethod='+targets[-1].name)
|
pkg = spack.repo.get('multimethod target='+targets[-1].name)
|
||||||
if len(targets) == 1:
|
if len(targets) == 1:
|
||||||
self.assertEqual(pkg.different_by_target(), targets[-1].name)
|
self.assertEqual(pkg.different_by_target(), targets[-1].name)
|
||||||
else:
|
else:
|
||||||
self.assertRaises(NoSuchMethodError, pkg.different_by_target)
|
self.assertRaises(NoSuchMethodError, pkg.different_by_target)
|
||||||
#endif /* not NEW */
|
|
||||||
|
|
||||||
|
|
||||||
def test_dependency_match(self):
|
def test_dependency_match(self):
|
||||||
|
Loading…
Reference in New Issue
Block a user