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