concretizer: more detailed section headers in concretize.lp
This commit is contained in:
		 Todd Gamblin
					Todd Gamblin
				
			
				
					committed by
					
						 Tamara Dahlgren
						Tamara Dahlgren
					
				
			
			
				
	
			
			
			 Tamara Dahlgren
						Tamara Dahlgren
					
				
			
						parent
						
							56acb5a0c7
						
					
				
				
					commit
					9bb0375443
				
			| @@ -54,45 +54,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), | ||||||
| @@ -119,19 +85,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). | ||||||
| @@ -149,6 +108,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). | ||||||
| @@ -219,6 +195,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. | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user