From 9dc57d2864cfb9d3ec27d9845abdb95d01e62a5f Mon Sep 17 00:00:00 2001 From: Philip Sakievich Date: Thu, 3 Apr 2025 22:11:02 -0600 Subject: [PATCH] WIP: More rules --- lib/spack/spack/solver/concretize.lp | 7 +++++++ lib/spack/spack/test/packages.py | 5 +++++ 2 files changed, 12 insertions(+) diff --git a/lib/spack/spack/solver/concretize.lp b/lib/spack/spack/solver/concretize.lp index 0f2b7a94f16..70db459dd84 100644 --- a/lib/spack/spack/solver/concretize.lp +++ b/lib/spack/spack/solver/concretize.lp @@ -349,6 +349,13 @@ error(10, "Commit '{0}' must match package.py value '{1}' for '{2}@={3}'", Vsha, pkg_fact(Package, version_has_commit(Version, Psha)), Vsha != Psha. +% need a rule for above, can't select a version that needs a commit if variant matches a version that has a commit + :- attr("version", node(ID, Package), VersionA), + attr("variant_value", node(ID, Package), "commit", Vsha), + pkg_fact(Package, version_has_commit(VersionB, Psha)), + Vsha == Psha, + VersionA != VersionB. + #defined version_satisfies/3. #defined deprecated_versions_not_allowed/0. #defined deprecated_version/2. diff --git a/lib/spack/spack/test/packages.py b/lib/spack/spack/test/packages.py index 5e197398ae3..f90e977c818 100644 --- a/lib/spack/spack/test/packages.py +++ b/lib/spack/spack/test/packages.py @@ -350,5 +350,10 @@ def test_phil_package_condtional_variants_may_depend_on_commit(mock_packages, co def test_phil_commit_variant_finds_matches_for_commit_versions(mock_packages, config): + """ + test conditional dependence on `when='commit='` + git-ref-commit-dep variant commit-selector depends on a specific commit of git-ref-package + that commit is associated with the stable version of git-ref-package + """ spec = spack.concretize.concretize_one(Spec("git-ref-commit-dep+commit-selector")) assert spec.satisfies("^git-ref-package@stable")