@@ -429,16 +429,22 @@ condition_packages(ID, A1) :- condition_requirement(ID, _, A1, _, _, _).
429429trigger_node(ID, node(PackageID, Package), node(PackageID, Package)) :- pkg_fact(Package, trigger_id(ID)), attr("node", node(PackageID, Package)).
430430trigger_node(ID, node(PackageID, Package), node(VirtualID, Virtual)) :- pkg_fact(Virtual, trigger_id(ID)), provider(node(PackageID, Package), node(VirtualID, Virtual)).
431431
432+ % This is the "real node" that triggers the request, e.g. if the request started from "mpi" this is the mpi provider
433+ trigger_real_node(ID, PackageNode) :- trigger_node(ID, PackageNode, _).
434+
435+ % This is the requestor node, which may be a "real" or a "virtual" node
436+ trigger_requestor_node(ID, RequestorNode) :- trigger_node(ID, _, RequestorNode).
437+
432438condition_nodes(TriggerID, PackageNode, node(X, A1))
433439 :- condition_packages(TriggerID, A1),
434440 condition_set(PackageNode, node(X, A1)),
435441 not self_build_requirement(PackageNode, node(X, A1)),
436- trigger_node (TriggerID, PackageNode, _ ).
442+ trigger_real_node (TriggerID, PackageNode).
437443
438444cannot_hold(TriggerID, PackageNode)
439445 :- condition_packages(TriggerID, A1),
440446 not condition_set(PackageNode, node(_, A1)),
441- trigger_node (TriggerID, PackageNode, _ ),
447+ trigger_real_node (TriggerID, PackageNode),
442448 attr("node", PackageNode).
443449
444450trigger_condition_holds(ID, RequestorNode) :-
@@ -455,39 +461,39 @@ trigger_condition_holds(ID, RequestorNode) :-
455461%%%%
456462
457463satisfied(trigger(PackageNode), condition_requirement(ID, Name, A1)) :-
458- trigger_node (ID, PackageNode, _ ),
464+ trigger_real_node (ID, PackageNode),
459465 attr(Name, node(X, A1)),
460466 condition_requirement(ID, Name, A1),
461467 condition_nodes(ID, PackageNode, node(X, A1)).
462468
463469satisfied(trigger(PackageNode), condition_requirement(ID, Name, A1, A2)) :-
464- trigger_node (ID, PackageNode, _ ),
470+ trigger_real_node (ID, PackageNode),
465471 attr(Name, node(X, A1), A2),
466472 condition_requirement(ID, Name, A1, A2),
467473 condition_nodes(ID, PackageNode, node(X, A1)).
468474
469475satisfied(trigger(PackageNode), condition_requirement(ID, Name, A1, A2, A3)) :-
470- trigger_node (ID, PackageNode, _ ),
476+ trigger_real_node (ID, PackageNode),
471477 attr(Name, node(X, A1), A2, A3),
472478 condition_requirement(ID, Name, A1, A2, A3),
473479 condition_nodes(ID, PackageNode, node(X, A1)),
474480 not node_attributes_with_custom_rules(Name).
475481
476482satisfied(trigger(PackageNode), condition_requirement(ID, Name, A1, A2, A3, A4)) :-
477- trigger_node (ID, PackageNode, _ ),
483+ trigger_real_node (ID, PackageNode),
478484 attr(Name, node(X, A1), A2, A3, A4),
479485 condition_requirement(ID, Name, A1, A2, A3, A4),
480486 condition_nodes(ID, PackageNode, node(X, A1)).
481487
482488satisfied(trigger(PackageNode), condition_requirement(ID, "depends_on", A1, A2, A3)) :-
483- trigger_node (ID, PackageNode, _ ),
489+ trigger_real_node (ID, PackageNode),
484490 attr("depends_on", node(X, A1), node(Y, A2), A3),
485491 condition_requirement(ID, "depends_on", A1, A2, A3),
486492 condition_nodes(ID, PackageNode, node(X, A1)),
487493 condition_nodes(ID, PackageNode, node(Y, A2)).
488494
489495satisfied(trigger(PackageNode), condition_requirement(ID, "concrete_variant_request", A1, A2, A3)) :-
490- trigger_node (ID, PackageNode, _ ),
496+ trigger_real_node (ID, PackageNode),
491497 condition_requirement(ID, "concrete_variant_request", A1, A2, A3),
492498 condition_nodes(ID, PackageNode, node(X, A1)).
493499
@@ -501,35 +507,35 @@ satisfied(trigger(PackageNode), condition_requirement(ID, "closure", A1, A2, A3)
501507%%%%
502508
503509satisfied(trigger(PackageNode), condition_requirement(ID, "node", A1)) :-
504- trigger_node (ID, PackageNode, _ ),
510+ trigger_real_node (ID, PackageNode),
505511 reused_provider(PackageNode, _),
506512 condition_requirement(ID, "node", A1).
507513
508514satisfied(trigger(PackageNode), condition_requirement(ID, "virtual_node", A1)) :-
509- trigger_node (ID, PackageNode, _ ),
515+ trigger_real_node (ID, PackageNode),
510516 reused_provider(PackageNode, node(_, A1)),
511517 condition_requirement(ID, "virtual_node", A1).
512518
513519satisfied(trigger(PackageNode), condition_requirement(ID, "virtual_on_incoming_edges", A1, A2)) :-
514- trigger_node (ID, PackageNode, _ ),
520+ trigger_real_node (ID, PackageNode),
515521 reused_provider(node(Hash, A1), node(Hash, A2)),
516522 condition_requirement(ID, "virtual_on_incoming_edges", A1, A2).
517523
518524satisfied(trigger(node(Hash, Package)), condition_requirement(ID, Name, Package, A1)) :-
519- trigger_node (ID, node(Hash, Package), _ ),
525+ trigger_real_node (ID, node(Hash, Package)),
520526 reused_provider(node(Hash, Package), node(Hash, Language)),
521527 hash_attr(Hash, Name, Package, A1),
522528 condition_requirement(ID, Name, Package, A1).
523529
524530satisfied(trigger(node(Hash, Package)), condition_requirement(ID, "node_version_satisfies", Package, VersionConstraint)) :-
525- trigger_node (ID, node(Hash, Package), _ ),
531+ trigger_real_node (ID, node(Hash, Package)),
526532 reused_provider(node(Hash, Package), node(Hash, Language)),
527533 hash_attr(Hash, "version", Package, Version),
528534 condition_requirement(ID, "node_version_satisfies", Package, VersionConstraint),
529535 pkg_fact(Package, version_satisfies(VersionConstraint, Version)).
530536
531537satisfied(trigger(node(Hash, Package)), condition_requirement(ID, Name, Package, A1, A2)) :-
532- trigger_node (ID, node(Hash, Package), _ ),
538+ trigger_real_node (ID, node(Hash, Package)),
533539 reused_provider(node(Hash, Package), node(Hash, Language)),
534540 hash_attr(Hash, Name, Package, A1, A2),
535541 condition_requirement(ID, Name, Package, A1, A2).
@@ -566,7 +572,7 @@ trigger_and_effect(Package, TriggerID, EffectID) :- trigger_and_effect(Package,
566572impose(EffectID, node(X, Package))
567573 :- not subcondition(ConditionID, _),
568574 trigger_and_effect(Package, ConditionID, TriggerID, EffectID),
569- trigger_node (TriggerID, _ , node(X, Package)),
575+ trigger_requestor_node (TriggerID, node(X, Package)),
570576 trigger_condition_holds(TriggerID, node(X, Package)),
571577 not do_not_impose(EffectID, node(X, Package)).
572578
@@ -577,7 +583,7 @@ impose(EffectID, node(X, Package))
577583 condition_holds(ConditionID, ConditionNode),
578584 condition_set(ConditionNode, node(X, Package)),
579585 trigger_and_effect(Package, SubconditionID, TriggerID, EffectID),
580- trigger_node (TriggerID, _ , node(X, Package)),
586+ trigger_requestor_node (TriggerID, node(X, Package)),
581587 trigger_condition_holds(TriggerID, node(X, Package)),
582588 not do_not_impose(EffectID, node(X, Package)).
583589
@@ -591,7 +597,7 @@ imposed_nodes(EffectID, node(NodeID, Package), node(X, A1))
591597 :- trigger_and_effect(Package, TriggerID, EffectID),
592598 imposed_packages(EffectID, A1),
593599 condition_set(node(NodeID, Package), node(X, A1)),
594- trigger_node (TriggerID, _ , node(NodeID, Package)),
600+ trigger_requestor_node (TriggerID, node(NodeID, Package)),
595601 % We don't want to add build requirements to imposed nodes, to avoid
596602 % unsat problems when we deal with self-dependencies: gcc@14 %gcc@10
597603 not self_build_requirement(node(NodeID, Package), node(X, A1)).
0 commit comments