summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/spack/spack/solver/asp.py10
-rw-r--r--lib/spack/spack/test/concretize.py2
-rw-r--r--lib/spack/spack/test/concretize_preferences.py17
-rw-r--r--lib/spack/spack/test/data/modules/lmod/alter_environment.yaml2
-rw-r--r--lib/spack/spack/test/data/modules/tcl/alter_environment.yaml2
-rw-r--r--lib/spack/spack/test/modules/lmod.py6
-rw-r--r--lib/spack/spack/test/modules/tcl.py24
-rw-r--r--lib/spack/spack/test/spec_dag.py6
8 files changed, 41 insertions, 28 deletions
diff --git a/lib/spack/spack/solver/asp.py b/lib/spack/spack/solver/asp.py
index a50f61f9a0..a79f3c7695 100644
--- a/lib/spack/spack/solver/asp.py
+++ b/lib/spack/spack/solver/asp.py
@@ -1634,7 +1634,9 @@ class SpecBuilder(object):
packages_yaml = _normalize_packages_yaml(packages_yaml)
spec_info = packages_yaml[pkg]['externals'][int(idx)]
self._specs[pkg].external_path = spec_info.get('prefix', None)
- self._specs[pkg].external_modules = spec_info.get('modules', [])
+ self._specs[pkg].external_modules = (
+ spack.spec.Spec._format_module_list(spec_info.get('modules', []))
+ )
self._specs[pkg].extra_attributes = spec_info.get(
'extra_attributes', {}
)
@@ -1755,7 +1757,8 @@ def highlight(string):
string = re.sub(r':-', r'@*G{:-}', string)
# final periods
- string = re.sub(r'^([^%].*)\.$', r'\1@*G{.}', string, flags=re.MULTILINE)
+ pattern = re.compile(r'^([^%].*)\.$', flags=re.MULTILINE)
+ string = re.sub(pattern, r'\1@*G{.}', string)
# directives
string = re.sub(
@@ -1765,7 +1768,8 @@ def highlight(string):
string = re.sub(r'(\w[\w-]+)\(([^)]*)\)', r'@C{\1}@w{(}\2@w{)}', string)
# comments
- string = re.sub(r'(%.*)$', r'@w\1@.', string, flags=re.MULTILINE)
+ pattern = re.compile(r'(%.*)$', flags=re.MULTILINE)
+ string = re.sub(pattern, r'@w\1@.', string)
# strings
string = re.sub(r'("[^"]*")', r'@m{\1}', string)
diff --git a/lib/spack/spack/test/concretize.py b/lib/spack/spack/test/concretize.py
index 91d2874e48..6072d8957e 100644
--- a/lib/spack/spack/test/concretize.py
+++ b/lib/spack/spack/test/concretize.py
@@ -489,7 +489,7 @@ class TestConcretize(object):
assert find_spec(s['b'], lambda s: '+foo' in s) is None
def test_compiler_child(self):
- s = Spec('mpileaks%clang ^dyninst%gcc')
+ s = Spec('mpileaks%clang target=x86_64 ^dyninst%gcc')
s.concretize()
assert s['mpileaks'].satisfies('%clang')
assert s['dyninst'].satisfies('%gcc')
diff --git a/lib/spack/spack/test/concretize_preferences.py b/lib/spack/spack/test/concretize_preferences.py
index 8de8773eb0..c138632ffa 100644
--- a/lib/spack/spack/test/concretize_preferences.py
+++ b/lib/spack/spack/test/concretize_preferences.py
@@ -6,6 +6,7 @@
import pytest
import stat
+import spack.config
import spack.package_prefs
import spack.repo
import spack.util.spack_yaml as syaml
@@ -116,8 +117,12 @@ class TestConcretizePreferences(object):
assert spec.compiler == spack.spec.CompilerSpec(compiler)
def test_preferred_target(self, mutable_mock_repo):
- """Test preferred compilers are applied correctly
- """
+ """Test preferred targets are applied correctly"""
+ # FIXME: This test was a false negative, since the default and
+ # FIXME: the preferred target were the same
+ if spack.config.get('config:concretizer') == 'original':
+ pytest.xfail('Known bug in the original concretizer')
+
spec = concretize('mpich')
default = str(spec.target)
preferred = str(spec.target.family)
@@ -127,13 +132,13 @@ class TestConcretizePreferences(object):
assert str(spec.target) == preferred
spec = concretize('mpileaks')
- assert str(spec['mpileaks'].target) == default
+ assert str(spec['mpileaks'].target) == preferred
assert str(spec['mpich'].target) == preferred
- update_packages('mpileaks', 'target', [preferred])
+ update_packages('mpileaks', 'target', [default])
spec = concretize('mpileaks')
- assert str(spec['mpich'].target) == preferred
- assert str(spec['mpich'].target) == preferred
+ assert str(spec['mpich'].target) == default
+ assert str(spec['mpich'].target) == default
def test_preferred_versions(self):
"""Test preferred package versions are applied correctly
diff --git a/lib/spack/spack/test/data/modules/lmod/alter_environment.yaml b/lib/spack/spack/test/data/modules/lmod/alter_environment.yaml
index 4936f4aa52..f61c94362e 100644
--- a/lib/spack/spack/test/data/modules/lmod/alter_environment.yaml
+++ b/lib/spack/spack/test/data/modules/lmod/alter_environment.yaml
@@ -22,6 +22,6 @@ lmod:
unset:
- BAR
- 'platform=test target=x86':
+ 'platform=test target=core2':
load:
- 'foo/bar'
diff --git a/lib/spack/spack/test/data/modules/tcl/alter_environment.yaml b/lib/spack/spack/test/data/modules/tcl/alter_environment.yaml
index d3c7eec79e..ecb0f56254 100644
--- a/lib/spack/spack/test/data/modules/tcl/alter_environment.yaml
+++ b/lib/spack/spack/test/data/modules/tcl/alter_environment.yaml
@@ -17,6 +17,6 @@ tcl:
unset:
- BAR
- 'platform=test target=x86':
+ 'platform=test target=core2':
load:
- 'foo/bar'
diff --git a/lib/spack/spack/test/modules/lmod.py b/lib/spack/spack/test/modules/lmod.py
index 6d2ee7bc39..474277f239 100644
--- a/lib/spack/spack/test/modules/lmod.py
+++ b/lib/spack/spack/test/modules/lmod.py
@@ -2,8 +2,6 @@
# Spack Project Developers. See the top-level COPYRIGHT file for details.
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
-
-
import re
import pytest
@@ -126,7 +124,7 @@ class TestLmod(object):
assert len([x for x in content if 'unsetenv("BAR")' in x]) == 1
content = modulefile_content(
- 'libdwarf %clang platform=test target=x86'
+ 'libdwarf platform=test target=core2'
)
assert len(
@@ -229,7 +227,7 @@ class TestLmod(object):
content = modulefile_content('override-module-templates')
assert 'Override even better!' in content
- content = modulefile_content('mpileaks arch=x86-linux')
+ content = modulefile_content('mpileaks target=x86_64')
assert 'Override even better!' in content
@pytest.mark.usefixtures('config')
diff --git a/lib/spack/spack/test/modules/tcl.py b/lib/spack/spack/test/modules/tcl.py
index ae7ef9e50e..70e3fc6c56 100644
--- a/lib/spack/spack/test/modules/tcl.py
+++ b/lib/spack/spack/test/modules/tcl.py
@@ -11,7 +11,7 @@ import spack.spec
mpich_spec_string = 'mpich@3.0.4'
mpileaks_spec_string = 'mpileaks'
-libdwarf_spec_string = 'libdwarf arch=x64-linux'
+libdwarf_spec_string = 'libdwarf target=x86_64'
#: Class of the writer tested in this module
writer_cls = spack.modules.tcl.TclModulefileWriter
@@ -80,7 +80,7 @@ class TestTcl(object):
"""Tests asking direct dependencies as prerequisites."""
module_configuration('prerequisites_direct')
- content = modulefile_content('mpileaks arch=x86-linux')
+ content = modulefile_content('mpileaks target=x86_64')
assert len([x for x in content if 'prereq' in x]) == 2
@@ -88,7 +88,7 @@ class TestTcl(object):
"""Tests asking all dependencies as prerequisites."""
module_configuration('prerequisites_all')
- content = modulefile_content('mpileaks arch=x86-linux')
+ content = modulefile_content('mpileaks target=x86_64')
assert len([x for x in content if 'prereq' in x]) == 5
@@ -112,7 +112,7 @@ class TestTcl(object):
assert len([x for x in content if 'setenv MPILEAKS_ROOT' in x]) == 1
content = modulefile_content(
- 'libdwarf %clang platform=test target=x86'
+ 'libdwarf platform=test target=core2'
)
assert len([x for x in content
@@ -137,9 +137,9 @@ class TestTcl(object):
# and IOError on Python 2 or common bases like EnvironmentError
# which are not officially documented
with pytest.raises(Exception):
- modulefile_content('callpath arch=x86-linux')
+ modulefile_content('callpath target=x86_64')
- content = modulefile_content('zmpi arch=x86-linux')
+ content = modulefile_content('zmpi target=x86_64')
assert len([x for x in content if 'is-loaded' in x]) == 1
assert len([x for x in content if 'module load ' in x]) == 1
@@ -269,15 +269,15 @@ class TestTcl(object):
"""Tests adding suffixes to module file name."""
module_configuration('suffix')
- writer, spec = factory('mpileaks+debug arch=x86-linux')
+ writer, spec = factory('mpileaks+debug target=x86_64')
assert 'foo' in writer.layout.use_name
assert 'foo-foo' not in writer.layout.use_name
- writer, spec = factory('mpileaks~debug arch=x86-linux')
+ writer, spec = factory('mpileaks~debug target=x86_64')
assert 'foo-bar' in writer.layout.use_name
assert 'baz' not in writer.layout.use_name
- writer, spec = factory('mpileaks~debug+opt arch=x86-linux')
+ writer, spec = factory('mpileaks~debug+opt target=x86_64')
assert 'baz-foo-bar' in writer.layout.use_name
def test_setup_environment(self, modulefile_content, module_configuration):
@@ -304,12 +304,12 @@ class TestTcl(object):
"""Tests overriding some sections of the configuration file."""
module_configuration('override_config')
- writer, spec = factory('mpileaks~opt arch=x86-linux')
+ writer, spec = factory('mpileaks~opt target=x86_64')
assert 'mpich-static' in writer.layout.use_name
assert 'over' not in writer.layout.use_name
assert 'ridden' not in writer.layout.use_name
- writer, spec = factory('mpileaks+opt arch=x86-linux')
+ writer, spec = factory('mpileaks+opt target=x86_64')
assert 'over-ridden' in writer.layout.use_name
assert 'mpich' not in writer.layout.use_name
assert 'static' not in writer.layout.use_name
@@ -333,7 +333,7 @@ class TestTcl(object):
content = modulefile_content('override-module-templates')
assert 'Override even better!' in content
- content = modulefile_content('mpileaks arch=x86-linux')
+ content = modulefile_content('mpileaks target=x86_64')
assert 'Override even better!' in content
def test_extend_context(
diff --git a/lib/spack/spack/test/spec_dag.py b/lib/spack/spack/test/spec_dag.py
index b68e582657..2ac5bec4d9 100644
--- a/lib/spack/spack/test/spec_dag.py
+++ b/lib/spack/spack/test/spec_dag.py
@@ -169,6 +169,12 @@ def test_conditional_dep_with_user_constraints(spec_str, expr_str, expected):
met to add the dependency; this checks whether a user-specified constraint
on Y is applied properly.
"""
+ # FIXME: We need to tweak optimization rules to make this test
+ # FIXME: not prefer a DAG with fewer nodes wrt more recent
+ # FIXME: versions of the package
+ if spack.config.get('config:concretizer') == 'clingo':
+ pytest.xfail('Clingo optimization rules prefer to trim a node')
+
default = ('build', 'link')
mock_repo = MockPackageMultiRepo()