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