concretizer: more detailed section headers in concretize.lp
This commit is contained in:
parent
39b77e1b39
commit
3cc89726ee
@ -59,45 +59,11 @@ depends_on(Package, Dependency, Type)
|
|||||||
virtual(Virtual),
|
virtual(Virtual),
|
||||||
not external(Package).
|
not external(Package).
|
||||||
|
|
||||||
% Equivalencies of the form:
|
%-----------------------------------------------------------------------------
|
||||||
|
% Conditional dependencies
|
||||||
%
|
%
|
||||||
% name(Arg1, Arg2, ...) :- attr("name", Arg1, Arg2, ...).
|
% This takes care of `when=SPEC` in `depends_on("foo@1.0+bar", when="SPEC")`.
|
||||||
% attr("name", Arg1, Arg2, ...) :- name(Arg1, Arg2, ...).
|
%-----------------------------------------------------------------------------
|
||||||
%
|
|
||||||
% These allow us to easily define conditional dependency and conflict rules
|
|
||||||
% without enumerating all spec attributes every time.
|
|
||||||
node(Package) :- attr("node", Package).
|
|
||||||
version(Package, Version) :- attr("version", Package, Version).
|
|
||||||
version_satisfies(Package, Constraint) :- attr("version_satisfies", Package, Constraint).
|
|
||||||
node_platform(Package, Platform) :- attr("node_platform", Package, Platform).
|
|
||||||
node_os(Package, OS) :- attr("node_os", Package, OS).
|
|
||||||
node_target(Package, Target) :- attr("node_target", Package, Target).
|
|
||||||
node_target_satisfies(Package, Target) :- attr("node_target_satisfies", Package, Target).
|
|
||||||
variant_value(Package, Variant, Value) :- attr("variant_value", Package, Variant, Value).
|
|
||||||
variant_set(Package, Variant, Value) :- attr("variant_set", Package, Variant, Value).
|
|
||||||
node_flag(Package, FlagType, Flag) :- attr("node_flag", Package, FlagType, Flag).
|
|
||||||
node_compiler(Package, Compiler) :- attr("node_compiler", Package, Compiler).
|
|
||||||
node_compiler_version(Package, Compiler, Version)
|
|
||||||
:- attr("node_compiler_version", Package, Compiler, Version).
|
|
||||||
node_compiler_version_satisfies(Package, Compiler, Version)
|
|
||||||
:- attr("node_compiler_version_satisfies", Package, Compiler, Version).
|
|
||||||
|
|
||||||
attr("node", Package) :- node(Package).
|
|
||||||
attr("version", Package, Version) :- version(Package, Version).
|
|
||||||
attr("version_satisfies", Package, Constraint) :- version_satisfies(Package, Constraint).
|
|
||||||
attr("node_platform", Package, Platform) :- node_platform(Package, Platform).
|
|
||||||
attr("node_os", Package, OS) :- node_os(Package, OS).
|
|
||||||
attr("node_target", Package, Target) :- node_target(Package, Target).
|
|
||||||
attr("node_target_satisfies", Package, Target) :- node_target_satisfies(Package, Target).
|
|
||||||
attr("variant_value", Package, Variant, Value) :- variant_value(Package, Variant, Value).
|
|
||||||
attr("variant_set", Package, Variant, Value) :- variant_set(Package, Variant, Value).
|
|
||||||
attr("node_flag", Package, FlagType, Flag) :- node_flag(Package, FlagType, Flag).
|
|
||||||
attr("node_compiler", Package, Compiler) :- node_compiler(Package, Compiler).
|
|
||||||
attr("node_compiler_version", Package, Compiler, Version)
|
|
||||||
:- node_compiler_version(Package, Compiler, Version).
|
|
||||||
attr("node_compiler_version_satisfies", Package, Compiler, Version)
|
|
||||||
:- node_compiler_version_satisfies(Package, Compiler, Version).
|
|
||||||
|
|
||||||
% if any individual condition below is true, trigger the dependency.
|
% if any individual condition below is true, trigger the dependency.
|
||||||
dependency_conditions(Package, Dependency, Type) :-
|
dependency_conditions(Package, Dependency, Type) :-
|
||||||
dependency_conditions_hold(ID, Package, Dependency),
|
dependency_conditions_hold(ID, Package, Dependency),
|
||||||
@ -124,19 +90,12 @@ dependency_conditions_hold(ID, Parent, Dependency) :-
|
|||||||
#defined required_dependency_condition/4.
|
#defined required_dependency_condition/4.
|
||||||
#defined required_dependency_condition/5.
|
#defined required_dependency_condition/5.
|
||||||
|
|
||||||
% general rules for conflicts
|
%-----------------------------------------------------------------------------
|
||||||
:- not external(Package) : conflict_condition(ID, "node", Package);
|
% Imposed dependencies
|
||||||
attr(Name, Arg1) : conflict_condition(ID, Name, Arg1);
|
%
|
||||||
attr(Name, Arg1, Arg2) : conflict_condition(ID, Name, Arg1, Arg2);
|
% This handles the `@1.0+bar` in `depends_on("foo@1.0+bar", when="SPEC")`.
|
||||||
attr(Name, Arg1, Arg2, Arg3) : conflict_condition(ID, Name, Arg1, Arg2, Arg3);
|
%-----------------------------------------------------------------------------
|
||||||
conflict(ID, Package).
|
% this rule instantiates every non-root node in the DAG
|
||||||
|
|
||||||
#defined conflict/2.
|
|
||||||
#defined conflict_condition/3.
|
|
||||||
#defined conflict_condition/4.
|
|
||||||
#defined conflict_condition/5.
|
|
||||||
|
|
||||||
% Implications from matching a dependency condition
|
|
||||||
node(Dependency) :-
|
node(Dependency) :-
|
||||||
dependency_conditions_hold(ID, Package, Dependency),
|
dependency_conditions_hold(ID, Package, Dependency),
|
||||||
depends_on(Package, Dependency).
|
depends_on(Package, Dependency).
|
||||||
@ -154,6 +113,23 @@ attr(Name, Arg1, Arg2, Arg3) :-
|
|||||||
#defined imposed_dependency_condition/4.
|
#defined imposed_dependency_condition/4.
|
||||||
#defined imposed_dependency_condition/5.
|
#defined imposed_dependency_condition/5.
|
||||||
|
|
||||||
|
%-----------------------------------------------------------------------------
|
||||||
|
% Conflicts
|
||||||
|
%-----------------------------------------------------------------------------
|
||||||
|
:- not external(Package) : conflict_condition(ID, "node", Package);
|
||||||
|
attr(Name, Arg1) : conflict_condition(ID, Name, Arg1);
|
||||||
|
attr(Name, Arg1, Arg2) : conflict_condition(ID, Name, Arg1, Arg2);
|
||||||
|
attr(Name, Arg1, Arg2, Arg3) : conflict_condition(ID, Name, Arg1, Arg2, Arg3);
|
||||||
|
conflict(ID, Package).
|
||||||
|
|
||||||
|
#defined conflict/2.
|
||||||
|
#defined conflict_condition/3.
|
||||||
|
#defined conflict_condition/4.
|
||||||
|
#defined conflict_condition/5.
|
||||||
|
|
||||||
|
%-----------------------------------------------------------------------------
|
||||||
|
% Virtual dependencies
|
||||||
|
%-----------------------------------------------------------------------------
|
||||||
% if a virtual was required by some package, one provider is in the DAG
|
% if a virtual was required by some package, one provider is in the DAG
|
||||||
1 { node(Package) : provides_virtual(Package, Virtual) } 1
|
1 { node(Package) : provides_virtual(Package, Virtual) } 1
|
||||||
:- virtual_node(Virtual).
|
:- virtual_node(Virtual).
|
||||||
@ -224,6 +200,48 @@ path(Parent, Child) :- depends_on(Parent, Child).
|
|||||||
path(Parent, Descendant) :- path(Parent, A), depends_on(A, Descendant).
|
path(Parent, Descendant) :- path(Parent, A), depends_on(A, Descendant).
|
||||||
:- path(A, B), path(B, A).
|
:- path(A, B), path(B, A).
|
||||||
|
|
||||||
|
%-----------------------------------------------------------------------------
|
||||||
|
% Spec Attributes
|
||||||
|
%-----------------------------------------------------------------------------
|
||||||
|
% Equivalencies of the form:
|
||||||
|
%
|
||||||
|
% name(Arg1, Arg2, ...) :- attr("name", Arg1, Arg2, ...).
|
||||||
|
% attr("name", Arg1, Arg2, ...) :- name(Arg1, Arg2, ...).
|
||||||
|
%
|
||||||
|
% These allow us to easily define conditional dependency and conflict rules
|
||||||
|
% without enumerating all spec attributes every time.
|
||||||
|
node(Package) :- attr("node", Package).
|
||||||
|
version(Package, Version) :- attr("version", Package, Version).
|
||||||
|
version_satisfies(Package, Constraint) :- attr("version_satisfies", Package, Constraint).
|
||||||
|
node_platform(Package, Platform) :- attr("node_platform", Package, Platform).
|
||||||
|
node_os(Package, OS) :- attr("node_os", Package, OS).
|
||||||
|
node_target(Package, Target) :- attr("node_target", Package, Target).
|
||||||
|
node_target_satisfies(Package, Target) :- attr("node_target_satisfies", Package, Target).
|
||||||
|
variant_value(Package, Variant, Value) :- attr("variant_value", Package, Variant, Value).
|
||||||
|
variant_set(Package, Variant, Value) :- attr("variant_set", Package, Variant, Value).
|
||||||
|
node_flag(Package, FlagType, Flag) :- attr("node_flag", Package, FlagType, Flag).
|
||||||
|
node_compiler(Package, Compiler) :- attr("node_compiler", Package, Compiler).
|
||||||
|
node_compiler_version(Package, Compiler, Version)
|
||||||
|
:- attr("node_compiler_version", Package, Compiler, Version).
|
||||||
|
node_compiler_version_satisfies(Package, Compiler, Version)
|
||||||
|
:- attr("node_compiler_version_satisfies", Package, Compiler, Version).
|
||||||
|
|
||||||
|
attr("node", Package) :- node(Package).
|
||||||
|
attr("version", Package, Version) :- version(Package, Version).
|
||||||
|
attr("version_satisfies", Package, Constraint) :- version_satisfies(Package, Constraint).
|
||||||
|
attr("node_platform", Package, Platform) :- node_platform(Package, Platform).
|
||||||
|
attr("node_os", Package, OS) :- node_os(Package, OS).
|
||||||
|
attr("node_target", Package, Target) :- node_target(Package, Target).
|
||||||
|
attr("node_target_satisfies", Package, Target) :- node_target_satisfies(Package, Target).
|
||||||
|
attr("variant_value", Package, Variant, Value) :- variant_value(Package, Variant, Value).
|
||||||
|
attr("variant_set", Package, Variant, Value) :- variant_set(Package, Variant, Value).
|
||||||
|
attr("node_flag", Package, FlagType, Flag) :- node_flag(Package, FlagType, Flag).
|
||||||
|
attr("node_compiler", Package, Compiler) :- node_compiler(Package, Compiler).
|
||||||
|
attr("node_compiler_version", Package, Compiler, Version)
|
||||||
|
:- node_compiler_version(Package, Compiler, Version).
|
||||||
|
attr("node_compiler_version_satisfies", Package, Compiler, Version)
|
||||||
|
:- node_compiler_version_satisfies(Package, Compiler, Version).
|
||||||
|
|
||||||
% do not warn if generated program contains none of these.
|
% do not warn if generated program contains none of these.
|
||||||
#defined depends_on/3.
|
#defined depends_on/3.
|
||||||
#defined declared_dependency/3.
|
#defined declared_dependency/3.
|
||||||
|
Loading…
Reference in New Issue
Block a user