From 00c04bd36a61e37f91d5be7a2bc68fb93e0429b7 Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Mon, 20 Jan 2025 17:55:44 +0100 Subject: [PATCH] Recover splicing semantic --- lib/spack/spack/solver/concretize.lp | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/lib/spack/spack/solver/concretize.lp b/lib/spack/spack/solver/concretize.lp index c164a274704..45d3ab9fdef 100644 --- a/lib/spack/spack/solver/concretize.lp +++ b/lib/spack/spack/solver/concretize.lp @@ -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).