Add intel-oneapi-runtime, allow injecting virtual dependencies (#42062)
				
					
				
			This PR adds:
- A new runtime for `%oneapi` compilers, called `intel-oneapi-runtime`
- Information to both `gcc-runtime`  and `intel-oneapi-runtime`, to ensure
  that we don't mix compilers using different soname for either `libgfortran`
  or `libifcore`
To do so, the following internal mechanisms have been implemented:
- Possibility to inject virtual dependencies from the `runtime_constraints`
  callback on packages
Information has been added to `gcc-runtime` to provide the correct soname
under different conditions on its `%gcc`.
Rules injected into the solver looks like:
```prolog
% Add a dependency on 'gfortran@5' for nodes compiled with gcc@=13.2.0 and using the 'fortran' language
attr("dependency_holds", node(ID, Package), "gfortran", "link") :-
  attr("node", node(ID, Package)),
  attr("node_compiler", node(ID, Package), "gcc"),
  attr("node_compiler_version", node(ID, Package), "gcc", "13.2.0"),
  not external(node(ID, Package)),
  not runtime(Package),
  attr("language", node(ID, Package), "fortran").
attr("virtual_node", node(RuntimeID, "gfortran")) :-
  attr("depends_on", node(ID, Package), ProviderNode, "link"),
  provider(ProviderNode, node(RuntimeID, "gfortran")),
  attr("node", node(ID, Package)),
  attr("node_compiler", node(ID, Package), "gcc"),
  attr("node_compiler_version", node(ID, Package), "gcc", "13.2.0"),
  not external(node(ID, Package)),
  not runtime(Package),
  attr("language", node(ID, Package), "fortran").
attr("node_version_satisfies", node(RuntimeID, "gfortran"), "5") :-
  attr("depends_on", node(ID, Package), ProviderNode, "link"),
  provider(ProviderNode, node(RuntimeID, "gfortran")),
  attr("node", node(ID, Package)),
  attr("node_compiler", node(ID, Package), "gcc"),
  attr("node_compiler_version", node(ID, Package), "gcc", "13.2.0"),
  not external(node(ID, Package)),
  not runtime(Package),
  attr("language", node(ID, Package), "fortran").
```
			
			
This commit is contained in:
		 Massimiliano Culpo
					Massimiliano Culpo
				
			
				
					committed by
					
						 GitHub
						GitHub
					
				
			
			
				
	
			
			
			 GitHub
						GitHub
					
				
			
						parent
						
							1fd4353289
						
					
				
				
					commit
					0c9a53ba3a
				
			| @@ -24,6 +24,7 @@ packages: | ||||
|       elf: [elfutils] | ||||
|       fftw-api: [fftw, amdfftw] | ||||
|       flame: [libflame, amdlibflame] | ||||
|       fortran-rt: [gcc-runtime, intel-oneapi-runtime] | ||||
|       fuse: [libfuse] | ||||
|       gl: [glx, osmesa] | ||||
|       glu: [mesa-glu, openglu] | ||||
| @@ -34,7 +35,9 @@ packages: | ||||
|       java: [openjdk, jdk, ibm-java] | ||||
|       jpeg: [libjpeg-turbo, libjpeg] | ||||
|       lapack: [openblas, amdlibflame] | ||||
|       libgfortran: [ gcc-runtime ] | ||||
|       libglx: [mesa+glx, mesa18+glx] | ||||
|       libifcore: [ intel-oneapi-runtime ] | ||||
|       libllvm: [llvm] | ||||
|       libosmesa: [mesa+osmesa, mesa18+osmesa] | ||||
|       lua-lang: [lua, lua-luajit-openresty, lua-luajit] | ||||
|   | ||||
		Reference in New Issue
	
	Block a user