concretizer: optimized loop on node platforms

We can speed-up the computation by avoiding a
double loop in a cardinality constraint and
enforcing the rule instead as an integrity
constraint.
This commit is contained in:
Massimiliano Culpo 2020-12-21 22:16:37 +01:00 committed by Tamara Dahlgren
parent cb76c5a90d
commit 4bbc6eec51

View File

@ -362,7 +362,7 @@ variant_default_value(Package, Variant, Value)
% when assigned a value.
auto_variant("dev_path").
auto_variant("patches").
variant(Package, "dev_path")
variant(Package, Variant)
:- variant_set(Package, Variant, _), auto_variant(Variant).
variant_single_value(Package, "dev_path")
:- variant_set(Package, "dev_path", _).
@ -381,9 +381,9 @@ variant_single_value(Package, "dev_path")
%-----------------------------------------------------------------------------
% Platform semantics
%-----------------------------------------------------------------------------
% one platform per node
1 { node_platform(Package, Platform) : node_platform(Packagee, Platform) } 1
:- node(Package).
:- M = #count { Platform : node_platform(Package, Platform) }, M !=1, node(Package).
% if no platform is set, fall back to the default
node_platform(Package, Platform)