Archived
1
0
forked from rarias/bscpkgs

4 Commits

Author SHA1 Message Date
2ffdd53d86 Add hydraJobs with tests and packages
Reviewed-by: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
Tested-by: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2025-09-26 16:12:46 +02:00
c7b5ec13b8 Provide nixpkgs.lib in bscpkgs outputs
Currently, we can use bscpkgs similarly to nixpkgs either through
the flake outputs or with import bscpkgs:

```nix
# currently supported:
bscpkgs.legacyPackages.x86_64-linux.hello
let pkgs = import bscpkgs { system = "x86_64-linux"; }; in pkgs.hello
```
The missing piece is nixpkgs.lib (not pkgs.lib, the system agnostic
one). The workaround is to do bscpkgs.inputs.nixpkgs.lib instead. We can
simplify this by forwarding the lib to our outputs.

This enables us to use bscpkgs as a drop-in
replacing the inputs to our flake from nixpkgs to bscpkgs.
(inputs.nixpkgs.url = "<*BSC*pkgs url>").


Reviewed-by: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
Tested-by: Aleix Boné <abonerib@bsc.es>
2025-09-12 14:28:42 +02:00
00dfe801f4 Fix GPI-2 and enable TAGASPI
The rdma-core driver.h include is no longer installed:

 56dd87acd2

So ibv_read_sysfs_file() is not defined. As the symbols is still
distributed, we simply add the missing prototype manually.

Similarly, the gaspi_get_system_mem() function is not available from the
gaspi public headers, so we define it in the max_mem.c test.

Fixes: rarias/bscpkgs#7
Reviewed-by: Aleix Boné <abonerib@bsc.es>
Tested-by: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2025-09-12 14:21:00 +02:00
2c8d7ed855 Build nOS-V with PAPI support
To support the new instrumentation for HWC it would be useful to already
build nOS-V with PAPI support enabled. The enablePapi switch allows it
to be disabled with `nosv.override { enablePapi = false; }`.

Reviewed-by: Aleix Roca Nonell <aleix.rocanonell@bsc.es>
Tested-by: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2025-08-01 13:12:48 +02:00
19 changed files with 104 additions and 111 deletions

View File

@@ -2,16 +2,25 @@
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";
overlays = [ self.overlays.default ]; pkgs = import nixpkgs {
}; inherit system;
in overlays = [ self.overlays.default ];
};
in
{ {
bscOverlay = import ./overlay.nix; bscOverlay = import ./overlay.nix;
overlays.default = self.bscOverlay; overlays.default = self.bscOverlay;
legacyPackages.x86_64-linux = pkgs; # full nixpkgs with our overlay applied
legacyPackages.${system} = pkgs;
hydraJobs = {
inherit (self.legacyPackages.${system}.bsc-ci) test pkgs;
};
# propagate nixpkgs lib, so we can do bscpkgs.lib
inherit (nixpkgs) lib;
}; };
} }

View File

