spack/etc/spack/defaults
Massimiliano Culpo 0c9a53ba3a
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").
```
2024-03-24 22:59:21 -07:00
..
cray Don't set LD_LIBRARY_PATH by default on Linux (#28354) 2022-08-11 09:33:08 -05:00
darwin apple-libuuid: update installation directory (#40416) 2023-11-28 10:13:55 -08:00
linux Don't set LD_LIBRARY_PATH by default on Linux (#28354) 2022-08-11 09:33:08 -05:00
windows Allow configurable stage names (#36509) 2023-03-31 11:46:47 -07:00
bootstrap.yaml Update bootstrap buildcache to support Python 3.12 (#40404) 2023-10-11 19:03:17 +02:00
concretizer.yaml Make "minimal" the default duplicate strategy (#39621) 2023-10-06 10:24:21 +02:00
config.yaml Add support for aliases (#17229) 2023-11-06 14:37:46 -08:00
mirrors.yaml mirrors: distinguish between source/binary mirror; simplify schema (#34523) 2023-07-13 11:29:17 +00:00
modules.yaml Revert "defaults/modules.yaml: hide implicits (#40906)" (#40955) 2023-11-08 14:33:50 -07:00
packages.yaml Add intel-oneapi-runtime, allow injecting virtual dependencies (#42062) 2024-03-24 22:59:21 -07:00
repos.yaml Add "default" configuration scope. 2016-07-19 17:10:17 -07:00