Check that compiler flags can propagate

This commit is contained in:
Kayla Butler 2023-08-07 14:56:07 -07:00
parent a9be08f560
commit 0d9b416bc5
2 changed files with 9 additions and 22 deletions

View File

@ -1708,7 +1708,7 @@ class Head:
node_compiler_version = fn.attr("node_compiler_version_set")
node_flag = fn.attr("node_flag_set")
node_flag_source = fn.attr("node_flag_source")
node_flag_propagate = fn.attr("node_flag_propagate")
node_flag_possible_prop = fn.attr("node_flag_possible_prop")
variant_propagate = fn.attr("variant_propagate")
class Body:
@ -1722,7 +1722,7 @@ class Body:
node_compiler_version = fn.attr("node_compiler_version")
node_flag = fn.attr("node_flag")
node_flag_source = fn.attr("node_flag_source")
node_flag_propagate = fn.attr("node_flag_propagate")
node_flag_possible_prop = fn.attr("node_flag_possible_prop")
variant_propagate = fn.attr("variant_propagate")
f = Body if body else Head
@ -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, flag, spec.name))
clauses.append(f.node_flag_possible_prop(spec.name, flag_type, flag, spec.name))
# dependencies
if spec.concrete:

View File

@ -1189,38 +1189,25 @@ error(100, "Compiler {1}@{2} requested for {0} cannot be found. Set install_miss
% Compiler flags
%-----------------------------------------------------------------------------
% propagate flags when compiler match
can_inherit_flags(PackageNode, DependencyNode, FlagType)
:- same_compiler(PackageNode, DependencyNode),
not attr("node_flag_set", DependencyNode, FlagType, _),
flag_type(FlagType).
same_compiler(PackageNode, DependencyNode)
:- depends_on(PackageNode, DependencyNode),
node_compiler(PackageNode, CompilerID),
node_compiler(DependencyNode, CompilerID),
compiler_id(CompilerID).
node_flag_inherited(DependencyNode, FlagType, Flag)
:- attr("node_flag_set", PackageNode, FlagType, Flag),
can_inherit_flags(PackageNode, DependencyNode, FlagType),
attr("node_flag_propagate", PackageNode, FlagType).
% Ensure propagation
:- node_flag_inherited(PackageNode, FlagType, Flag),
can_inherit_flags(PackageNode, DependencyNode, FlagType),
attr("node_flag_propagate", PackageNode, FlagType).
=======
% propagate flags when compiler match
attr("node_flag_propagate", Package, FlagType, Flag, Source) :-
attr("node_flag_possible_prop", Package, FlagType, Flag, Source),
not attr("node_flag_set", Package, FlagType, _).
attr("node_flag_possible_prop", 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_possible_prop", Parent, _, _, Source),
attr("node_flag", 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),