@@ -18,7 +18,7 @@ let
clangOmpss2NodesOmpv = callPackage ./pkgs/llvm-ompss2/default.nix { ompss2rt = final.nodes; openmp = final.openmpv; }; clangOmpss2NodesOmpv = callPackage ./pkgs/llvm-ompss2/default.nix { ompss2rt = final.nodes; openmp = final.openmpv; };
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 { }; # Broken: https://jungle.bsc.es/git/rarias/bscpkgs/issues/7 gpi-2 = callPackage ./pkgs/gpi-2/default.nix { };
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 { };
@@ -44,16 +44,11 @@ let
stdenvClangOmpss2Nanos6 = final.stdenv.override { cc = final.clangOmpss2Nanos6; allowedRequisites = null; }; stdenvClangOmpss2Nanos6 = final.stdenv.override { cc = final.clangOmpss2Nanos6; allowedRequisites = null; };
stdenvClangOmpss2Nodes = final.stdenv.override { cc = final.clangOmpss2Nodes; allowedRequisites = null; }; stdenvClangOmpss2Nodes = final.stdenv.override { cc = final.clangOmpss2Nodes; allowedRequisites = null; };
stdenvClangOmpss2NodesOmpv = final.stdenv.override { cc = final.clangOmpss2NodesOmpv; allowedRequisites = null; }; stdenvClangOmpss2NodesOmpv = final.stdenv.override { cc = final.clangOmpss2NodesOmpv; allowedRequisites = null; };
#tagaspi = callPackage ./pkgs/tagaspi/default.nix { }; # Broken due gpi-2 tagaspi = callPackage ./pkgs/tagaspi/default.nix { };
tampi = callPackage ./pkgs/tampi/default.nix { }; tampi = callPackage ./pkgs/tampi/default.nix { };
wxparaver = callPackage ./pkgs/paraver/default.nix { }; wxparaver = callPackage ./pkgs/paraver/default.nix { };
}; };
allPkgs = collect isDerivation bscPkgs;
mkStrict = pkg: if pkg ? overrideAttrs then pkg.overrideAttrs { strictDeps = true; } else pkg;
strictPkgs = map mkStrict allPkgs;
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";
@@ -93,15 +88,17 @@ in bscPkgs // {
}; };
}; };
pkgs = final.runCommand "ci-pkgs" { } pkgs = filterAttrs (_: isDerivation) bscPkgs;
"printf '%s\n' ${toString strictPkgs} > $out";
pkgsList = final.runCommand "ci-pkgs" { }
"printf '%s\n' ${toString (collect isDerivation bscPkgs)} > $out";
tests = final.runCommand "ci-tests" { } tests = final.runCommand "ci-tests" { }
"printf '%s\n' ${toString (collect isDerivation final.bsc-ci.test)} > $out"; "printf '%s\n' ${toString (collect isDerivation final.bsc-ci.test)} > $out";
all = final.runCommand "ci-all" { } all = final.runCommand "ci-all" { }
'' ''
deps="${toString [ final.bsc-ci.pkgs final.bsc-ci.tests ]}" deps="${toString [ final.bsc-ci.pkgsList final.bsc-ci.tests ]}"
cat $deps cat $deps
printf '%s\n' $deps > $out 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,6 +34,8 @@ 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

10
pkgs/gpi-2/max-mem.patch Normal file
View File

@@ -0,0 +1,10 @@
--- 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

@@ -0,0 +1,12 @@
--- 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

@@ -57,20 +57,18 @@ in stdenv.mkDerivation rec {
isClangWithOmpss = true; isClangWithOmpss = true;
nativeBuildInputs = [ nativeBuildInputs = [ zlib ];
bash
cmake
elfutils
llvmPackages_latest.lld
pkg-config
python3
perl
which
zlib
];
buildInputs = [ buildInputs = [
which
bash
python3
perl
cmake
llvmPackages_latest.lld
elfutils
libffi libffi
pkg-config
zlib zlib
gcc.cc.lib # Required for libstdc++.so.6 gcc.cc.lib # Required for libstdc++.so.6
]; ];

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,6 +6,8 @@
, 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
@@ -56,5 +58,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,8 @@ in
postPatch = '' postPatch = ''
patchShebangs --build test/ patchShebangs --build test/
''; '';
nativeBuildInputs = [ cmake ] ++ lib.optionals (useMpi) [ mpi ]; nativeBuildInputs = [ cmake ];
buildInputs = lib.optionals (useMpi) [ mpi ];
cmakeBuildType = if (enableDebug) then "Debug" else "Release"; cmakeBuildType = if (enableDebug) then "Debug" else "Release";
cmakeFlags = [ cmakeFlags = [
"-DOVNI_GIT_COMMIT=${src.shortRev}" "-DOVNI_GIT_COMMIT=${src.shortRev}"

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

@@ -41,24 +41,20 @@ 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 = [
autoconf
automake
autoreconfHook
gcc
gnumake
libtool
];
buildInputs = [ buildInputs = [
autoreconfHook
automake
autoconf
libtool
gnumake
boost boost
mpi mpi
gcc
] ++ optional (enableOvni) ovni; ] ++ optional (enableOvni) ovni;
configureFlags = optional (enableOvni) "--with-ovni=${ovni}"; configureFlags = optional (enableOvni) "--with-ovni=${ovni}";
dontDisableStatic = true; dontDisableStatic = true;