9 Commits

22 changed files with 175 additions and 241 deletions

View File

@@ -1,15 +0,0 @@
name: CI
on:
push:
branches:
- master
pull_request:
branches:
- master
jobs:
build:all:
runs-on: native
steps:
- uses: https://gitea.com/ScMi1/checkout@v1.4
- run: nix build -L --no-link --print-out-paths .#bsc-ci.all

View File

@@ -2,25 +2,16 @@
inputs.nixpkgs.url = "nixpkgs"; inputs.nixpkgs.url = "nixpkgs";
outputs = { self, nixpkgs, ...}: outputs = { self, nixpkgs, ...}:
let let
pkgs = import nixpkgs {
# For now we only support x86 # For now we only support x86
system = "x86_64-linux"; system = "x86_64-linux";
pkgs = import nixpkgs { overlays = [ self.overlays.default ];
inherit system; };
overlays = [ self.overlays.default ]; in
};
in
{ {
bscOverlay = import ./overlay.nix; bscOverlay = import ./overlay.nix;
overlays.default = self.bscOverlay; overlays.default = self.bscOverlay;
# full nixpkgs with our overlay applied legacyPackages.x86_64-linux = pkgs;
legacyPackages.${system} = pkgs;
hydraJobs = {
inherit (self.legacyPackages.${system}.bsc-ci) tests pkgs cross;
};
# propagate nixpkgs lib, so we can do bscpkgs.lib
inherit (nixpkgs) lib;
}; };
} }

View File

