From 92ff8cfd455862c900e7aebd8f120eac4efce836 Mon Sep 17 00:00:00 2001 From: Kayla Butler Date: Wed, 26 Jul 2023 13:58:04 -0700 Subject: [PATCH] Simplify node_flag_propagate and propagate past 1st level dependencies --- lib/spack/spack/solver/asp.py | 2 +- lib/spack/spack/solver/concretize.lp | 17 +++++++++++++---- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/lib/spack/spack/solver/asp.py b/lib/spack/spack/solver/asp.py index 8ce04cdc5bf..1918f81aa07 100644 --- a/lib/spack/spack/solver/asp.py +++ b/lib/spack/spack/solver/asp.py @@ -1805,7 +1805,7 @@ class Body: clauses.append(f.node_flag(spec.name, flag_type, flag)) clauses.append(f.node_flag_source(spec.name, flag_type, spec.name)) if not spec.concrete and flag.propagate is True: - clauses.append(f.node_flag_propagate(spec.name, flag_type)) + clauses.append(f.node_flag_propagate(spec.name, flag_type, flag, spec.name)) # dependencies if spec.concrete: diff --git a/lib/spack/spack/solver/concretize.lp b/lib/spack/spack/solver/concretize.lp index 9d1b48b3794..912ade9e6f6 100644 --- a/lib/spack/spack/solver/concretize.lp +++ b/lib/spack/spack/solver/concretize.lp @@ -1210,14 +1210,23 @@ node_flag_inherited(DependencyNode, FlagType, Flag) :- node_flag_inherited(PackageNode, FlagType, Flag), can_inherit_flags(PackageNode, DependencyNode, FlagType), attr("node_flag_propagate", PackageNode, FlagType). +======= +attr("node_flag_propagate", Package, FlagType, Flag, Source) :- + node_compiler(Source, CompilerID), + node_compiler(Package, CompilerID), + depends_on(Parent, Package), + attr("node_flag_propagate", Parent, _, _, Source), + attr("node_flag_value", Source, FlagType, Flag), + not attr("node_flag_set", Package, FlagType, _). + compiler_id(CompilerID), + flag_type(FlagType). +>>>>>>> b44c47bc83 (Simplify node_flag_propagate and propagate past 1st level dependencies) error(100, "{0} and {1} cannot both propagate compiler flags '{2}' to {3}", Source1, Source2, Package, FlagType) :- depends_on(Source1, Package), depends_on(Source2, Package), - attr("node_flag_propagate", Source1, FlagType), - attr("node_flag_propagate", Source2, FlagType), - can_inherit_flags(Source1, Package, FlagType), - can_inherit_flags(Source2, Package, FlagType), + attr("node_flag_propagate", _, FlagType, _, Source1), + attr("node_flag_propagate", _, FlagType, _, Source2), Source1 < Source2. % remember where flags came from