Recover splicing semantic

This commit is contained in:
Massimiliano Culpo 2025-01-20 17:55:44 +01:00
parent 0d6a5c0f06
commit 00c04bd36a
No known key found for this signature in database
GPG Key ID: 3E52BB992233066C

View File

@ -547,7 +547,10 @@ virtual_condition_holds(node(Y, A2), Virtual)
% if a package is assigned a hash, it's concrete.
concrete(PackageNode) :- attr("hash", PackageNode, _), attr("node", PackageNode).
:- concrete(PackageNode), depends_on(PackageNode, DependencyNode), not concrete(DependencyNode).
:- concrete(PackageNode),
depends_on(PackageNode, DependencyNode),
not concrete(DependencyNode),
not abi_splice_conditions_hold(_, DependencyNode, _, _).
%-----------------------------------------------------------------------------
% Dependency semantics
@ -592,6 +595,13 @@ virtual_edge_needed(ParentNode, ChildNode, node(X, Virtual)) :-
provider(ChildNode, node(X, Virtual)),
attr("virtual_on_edge", ParentNode, ChildNode, Virtual).
virtual_edge_needed(ParentNode, ChildNode, node(X, Virtual)) :-
concrete(ParentNode),
abi_splice_conditions_hold(_, ChildNode, _, _),
provider(ChildNode, node(X, Virtual)),
attr("virtual_on_edge", ParentNode, ChildNode, Virtual).
edge_needed(ParentNode, ChildNode) :- virtual_edge_needed(ParentNode, ChildNode, _).
provider_needed(ChildNode, VirtualNode) :- virtual_edge_needed(_, ChildNode, VirtualNode).
provider_needed(ChildNode, VirtualNode) :- attr("virtual_root", VirtualNode), provider(ChildNode, VirtualNode).