@@ -6,16 +6,20 @@ with final.lib;
let let
callPackage = final.callPackage; callPackage = final.callPackage;
mkDeps = name: pkgs: final.runCommand name { }
"printf '%s\n' ${toString (collect (x: x ? outPath) pkgs)} > $out";
bscPkgs = { bscPkgs = {
bench6 = callPackage ./pkgs/bench6/default.nix { }; bench6 = callPackage ./pkgs/bench6/default.nix { };
bigotes = callPackage ./pkgs/bigotes/default.nix { }; bigotes = callPackage ./pkgs/bigotes/default.nix { };
clangOmpss2 = callPackage ./pkgs/llvm-ompss2/default.nix { }; clangOmpss2 = callPackage ./pkgs/llvm-ompss2/default.nix { };
clangOmpss2Nanos6 = callPackage ./pkgs/llvm-ompss2/default.nix { ompss2rt = final.nanos6; }; clangOmpss2Nanos6 = callPackage ./pkgs/llvm-ompss2/default.nix { useNanos6 = true; };
clangOmpss2Nodes = callPackage ./pkgs/llvm-ompss2/default.nix { ompss2rt = final.nodes; openmp = final.openmp; }; clangOmpss2Nodes = callPackage ./pkgs/llvm-ompss2/default.nix { useNodes = true; useOpenmp = true; };
clangOmpss2NodesOmpv = callPackage ./pkgs/llvm-ompss2/default.nix { ompss2rt = final.nodes; openmp = final.openmpv; }; clangOmpss2NodesOmpv = callPackage ./pkgs/llvm-ompss2/default.nix { useNodes = true; useOpenmpV = true; };
clangOmpss2Unwrapped = callPackage ./pkgs/llvm-ompss2/clang.nix { }; clangOmpss2Unwrapped = callPackage ./pkgs/llvm-ompss2/clang.nix { };
#extrae = callPackage ./pkgs/extrae/default.nix { }; # Broken and outdated #extrae = callPackage ./pkgs/extrae/default.nix { }; # Broken and outdated
gpi-2 = callPackage ./pkgs/gpi-2/default.nix { }; #gpi-2 = callPackage ./pkgs/gpi-2/default.nix { }; # Broken: https://jungle.bsc.es/git/rarias/bscpkgs/issues/7
intelPackages_2023 = callPackage ./pkgs/intel-oneapi/2023.nix { }; intelPackages_2023 = callPackage ./pkgs/intel-oneapi/2023.nix { };
jemallocNanos6 = callPackage ./pkgs/nanos6/jemalloc.nix { }; jemallocNanos6 = callPackage ./pkgs/nanos6/jemalloc.nix { };
lmbench = callPackage ./pkgs/lmbench/default.nix { }; lmbench = callPackage ./pkgs/lmbench/default.nix { };
@@ -37,83 +41,65 @@ let
#pscom = callPackage ./pkgs/parastation/pscom.nix { }; # Unmaintaned #pscom = callPackage ./pkgs/parastation/pscom.nix { }; # Unmaintaned
#psmpi = callPackage ./pkgs/parastation/psmpi.nix { }; # Unmaintaned #psmpi = callPackage ./pkgs/parastation/psmpi.nix { }; # Unmaintaned
sonar = callPackage ./pkgs/sonar/default.nix { }; sonar = callPackage ./pkgs/sonar/default.nix { };
stdenvClangOmpss2 = final.stdenv.override { cc = final.clangOmpss2; allowedRequisites = null; }; stdenvClangOmpss2 = final.stdenv.override { cc = final.buildPackages.clangOmpss2; allowedRequisites = null; };
stdenvClangOmpss2Nanos6 = final.stdenv.override { cc = final.clangOmpss2Nanos6; allowedRequisites = null; }; stdenvClangOmpss2Nanos6 = final.stdenv.override { cc = final.buildPackages.clangOmpss2Nanos6; allowedRequisites = null; };
stdenvClangOmpss2Nodes = final.stdenv.override { cc = final.clangOmpss2Nodes; allowedRequisites = null; }; stdenvClangOmpss2Nodes = final.stdenv.override { cc = final.buildPackages.clangOmpss2Nodes; allowedRequisites = null; };
stdenvClangOmpss2NodesOmpv = final.stdenv.override { cc = final.clangOmpss2NodesOmpv; allowedRequisites = null; }; stdenvClangOmpss2NodesOmpv = final.stdenv.override { cc = final.buildPackages.clangOmpss2NodesOmpv; allowedRequisites = null; };
tagaspi = callPackage ./pkgs/tagaspi/default.nix { }; #tagaspi = callPackage ./pkgs/tagaspi/default.nix { }; # Broken due gpi-2
tampi = callPackage ./pkgs/tampi/default.nix { }; tampi = callPackage ./pkgs/tampi/default.nix { };
wxparaver = callPackage ./pkgs/paraver/default.nix { }; wxparaver = callPackage ./pkgs/paraver/default.nix { };
}; };
tests = 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 = filterAttrs (_: isDerivation) bscPkgs;
crossTargets = [ "riscv64" ];
cross = prev.lib.genAttrs crossTargets (target:
final.pkgsCross.${target}.bsc-ci.pkgs
);
buildList = name: paths:
final.runCommandLocal name { } ''
printf '%s\n' ${toString paths} | tee $out
'';
buildList' = name: paths:
final.runCommandLocal name { } ''
deps="${toString paths}"
cat $deps
printf '%s\n' $deps >$out
'';
crossList = builtins.mapAttrs (t: v: buildList t (builtins.attrValues v)) cross;
pkgsList = buildList "ci-pkgs" (builtins.attrValues pkgs);
testList = buildList "ci-tests" (collect isDerivation tests);
all = buildList' "ci-all" [ pkgsList testList ];
in bscPkgs // { in bscPkgs // {
# Prevent accidental usage of bsc attribute # Prevent accidental usage of bsc attribute
bsc = throw "the bsc attribute is deprecated, packages are now in the root"; bsc = throw "the bsc attribute is deprecated, packages are now in the root";
# Internal for our CI tests # Internal for our CI tests
bsc-ci = { bsc-ci = {
inherit pkgs pkgsList; test = rec {
inherit tests testList; #hwloc = callPackage ./test/bugs/hwloc.nix { }; # Broken, no /sys
inherit cross crossList; #sigsegv = callPackage ./test/reproducers/sigsegv.nix { };
inherit all; 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
'';
}; };
} }

View File

