diff options
-rw-r--r-- | lib/spack/spack/test/concretize_requirements.py | 122 | ||||
-rw-r--r-- | lib/spack/spack/test/flag_mixing.py | 88 | ||||
-rw-r--r-- | var/spack/repos/flags.test/packages/t/package.py | 15 | ||||
-rw-r--r-- | var/spack/repos/flags.test/packages/u/package.py | 13 | ||||
-rw-r--r-- | var/spack/repos/flags.test/packages/v/package.py | 14 | ||||
-rw-r--r-- | var/spack/repos/flags.test/packages/w/package.py | 18 | ||||
-rw-r--r-- | var/spack/repos/flags.test/packages/x/package.py | 16 | ||||
-rw-r--r-- | var/spack/repos/flags.test/packages/y/package.py | 12 | ||||
-rw-r--r-- | var/spack/repos/flags.test/repo.yaml | 2 | ||||
-rw-r--r-- | var/spack/repos/requirements.test/packages/t/package.py | 14 | ||||
-rw-r--r-- | var/spack/repos/requirements.test/packages/u/package.py | 12 | ||||
-rw-r--r-- | var/spack/repos/requirements.test/packages/v/package.py | 12 | ||||
-rw-r--r-- | var/spack/repos/requirements.test/packages/x/package.py | 16 | ||||
-rw-r--r-- | var/spack/repos/requirements.test/packages/y/package.py | 15 | ||||
-rw-r--r-- | var/spack/repos/requirements.test/repo.yaml | 2 |
15 files changed, 190 insertions, 181 deletions
diff --git a/lib/spack/spack/test/concretize_requirements.py b/lib/spack/spack/test/concretize_requirements.py index db91941576..420db9fa9d 100644 --- a/lib/spack/spack/test/concretize_requirements.py +++ b/lib/spack/spack/test/concretize_requirements.py @@ -15,7 +15,6 @@ import spack.util.spack_yaml as syaml import spack.version from spack.solver.asp import InternalConcretizerError, UnsatisfiableSpecError from spack.spec import Spec -from spack.test.conftest import create_test_repo from spack.util.url import path_to_file_url @@ -24,76 +23,10 @@ def update_packages_config(conf_str): spack.config.set("packages", conf["packages"], scope="concretize") -_pkgx = ( - "x", - """\ -class X(Package): - version("1.1") - version("1.0") - version("0.9") - - variant("shared", default=True, - description="Build shared libraries") - - depends_on("y") -""", -) - - -_pkgy = ( - "y", - """\ -class Y(Package): - version("2.5") - version("2.4") - version("2.3", deprecated=True) - - variant("shared", default=True, - description="Build shared libraries") -""", -) - - -_pkgv = ( - "v", - """\ -class V(Package): - version("2.1") - version("2.0") -""", -) - - -_pkgt = ( - "t", - """\ -class T(Package): - version('2.1') - version('2.0') - - depends_on('u', when='@2.1:') -""", -) - - -_pkgu = ( - "u", - """\ -class U(Package): - version('1.1') - version('1.0') -""", -) - - @pytest.fixture -def _create_test_repo(tmpdir, mutable_config): - yield create_test_repo(tmpdir, [_pkgx, _pkgy, _pkgv, _pkgt, _pkgu]) - - -@pytest.fixture -def test_repo(_create_test_repo, monkeypatch, mock_stage): - with spack.repo.use_repositories(_create_test_repo) as mock_repo_path: +def test_repo(mutable_config, monkeypatch, mock_stage): + repo_dir = pathlib.Path(spack.paths.repos_path) / "requirements.test" + with spack.repo.use_repositories(str(repo_dir)) as mock_repo_path: yield mock_repo_path @@ -491,23 +424,24 @@ packages: assert s2.satisfies("@2.5") -def test_reuse_oneof(concretize_scope, _create_test_repo, mutable_database, mock_fetch): +def test_reuse_oneof(concretize_scope, test_repo, tmp_path, mock_fetch): conf_str = """\ packages: y: require: - - one_of: ["@2.5", "%gcc"] + - one_of: ["@2.5", "~shared"] """ - with spack.repo.use_repositories(_create_test_repo): - s1 = Spec("y@2.5%gcc").concretized() + store_dir = tmp_path / "store" + with spack.store.use_store(str(store_dir)): + s1 = Spec("y@2.5 ~shared").concretized() s1.package.do_install(fake=True, explicit=True) update_packages_config(conf_str) with spack.config.override("concretizer:reuse", True): s2 = Spec("y").concretized() - assert not s2.satisfies("@2.5 %gcc") + assert not s2.satisfies("@2.5 ~shared") @pytest.mark.parametrize( @@ -546,13 +480,11 @@ packages: @pytest.mark.parametrize("spec_str,requirement_str", [("x", "%gcc"), ("x", "%clang")]) def test_default_requirements_with_all(spec_str, requirement_str, concretize_scope, test_repo): """Test that default requirements are applied to all packages.""" - conf_str = """\ + conf_str = f"""\ packages: all: - require: "{}" -""".format( - requirement_str - ) + require: "{requirement_str}" +""" update_packages_config(conf_str) spec = Spec(spec_str).concretized() @@ -573,15 +505,13 @@ def test_default_and_package_specific_requirements( """Test that specific package requirements override default package requirements.""" generic_req, specific_req = requirements generic_exp, specific_exp = expectations - conf_str = """\ + conf_str = f"""\ packages: all: - require: "{}" + require: "{generic_req}" x: - require: "{}" -""".format( - generic_req, specific_req - ) + require: "{specific_req}" +""" update_packages_config(conf_str) spec = Spec("x").concretized() @@ -592,13 +522,11 @@ packages: @pytest.mark.parametrize("mpi_requirement", ["mpich", "mpich2", "zmpi"]) def test_requirements_on_virtual(mpi_requirement, concretize_scope, mock_packages): - conf_str = """\ + conf_str = f"""\ packages: mpi: - require: "{}" -""".format( - mpi_requirement - ) + require: "{mpi_requirement}" +""" update_packages_config(conf_str) spec = Spec("callpath").concretized() @@ -613,15 +541,13 @@ packages: def test_requirements_on_virtual_and_on_package( mpi_requirement, specific_requirement, concretize_scope, mock_packages ): - conf_str = """\ + conf_str = f"""\ packages: mpi: - require: "{0}" - {0}: - require: "{1}" -""".format( - mpi_requirement, specific_requirement - ) + require: "{mpi_requirement}" + {mpi_requirement}: + require: "{specific_requirement}" +""" update_packages_config(conf_str) spec = Spec("callpath").concretized() diff --git a/lib/spack/spack/test/flag_mixing.py b/lib/spack/spack/test/flag_mixing.py index d3db72625f..6009ade058 100644 --- a/lib/spack/spack/test/flag_mixing.py +++ b/lib/spack/spack/test/flag_mixing.py @@ -2,6 +2,8 @@ # Spack Project Developers. See the top-level COPYRIGHT file for details. # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import pathlib + import pytest import spack.config @@ -9,7 +11,6 @@ import spack.environment as ev import spack.repo import spack.util.spack_yaml as syaml from spack.spec import Spec -from spack.test.conftest import create_test_repo """ These tests include the following package DAGs: @@ -40,90 +41,11 @@ u x y """ -_pkgx = ( - "x", - """\ -class X(Package): - version("1.1") - version("1.0") - - variant("activatemultiflag", default=False) - depends_on('y cflags="-d1"', when="~activatemultiflag") - depends_on('y cflags="-d1 -d2"', when="+activatemultiflag") -""", -) - - -_pkgy = ( - "y", - """\ -class Y(Package): - version("2.1") - version("2.0") -""", -) - - -_pkgw = ( - "w", - """\ -class W(Package): - version("3.1") - version("3.0") - - variant("moveflaglater", default=False) - - depends_on('x +activatemultiflag') - depends_on('y cflags="-d0"', when="~moveflaglater") - depends_on('y cflags="-d3"', when="+moveflaglater") -""", -) - - -_pkgv = ( - "v", - """\ -class V(Package): - version("4.1") - version("4.0") - - depends_on("y") -""", -) - - -_pkgt = ( - "t", - """\ -class T(Package): - version("5.0") - - depends_on("u") - depends_on("x+activatemultiflag") - depends_on("y cflags='-c1 -c2'") -""", -) - - -_pkgu = ( - "u", - """\ -class U(Package): - version("6.0") - - depends_on("y cflags='-e1 -e2'") -""", -) - - -@pytest.fixture -def _create_test_repo(tmpdir, mutable_config): - yield create_test_repo(tmpdir, [_pkgt, _pkgu, _pkgv, _pkgw, _pkgx, _pkgy]) - @pytest.fixture -def test_repo(_create_test_repo, monkeypatch, mock_stage): - with spack.repo.use_repositories(_create_test_repo) as mock_repo_path: +def test_repo(mutable_config, monkeypatch, mock_stage): + repo_dir = pathlib.Path(spack.paths.repos_path) / "flags.test" + with spack.repo.use_repositories(str(repo_dir)) as mock_repo_path: yield mock_repo_path diff --git a/var/spack/repos/flags.test/packages/t/package.py b/var/spack/repos/flags.test/packages/t/package.py new file mode 100644 index 0000000000..359f8f4f03 --- /dev/null +++ b/var/spack/repos/flags.test/packages/t/package.py @@ -0,0 +1,15 @@ +# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) +from spack.package import * + + +class T(Package): + version("5.0") + + depends_on("u") + depends_on("x+activatemultiflag") + depends_on("y cflags='-c1 -c2'") + + depends_on("c", type="build") diff --git a/var/spack/repos/flags.test/packages/u/package.py b/var/spack/repos/flags.test/packages/u/package.py new file mode 100644 index 0000000000..7839ab8191 --- /dev/null +++ b/var/spack/repos/flags.test/packages/u/package.py @@ -0,0 +1,13 @@ +# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) +from spack.package import * + + +class U(Package): + version("6.0") + + depends_on("y cflags='-e1 -e2'") + + depends_on("c", type="build") diff --git a/var/spack/repos/flags.test/packages/v/package.py b/var/spack/repos/flags.test/packages/v/package.py new file mode 100644 index 0000000000..afc8c5117c --- /dev/null +++ b/var/spack/repos/flags.test/packages/v/package.py @@ -0,0 +1,14 @@ +# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) +from spack.package import * + + +class V(Package): + version("4.1") + version("4.0") + + depends_on("y") + + depends_on("c", type="build") diff --git a/var/spack/repos/flags.test/packages/w/package.py b/var/spack/repos/flags.test/packages/w/package.py new file mode 100644 index 0000000000..dbfadf6851 --- /dev/null +++ b/var/spack/repos/flags.test/packages/w/package.py @@ -0,0 +1,18 @@ +# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) +from spack.package import * + + +class W(Package): + version("3.1") + version("3.0") + + variant("moveflaglater", default=False) + + depends_on("x +activatemultiflag") + depends_on('y cflags="-d0"', when="~moveflaglater") + depends_on('y cflags="-d3"', when="+moveflaglater") + + depends_on("c", type="build") diff --git a/var/spack/repos/flags.test/packages/x/package.py b/var/spack/repos/flags.test/packages/x/package.py new file mode 100644 index 0000000000..d7c1c07630 --- /dev/null +++ b/var/spack/repos/flags.test/packages/x/package.py @@ -0,0 +1,16 @@ +# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) +from spack.package import * + + +class X(Package): + version("1.1") + version("1.0") + + variant("activatemultiflag", default=False) + depends_on('y cflags="-d1"', when="~activatemultiflag") + depends_on('y cflags="-d1 -d2"', when="+activatemultiflag") + + depends_on("c", type="build") diff --git a/var/spack/repos/flags.test/packages/y/package.py b/var/spack/repos/flags.test/packages/y/package.py new file mode 100644 index 0000000000..ea736afb8a --- /dev/null +++ b/var/spack/repos/flags.test/packages/y/package.py @@ -0,0 +1,12 @@ +# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) +from spack.package import * + + +class Y(Package): + version("2.1") + version("2.0") + + depends_on("c", type="build") diff --git a/var/spack/repos/flags.test/repo.yaml b/var/spack/repos/flags.test/repo.yaml new file mode 100644 index 0000000000..a87dc9ca96 --- /dev/null +++ b/var/spack/repos/flags.test/repo.yaml @@ -0,0 +1,2 @@ +repo: + namespace: flags.test diff --git a/var/spack/repos/requirements.test/packages/t/package.py b/var/spack/repos/requirements.test/packages/t/package.py new file mode 100644 index 0000000000..f0ca8563da --- /dev/null +++ b/var/spack/repos/requirements.test/packages/t/package.py @@ -0,0 +1,14 @@ +# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) +from spack.package import * + + +class T(Package): + version("2.1") + version("2.0") + + depends_on("u", when="@2.1:") + + depends_on("c", type="build") diff --git a/var/spack/repos/requirements.test/packages/u/package.py b/var/spack/repos/requirements.test/packages/u/package.py new file mode 100644 index 0000000000..b220345908 --- /dev/null +++ b/var/spack/repos/requirements.test/packages/u/package.py @@ -0,0 +1,12 @@ +# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) +from spack.package import * + + +class U(Package): + version("1.1") + version("1.0") + + depends_on("c", type="build") diff --git a/var/spack/repos/requirements.test/packages/v/package.py b/var/spack/repos/requirements.test/packages/v/package.py new file mode 100644 index 0000000000..426edbfb80 --- /dev/null +++ b/var/spack/repos/requirements.test/packages/v/package.py @@ -0,0 +1,12 @@ +# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) +from spack.package import * + + +class V(Package): + version("2.1") + version("2.0") + + depends_on("c", type="build") diff --git a/var/spack/repos/requirements.test/packages/x/package.py b/var/spack/repos/requirements.test/packages/x/package.py new file mode 100644 index 0000000000..93771c3311 --- /dev/null +++ b/var/spack/repos/requirements.test/packages/x/package.py @@ -0,0 +1,16 @@ +# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) +from spack.package import * + + +class X(Package): + version("1.1") + version("1.0") + version("0.9") + + variant("shared", default=True, description="Build shared libraries") + + depends_on("y") + depends_on("c", type="build") diff --git a/var/spack/repos/requirements.test/packages/y/package.py b/var/spack/repos/requirements.test/packages/y/package.py new file mode 100644 index 0000000000..0ba70acf06 --- /dev/null +++ b/var/spack/repos/requirements.test/packages/y/package.py @@ -0,0 +1,15 @@ +# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) +from spack.package import * + + +class Y(Package): + version("2.5") + version("2.4") + version("2.3", deprecated=True) + + variant("shared", default=True, description="Build shared libraries") + + depends_on("c", type="build") diff --git a/var/spack/repos/requirements.test/repo.yaml b/var/spack/repos/requirements.test/repo.yaml new file mode 100644 index 0000000000..7be2a780ea --- /dev/null +++ b/var/spack/repos/requirements.test/repo.yaml @@ -0,0 +1,2 @@ +repo: + namespace: requirements.test |