forked from rarias/bscpkgs
The openmp derivation provides both libomp and libompv. To avoid accidentally linking with the wrong library and to avoid the nosv dependency on libomp, this patch separates each version in a different derivation. Also, it adapts the clang wrappers and stdenvs to provide an stdenv per openmp library where each openmp will be used by default when the compiler flag "-fopenmp" is used. This eases linking ompv with nixpkgs libraries, such as blis, that expect openmp to be provided with stdenv. Reviewed-by: Rodrigo Arias Mallo <rodrigo.arias@bsc.es> Tested-by: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
104 lines
5.1 KiB
Nix
104 lines
5.1 KiB
Nix
final: /* Future last stage */
|
|
prev: /* Previous stage */
|
|
|
|
with final.lib;
|
|
|
|
let
|
|
callPackage = final.callPackage;
|
|
|
|
mkDeps = name: pkgs: final.runCommand name { }
|
|
"printf '%s\n' ${toString (collect (x: x ? outPath) pkgs)} > $out";
|
|
|
|
bscPkgs = {
|
|
bench6 = callPackage ./pkgs/bench6/default.nix { };
|
|
clangOmpss2 = callPackage ./pkgs/llvm-ompss2/default.nix { };
|
|
clangOmpss2Nanos6 = callPackage ./pkgs/llvm-ompss2/default.nix { ompss2rt = final.nanos6; };
|
|
clangOmpss2Nodes = callPackage ./pkgs/llvm-ompss2/default.nix { ompss2rt = final.nodes; openmp = final.openmp; };
|
|
clangOmpss2NodesOmpv = callPackage ./pkgs/llvm-ompss2/default.nix { ompss2rt = final.nodes; openmp = final.openmpv; };
|
|
clangOmpss2Unwrapped = callPackage ./pkgs/llvm-ompss2/clang.nix { };
|
|
#extrae = callPackage ./pkgs/extrae/default.nix { }; # Broken and outdated
|
|
gpi-2 = callPackage ./pkgs/gpi-2/default.nix { };
|
|
intelPackages_2023 = callPackage ./pkgs/intel-oneapi/2023.nix { };
|
|
jemallocNanos6 = callPackage ./pkgs/nanos6/jemalloc.nix { };
|
|
#lmbench = callPackage ./pkgs/lmbench/default.nix { }; # Broken
|
|
mcxx = callPackage ./pkgs/mcxx/default.nix { };
|
|
nanos6 = callPackage ./pkgs/nanos6/default.nix { };
|
|
nanos6Debug = final.nanos6.override { enableDebug = true; };
|
|
nixtools = callPackage ./pkgs/nixtools/default.nix { };
|
|
# Broken because of pkgsStatic.libcap
|
|
# See: https://github.com/NixOS/nixpkgs/pull/268791
|
|
#nix-wrap = callPackage ./pkgs/nix-wrap/default.nix { };
|
|
nodes = callPackage ./pkgs/nodes/default.nix { };
|
|
nosv = callPackage ./pkgs/nosv/default.nix { };
|
|
openmp = callPackage ./pkgs/llvm-ompss2/openmp.nix { monorepoSrc = final.clangOmpss2Unwrapped.src; version = final.clangOmpss2Unwrapped.version; };
|
|
openmpv = final.openmp.override { enableNosv = true; };
|
|
osumb = callPackage ./pkgs/osu/default.nix { };
|
|
ovni = callPackage ./pkgs/ovni/default.nix { };
|
|
ovniGit = final.ovni.override { useGit = true; };
|
|
paraverKernel = callPackage ./pkgs/paraver/kernel.nix { };
|
|
#pscom = callPackage ./pkgs/parastation/pscom.nix { }; # Unmaintaned
|
|
#psmpi = callPackage ./pkgs/parastation/psmpi.nix { }; # Unmaintaned
|
|
sonar = callPackage ./pkgs/sonar/default.nix { };
|
|
stdenvClangOmpss2 = final.stdenv.override { cc = final.clangOmpss2; allowedRequisites = null; };
|
|
stdenvClangOmpss2Nanos6 = final.stdenv.override { cc = final.clangOmpss2Nanos6; allowedRequisites = null; };
|
|
stdenvClangOmpss2Nodes = final.stdenv.override { cc = final.clangOmpss2Nodes; allowedRequisites = null; };
|
|
stdenvClangOmpss2NodesOmpv = final.stdenv.override { cc = final.clangOmpss2NodesOmpv; allowedRequisites = null; };
|
|
tagaspi = callPackage ./pkgs/tagaspi/default.nix { };
|
|
tampi = callPackage ./pkgs/tampi/default.nix { };
|
|
wxparaver = callPackage ./pkgs/paraver/default.nix { };
|
|
};
|
|
|
|
in bscPkgs // {
|
|
# Prevent accidental usage of bsc attribute
|
|
bsc = throw "the bsc attribute is deprecated, packages are now in the root";
|
|
|
|
# Internal for our CI tests
|
|
bsc-ci = {
|
|
test = rec {
|
|
#hwloc = callPackage ./test/bugs/hwloc.nix { }; # Broken, no /sys
|
|
#sigsegv = callPackage ./test/reproducers/sigsegv.nix { };
|
|
hello-c = callPackage ./test/compilers/hello-c.nix { };
|
|
hello-cpp = callPackage ./test/compilers/hello-cpp.nix { };
|
|
lto = callPackage ./test/compilers/lto.nix { };
|
|
asan = callPackage ./test/compilers/asan.nix { };
|
|
intel2023-icx-c = hello-c.override { stdenv = final.intelPackages_2023.stdenv; };
|
|
intel2023-icc-c = hello-c.override { stdenv = final.intelPackages_2023.stdenv-icc; };
|
|
intel2023-icx-cpp = hello-cpp.override { stdenv = final.intelPackages_2023.stdenv; };
|
|
intel2023-icc-cpp = hello-cpp.override { stdenv = final.intelPackages_2023.stdenv-icc; };
|
|
intel2023-ifort = callPackage ./test/compilers/hello-f.nix {
|
|
stdenv = final.intelPackages_2023.stdenv-ifort;
|
|
};
|
|
clangOmpss2-lto = lto.override { stdenv = final.stdenvClangOmpss2Nanos6; };
|
|
clangOmpss2-asan = asan.override { stdenv = final.stdenvClangOmpss2Nanos6; };
|
|
clangOmpss2-task = callPackage ./test/compilers/ompss2.nix {
|
|
stdenv = final.stdenvClangOmpss2Nanos6;
|
|
};
|
|
clangNodes-task = callPackage ./test/compilers/ompss2.nix {
|
|
stdenv = final.stdenvClangOmpss2Nodes;
|
|
};
|
|
clangNosvOpenmp-task = callPackage ./test/compilers/clang-openmp.nix {
|
|
stdenv = final.stdenvClangOmpss2Nodes;
|
|
};
|
|
clangNosvOmpv-nosv = callPackage ./test/compilers/clang-openmp-nosv.nix {
|
|
stdenv = final.stdenvClangOmpss2NodesOmpv;
|
|
};
|
|
clangNosvOmpv-ld = callPackage ./test/compilers/clang-openmp-ld.nix {
|
|
stdenv = final.stdenvClangOmpss2NodesOmpv;
|
|
};
|
|
};
|
|
|
|
pkgs = final.runCommand "ci-pkgs" { }
|
|
"printf '%s\n' ${toString (collect isDerivation bscPkgs)} > $out";
|
|
|
|
tests = final.runCommand "ci-tests" { }
|
|
"printf '%s\n' ${toString (collect isDerivation final.bsc-ci.test)} > $out";
|
|
|
|
all = final.runCommand "ci-all" { }
|
|
''
|
|
deps="${toString [ final.bsc-ci.pkgs final.bsc-ci.tests ]}"
|
|
cat $deps
|
|
printf '%s\n' $deps > $out
|
|
'';
|
|
};
|
|
}
|