
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"). ```
70 lines
2.3 KiB
YAML
70 lines
2.3 KiB
YAML
# -------------------------------------------------------------------------
|
|
# This file controls default concretization preferences for Spack.
|
|
#
|
|
# Settings here are versioned with Spack and are intended to provide
|
|
# sensible defaults out of the box. Spack maintainers should edit this
|
|
# file to keep it current.
|
|
#
|
|
# Users can override these settings by editing the following files.
|
|
#
|
|
# Per-spack-instance settings (overrides defaults):
|
|
# $SPACK_ROOT/etc/spack/packages.yaml
|
|
#
|
|
# Per-user settings (overrides default and site settings):
|
|
# ~/.spack/packages.yaml
|
|
# -------------------------------------------------------------------------
|
|
packages:
|
|
all:
|
|
compiler: [gcc, intel, pgi, clang, xl, nag, fj, aocc]
|
|
providers:
|
|
awk: [gawk]
|
|
blas: [openblas, amdblis]
|
|
D: [ldc]
|
|
daal: [intel-oneapi-daal]
|
|
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]
|
|
golang: [go, gcc]
|
|
go-or-gccgo-bootstrap: [go-bootstrap, gcc]
|
|
iconv: [libiconv]
|
|
ipp: [intel-oneapi-ipp]
|
|
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]
|
|
luajit: [lua-luajit-openresty, lua-luajit]
|
|
mariadb-client: [mariadb-c-client, mariadb]
|
|
mkl: [intel-oneapi-mkl]
|
|
mpe: [mpe2]
|
|
mpi: [openmpi, mpich]
|
|
mysql-client: [mysql, mariadb-c-client]
|
|
opencl: [pocl]
|
|
onedal: [intel-oneapi-dal]
|
|
pbs: [openpbs, torque]
|
|
pil: [py-pillow]
|
|
pkgconfig: [pkgconf, pkg-config]
|
|
qmake: [qt-base, qt]
|
|
rpc: [libtirpc]
|
|
scalapack: [netlib-scalapack, amdscalapack]
|
|
sycl: [hipsycl]
|
|
szip: [libaec, libszip]
|
|
tbb: [intel-tbb]
|
|
unwind: [libunwind]
|
|
uuid: [util-linux-uuid, libuuid]
|
|
xxd: [xxd-standalone, vim]
|
|
yacc: [bison, byacc]
|
|
ziglang: [zig]
|
|
zlib-api: [zlib-ng+compat, zlib]
|
|
permissions:
|
|
read: world
|
|
write: user
|