concretizer: optimize loop on compiler version
Similar to the optimization on platform
This commit is contained in:
		 Massimiliano Culpo
					Massimiliano Culpo
				
			
				
					committed by
					
						 Tamara Dahlgren
						Tamara Dahlgren
					
				
			
			
				
	
			
			
			 Tamara Dahlgren
						Tamara Dahlgren
					
				
			
						parent
						
							4bbc6eec51
						
					
				
				
					commit
					acd523c7f3
				
			| @@ -577,7 +577,6 @@ def available_compilers(self): | |||||||
|             compiler_versions[compiler.name].add(compiler.version) |             compiler_versions[compiler.name].add(compiler.version) | ||||||
| 
 | 
 | ||||||
|         for compiler in sorted(compiler_versions): |         for compiler in sorted(compiler_versions): | ||||||
|             self.gen.fact(fn.compiler(compiler)) |  | ||||||
|             for v in sorted(compiler_versions[compiler]): |             for v in sorted(compiler_versions[compiler]): | ||||||
|                 self.gen.fact(fn.compiler_version(compiler, v)) |                 self.gen.fact(fn.compiler_version(compiler, v)) | ||||||
| 
 | 
 | ||||||
|   | |||||||
| @@ -502,13 +502,20 @@ derive_target_from_parent(Parent, Package) | |||||||
| %----------------------------------------------------------------------------- | %----------------------------------------------------------------------------- | ||||||
| % Compiler semantics | % Compiler semantics | ||||||
| %----------------------------------------------------------------------------- | %----------------------------------------------------------------------------- | ||||||
|  | compiler(Compiler) :- compiler_version(Compiler, _). | ||||||
|  |  | ||||||
| % one compiler per node | % There must be only one compiler set per node. The compiler | ||||||
| 1 { node_compiler(Package, Compiler) : compiler(Compiler) } 1 :- node(Package). | % is chosen among available versions. | ||||||
| 1 { node_compiler_version(Package, Compiler, Version) | 1 { node_compiler_version(Package, Compiler, Version) | ||||||
|     : compiler_version(Compiler, Version) } 1 :- node(Package). |     : compiler_version(Compiler, Version) } 1 :- node(Package). | ||||||
| 1 { compiler_weight(Package, Weight) : compiler_weight(Package, Weight) } 1 |  | ||||||
|  :- node(Package). | % Sometimes we just need to know the compiler and not the version | ||||||
|  | node_compiler(Package, Compiler) :- node_compiler_version(Package, Compiler, _). | ||||||
|  |  | ||||||
|  | % We can't have a compiler be enforced and select the version from another compiler | ||||||
|  | :- node_compiler(Package, Compiler1), | ||||||
|  |    node_compiler_version(Package, Compiler2, _), | ||||||
|  |    Compiler1 != Compiler2. | ||||||
|  |  | ||||||
| % define node_compiler_version_satisfies/3 from node_compiler_version_satisfies/4 | % define node_compiler_version_satisfies/3 from node_compiler_version_satisfies/4 | ||||||
| % version_satisfies implies that exactly one of the satisfying versions | % version_satisfies implies that exactly one of the satisfying versions | ||||||
| @@ -519,6 +526,7 @@ derive_target_from_parent(Parent, Package) | |||||||
| node_compiler_version_satisfies(Package, Compiler, Constraint) | node_compiler_version_satisfies(Package, Compiler, Constraint) | ||||||
|   :- node_compiler_version(Package, Compiler, Version), |   :- node_compiler_version(Package, Compiler, Version), | ||||||
|      node_compiler_version_satisfies(Package, Compiler, Constraint, Version). |      node_compiler_version_satisfies(Package, Compiler, Constraint, Version). | ||||||
|  |  | ||||||
| #defined node_compiler_version_satisfies/4. | #defined node_compiler_version_satisfies/4. | ||||||
|  |  | ||||||
| % If the compiler version was set from the command line, | % If the compiler version was set from the command line, | ||||||
| @@ -566,17 +574,14 @@ compiler_version_match(Package, 1) | |||||||
|  |  | ||||||
| % compilers weighted by preference according to packages.yaml | % compilers weighted by preference according to packages.yaml | ||||||
| compiler_weight(Package, Weight) | compiler_weight(Package, Weight) | ||||||
|  :- node_compiler(Package, Compiler), |  :- node_compiler_version(Package, Compiler, V), | ||||||
|     node_compiler_version(Package, Compiler, V), |  | ||||||
|     node_compiler_preference(Package, Compiler, V, Weight). |     node_compiler_preference(Package, Compiler, V, Weight). | ||||||
| compiler_weight(Package, Weight) | compiler_weight(Package, Weight) | ||||||
|  :- node_compiler(Package, Compiler), |  :- node_compiler_version(Package, Compiler, V), | ||||||
|     node_compiler_version(Package, Compiler, V), |  | ||||||
|     not node_compiler_preference(Package, Compiler, V, _), |     not node_compiler_preference(Package, Compiler, V, _), | ||||||
|     default_compiler_preference(Compiler, V, Weight). |     default_compiler_preference(Compiler, V, Weight). | ||||||
| compiler_weight(Package, 100) | compiler_weight(Package, 100) | ||||||
|  :- node_compiler(Package, Compiler), |  :- node_compiler_version(Package, Compiler, Version), | ||||||
|     node_compiler_version(Package, Compiler, Version), |  | ||||||
|     not node_compiler_preference(Package, Compiler, Version, _), |     not node_compiler_preference(Package, Compiler, Version, _), | ||||||
|     not default_compiler_preference(Compiler, Version, _). |     not default_compiler_preference(Compiler, Version, _). | ||||||
|  |  | ||||||
| @@ -610,7 +615,6 @@ node_flag_source(Dependency, Q) | |||||||
| node_flag(Package, FlagType, Flag) | node_flag(Package, FlagType, Flag) | ||||||
|  :- not node_flag_set(Package), |  :- not node_flag_set(Package), | ||||||
|     compiler_version_flag(Compiler, Version, FlagType, Flag), |     compiler_version_flag(Compiler, Version, FlagType, Flag), | ||||||
|     node_compiler(Package, Compiler), |  | ||||||
|     node_compiler_version(Package, Compiler, Version), |     node_compiler_version(Package, Compiler, Version), | ||||||
|     flag_type(FlagType), |     flag_type(FlagType), | ||||||
|     compiler(Compiler), |     compiler(Compiler), | ||||||
| @@ -619,7 +623,6 @@ node_flag(Package, FlagType, Flag) | |||||||
| node_flag_compiler_default(Package) | node_flag_compiler_default(Package) | ||||||
|  :- not node_flag_set(Package), |  :- not node_flag_set(Package), | ||||||
|     compiler_version_flag(Compiler, Version, FlagType, Flag), |     compiler_version_flag(Compiler, Version, FlagType, Flag), | ||||||
|     node_compiler(Package, Compiler), |  | ||||||
|     node_compiler_version(Package, Compiler, Version), |     node_compiler_version(Package, Compiler, Version), | ||||||
|     flag_type(FlagType), |     flag_type(FlagType), | ||||||
|     compiler(Compiler), |     compiler(Compiler), | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user