@@ -27,13 +27,10 @@ stdenv.mkDerivation rec {
rev = gitCommit; rev = gitCommit;
}; };
nativeBuildInputs = [
cmake
clangOmpss2
];
buildInputs = [ buildInputs = [
bigotes bigotes
cmake
clangOmpss2
openmp openmp
openmpv openmpv
nanos6 nanos6

View File

@@ -4,7 +4,7 @@
, cmake , cmake
}: }:
stdenv.mkDerivation { stdenv.mkDerivation rec {
pname = "bigotes"; pname = "bigotes";
version = "9dce13"; version = "9dce13";
src = fetchFromGitHub { src = fetchFromGitHub {
@@ -13,5 +13,5 @@ stdenv.mkDerivation {
rev = "9dce13446a8da30bea552d569d260d54e0188518"; rev = "9dce13446a8da30bea552d569d260d54e0188518";
sha256 = "sha256-ktxM3pXiL8YXSK+/IKWYadijhYXqGoLY6adLk36iigE="; sha256 = "sha256-ktxM3pXiL8YXSK+/IKWYadijhYXqGoLY6adLk36iigE=";
}; };
nativeBuildInputs = [ cmake ]; buildInputs = [ cmake ];
} }

View File

@@ -34,8 +34,6 @@ stdenv.mkDerivation rec {
enableParallelBuilding = true; enableParallelBuilding = true;
patches = [ ./rdma-core.patch ./max-mem.patch ];
preConfigure = '' preConfigure = ''
patchShebangs autogen.sh patchShebangs autogen.sh
./autogen.sh ./autogen.sh

View File

@@ -1,10 +0,0 @@
--- a/tests/tests/segments/max_mem.c 2025-09-12 13:30:53.449353591 +0200
+++ b/tests/tests/segments/max_mem.c 2025-09-12 13:33:49.750352401 +0200
@@ -1,5 +1,7 @@
#include <test_utils.h>
+gaspi_size_t gaspi_get_system_mem (void);
+
/* Test allocates 45% of system memory and creates a segment that
large or if several ranks per node exist, divided among that
number */

View File

@@ -1,12 +0,0 @@
--- a/src/devices/ib/GPI2_IB.h 2025-09-12 13:25:31.564181121 +0200
+++ b/src/devices/ib/GPI2_IB.h 2025-09-12 13:24:49.105422150 +0200
@@ -26,6 +26,9 @@ along with GPI-2. If not, see <http://ww
#include "GPI2_Dev.h"
+/* Missing prototype as driver.h is now private */
+int ibv_read_sysfs_file(const char *dir, const char *file, char *buf, size_t size);
+
#define GASPI_GID_INDEX (0)
#define PORT_LINK_UP (5)
#define MAX_INLINE_BYTES (128)

View File

@@ -78,7 +78,7 @@ let
uncompressDebs = debs: name: stdenv.mkDerivation { uncompressDebs = debs: name: stdenv.mkDerivation {
name = name; name = name;
srcs = debs; srcs = debs;
nativeBuildInputs = [ dpkg ]; buildInputs = [ dpkg ];
phases = [ "installPhase" ]; phases = [ "installPhase" ];
installPhase = '' installPhase = ''
mkdir -p $out mkdir -p $out
@@ -108,17 +108,14 @@ let
"intel-oneapi-mpi-${version}" "intel-oneapi-mpi-${version}"
]; ];
nativeBuildInputs = [
autoPatchelfHook
rsync
];
buildInputs = [ buildInputs = [
rsync
libfabric libfabric
zlib zlib
stdenv.cc.cc.lib stdenv.cc.cc.lib
]; ];
nativeBuildInputs = [ autoPatchelfHook ];
phases = [ "installPhase" "fixupPhase" ]; phases = [ "installPhase" "fixupPhase" ];
dontStrip = true; dontStrip = true;
installPhase = '' installPhase = ''
@@ -157,6 +154,7 @@ let
buildInputs = [ buildInputs = [
intel-mpi intel-mpi
rsync
libffi_3_3 libffi_3_3
libelf libelf
libxml2 libxml2
@@ -164,10 +162,7 @@ let
stdenv.cc.cc.lib stdenv.cc.cc.lib
]; ];
nativeBuildInputs = [ nativeBuildInputs = [ autoPatchelfHook ];
autoPatchelfHook
rsync
];
phases = [ "installPhase" "fixupPhase" ]; phases = [ "installPhase" "fixupPhase" ];
dontStrip = true; dontStrip = true;
@@ -197,6 +192,7 @@ let
buildInputs = [ buildInputs = [
intel-mpi intel-mpi
intel-tbb intel-tbb
rsync
libffi_3_3 libffi_3_3
libelf libelf
libxml2 libxml2
@@ -205,10 +201,7 @@ let
stdenv.cc.cc.lib stdenv.cc.cc.lib
]; ];
nativeBuildInputs = [ nativeBuildInputs = [ autoPatchelfHook ];
autoPatchelfHook
rsync
];
phases = [ "installPhase" "fixupPhase" ]; phases = [ "installPhase" "fixupPhase" ];
dontStrip = true; dontStrip = true;
@@ -261,6 +254,7 @@ let
buildInputs = [ buildInputs = [
intel-mpi intel-mpi
intel-compiler-shared intel-compiler-shared
rsync
libffi_3_3 libffi_3_3
libelf libelf
libxml2 libxml2
@@ -268,10 +262,7 @@ let
stdenv.cc.cc.lib stdenv.cc.cc.lib
]; ];
nativeBuildInputs = [ nativeBuildInputs = [ autoPatchelfHook ];
autoPatchelfHook
rsync
];
phases = [ "installPhase" "fixupPhase" ]; phases = [ "installPhase" "fixupPhase" ];
@@ -346,6 +337,7 @@ let
buildInputs = [ buildInputs = [
intel-compiler-shared intel-compiler-shared
rsync
libffi_3_3 libffi_3_3
libelf libelf
libxml2 libxml2
@@ -353,10 +345,7 @@ let
stdenv.cc.cc.lib stdenv.cc.cc.lib
]; ];
nativeBuildInputs = [ nativeBuildInputs = [ autoPatchelfHook ];
autoPatchelfHook
rsync
];
autoPatchelfIgnoreMissingDeps = [ "libtbb.so.12" "libtbbmalloc.so.2" "libze_loader.so.1" ]; autoPatchelfIgnoreMissingDeps = [ "libtbb.so.12" "libtbbmalloc.so.2" "libze_loader.so.1" ];
phases = [ "installPhase" "fixupPhase" ]; phases = [ "installPhase" "fixupPhase" ];

View File

@@ -1,5 +1,6 @@
{ {
llvmPackages_latest stdenv
, llvmPackages_latest
, lib , lib
, fetchFromGitHub , fetchFromGitHub
, cmake , cmake
@@ -11,7 +12,6 @@
, libffi , libffi
, zlib , zlib
, pkg-config , pkg-config
, gcc # needed to set the rpath of libstdc++ for clang-tblgen
, enableDebug ? false , enableDebug ? false
, useGit ? false , useGit ? false
, gitUrl ? "ssh://git@bscpm04.bsc.es/llvm-ompss/llvm-mono.git" , gitUrl ? "ssh://git@bscpm04.bsc.es/llvm-ompss/llvm-mono.git"
@@ -20,7 +20,10 @@
}: }:
let let
stdenv = llvmPackages_latest.stdenv; llvmPackages = llvmPackages_latest;
llvmStdenv = llvmPackages.stdenv;
# needed to set the rpath of libstdc++ for clang-tblgen
gcc = stdenv.cc;
release = rec { release = rec {
version = "2025.06"; version = "2025.06";
@@ -43,38 +46,37 @@ let
source = if (useGit) then git else release; source = if (useGit) then git else release;
in stdenv.mkDerivation { in llvmStdenv.mkDerivation rec {
pname = "clang-ompss2"; pname = "clang-ompss2";
inherit (source) src version; inherit (source) src version;
enableParallelBuilding = true; enableParallelBuilding = true;
isClang = true;
passthru = { passthru = {
CC = "clang"; CC = "clang";
CXX = "clang++"; CXX = "clang++";
isClang = true;
isClangWithOmpss = true;
inherit gcc zlib;
}; };
isClangWithOmpss = true;
nativeBuildInputs = [ nativeBuildInputs = [
bash
cmake
elfutils
llvmPackages_latest.lld
pkg-config
python3
perl
which
zlib zlib
gcc.cc.lib # Required for libstdc++.so.6
cmake
python3
llvmPackages.lld
]; ];
buildInputs = [ buildInputs = [
which
bash
perl
llvmPackages.lld
elfutils
libffi libffi
pkg-config
zlib zlib
gcc.cc.lib # Required for libstdc++.so.6
]; ];
# Error with -D_FORTIFY_SOURCE=2, see https://bugs.gentoo.org/636604: # Error with -D_FORTIFY_SOURCE=2, see https://bugs.gentoo.org/636604:
@@ -90,6 +92,7 @@ in stdenv.mkDerivation {
dontUseCmakeBuildDir = true; dontUseCmakeBuildDir = true;
# Fix the host triple, as it has changed in a newer config.guess: # Fix the host triple, as it has changed in a newer config.guess:
# https://git.savannah.gnu.org/gitweb/?p=config.git;a=commitdiff;h=ca9bfb8cc75a2be1819d89c664a867785c96c9ba # https://git.savannah.gnu.org/gitweb/?p=config.git;a=commitdiff;h=ca9bfb8cc75a2be1819d89c664a867785c96c9ba
preConfigure = '' preConfigure = ''
@@ -97,8 +100,13 @@ in stdenv.mkDerivation {
cd build cd build
cmakeDir="../llvm" cmakeDir="../llvm"
cmakeFlagsArray=( cmakeFlagsArray=(
"-DLLVM_HOST_TRIPLE=${stdenv.targetPlatform.config}" "-DLLVM_HOST_TRIPLE=${llvmStdenv.targetPlatform.config}"
'' + (if "${llvmStdenv.targetPlatform.config}" == "riscv64-unknown-linux-gnu" then ''
"-DLLVM_DEFAULT_TARGET_TRIPLE=riscv64-unknown-linux-gnu"
"-DLLVM_TARGETS_TO_BUILD=RISCV"
'' else ''
"-DLLVM_TARGETS_TO_BUILD=host" "-DLLVM_TARGETS_TO_BUILD=host"
'') + ''
"-DLLVM_BUILD_LLVM_DYLIB=ON" "-DLLVM_BUILD_LLVM_DYLIB=ON"
"-DLLVM_LINK_LLVM_DYLIB=ON" "-DLLVM_LINK_LLVM_DYLIB=ON"
# Required to run clang-ast-dump and clang-tblgen during build # Required to run clang-ast-dump and clang-tblgen during build
@@ -107,7 +115,8 @@ in stdenv.mkDerivation {
"-DCMAKE_CXX_FLAGS_DEBUG=-g -ggnu-pubnames" "-DCMAKE_CXX_FLAGS_DEBUG=-g -ggnu-pubnames"
"-DCMAKE_EXE_LINKER_FLAGS_DEBUG=-Wl,--gdb-index" "-DCMAKE_EXE_LINKER_FLAGS_DEBUG=-Wl,--gdb-index"
"-DLLVM_LIT_ARGS=-sv --xunit-xml-output=xunit.xml" "-DLLVM_LIT_ARGS=-sv --xunit-xml-output=xunit.xml"
"-DLLVM_ENABLE_PROJECTS=clang;compiler-rt;lld" "-DLLVM_ENABLE_PROJECTS=clang;lld"
#"-DLLVM_ENABLE_PROJECTS=clang;compiler-rt;lld"
"-DLLVM_ENABLE_ASSERTIONS=ON" "-DLLVM_ENABLE_ASSERTIONS=ON"
"-DLLVM_INSTALL_TOOLCHAIN_ONLY=ON" "-DLLVM_INSTALL_TOOLCHAIN_ONLY=ON"
"-DCMAKE_INSTALL_BINDIR=bin" "-DCMAKE_INSTALL_BINDIR=bin"
@@ -117,8 +126,8 @@ in stdenv.mkDerivation {
# install # install
"-DCMAKE_INSTALL_RPATH_USE_LINK_PATH=ON" "-DCMAKE_INSTALL_RPATH_USE_LINK_PATH=ON"
"-DCMAKE_INSTALL_RPATH=${zlib}/lib:${gcc.cc.lib}/lib" "-DCMAKE_INSTALL_RPATH=${zlib}/lib:${gcc.cc.lib}/lib"
"-DLLVM_APPEND_VC_REV=ON" #"-DLLVM_APPEND_VC_REV=ON"
"-DLLVM_FORCE_VC_REVISION=${source.version}" #"-DLLVM_FORCE_VC_REVISION=${source.version}"
) )
''; '';

View File

@@ -3,25 +3,43 @@
, lib , lib
, gcc , gcc
, clangOmpss2Unwrapped , clangOmpss2Unwrapped
, openmp ? null
, openmp
, useOpenmp ? false
, openmpv
, useOpenmpV ? false
, nanos6
, useNanos6 ? false
, nodes
, useNodes ? false
, wrapCCWith , wrapCCWith
, llvmPackages_latest , llvmPackages_latest
, ompss2rt ? null
}: }:
with lib; with lib;
let let
usingNodesAndOmpv = (openmp.pname == "openmp-v" && ompss2rt.pname == "nodes"); getSplice = target: pkg: if pkg ? "__spliced" && pkg.__spliced ? target then pkg.__spliced."${target}" else pkg;
sameNosv = openmp.nosv == ompss2rt.nosv; #getSpliceTargetTarget = pkg: if pkg ? "__spliced" && pkg.__spliced ? "targetTarget" then pkg.__spliced.targetTarget else pkg;
getSpliceTargetTarget = getSplice "targetTarget";
omp = if useOpenmp then openmp else if useOpenmpV then openmpv else null;
ompss2rtUnspliced = if useNanos6 then nanos6 else if useNodes then nodes else null;
ompss2rt = getSpliceTargetTarget ompss2rtUnspliced;
usingNodesAndOmpv = (omp.pname == "openmp-v" && ompss2rt.pname == "nodes");
sameNosvUnspliced = omp.nosv == ompss2rtUnspliced.nosv;
sameNosvSpliced = (getSpliceTargetTarget omp.nosv) == ompss2rt.nosv;
in in
assert assertMsg (usingNodesAndOmpv -> sameNosv) "OpenMP-V and NODES must share the same nOS-V"; assert assertMsg (usingNodesAndOmpv -> sameNosvUnspliced) "OpenMP-V and NODES must share the same nOS-V before splice";
assert assertMsg (usingNodesAndOmpv -> sameNosvSpliced) "OpenMP-V and NODES must share the same nOS-V after splice";
assert assertMsg (useOpenmp -> !useOpenmpV) "Either OpenMP or OpenMP-V may be enabled, but not both";
assert assertMsg (useNanos6 -> !useNodes) "Either Nanos6 or NODES may be enabled, but not both";
let let
homevar = if ompss2rt.pname == "nanos6" then "NANOS6_HOME" else "NODES_HOME"; homevar = if ompss2rt.pname == "nanos6" then "NANOS6_HOME" else "NODES_HOME";
rtname = if ompss2rt.pname == "nanos6" then "libnanos6" else "libnodes"; rtname = if ompss2rt.pname == "nanos6" then "libnanos6" else "libnodes";
ompname = if openmp.pname == "openmp-v" then "libompv" else "libomp"; ompname = if omp.pname == "openmp-v" then "libompv" else "libomp";
# We need to replace the lld linker from bintools with our linker just built, # We need to replace the lld linker from bintools with our linker just built,
@@ -37,12 +55,13 @@ let
inherit gcc; inherit gcc;
cc = clangOmpss2Unwrapped; cc = clangOmpss2Unwrapped;
gccVersion = with versions; let v = gcc.version; in concatStringsSep "." [(major v) (minor v) (patch v)]; gccVersion = with versions; let v = gcc.version; in concatStringsSep "." [(major v) (minor v) (patch v)];
in wrapCCWith { in (wrapCCWith {
inherit cc bintools; inherit cc bintools;
# extraPackages adds packages to depsTargetTargetPropagated # extraPackages adds packages to depsTargetTargetPropagated
extraPackages = optional (openmp != null) openmp; extraPackages = optional (omp != null) omp;
extraBuildCommands = '' extraBuildCommands = ''
echo "-target ${targetConfig}" >> $out/nix-support/cc-cflags echo "-target ${targetConfig}" >> $out/nix-support/cc-cflags
#echo "-fuse-ld=lld" >> $out/nix-support/cc-cflags
echo "-B${gcc.cc}/lib/gcc/${targetConfig}/${gccVersion}" >> $out/nix-support/cc-cflags echo "-B${gcc.cc}/lib/gcc/${targetConfig}/${gccVersion}" >> $out/nix-support/cc-cflags
echo "-L${gcc.cc}/lib/gcc/${targetConfig}/${gccVersion}" >> $out/nix-support/cc-ldflags echo "-L${gcc.cc}/lib/gcc/${targetConfig}/${gccVersion}" >> $out/nix-support/cc-ldflags
echo "-L${gcc.cc.lib}/lib" >> $out/nix-support/cc-ldflags echo "-L${gcc.cc.lib}/lib" >> $out/nix-support/cc-ldflags
@@ -56,15 +75,17 @@ in wrapCCWith {
echo "--gcc-toolchain=${gcc}" >> $out/nix-support/cc-cflags echo "--gcc-toolchain=${gcc}" >> $out/nix-support/cc-cflags
wrap clang++ $wrapper $ccPath/clang++ wrap ${targetConfig}clang++ $wrapper $ccPath/clang++
wrap ${targetConfig}clang $wrapper $ccPath/clang
'' + optionalString (openmp != null) '' '' + optionalString (omp != null) ''
echo "export OPENMP_RUNTIME=${ompname}" >> $out/nix-support/cc-wrapper-hook echo "export OPENMP_RUNTIME=${ompname}" >> $out/nix-support/cc-wrapper-hook
'' + optionalString (ompss2rt != null) '' '' + optionalString (ompss2rt != null) ''
echo "export OMPSS2_RUNTIME=${rtname}" >> $out/nix-support/cc-wrapper-hook echo "export OMPSS2_RUNTIME=${rtname}" >> $out/nix-support/cc-wrapper-hook
echo "export ${homevar}=${ompss2rt}" >> $out/nix-support/cc-wrapper-hook echo "export ${homevar}=${ompss2rt}" >> $out/nix-support/cc-wrapper-hook
'' + optionalString (ompss2rt != null && ompss2rt.pname == "nodes") '' '' + optionalString (ompss2rt != null && ompss2rt.pname == "nodes") ''
echo "export NOSV_HOME=${ompss2rt.nosv}" >> $out/nix-support/cc-wrapper-hook echo "export NOSV_HOME=${ompss2rt}" >> $out/nix-support/cc-wrapper-hook
''; '';
} }) // { inherit ompss2rt; }

View File

@@ -39,6 +39,9 @@ stdenv.mkDerivation rec {
perl perl
pkg-config pkg-config
python3 python3
];
buildInputs = [
] ++ lib.optionals enableNosv [ ] ++ lib.optionals enableNosv [
nosv nosv
] ++ lib.optionals enableOvni [ ] ++ lib.optionals enableOvni [

View File

@@ -32,20 +32,17 @@ stdenv.mkDerivation rec {
enableParallelBuilding = true; enableParallelBuilding = true;
nativeBuildInputs = [ buildInputs = [
autoreconfHook autoreconfHook
bison nanos6
flex gperf
python3 python3
gfortran gfortran
pkg-config pkg-config
gperf
gcc
];
buildInputs = [
nanos6
sqlite.dev sqlite.dev
bison
flex
gcc
]; ];
patches = [ ./intel.patch ]; patches = [ ./intel.patch ];

View File

@@ -88,19 +88,11 @@ in
dontStrip = enableDebug; dontStrip = enableDebug;
separateDebugInfo = true; separateDebugInfo = true;
nativeBuildInputs = [ buildInputs = [
autoconf autoconf
automake automake
libtool libtool
pkg-config pkg-config
# TODO: papi_version is needed for configure:
# ./configure: line 27378: papi_version: command not found
# This probably breaks cross-compilation
papi
];
buildInputs = [
boost boost
numactl numactl
hwloc hwloc
@@ -112,7 +104,7 @@ in
postInstall = '' postInstall = ''
mkdir -p $out/nix-support mkdir -p $out/nix-support
echo "export NANOS6_HOME=$out" >> $out/nix-support/setup-hook echo "export NANOS6_HOME=$out" >> $out/nix-support/setup-hook
''; '';
meta = with lib; { meta = with lib; {
homepage = "https://github.com/bsc-pm/nanos6"; homepage = "https://github.com/bsc-pm/nanos6";

View File

@@ -6,8 +6,6 @@
, pkg-config , pkg-config
, numactl , numactl
, hwloc , hwloc
, papi
, enablePapi ? true
, cacheline ? 64 # bits , cacheline ? 64 # bits
, ovni ? null , ovni ? null
, useGit ? false , useGit ? false
@@ -58,5 +56,5 @@ in
numactl numactl
hwloc hwloc
ovni ovni
] ++ lib.optionals enablePapi [ papi ]; ];
} }

View File

@@ -24,10 +24,9 @@ stdenv.mkDerivation rec {
doCheck = true; doCheck = true;
enableParallelBuilding = true; enableParallelBuilding = true;
nativeBuildInputs = [ mpiAll ];
buildInputs = [ mpiAll ]; buildInputs = [ mpiAll ];
hardeningDisable = [ "all" ]; hardeningDisable = [ "all" ];
configureFlags = [ configureFlags = [
"CC=mpicc" "CC=mpicc"
"CXX=mpicxx" "CXX=mpicxx"
]; ];
@@ -41,7 +40,7 @@ stdenv.mkDerivation rec {
meta = { meta = {
description = "OSU Micro-Benchmarks"; description = "OSU Micro-Benchmarks";
homepage = "http://mvapich.cse.ohio-state.edu/benchmarks/"; homepage = http://mvapich.cse.ohio-state.edu/benchmarks/;
maintainers = [ ]; maintainers = [ ];
platforms = lib.platforms.all; platforms = lib.platforms.all;
}; };

View File

@@ -13,6 +13,8 @@
, useMpi ? (stdenv.buildPlatform.canExecute stdenv.hostPlatform) , useMpi ? (stdenv.buildPlatform.canExecute stdenv.hostPlatform)
}: }:
with lib;
let let
release = rec { release = rec {
version = "1.12.0"; version = "1.12.0";
@@ -43,7 +45,7 @@ in
postPatch = '' postPatch = ''
patchShebangs --build test/ patchShebangs --build test/
''; '';
nativeBuildInputs = [ cmake ] ++ lib.optionals (useMpi) [ mpi ]; nativeBuildInputs = [ cmake ];
buildInputs = lib.optionals (useMpi) [ mpi ]; buildInputs = lib.optionals (useMpi) [ mpi ];
cmakeBuildType = if (enableDebug) then "Debug" else "Release"; cmakeBuildType = if (enableDebug) then "Debug" else "Release";
cmakeFlags = [ cmakeFlags = [

View File

@@ -60,17 +60,17 @@ stdenv.mkDerivation rec {
]; ];
nativeBuildInputs = [ nativeBuildInputs = [
autoconf
automake
autoreconfHook
wrapGAppsHook wrapGAppsHook
]; ];
buildInputs = [ buildInputs = [
autoreconfHook
boost boost
libxml2.dev libxml2.dev
xml2 xml2
wx wx
autoconf
automake
paraverKernel paraverKernel
openssl.dev openssl.dev
]; ];

View File

@@ -44,17 +44,14 @@ stdenv.mkDerivation rec {
"--enable-openmp" "--enable-openmp"
]; ];
nativeBuildInputs = [
autoreconfHook
autoconf
automake
pkg-config
];
buildInputs = [ buildInputs = [
autoreconfHook
boost boost
libxml2.dev libxml2.dev
xml2 xml2
autoconf
automake
pkg-config
zlib zlib
]; ];
} }

View File

@@ -61,16 +61,13 @@ stdenv.mkDerivation rec {
"--with-wx-config=${wx}/bin/wx-config" "--with-wx-config=${wx}/bin/wx-config"
]; ];
nativeBuildInputs = [
autoconf
automake
];
buildInputs = [ buildInputs = [
boost boost
xml2 xml2
libxml2.dev libxml2.dev
wx wx
autoconf
automake
openssl.dev openssl.dev
]; ];

View File

@@ -18,12 +18,8 @@ stdenv.mkDerivation rec {
hardeningDisable = [ "all" ]; hardeningDisable = [ "all" ];
dontStrip = true; dontStrip = true;
configureFlags = [ "--with-ovni=${ovni}" ]; configureFlags = [ "--with-ovni=${ovni}" ];
nativeBuildInputs = [
autoreconfHook
];
buildInputs = [ buildInputs = [
autoreconfHook
ovni ovni
mpi mpi
]; ];

View File

@@ -8,6 +8,7 @@
, gnumake , gnumake
, boost , boost
, mpi , mpi
, gcc
, autoreconfHook , autoreconfHook
, enableOvni ? true , enableOvni ? true
, ovni ? null , ovni ? null
@@ -40,20 +41,18 @@ let
}; };
}; };
source = if (useGit) then git else release; source = if (useGit) then git else release;
in stdenv.mkDerivation { in stdenv.mkDerivation rec {
pname = "tampi"; pname = "tampi";
inherit (source) src version; inherit (source) src version;
enableParallelBuilding = true; enableParallelBuilding = true;
separateDebugInfo = true; separateDebugInfo = true;
nativeBuildInputs = [ nativeBuildInputs = [
autoconf
automake
autoreconfHook autoreconfHook
gnumake automake
autoconf
libtool libtool
gnumake
]; ];
buildInputs = [ buildInputs = [
boost boost
mpi mpi