Compare commits

..

73 Commits

Author SHA1 Message Date
8787677df3 Fix PoCL SYCL tests 2026-03-20 15:42:05 +01:00
8b3b21af97 Update Intel 2023 derivation to use new TOML 2026-03-20 13:05:15 +01:00
a9b9d9a13d Only save relevant packages from intel repo
Refactored the parsing and dependency resolution logic into a single
Haskell script.
2026-03-20 13:05:14 +01:00
19e5399039 Add stdenv to llvm-intel passthru 2026-03-19 14:59:47 +01:00
250d173376 Refactor intel-oneapi into deb and open subfolders 2026-03-19 14:59:47 +01:00
704a33fbae Use explicit version instead of wildcard in intel 2026-03-19 14:59:47 +01:00
dd455e8424 Conditionally enable cuda on llvm-intel 2026-03-19 14:59:47 +01:00
6106d16d75 Add stdenv and tests for llvm-intel compiler 2026-03-19 14:59:46 +01:00
ec19115da5 Add cudatoolkit to PATH 2026-03-19 14:59:46 +01:00
63e58f4102 Disable zerocallusedregs in llvm-intel
Doesn't work with neither spirv nor nvptx
2026-03-19 14:59:46 +01:00
0dc74f8b61 Enable libdevice in llvm-intel
This requires a wrapper stub to set up the flags,
since libdevice is built using the built compiler.
2026-03-19 14:59:46 +01:00
40d6cae8a9 Wrap llvm-intel 2026-03-19 14:59:46 +01:00
9888c5913a Add llvm-intel 2026-03-19 14:59:46 +01:00
fcb0ba6da0 Add tests for Intel OCL 2026-03-19 14:59:46 +01:00
b0cfde9dca Add test for sycl-ls with PoCL and Intel OCL 2026-03-19 14:59:45 +01:00
3d052cfa78 Add intel.icd to hpckit compiler 2026-03-19 14:59:45 +01:00
8c5a190394 Add test to run sycl applications with PoCL 2026-03-19 14:59:45 +01:00
d10f2f3818 Provide sycl-ls and sycl-trace on wrapped oneapi compiler 2026-03-19 14:59:45 +01:00
85a17b5320 Use PoCL as SYCL runtime 2026-03-19 14:59:45 +01:00
d4df6e37b9 Add GROMACS 2026-03-19 14:59:45 +01:00
e12955e313 Add OpenCL Conformance Tests to PoCL 2026-03-19 14:59:45 +01:00
92c011ed2e Use POCL_CACHE_DIR instead of writableHome...Hook 2026-03-19 14:59:44 +01:00
7c52af61a8 Add tests for PoCL with and without using icd 2026-03-19 14:59:44 +01:00
0b225f0a8b Add PoCL passthru test that sets doCheck 2026-03-19 14:59:44 +01:00
5d9a4eb9ee Add clinfo test for PoCL 2026-03-19 14:59:44 +01:00
0115787a4e Add PoCL 2026-03-19 14:59:44 +01:00
aa89eeeba7 Add libgcc to intel packages wrapper
Fixes missing lib when compiling some SYCL benchmarks:
ld: cannot find -lstdc++fs: No such file or directory
2026-03-19 14:59:44 +01:00
ceea1e4601 Add passthru in ompss2 wrapper for icpx compat 2026-03-19 14:59:43 +01:00
045cebac68 Remove wrapper flags when clang called from intel
When using `icpx -fsycl -fsycl-host-compiler=clang++`, the inner
compiler will use the flags set in the icpx wrapper and it will break.
2026-03-19 14:59:43 +01:00
61119f48ab Add oneMath 2026-03-19 14:59:43 +01:00
9aab2e5340 Use json for Intel 2023 instead of awk + ifd
This reuses the existing json from the new 2024-25
intel packages instead of parsing the raw data from
the apt output and doing IFD.
2026-03-19 14:59:43 +01:00
e259391343 Add TASYCL 2.1.0 2026-03-19 14:59:43 +01:00
037ed21f23 Add test for icpx with ompss-2 as host compiler 2026-03-19 14:59:43 +01:00
9519b8c32b Add SYCL test compilation 2026-03-19 14:59:43 +01:00
8c8688b274 Add intelPackages_202{4,5} and make 2025 the default 2026-03-19 14:59:42 +01:00
4f51ebe607 Add papi and nosv to cross-compilation CI
Some checks failed
CI / build:cross (push) Failing after 7s
CI / build:all (push) Failing after 12s
Reviewed-by: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2026-03-19 14:50:10 +01:00
98cac0fb8d Add install check for OpenMP{,-V}
Reviewed-by: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2026-03-19 12:53:43 +01:00
ea89344945 Fix openmp buildInputs
Reviewed-by: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2026-03-19 12:53:42 +01:00
fed0cc9685 Remove unused sys-devices requirement in ld test
The test only checks compilation (and linkage),
without actually running the program. There
was no need to access NUMA information.

Reviewed-by: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2026-03-19 12:53:42 +01:00
87da05df91 Enable papi when cross-compiling
Reviewed-by: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2026-03-19 12:53:42 +01:00
66a3047596 Fix papi cross compilation
Reviewed-by: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2026-03-19 12:53:42 +01:00
8cd97fd7cb Use pkg-config instead of papi_version_check
Reviewed-by: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2026-03-19 12:13:46 +01:00
0e2a90db13 Fix cudainfo buildInputs
Reviewed-by: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2026-03-19 12:13:46 +01:00
b0e754e0e7 Set strictDeps to true on all our packages
Reviewed-by: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2026-03-19 12:13:45 +01:00
f6c8c78305 Use ninja when building llvm-ompss2
Reviewed-by: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2026-03-17 18:44:12 +01:00
4832e7bc34 Unlock gitlab-runner to use in multiple projects
Some checks failed
CI / build:cross (push) Failing after 9s
CI / build:all (push) Failing after 15s
Fixes: rarias/jungle#241
Reviewed-by: Aleix Boné <abonerib@bsc.es>
2026-03-17 18:35:31 +01:00
39eddb76c1 Add To headers in OmpSs-2 robot email
Cc: Antoni Navarro <antoni.navarro@bsc.es>
Reviewed-by: Aleix Boné <abonerib@bsc.es>
2026-03-17 17:45:13 +01:00
cf47139ebe Add owl nodes to varcila
Fixes: rarias/jungle#243
Reviewed-by: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2026-03-13 12:11:43 +01:00
54dfaa9dff Remove proot from nix-portable
The pkgsStatic.proot is broken due to failed
dependencies. In upstream nix-portable they have
a custom derivation on top o proot gitlab. But
since we don't need it, we can remove it safely.

Reviewed-by: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2026-03-11 17:23:20 +01:00
34238d81c7 Rework nix-portable derivation arguments
Reviewed-by: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2026-03-11 17:23:20 +01:00
1b36c70512 Unset mn5 default bash functions in nix-portable
Reviewed-by: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2026-03-11 17:23:19 +01:00
f5b1082ab9 Do not restore original $PATH in nix-portable
Reviewed-by: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2026-03-11 17:23:19 +01:00
386cfd8973 Use fetchurl for amd-uprof
Reviewed-by: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2026-03-11 17:23:19 +01:00
f9db76c466 Enable parallelBuilding in jemalloc
Reviewed-by: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2026-03-11 17:23:19 +01:00
0a255b1ffa Make bsc users trusted in nix-portable
Reviewed-by: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2026-03-11 17:23:19 +01:00
af512636ac Add sys-devices feature to nix-portable nix.conf
Reviewed-by: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2026-03-11 17:23:19 +01:00
9dae6a6f38 Add meta with license to nix-portable
Reviewed-by: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2026-03-11 17:23:19 +01:00
839b9b8c76 Bind /usr/bin/env in nix-portable
Reviewed-by: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2026-03-11 17:23:18 +01:00
7ac154a55b Add jungle cache to nix-portable nix.conf
Reviewed-by: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2026-03-11 17:23:18 +01:00
14af841511 Use nix bwrap in nix-portable
Reviewed-by: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2026-03-11 17:23:18 +01:00
1d02f7fae4 Remove nix-portable tmpbin feature
It will not work without the host /lib64/ld

Reviewed-by: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2026-03-11 17:23:18 +01:00
a71b12c60e Add bashInteractive in nix-portable bwrap
Reviewed-by: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2026-03-11 17:23:18 +01:00
b96e3422b2 Install netcat, ssh and git in nix-portable
These are needed by nix in order to properly
download and build stuff.

busybox's netcat does not work since it doesn't
support -X.

Reviewed-by: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2026-03-11 17:23:18 +01:00
e7b3f972b0 Only to busybox to /bin/sh in nix-portable
Reviewed-by: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2026-03-11 17:23:18 +01:00
79fdfc6c0e Remove sgid from .nix-portable and set group
This should prevent issues when putting it under
/gpfs/{projects,scratch} that have sgid and group=nobody.

Reviewed-by: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2026-03-11 17:23:17 +01:00
71352ff5d1 Restrict paths added to bwrap in nix-portable
Reviewed-by: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2026-03-11 17:23:17 +01:00
06925bc0ca Bind proc using --proc in nix-portable
Reviewed-by: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2026-03-11 17:23:17 +01:00
1eaca98618 Fix nix-portable pkgStatic symlink handling
Reviewed-by: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2026-03-11 17:23:17 +01:00
7195ca4cb6 Add nix-portable
repo: https://github.com/DavHau/nix-portable
rev: 91122e3d94ba51d7d83fe990fa81d3de0968fb32

Reviewed-by: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2026-03-11 17:23:17 +01:00
7674f61b17 Re-enable nix-wrap
libcap is no longer broken upstream

Reviewed-by: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2026-03-11 17:23:17 +01:00
f71e807d47 Add remote sblame probe to prometheus
Reviewed-by: Aleix Boné <abonerib@bsc.es>
2026-03-11 16:48:15 +01:00
461d96dc75 Allow access to postgresql socket from CI runner
Fixes: rarias/jungle#237
Cc: Antoni Navarro <antoni.navarro@bsc.es>
Reviewed-by: Aleix Boné <abonerib@bsc.es>
2026-03-11 12:41:06 +01:00
26d9e3d432 Grant gitlab-runner user access to perftestsdb
Cc: Antoni Navarro <antoni.navarro@bsc.es>
Reviewed-by: Aleix Boné <abonerib@bsc.es>
2026-03-11 12:40:21 +01:00
63 changed files with 2709 additions and 3977 deletions

View File

@@ -134,7 +134,7 @@
home = "/home/Computational/varcila";
description = "Vincent Arcila";
group = "Computational";
hosts = [ "apex" "hut" "tent" "fox" ];
hosts = [ "apex" "hut" "tent" "fox" "owl1" "owl2" ];
hashedPassword = "$6$oB0Tcn99DcM4Ch$Vn1A0ulLTn/8B2oFPi9wWl/NOsJzaFAWjqekwcuC9sMC7cgxEVb.Nk5XSzQ2xzYcNe5MLtmzkVYnRS1CqP39Y0";
openssh.authorizedKeys.keys = [
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKGt0ESYxekBiHJQowmKpfdouw0hVm3N7tUMtAaeLejK vincent@varch"

View File

@@ -51,6 +51,7 @@
"/nix/store:/nix/store:ro"
"/nix/var/nix/db:/nix/var/nix/db:ro"
"/nix/var/nix/daemon-socket:/nix/var/nix/daemon-socket:ro"
"/var/run/postgresql/:/var/run/postgresql/"
];
dockerExtraHosts = [
# Required to pass the proxy via hut
@@ -60,6 +61,8 @@
registrationFlags = [
# Increase build log length to 64 MiB
"--output-limit 65536"
# Allow the runner to be used in multiple projects
"--locked=false"
];
preBuildScript = pkgs.writeScript "setup-container" ''
mkdir -p -m 0755 /nix/var/log/nix/drvs

View File

@@ -5,7 +5,7 @@
../module/slurm-exporter.nix
../module/meteocat-exporter.nix
../module/upc-qaire-exporter.nix
./gpfs-probe.nix
./ssh-robot-probes.nix
../module/nix-daemon-exporter.nix
];
@@ -111,6 +111,7 @@
"127.0.0.1:${toString config.services.prometheus.exporters.smartctl.port}"
"127.0.0.1:9341" # Slurm exporter
"127.0.0.1:9966" # GPFS custom exporter
"127.0.0.1:9967" # SLURM custom exporter
"127.0.0.1:9999" # Nix-daemon custom exporter
"127.0.0.1:9929" # Meteocat custom exporter
"127.0.0.1:9928" # UPC Qaire custom exporter

View File

@@ -29,6 +29,7 @@
closing = pkgs.writeText "closing.txt"
''
Subject: OmpSs-2 release enters closing period
To: star@bsc.es
Hi,
@@ -42,6 +43,7 @@
freeze = pkgs.writeText "freeze.txt"
''
Subject: OmpSs-2 release enters freeze period
To: star@bsc.es
Hi,
@@ -55,6 +57,7 @@
release = pkgs.writeText "release.txt"
''
Subject: OmpSs-2 release now
To: star@bsc.es
Hi,
@@ -69,7 +72,7 @@
script = ''
set -eu
set -o pipefail
cat ${mail} | ${config.security.wrapperDir}/sendmail star@bsc.es
cat ${mail} | ${config.security.wrapperDir}/sendmail -t star@bsc.es
'';
serviceConfig = {
Type = "oneshot";

View File

@@ -8,12 +8,14 @@
{ name = "anavarro"; ensureClauses.superuser = true; }
{ name = "rarias"; ensureClauses.superuser = true; }
{ name = "grafana"; }
{ name = "gitlab-runner"; }
];
authentication = ''
#type database DBuser auth-method
local perftestsdb rarias trust
local perftestsdb anavarro trust
local perftestsdb grafana trust
#type database DBuser auth-method
local perftestsdb rarias trust
local perftestsdb anavarro trust
local perftestsdb grafana trust
local perftestsdb gitlab-runner trust
'';
};
}

8
m/hut/sblame-probe.sh Executable file
View File

@@ -0,0 +1,8 @@
#!/bin/sh
cat <<EOF
HTTP/1.1 200 OK
Content-Type: text/plain; version=0.0.4; charset=utf-8; escaping=values
EOF
ssh bsc015557@glogin2.bsc.es "timeout 3 command sblame -E"

View File

@@ -6,6 +6,12 @@ let
chmod +x $out
''
;
sblame-probe-script = pkgs.runCommand "sblame-probe.sh" { }
''
cp ${./sblame-probe.sh} $out;
chmod +x $out
''
;
in
{
# Use a new user to handle the SSH keys
@@ -28,4 +34,17 @@ in
Group = "ssh-robot";
};
};
systemd.services.sblame-probe = {
description = "Daemon to report SLURM statistics via SSH";
path = [ pkgs.openssh pkgs.netcat ];
after = [ "network.target" ];
wantedBy = [ "default.target" ];
serviceConfig = {
Type = "simple";
ExecStart = "${pkgs.socat}/bin/socat TCP4-LISTEN:9967,fork EXEC:${sblame-probe-script}";
User = "ssh-robot";
Group = "ssh-robot";
};
};
}

View File

@@ -20,10 +20,11 @@ let
#extrae = callPackage ./pkgs/extrae/default.nix { }; # Broken and outdated
gpi-2 = callPackage ./pkgs/gpi-2/default.nix { };
gromacs = callPackage ./pkgs/gromacs/default.nix { enableSYCL = true; };
intel-apt = callPackage ./pkgs/intel-oneapi/packages.nix { };
intelPackages_2023 = callPackage ./pkgs/intel-oneapi/2023.nix { };
intelPackages_2024 = final.intel-apt.hpckit_2024;
intelPackages_2025 = final.intel-apt.hpckit_2025;
wrapIntel = callPackage ./pkgs/intel-oneapi/common/wrapper.nix { };
intel-apt = callPackage ./pkgs/intel-oneapi/deb/packages.nix { };
intelPackages_2023 = callPackage ./pkgs/intel-oneapi/deb/2023.nix { };
intelPackages_2024 = final.intel-apt.hpckit-2024;
intelPackages_2025 = final.intel-apt.hpckit-2025;
intelPackages = final.intelPackages_2025;
jemallocNanos6 = callPackage ./pkgs/nanos6/jemalloc.nix { };
# FIXME: Extend this to all linuxPackages variants. Open problem, see:
@@ -34,6 +35,8 @@ let
linuxPackages_latest = prev.linuxPackages_latest.extend(_final: _prev: {
amd-uprof-driver = _prev.callPackage ./pkgs/amd-uprof/driver.nix { };
});
llvm-intel-unwrapped = callPackage ./pkgs/intel-oneapi/open/default.nix { };
llvm-intel = final.wrapIntel { cc = final.llvm-intel-unwrapped; };
lmbench = callPackage ./pkgs/lmbench/default.nix { };
# Broken and unmantained
# mcxx = callPackage ./pkgs/mcxx/default.nix { };
@@ -44,9 +47,8 @@ let
nanos6Debug = final.nanos6.override { enableDebug = true; };
nixtools = callPackage ./pkgs/nixtools/default.nix { };
nixgen = callPackage ./pkgs/nixgen/default.nix { };
# Broken because of pkgsStatic.libcap
# See: https://github.com/NixOS/nixpkgs/pull/268791
#nix-wrap = callPackage ./pkgs/nix-wrap/default.nix { };
nix-portable = callPackage ./pkgs/nix-portable/default.nix { };
nix-wrap = callPackage ./pkgs/nix-wrap/default.nix { };
nodes = callPackage ./pkgs/nodes/default.nix { };
nosv = callPackage ./pkgs/nosv/default.nix { };
oneMath = callPackage ./pkgs/onemath/default.nix { };
@@ -55,20 +57,13 @@ let
osumb = callPackage ./pkgs/osu/default.nix { };
ovni = callPackage ./pkgs/ovni/default.nix { };
ovniGit = final.ovni.override { useGit = true; };
papi = callPackage ./pkgs/papi/default.nix { papi = prev.papi; };
paraverKernel = callPackage ./pkgs/paraver/kernel.nix { };
pocl = callPackage ./pkgs/pocl/default.nix { };
pocl-unpublished = callPackage ./pkgs/pocl/default.nix {
gitUrl = "git@github.com:pocl/unpublished.git";
gitBranch = "loopvec-next";
gitCommit = "74f7e2b5644b1c5598205c8cac1914bb4c5dadec";
enableNOSV = false;
enableOVNI = false;
};
pocl-noicd = callPackage ./pkgs/pocl/default.nix { enableICD = false; };
prometheus-slurm-exporter = prev.callPackage ./pkgs/slurm-exporter/default.nix { };
#pscom = callPackage ./pkgs/parastation/pscom.nix { }; # Unmaintaned
#psmpi = callPackage ./pkgs/parastation/psmpi.nix { }; # Unmaintaned
rodinia = callPackage ./pkgs/rodinia/default.nix { };
slurm = import ./pkgs/slurm/default.nix { slurm = prev.slurm; };
sonar = callPackage ./pkgs/sonar/default.nix { };
stdenvClangOmpss2 = final.stdenv.override { cc = final.clangOmpss2; allowedRequisites = null; };
@@ -111,6 +106,10 @@ let
# intel2023-sycl = hello-sycl.override { intelPackages = final.intelPackages_2023; }; # broken
intel2024-sycl = hello-sycl.override { intelPackages = final.intelPackages_2024; };
intel2025-sycl = hello-sycl.override { intelPackages = final.intelPackages_2025; };
oneapi-c = hello-c.override { inherit (final.llvm-intel) stdenv; };
oneapi-cpp = hello-cpp.override { inherit (final.llvm-intel) stdenv; };
oneapi-sycl = hello-sycl.override { intelPackages = final.llvm-intel; };
oneapi-syclompss = hello-syclompss.override { intelPackages = final.llvm-intel; };
clangOmpss2-lto = lto.override { stdenv = final.stdenvClangOmpss2Nanos6; };
clangOmpss2-asan = asan.override { stdenv = final.stdenvClangOmpss2Nanos6; };
clangOmpss2-task = callPackage ./test/compilers/ompss2.nix {

View File

@@ -1,8 +1,6 @@
{ stdenv
, lib
, curl
, cacert
, runCommandLocal
, fetchurl
, autoPatchelfHook
, elfutils
, glib
@@ -26,27 +24,24 @@ let
tarball = "AMDuProf_Linux_x64_${version}.tar.bz2";
# NOTE: Remember to update the radare2 patch below if AMDuProfPcm changes.
uprofSrc = runCommandLocal tarball {
nativeBuildInputs = [ curl ];
outputHash = "sha256-j9gxcBcIg6Zhc5FglUXf/VV9bKSo+PAKeootbN7ggYk=";
SSL_CERT_FILE="${cacert}/etc/ssl/certs/ca-bundle.crt";
} ''
curl \
-o $out \
'https://download.amd.com/developer/eula/uprof/uprof-5-1/${tarball}' \
-H 'User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:139.0) Gecko/20100101 Firefox/139.0' \
-H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
-H 'Accept-Language: en-US,en;q=0.5' \
-H 'Accept-Encoding: gzip, deflate, br, zstd' \
-H 'Referer: https://www.amd.com/' 2>&1 | tr '\r' '\n'
'';
src = fetchurl {
url = "https://download.amd.com/developer/eula/uprof/uprof-5-1/${tarball}";
sha256 = "sha256-j9gxcBcIg6Zhc5FglUXf/VV9bKSo+PAKeootbN7ggYk=";
curlOptsList = [
"-H" "User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:139.0) Gecko/20100101 Firefox/139.0"
"-H" "'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'"
"-H" "Accept-Language: en-US,en;q=0.5"
"-H" "Accept-Encoding: gzip, deflate, br, zstd"
"-H" "Referer: https://www.amd.com/"
];
};
in
stdenv.mkDerivation {
pname = "AMD-uProf";
inherit version;
src = uprofSrc;
inherit src version;
dontStrip = true;
strictDeps = true;
phases = [ "installPhase" "fixupPhase" ];
nativeBuildInputs = [ autoPatchelfHook radare2 ];
buildInputs = [

View File

@@ -18,6 +18,7 @@ in stdenv.mkDerivation {
set +x
'';
hardeningDisable = [ "pic" "format" ];
strictDeps = true;
nativeBuildInputs = kernel.moduleBuildDependencies;
patches = [ ./makefile.patch ./hrtimer.patch ./remove-wr-rdmsrq.patch ];
makeFlags = [

View File

@@ -59,6 +59,7 @@ stdenv.mkDerivation rec {
];
hardeningDisable = [ "all" ];
dontStrip = true;
strictDeps = true;
meta = {
homepage = "https://gitlab.pm.bsc.es/rarias/bench6";

View File

@@ -16,6 +16,8 @@ stdenv.mkDerivation {
};
nativeBuildInputs = [ cmake ];
strictDeps = true;
meta = {
homepage = "https://github.com/rodarima/bigotes";
description = "Versatile benchmark tool";

View File

@@ -10,11 +10,14 @@
stdenv.mkDerivation (finalAttrs: {
name = "cudainfo";
src = ./.;
buildInputs = [
strictDeps = true;
nativeBuildInputs = [
cudatoolkit # Required for nvcc
(lib.getOutput "static" cudaPackages.cuda_cudart) # Required for -lcudart_static
autoAddDriverRunpath
];
buildInputs = [
(lib.getOutput "static" cudaPackages.cuda_cudart) # Required for -lcudart_static
];
installPhase = ''
mkdir -p $out/bin
cp -a cudainfo $out/bin
@@ -23,6 +26,7 @@ stdenv.mkDerivation (finalAttrs: {
name = "cudainfo-test";
requiredSystemFeatures = [ "cuda" ];
dontBuild = true;
strictDeps = true;
nativeCheckInputs = [
finalAttrs.finalPackage # The cudainfo package from above
strace # When it fails, it will show the trace

View File

@@ -20,7 +20,7 @@
#, python3Packages
, installShellFiles
, symlinkJoin
, enablePapi ? stdenv.hostPlatform == stdenv.buildPlatform # Disabled when cross-compiling
, enablePapi ? true
}:
let

View File

@@ -33,6 +33,7 @@ stdenv.mkDerivation rec {
};
enableParallelBuilding = true;
strictDeps = true;
patches = [ ./rdma-core.patch ./max-mem.patch ];

View File

@@ -185,6 +185,7 @@ stdenv'.mkDerivation rec {
maintainers = with maintainers; [
sheepforce
markuskowa
bsc.abonerib
];
};
}

View File

@@ -0,0 +1,73 @@
{
stdenv,
lib,
gcc,
libgcc,
overrideCC,
wrapCCWith,
}:
{
cc,
extraPath ? lib.makeBinPath (
[ gcc.cc ] ++ (lib.optionals (cc.enableCuda or false) [ cc.cudaPackages.cudatoolkit ])
),
extraBuildCommands ? "",
extraInstallCommands ? "",
}:
let
targetConfig = stdenv.targetPlatform.config;
in
(wrapCCWith {
inherit cc;
nixSupport = {
cc-ldflags = [
"-L${gcc.cc}/lib/gcc/${targetConfig}/${gcc.version}"
"-L${gcc.cc.lib}/lib"
"-L${libgcc.out}/lib"
"-L${gcc.libc}/lib"
"-L${cc}/lib"
];
cc-cflags = [
"--gcc-toolchain=${gcc.cc}"
"-isystem ${cc.original or cc}/lib/clang/${toString cc.llvmMajorVersion}/include"
"-isystem ${cc}/include"
"-isystem ${cc}/include/intel64"
"-isystem ${gcc.cc}/lib/gcc/${targetConfig}/${gcc.version}/include"
];
libcxx-cxxflags = [
"-isystem ${gcc.cc}/include/c++/${gcc.version}"
"-isystem ${gcc.cc}/include/c++/${gcc.version}/${targetConfig}"
];
};
extraBuildCommands = ''
# FIXME: We should find a better way to modify the PATH instead of using
# this ugly hack. See https://jungle.bsc.es/git/rarias/bscpkgs/issues/9
echo 'path_backup="${extraPath}:$path_backup"' >>$out/nix-support/cc-wrapper-hook
# Disable hardening by default
echo "" > $out/nix-support/add-hardening.sh
pushd $ccPath
for i in $ {llvm,sycl}-* ; do
ln -s $ccPath/$i $out/bin/$i
done
popd
# Use this to detect when a compiler subprocess is called
# from icpx (--fsycl-host-compiler)
echo 'export NIX_CC_WRAPPER_INTEL=1' >>$out/nix-support/cc-wrapper-hook
# oneMath looks for sycl libraries in bin/../lib
ln -s ${cc}/lib $out/lib
ln -s ${cc}/include $out/include
''
+ extraBuildCommands;
}).overrideAttrs
(finalAttrs: prevAttrs: {
installPhase = prevAttrs.installPhase + extraInstallCommands;
passthru.stdenv = overrideCC stdenv finalAttrs.finalPackage;
})

View File

@@ -42,15 +42,15 @@ let
findMatch = name:
let
aptPackages = builtins.fromJSON (builtins.readFile ./packages.json);
matches = lib.filter (x: name == x.pname) aptPackages;
aptPackages = builtins.getAttr "hpckit-2023-1-0" (builtins.fromTOML (builtins.readFile ./packages.toml));
matches = lib.filter (x: lib.hasPrefix name (x.name + "-" + x.version)) aptPackages;
n = lib.length matches;
match = builtins.traceVerbose (name + " -- ${builtins.toString n}") (builtins.head matches);
apthost = "https://apt.repos.intel.com/oneapi/";
in
{
url = apthost + match.filename;
url = apthost + match.file;
sha256 = match.sha256;
};
@@ -299,7 +299,7 @@ let
src = joinDebs pname [
# C/C++
"intel-oneapi-dpcpp-cpp-${version}"
"intel-oneapi-compiler-dpcpp-cpp-${version}"
# "intel-oneapi-compiler-dpcpp-cpp-${version}"
"intel-oneapi-compiler-dpcpp-cpp-common-${version}"
"intel-oneapi-compiler-dpcpp-cpp-runtime-${version}"
"intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-${version}"

View File

@@ -0,0 +1,149 @@
{
lib,
stdenv,
callPackage,
dpkg,
fetchurl,
sqlite,
elfutils,
intelAptRepoURL ? "https://apt.repos.intel.com/oneapi/"
}:
let
inherit (builtins) map mapAttrs readFile;
fetchDeb =
p:
fetchurl {
url = intelAptRepoURL + p.file;
inherit (p) sha256;
};
dpkgExtractAll =
pname: version:
{ srcs, deps }:
stdenv.mkDerivation {
inherit pname version srcs;
nativeBuildInputs = [ dpkg ];
phases = [ "installPhase" ];
passthru = { inherit deps; };
installPhase = ''
mkdir -p $out
for src in $srcs; do
echo "Unpacking $src"
dpkg -x $src $out
done
'';
};
extractKit =
name: version: pkg:
dpkgExtractAll "${name}-extracted" version {
srcs = map fetchDeb pkg;
deps = pkg;
};
patchIntel = callPackage ./patch_intel.nix { };
# Version information for each hpckit. This is used to normalize the paths
# so that files are in $out/{bin,lib,include...} instead of all over the place
# in $out/opt/intel/oneapi/*/*/{...}.
#
# The most important is the compiler component, which is used to build the
# stdenv for the hpckit.
#
# NOTE: this have to be manually specified, so we can avoid IFD. To add a
# new version, add a new field with an empty attrset, (e.g. "2026" = {}; ),
# build hpckit_2026.unpatched and use the values from
# result/opt/intel/oneapi/* to populate the attrset.
#
# WARN: if there are more than one version in the folders of the unpatched
# components, our dependency resolution hacks have probably failed and the
# package set may be broken.
components = {
# hpckit-2023 = {
# ccl = "2021.10.0";
# compiler = "2023.2.4";
# # conda_channel = "linux-64"; # TODO: which package pulls this?
# dal = "2023.2.0";
# debugger = "2023.2.0";
# dev-utilities = "2021.10.0";
# diagnostics = "2022.4.0";
# dnnl = "2023.2.0";
# dpcpp-ct = "2023.2.0";
# dpl = "2022.2.0";
# ipp = "2021.9.0";
# ippcp = "2021.8.0";
# itac = "2021.10.0";
# mkl = "2023.2.0";
# mpi = "2021.10.0";
# tbb = "2021.10.0";
#
# llvmMajorVersion = 14;
# };
hpckit-2024 = {
tcm = "1.1";
ccl = "2021.13";
compiler = "2024.2";
dal = "2024.6";
debugger = "2024.2";
dev-utilities = "2024.2";
diagnostics = "2024.2";
dnnl = "2024.2";
dpcpp-ct = "2024.2";
dpl = "2022.6";
ipp = "2021.12";
ippcp = "2021.12";
mkl = "2024.2";
mpi = "2021.13";
tbb = "2021.13";
llvmMajorVersion = 19;
extraPackages = [
sqlite
elfutils
];
};
hpckit-2025 = {
ishmem = "1.5";
tcm = "1.4";
umf = "1.0";
ccl = "2021.17";
compiler = "2025.3";
dal = "2025.10";
debugger = "2025.3";
dev-utilities = "2025.3";
dnnl = "2025.3";
dpcpp-ct = "2025.3";
dpl = "2022.10";
ipp = "2022.3";
ippcp = "2025.3";
mkl = "2025.3";
mpi = "2021.17";
tbb = "2022.3";
llvmMajorVersion = 21;
};
};
in
mapAttrs (
name: value:
patchIntel {
unpatched = extractKit (lib.getName name) (lib.getVersion name) value;
components = components.${name};
}
) (fromTOML (readFile ./packages.toml))
// {
inherit patchIntel extractKit;
}

View File

@@ -0,0 +1,966 @@
[[hpckit-2023-1-0]]
name="intel-oneapi-ccl"
version="2021.9.0-43543"
file="pool/main/intel-oneapi-ccl-2021.9.0-2021.9.0-43543_amd64.deb"
sha256="153807818d0f67bf351acdcb30520e34d3b21e57d2feecb35bbffce741b220ab"
[[hpckit-2023-1-0]]
name="intel-oneapi-ccl-devel"
version="2021.9.0-43543"
file="pool/main/intel-oneapi-ccl-devel-2021.9.0-2021.9.0-43543_amd64.deb"
sha256="4271cd383fc618633566340b7f8ae1fcf7882f208dffcf854d50c10f4389cf72"
[[hpckit-2023-1-0]]
name="intel-oneapi-clck"
version="2021.7.3-45658"
file="pool/main/intel-oneapi-clck-2021.7.3-2021.7.3-45658_amd64.deb"
sha256="045a5e1f1135cfef146f7b5211dcad3afd5608bef283c7f03a920bf686a86586"
[[hpckit-2023-1-0]]
name="intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic"
version="2023.1.0-46305"
file="pool/main/intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-2023.1.0-2023.1.0-46305_amd64.deb"
sha256="8a85a64359f8ea49d82a0a1e89d9a456d3447f917c5a0682d2f6b3d09c6fe48e"
[[hpckit-2023-1-0]]
name="intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-common"
version="2023.1.0-46305"
file="pool/main/intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-common-2023.1.0-2023.1.0-46305_all.deb"
sha256="d38895ab3046195929b7109b8bf80b3a0cd14507fda096ab7d0577aaea79b727"
[[hpckit-2023-1-0]]
name="intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-runtime"
version="2023.1.0-46305"
file="pool/main/intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-runtime-2023.1.0-2023.1.0-46305_amd64.deb"
sha256="2b12ab367bbf7e07d1f9da0b3ec6b3dd409703cb08802cd1e87b78192d90cf39"
[[hpckit-2023-1-0]]
name="intel-oneapi-compiler-dpcpp-cpp-classic-fortran-shared-runtime"
version="2023.1.0-46305"
file="pool/main/intel-oneapi-compiler-dpcpp-cpp-classic-fortran-shared-runtime-2023.1.0-2023.1.0-46305_amd64.deb"
sha256="354e65a469a9ab8e5c72684ff8c2dc5731356bc7be45012eff23e75302624edf"
[[hpckit-2023-1-0]]
name="intel-oneapi-compiler-dpcpp-cpp-common"
version="2023.1.0-46305"
file="pool/main/intel-oneapi-compiler-dpcpp-cpp-common-2023.1.0-2023.1.0-46305_all.deb"
sha256="9c117b25ddee699d1a8162ab101b9c23beeea5e9a3f2409414ee6bbc78d6593b"
[[hpckit-2023-1-0]]
name="intel-oneapi-compiler-dpcpp-cpp-runtime"
version="2023.1.0-46305"
file="pool/main/intel-oneapi-compiler-dpcpp-cpp-runtime-2023.1.0-2023.1.0-46305_amd64.deb"
sha256="d0eec67fe7e3b36c8c5b1d07a17779f739fd2fd1881f6b1848169faffcb855c6"
[[hpckit-2023-1-0]]
name="intel-oneapi-compiler-fortran"
version="2023.1.0-46305"
file="pool/main/intel-oneapi-compiler-fortran-2023.1.0-2023.1.0-46305_amd64.deb"
sha256="c8c73b7a88ed594c53a424dc3ed1dc497259da960dad5eb902982f5c31059e8d"
[[hpckit-2023-1-0]]
name="intel-oneapi-compiler-fortran-common"
version="2023.1.0-46305"
file="pool/main/intel-oneapi-compiler-fortran-common-2023.1.0-2023.1.0-46305_all.deb"
sha256="312bc5e47b7254c5637110a31c48509e09bdcb4af07a8edfddc3d190cd83d9b7"
[[hpckit-2023-1-0]]
name="intel-oneapi-compiler-fortran-runtime"
version="2023.1.0-46305"
file="pool/main/intel-oneapi-compiler-fortran-runtime-2023.1.0-2023.1.0-46305_amd64.deb"
sha256="bb137c02afd6c372e0734c424e2087c9509fbe2f154eee1f363e39368f794334"
[[hpckit-2023-1-0]]
name="intel-oneapi-compiler-shared"
version="2023.1.0-46305"
file="pool/main/intel-oneapi-compiler-shared-2023.1.0-2023.1.0-46305_amd64.deb"
sha256="014104b9721d7fca7bb2529ed810f27e9a73410698e9cc643ded7f909a7f17cf"
[[hpckit-2023-1-0]]
name="intel-oneapi-compiler-shared-common"
version="2023.1.0-46305"
file="pool/main/intel-oneapi-compiler-shared-common-2023.1.0-2023.1.0-46305_all.deb"
sha256="894eaf13bfe840d2f5df49685e9f5bb9ca8212bc2c8ddf848adcabb3806db8bd"
[[hpckit-2023-1-0]]
name="intel-oneapi-compiler-shared-runtime"
version="2023.1.0-46305"
file="pool/main/intel-oneapi-compiler-shared-runtime-2023.1.0-2023.1.0-46305_amd64.deb"
sha256="fa3f4c23f527f1ced767fef56c022e252daedd08fab752ec653985f178d509b6"
[[hpckit-2023-1-0]]
name="intel-oneapi-dal"
version="2023.1.0-46349"
file="pool/main/intel-oneapi-dal-2023.1.0-2023.1.0-46349_amd64.deb"
sha256="1c7c79398aad2010590ac092087bd8430232cf79bd859b8f3a5ac08bf8b1e9f9"
[[hpckit-2023-1-0]]
name="intel-oneapi-dal-common"
version="2023.1.0-46349"
file="pool/main/intel-oneapi-dal-common-2023.1.0-2023.1.0-46349_all.deb"
sha256="ffa4620fe6deeb71779ecc8ea6e4b113d93d0abb326632ec87a2be6aa62b579f"
[[hpckit-2023-1-0]]
name="intel-oneapi-dal-common-devel"
version="2023.1.0-46349"
file="pool/main/intel-oneapi-dal-common-devel-2023.1.0-2023.1.0-46349_all.deb"
sha256="72f539982ef75acc8d236144529715d656f35b3ffff486f5205295aa97fe097b"
[[hpckit-2023-1-0]]
name="intel-oneapi-dal-devel"
version="2023.1.0-46349"
file="pool/main/intel-oneapi-dal-devel-2023.1.0-2023.1.0-46349_amd64.deb"
sha256="202b28dc9cba1d978d3dd296b66fb2de266adb53f8c1aaeead3dd70d713756d6"
[[hpckit-2023-1-0]]
name="intel-oneapi-dev-utilities"
version="2021.9.0-44447"
file="pool/main/intel-oneapi-dev-utilities-2021.9.0-2021.9.0-44447_amd64.deb"
sha256="2d34f9d4f746b2b6468ed033628ffbe7838bf1d0bafcc3650d13d5740b10157f"
[[hpckit-2023-1-0]]
name="intel-oneapi-diagnostics-utility"
version="2022.3.0-43897"
file="pool/main/intel-oneapi-diagnostics-utility-2022.3.0-43897_amd64.deb"
sha256="0dcb568c586269c34acf055a2531eda75b1e79beaeca2587f3a87daf5167a86f"
[[hpckit-2023-1-0]]
name="intel-oneapi-dnnl"
version="2023.1.0-46343"
file="pool/main/intel-oneapi-dnnl-2023.1.0-46343_amd64.deb"
sha256="e60916a5849ba8faacd46f9633cdd6e9623fc45828696afe5d8308b7a6fcd96e"
[[hpckit-2023-1-0]]
name="intel-oneapi-dnnl-devel"
version="2023.1.0-46343"
file="pool/main/intel-oneapi-dnnl-devel-2023.1.0-46343_amd64.deb"
sha256="5a014e468825ad12b674b88a8b549e6a607bf8a8caf2e100e525e41ac9302db6"
[[hpckit-2023-1-0]]
name="intel-oneapi-dpcpp-cpp"
version="2023.1.0-46305"
file="pool/main/intel-oneapi-dpcpp-cpp-2023.1.0-2023.1.0-46305_amd64.deb"
sha256="5acd0dc9fc540355bc19317be5d79686f2acb90ac28486dd0717c423e4c94326"
[[hpckit-2023-1-0]]
name="intel-oneapi-dpcpp-ct"
version="2023.1.0-44450"
file="pool/main/intel-oneapi-dpcpp-ct-2023.1.0-2023.1.0-44450_amd64.deb"
sha256="062a8186d07999286875f13de68b7516c10ed4466c408b03558b318e2cffa291"
[[hpckit-2023-1-0]]
name="intel-oneapi-dpcpp-debugger"
version="2023.1.0-43513"
file="pool/main/intel-oneapi-dpcpp-debugger-2023.1.0-2023.1.0-43513_amd64.deb"
sha256="910daada72c1754f3784906a105788f9de226c84b0147c38c63ce4345ab5455e"
[[hpckit-2023-1-0]]
name="intel-oneapi-dpcpp-debugger-eclipse-cfg"
version="2023.1.0-43513"
file="pool/main/intel-oneapi-dpcpp-debugger-eclipse-cfg-2023.1.0-43513_all.deb"
sha256="389ace7ca89e567cf63dbc083dfea3c2ecef645f5461aca35cda02e5410ced8a"
[[hpckit-2023-1-0]]
name="intel-oneapi-ipp"
version="2021.8.0-46345"
file="pool/main/intel-oneapi-ipp-2021.8.0-2021.8.0-46345_amd64.deb"
sha256="2e7e6bdf92b650bcb56e5f72224289531b35de870e16b46b2000ee1276185186"
[[hpckit-2023-1-0]]
name="intel-oneapi-ipp-common"
version="2021.8.0-46345"
file="pool/main/intel-oneapi-ipp-common-2021.8.0-2021.8.0-46345_all.deb"
sha256="d367b5eb7135fd16e78be64e31be8fabf82bdd7ff5b7e20c0cab7aa89da82612"
[[hpckit-2023-1-0]]
name="intel-oneapi-ipp-common-devel"
version="2021.8.0-46345"
file="pool/main/intel-oneapi-ipp-common-devel-2021.8.0-2021.8.0-46345_all.deb"
sha256="16f5d9448492023b701b36dbe860ede13fb771ca60d5165464151f4fec086423"
[[hpckit-2023-1-0]]
name="intel-oneapi-ipp-devel"
version="2021.8.0-46345"
file="pool/main/intel-oneapi-ipp-devel-2021.8.0-2021.8.0-46345_amd64.deb"
sha256="0651c32a8875ffad2c627aae8c120366b51ae5bf62aa3fb3ac478e635aeeb871"
[[hpckit-2023-1-0]]
name="intel-oneapi-ippcp"
version="2021.7.0-43492"
file="pool/main/intel-oneapi-ippcp-2021.7.0-2021.7.0-43492_amd64.deb"
sha256="51c8ba51ffb8aa8d8fb89cb0e33e52ba6a1b415e6dcfa8dbf3e6c111f33f67d9"
[[hpckit-2023-1-0]]
name="intel-oneapi-ippcp-common"
version="2021.7.0-43492"
file="pool/main/intel-oneapi-ippcp-common-2021.7.0-2021.7.0-43492_all.deb"
sha256="acda55e5e660fb0a15183310aaf5acd42b2a5aef82395964e2aa2d74012b8fde"
[[hpckit-2023-1-0]]
name="intel-oneapi-ippcp-common-devel"
version="2021.7.0-43492"
file="pool/main/intel-oneapi-ippcp-common-devel-2021.7.0-2021.7.0-43492_all.deb"
sha256="d2c7e3f1c6a1cb0c84bfeb8ab1d398dc5dd4ebd48569a2a1d4d64292bb4bf938"
[[hpckit-2023-1-0]]
name="intel-oneapi-ippcp-devel"
version="2021.7.0-43492"
file="pool/main/intel-oneapi-ippcp-devel-2021.7.0-2021.7.0-43492_amd64.deb"
sha256="8b682da8d14c940779845385b9a68b9a71c5a488791ea1c3f64d4eb317abd23f"
[[hpckit-2023-1-0]]
name="intel-oneapi-itac"
version="2021.9.0-43491"
file="pool/main/intel-oneapi-itac-2021.9.0-2021.9.0-43491_amd64.deb"
sha256="b8b393e0f7f027f56e3d6c3fe06c2bf84fe40783701a0849fd13982d9e8eff50"
[[hpckit-2023-1-0]]
name="intel-oneapi-libdpstd-devel"
version="2022.1.0-43490"
file="pool/main/intel-oneapi-libdpstd-devel-2022.1.0-2022.1.0-43490_amd64.deb"
sha256="133b98eec6558ffee3cec65bcadcda097497cd390a63c3da09f77a7d7d225ded"
[[hpckit-2023-1-0]]
name="intel-oneapi-mkl"
version="2023.1.0-46342"
file="pool/main/intel-oneapi-mkl-2023.1.0-2023.1.0-46342_amd64.deb"
sha256="0581a867bed4ef620812bc05faa35228b7439d4f1d33f0eb4483f7eb8cafe8aa"
[[hpckit-2023-1-0]]
name="intel-oneapi-mkl-common"
version="2023.1.0-46342"
file="pool/main/intel-oneapi-mkl-common-2023.1.0-2023.1.0-46342_all.deb"
sha256="50c1537cd8252b443802325a6938f607b4b3801c552e77aacaa8d9d9dfc8c34e"
[[hpckit-2023-1-0]]
name="intel-oneapi-mkl-common-devel"
version="2023.1.0-46342"
file="pool/main/intel-oneapi-mkl-common-devel-2023.1.0-2023.1.0-46342_all.deb"
sha256="bb096792ea3669a0977beb0949c49238e0e43e3bc48a7f63abc5fdb856562651"
[[hpckit-2023-1-0]]
name="intel-oneapi-mkl-devel"
version="2023.1.0-46342"
file="pool/main/intel-oneapi-mkl-devel-2023.1.0-2023.1.0-46342_amd64.deb"
sha256="1eeb94ad7aeebd55873cb64f2ba3db5a202e3c6f17c7d3095742aeb95c72f2cd"
[[hpckit-2023-1-0]]
name="intel-oneapi-mpi"
version="2021.9.0-43482"
file="pool/main/intel-oneapi-mpi-2021.9.0-2021.9.0-43482_amd64.deb"
sha256="ccef71d5992198bca7b40111addb854062c0796427180c42d51553a949a2f7b4"
[[hpckit-2023-1-0]]
name="intel-oneapi-mpi-devel"
version="2021.9.0-43482"
file="pool/main/intel-oneapi-mpi-devel-2021.9.0-2021.9.0-43482_amd64.deb"
sha256="8702f4df9030597352e10f28ccc9635f3f17a3e128d18622a82ffa440471ba4e"
[[hpckit-2023-1-0]]
name="intel-oneapi-openmp"
version="2023.1.0-46305"
file="pool/main/intel-oneapi-openmp-2023.1.0-2023.1.0-46305_amd64.deb"
sha256="6455ee16e4b5ab482ca57a607c20b7387ebc74ab0e1787d2a0beb7ad38c74443"
[[hpckit-2023-1-0]]
name="intel-oneapi-openmp-common"
version="2023.1.0-46305"
file="pool/main/intel-oneapi-openmp-common-2023.1.0-2023.1.0-46305_all.deb"
sha256="d4cb4adfbfc1ba289996f4b55e85fef73348ee193314552b08a3c59c2af2c8e0"
[[hpckit-2023-1-0]]
name="intel-oneapi-tbb"
version="2021.9.0-43484"
file="pool/main/intel-oneapi-tbb-2021.9.0-2021.9.0-43484_amd64.deb"
sha256="5a5b041a76e1def25b57c3aa3a3d6f60af761115770193c61185eec2c21f6e65"
[[hpckit-2023-1-0]]
name="intel-oneapi-tbb-common"
version="2021.9.0-43484"
file="pool/main/intel-oneapi-tbb-common-2021.9.0-2021.9.0-43484_all.deb"
sha256="cdad350bed77e0f695d28c0a1468c5b21b32ff9d6db960e5c11d466ea17c634a"
[[hpckit-2023-1-0]]
name="intel-oneapi-tbb-common-devel"
version="2021.9.0-43484"
file="pool/main/intel-oneapi-tbb-common-devel-2021.9.0-2021.9.0-43484_all.deb"
sha256="919783c69c8fe7d78ba592801630da2dc6031bfec9c56363bc09ff3ce762d9b8"
[[hpckit-2023-1-0]]
name="intel-oneapi-tbb-devel"
version="2021.9.0-43484"
file="pool/main/intel-oneapi-tbb-devel-2021.9.0-2021.9.0-43484_amd64.deb"
sha256="dec4a9c18b10039dac5bd8a7c3158c9521cc018a986bff58a36d7a5daadfc3e3"
[[hpckit-2024]]
name="intel-oneapi-ccl"
version="2021.13.1-31"
file="pool/main/intel-oneapi-ccl-2021.13-2021.13.1-31_amd64.deb"
sha256="a2c0e8548336c97ba76152dc121d09599c0b87f442215882216177d09748afd7"
[[hpckit-2024]]
name="intel-oneapi-ccl-devel"
version="2021.13.1-31"
file="pool/main/intel-oneapi-ccl-devel-2021.13-2021.13.1-31_amd64.deb"
sha256="e643cf40e6b878cda5d1d5b6faa1f1591d10b7117454133d67558cb511e2a988"
[[hpckit-2024]]
name="intel-oneapi-compiler-dpcpp-cpp-common"
version="2024.2.1-1079"
file="pool/main/intel-oneapi-compiler-dpcpp-cpp-common-2024.2-2024.2.1-1079_all.deb"
sha256="9435fa27dff15a63dc8f57badffd0c8f5b4e259ea5f3b842b5e0bdc27eb629bd"
[[hpckit-2024]]
name="intel-oneapi-compiler-dpcpp-cpp-runtime"
version="2024.2.1-1079"
file="pool/main/intel-oneapi-compiler-dpcpp-cpp-runtime-2024.2-2024.2.1-1079_amd64.deb"
sha256="89e862808730ce2a6e71ffbe04742c8148e056a54f616f9b9fa791c5865f8ed8"
[[hpckit-2024]]
name="intel-oneapi-compiler-fortran"
version="2024.2.1-1079"
file="pool/main/intel-oneapi-compiler-fortran-2024.2-2024.2.1-1079_amd64.deb"
sha256="39b06723ee859f520297b2ab1895d1c5fd93bb313c107f94b7c277630be3cb94"
[[hpckit-2024]]
name="intel-oneapi-compiler-fortran-common"
version="2024.2.1-1079"
file="pool/main/intel-oneapi-compiler-fortran-common-2024.2-2024.2.1-1079_all.deb"
sha256="8a0b2ad4017336fe607600eaf958199c3c0a65a258b11cbc4d54e1f4ca9c67ca"
[[hpckit-2024]]
name="intel-oneapi-compiler-fortran-runtime"
version="2024.2.1-1079"
file="pool/main/intel-oneapi-compiler-fortran-runtime-2024.2-2024.2.1-1079_amd64.deb"
sha256="1f88e312f361d1aecf92c992f8d86127f935fd1bbe92bbe17d5ec9503538a0b1"
[[hpckit-2024]]
name="intel-oneapi-compiler-shared"
version="2024.2.1-1079"
file="pool/main/intel-oneapi-compiler-shared-2024.2-2024.2.1-1079_amd64.deb"
sha256="0fe148b6cc0d3bafe8a9cb71d2fd47473eb7a9df76f14369440c1cd2fd2b76c4"
[[hpckit-2024]]
name="intel-oneapi-compiler-shared-common"
version="2024.2.1-1079"
file="pool/main/intel-oneapi-compiler-shared-common-2024.2-2024.2.1-1079_all.deb"
sha256="dbc61ca434fa0ab12fd70e7b19d796eac2fbd60f9b3309ace233226c74169f0a"
[[hpckit-2024]]
name="intel-oneapi-compiler-shared-runtime"
version="2024.2.1-1079"
file="pool/main/intel-oneapi-compiler-shared-runtime-2024.2-2024.2.1-1079_amd64.deb"
sha256="0ede7ca5d7bd0266d072e5b948ade26b8dcb384aa4f202d0178540d6e94a67ad"
[[hpckit-2024]]
name="intel-oneapi-dal"
version="2024.6.0-416"
file="pool/main/intel-oneapi-dal-2024.6-2024.6.0-416_amd64.deb"
sha256="f8c30b452512332ab357913be00a9a96f2285a757f9e25ec1725af9479c94abe"
[[hpckit-2024]]
name="intel-oneapi-dal-common"
version="2024.6.0-416"
file="pool/main/intel-oneapi-dal-common-2024.6-2024.6.0-416_all.deb"
sha256="511f5e6c2efaec93252f5c83801af0445297353d5e31f566c59b57f6e1f87cfe"
[[hpckit-2024]]
name="intel-oneapi-dal-common-devel"
version="2024.6.0-416"
file="pool/main/intel-oneapi-dal-common-devel-2024.6-2024.6.0-416_all.deb"
sha256="572c8f27df4a6e1500040918c808edf5ad20efbb2efc26076038eae16816cb98"
[[hpckit-2024]]
name="intel-oneapi-dal-devel"
version="2024.6.0-416"
file="pool/main/intel-oneapi-dal-devel-2024.6-2024.6.0-416_amd64.deb"
sha256="aff98af4aa133589e400371aa7db91d119fb74b5d4736948ca1e63bcd7c265e5"
[[hpckit-2024]]
name="intel-oneapi-dev-utilities"
version="2024.2.1-11"
file="pool/main/intel-oneapi-dev-utilities-2024.2-2024.2.1-11_amd64.deb"
sha256="de5db5005c9458aea2b00531d5737b7b5018d76c36283aa715f44757a4608c08"
[[hpckit-2024]]
name="intel-oneapi-diagnostics-utility"
version="2024.2.1-13"
file="pool/main/intel-oneapi-diagnostics-utility-2024.2-2024.2.1-13_amd64.deb"
sha256="a876443134a971810f874e340ecfd10307766bb42f1f649e4cb13e714d13e8b9"
[[hpckit-2024]]
name="intel-oneapi-dnnl"
version="2024.2.1-74"
file="pool/main/intel-oneapi-dnnl-2024.2-2024.2.1-74_amd64.deb"
sha256="5f31be37bb55d7486a703dc305180f8055ab40ddfe1b114f68401e5568415d3b"
[[hpckit-2024]]
name="intel-oneapi-dnnl-devel"
version="2024.2.1-74"
file="pool/main/intel-oneapi-dnnl-devel-2024.2-2024.2.1-74_amd64.deb"
sha256="4f5d1ceb675713f9678d1256320f85199c6ae26ebfe0e51767511468699edbf8"
[[hpckit-2024]]
name="intel-oneapi-dpcpp-cpp"
version="2024.2.1-1079"
file="pool/main/intel-oneapi-dpcpp-cpp-2024.2-2024.2.1-1079_amd64.deb"
sha256="bcfef41a59ec2e5dc9092569a4d6de61dffed6ab4e34386a06ed427bcd4f0b67"
[[hpckit-2024]]
name="intel-oneapi-dpcpp-ct"
version="2024.2.1-62"
file="pool/main/intel-oneapi-dpcpp-ct-2024.2-2024.2.1-62_amd64.deb"
sha256="5d3d34a085ab2423d84e69955b22dc1358360ee1c4be4f2f9c4a88428fc9b244"
[[hpckit-2024]]
name="intel-oneapi-dpcpp-debugger"
version="2024.2.1-67"
file="pool/main/intel-oneapi-dpcpp-debugger-2024.2-2024.2.1-67_amd64.deb"
sha256="494e5f6f1beaa78367cde9b57a804c1b6d8d7fa1ab395805d4e5309e9b75114d"
[[hpckit-2024]]
name="intel-oneapi-ipp"
version="2021.12.1-14"
file="pool/main/intel-oneapi-ipp-2021.12-2021.12.1-14_amd64.deb"
sha256="b05ed95530e9a2a56d1c628ead3f6c6e1806b056863f87d6a20f1f619b98e833"
[[hpckit-2024]]
name="intel-oneapi-ipp-common"
version="2021.12.1-14"
file="pool/main/intel-oneapi-ipp-common-2021.12-2021.12.1-14_all.deb"
sha256="09b37bb4ed060958b31684e923e302cd43f08da119936a107548355b8974ad9e"
[[hpckit-2024]]
name="intel-oneapi-ipp-common-devel"
version="2021.12.1-14"
file="pool/main/intel-oneapi-ipp-common-devel-2021.12-2021.12.1-14_all.deb"
sha256="b49c425f10f05ca060d0e63fd2298ef13a8de79d31354857e0fee9afb5a8ffdd"
[[hpckit-2024]]
name="intel-oneapi-ipp-devel"
version="2021.12.1-14"
file="pool/main/intel-oneapi-ipp-devel-2021.12-2021.12.1-14_amd64.deb"
sha256="46193460bce2b8f17a0990e75acce9e1dd48fc995df5dc206b113a2a34cc2145"
[[hpckit-2024]]
name="intel-oneapi-ippcp"
version="2021.12.1-12"
file="pool/main/intel-oneapi-ippcp-2021.12-2021.12.1-12_amd64.deb"
sha256="8aa7ff2bc8cb35ca150657c44e150c341d23ebe2775a4fc417d1976f6d004772"
[[hpckit-2024]]
name="intel-oneapi-ippcp-common"
version="2021.12.1-12"
file="pool/main/intel-oneapi-ippcp-common-2021.12-2021.12.1-12_all.deb"
sha256="a47dcaa7d79c9f72de55e31f47e1af25073bb2677353cf97fbf0a06af8a34df9"
[[hpckit-2024]]
name="intel-oneapi-ippcp-common-devel"
version="2021.12.1-12"
file="pool/main/intel-oneapi-ippcp-common-devel-2021.12-2021.12.1-12_all.deb"
sha256="2a36e254f7b21e0bbbdedd904741c58aa9d8f92e992eed19ec112253dca30e69"
[[hpckit-2024]]
name="intel-oneapi-ippcp-devel"
version="2021.12.1-12"
file="pool/main/intel-oneapi-ippcp-devel-2021.12-2021.12.1-12_amd64.deb"
sha256="21a1ccffe1e2b632ed9c3295ecac99ba646978938d701b8f9bb5f936d8f85ac9"
[[hpckit-2024]]
name="intel-oneapi-libdpstd-devel"
version="2022.6.1-12"
file="pool/main/intel-oneapi-libdpstd-devel-2022.6-2022.6.1-12_amd64.deb"
sha256="c2dbe75d54ce0d66a85d17642496067e3bdca6c55828a3a2e3f8a7fcf017a331"
[[hpckit-2024]]
name="intel-oneapi-mkl-classic-include"
version="2024.2.2-15"
file="pool/main/intel-oneapi-mkl-classic-include-2024.2-2024.2.2-15_amd64.deb"
sha256="c561650b0a29f68a2a64b2b08013eacc7c4c474c78ecc9a97e377600008230e5"
[[hpckit-2024]]
name="intel-oneapi-mkl-classic-include-common"
version="2024.2.2-15"
file="pool/main/intel-oneapi-mkl-classic-include-common-2024.2-2024.2.2-15_all.deb"
sha256="d693457a4d5b1ac4fa9ef3b33fe840d13d585c7c53481ba1bae50574c8c35632"
[[hpckit-2024]]
name="intel-oneapi-mkl-cluster"
version="2024.2.2-15"
file="pool/main/intel-oneapi-mkl-cluster-2024.2-2024.2.2-15_amd64.deb"
sha256="987c2f088d1bcaf0c09f5a07f75d46d8badc0c5043e8f950c0cc21ce66f8449f"
[[hpckit-2024]]
name="intel-oneapi-mkl-cluster-devel"
version="2024.2.2-15"
file="pool/main/intel-oneapi-mkl-cluster-devel-2024.2-2024.2.2-15_amd64.deb"
sha256="237ea66178e0f1ca17ad84a602ae18095dfa68654bceff8f012c35add7e2f75a"
[[hpckit-2024]]
name="intel-oneapi-mkl-cluster-devel-common"
version="2024.2.2-15"
file="pool/main/intel-oneapi-mkl-cluster-devel-common-2024.2-2024.2.2-15_all.deb"
sha256="139579e6c551a4d40a90a32760ca81a7b0dd020a38d8d55edd1fd37a67c2425c"
[[hpckit-2024]]
name="intel-oneapi-mkl-core"
version="2024.2.2-15"
file="pool/main/intel-oneapi-mkl-core-2024.2-2024.2.2-15_amd64.deb"
sha256="38790ffe5e4bae6b58e987888d3f201b2da5378d724d0748ed08cfb44adc7293"
[[hpckit-2024]]
name="intel-oneapi-mkl-core-common"
version="2024.2.2-15"
file="pool/main/intel-oneapi-mkl-core-common-2024.2-2024.2.2-15_all.deb"
sha256="3782e65378ad8c5ab313d400ddb629475dd0f29a54deb4e7bd242c102f336d04"
[[hpckit-2024]]
name="intel-oneapi-mkl-core-devel"
version="2024.2.2-15"
file="pool/main/intel-oneapi-mkl-core-devel-2024.2-2024.2.2-15_amd64.deb"
sha256="c723a51b2dc413cc92e6916d607bb770cc3358e49e6f3e46593cabedaea5ebf8"
[[hpckit-2024]]
name="intel-oneapi-mkl-core-devel-common"
version="2024.2.2-15"
file="pool/main/intel-oneapi-mkl-core-devel-common-2024.2-2024.2.2-15_all.deb"
sha256="e57684820dbd38baf21fa38c78c32046aae73408dfcfbc2fbfcff09ef4b31a10"
[[hpckit-2024]]
name="intel-oneapi-mkl-sycl"
version="2024.2.2-15"
file="pool/main/intel-oneapi-mkl-sycl-2024.2-2024.2.2-15_amd64.deb"
sha256="96b9cf9ed87a298c17ddb7fa9be1f2f9bb75bcfb2d10e4a768e89d33641bcefc"
[[hpckit-2024]]
name="intel-oneapi-mkl-sycl-blas"
version="2024.2.2-15"
file="pool/main/intel-oneapi-mkl-sycl-blas-2024.2-2024.2.2-15_amd64.deb"
sha256="17bc5c87e632e695d34b99c4ad9a355c6151bf4da049b111326c2ab690c2203a"
[[hpckit-2024]]
name="intel-oneapi-mkl-sycl-data-fitting"
version="2024.2.2-15"
file="pool/main/intel-oneapi-mkl-sycl-data-fitting-2024.2-2024.2.2-15_amd64.deb"
sha256="26ed10e928b68a03e64db96b0d889f7654579bf687a2f2f4c199c3c18daacc66"
[[hpckit-2024]]
name="intel-oneapi-mkl-sycl-devel"
version="2024.2.2-15"
file="pool/main/intel-oneapi-mkl-sycl-devel-2024.2-2024.2.2-15_amd64.deb"
sha256="bc0052e3703da2e5531f8b2a826bcfcca968db66a9e9d3a3e59fa2fa7e54eb23"
[[hpckit-2024]]
name="intel-oneapi-mkl-sycl-devel-common"
version="2024.2.2-15"
file="pool/main/intel-oneapi-mkl-sycl-devel-common-2024.2-2024.2.2-15_all.deb"
sha256="0da183623695e91e79d7260770b6a7e32b935f0cdaaa5eb22e9684cd68dae0b0"
[[hpckit-2024]]
name="intel-oneapi-mkl-sycl-dft"
version="2024.2.2-15"
file="pool/main/intel-oneapi-mkl-sycl-dft-2024.2-2024.2.2-15_amd64.deb"
sha256="e3e6eaaf801b3df3ae99f38e700dbd858b877b7691c7e55aef9937d469a359ab"
[[hpckit-2024]]
name="intel-oneapi-mkl-sycl-include"
version="2024.2.2-15"
file="pool/main/intel-oneapi-mkl-sycl-include-2024.2-2024.2.2-15_amd64.deb"
sha256="7e86492fbcb1e708e034b2638b1032ea346387f60f9dd2253824784492a9561d"
[[hpckit-2024]]
name="intel-oneapi-mkl-sycl-lapack"
version="2024.2.2-15"
file="pool/main/intel-oneapi-mkl-sycl-lapack-2024.2-2024.2.2-15_amd64.deb"
sha256="bf1b104b52f8b22c1ae92e20e23901970e7736aabfc5ab41ba7b0cfd450aeeec"
[[hpckit-2024]]
name="intel-oneapi-mkl-sycl-rng"
version="2024.2.2-15"
file="pool/main/intel-oneapi-mkl-sycl-rng-2024.2-2024.2.2-15_amd64.deb"
sha256="8be435fc7b16634d8e7b12a09b80b399c594f53a8d0a12efa332fe422efaa608"
[[hpckit-2024]]
name="intel-oneapi-mkl-sycl-sparse"
version="2024.2.2-15"
file="pool/main/intel-oneapi-mkl-sycl-sparse-2024.2-2024.2.2-15_amd64.deb"
sha256="01fb7b7586d3d59c9c4beff3b871c406fb3a801b85712940175a003d6d3d69f8"
[[hpckit-2024]]
name="intel-oneapi-mkl-sycl-stats"
version="2024.2.2-15"
file="pool/main/intel-oneapi-mkl-sycl-stats-2024.2-2024.2.2-15_amd64.deb"
sha256="e741dc0dabbc0955fb1d1f0a4ad73e7326b880d859f2c1caf18cb2384761811f"
[[hpckit-2024]]
name="intel-oneapi-mkl-sycl-vm"
version="2024.2.2-15"
file="pool/main/intel-oneapi-mkl-sycl-vm-2024.2-2024.2.2-15_amd64.deb"
sha256="40f44c1e90781757d342edc242359d2567013b6d32aeff3dfca6f1e77777d995"
[[hpckit-2024]]
name="intel-oneapi-mpi"
version="2021.13.1-767"
file="pool/main/intel-oneapi-mpi-2021.13-2021.13.1-767_amd64.deb"
sha256="4a60fd1ea52b0c0cb052c0f9309c5e6e4aa8cac05e9da4b7cf3157dde02bd7bd"
[[hpckit-2024]]
name="intel-oneapi-mpi-devel"
version="2021.13.1-767"
file="pool/main/intel-oneapi-mpi-devel-2021.13-2021.13.1-767_amd64.deb"
sha256="47fb46dfaeee395547cf54714cd9d20d3e37cf5714676e28d0eb828c538b5805"
[[hpckit-2024]]
name="intel-oneapi-openmp"
version="2024.2.1-1079"
file="pool/main/intel-oneapi-openmp-2024.2-2024.2.1-1079_amd64.deb"
sha256="6b8722f3e6da876cc7044d00f7132d79f3dc83841b360cd57c907a09375846d2"
[[hpckit-2024]]
name="intel-oneapi-openmp-common"
version="2024.2.1-1079"
file="pool/main/intel-oneapi-openmp-common-2024.2-2024.2.1-1079_all.deb"
sha256="5a540a4f3b226a16ec6effddd39e3a97ef0ea83e9a6f01ca03f9bd0305f92739"
[[hpckit-2024]]
name="intel-oneapi-tbb"
version="2021.13.1-12"
file="pool/main/intel-oneapi-tbb-2021.13-2021.13.1-12_amd64.deb"
sha256="b6cc5bd80ce18f62ab38f5c54dcf75ef8e2957589eedf0913bcde029d0c7ca1a"
[[hpckit-2024]]
name="intel-oneapi-tbb-common"
version="2021.13.1-12"
file="pool/main/intel-oneapi-tbb-common-2021.13-2021.13.1-12_all.deb"
sha256="435be0d78831997ce465b19dbaa8411d8fca90ca4abc998f74200c67116420a0"
[[hpckit-2024]]
name="intel-oneapi-tbb-common-devel"
version="2021.13.1-12"
file="pool/main/intel-oneapi-tbb-common-devel-2021.13-2021.13.1-12_all.deb"
sha256="3dae6c0139b32651e46652799aa49fda8cbef59911934cb27ec7444260641bc0"
[[hpckit-2024]]
name="intel-oneapi-tbb-devel"
version="2021.13.1-12"
file="pool/main/intel-oneapi-tbb-devel-2021.13-2021.13.1-12_amd64.deb"
sha256="55961b5f4782b5ebf05d1a0f7da7fb80bcc2bf75d229c094507f2659b91931ee"
[[hpckit-2024]]
name="intel-oneapi-tcm"
version="1.1.1-11"
file="pool/main/intel-oneapi-tcm-1.1-1.1.1-11_amd64.deb"
sha256="53535a5d16d66755e7de3db9bd8e25b42d426ed9c90e4ac5bcb121bebf1b2ede"
[[hpckit-2024]]
name="intel-oneapi-tlt"
version="2024.2.0-705"
file="pool/main/intel-oneapi-tlt-2024.2-2024.2.0-705_amd64.deb"
sha256="b7eb4614de1e10fd691616365ec0b6e3b23712a9377999df1ebb2f2c0589f2aa"
[[hpckit-2025]]
name="intel-oneapi-ccl"
version="2021.17.2-5"
file="pool/main/intel-oneapi-ccl-2021.17-2021.17.2-5_amd64.deb"
sha256="744cedaf2cd244309f6d1b0bb3236939a8f6bed7406b0da57dd4dda9f3296b67"
[[hpckit-2025]]
name="intel-oneapi-ccl-devel"
version="2021.17.2-5"
file="pool/main/intel-oneapi-ccl-devel-2021.17-2021.17.2-5_amd64.deb"
sha256="cd2d2c494a3ab986f4c4fa63effe0aed9073028ba1572ff2ec877a1ff2af2053"
[[hpckit-2025]]
name="intel-oneapi-compiler-dpcpp-cpp-common"
version="2025.3.2-832"
file="pool/main/intel-oneapi-compiler-dpcpp-cpp-common-2025.3-2025.3.2-832_all.deb"
sha256="864f9aa601dda75c25594f390f98b3637b0c5a81d2f7dea6612e10de831e7183"
[[hpckit-2025]]
name="intel-oneapi-compiler-dpcpp-cpp-runtime"
version="2025.3.2-832"
file="pool/main/intel-oneapi-compiler-dpcpp-cpp-runtime-2025.3-2025.3.2-832_amd64.deb"
sha256="65b3aa66a191c5b3df08ba35a64fcb42e751897ca3cb9093b9ee42e53feda890"
[[hpckit-2025]]
name="intel-oneapi-compiler-fortran"
version="2025.3.2-832"
file="pool/main/intel-oneapi-compiler-fortran-2025.3-2025.3.2-832_amd64.deb"
sha256="3caf41f6c545712839b624d10f194c3d2ba614397b66dbdf7ff4d1fbd2b58ee8"
[[hpckit-2025]]
name="intel-oneapi-compiler-fortran-common"
version="2025.3.2-832"
file="pool/main/intel-oneapi-compiler-fortran-common-2025.3-2025.3.2-832_all.deb"
sha256="eb85bad42db5926e658e42d1e0e1cb89f386cf87e78fe343b693afaa91cb6b06"
[[hpckit-2025]]
name="intel-oneapi-compiler-fortran-runtime"
version="2025.3.2-832"
file="pool/main/intel-oneapi-compiler-fortran-runtime-2025.3-2025.3.2-832_amd64.deb"
sha256="1acf0feba0e85fe963be8ff358ebcea850c0be4a874af98f31ef3b9a85254522"
[[hpckit-2025]]
name="intel-oneapi-compiler-shared"
version="2025.3.2-832"
file="pool/main/intel-oneapi-compiler-shared-2025.3-2025.3.2-832_amd64.deb"
sha256="85f0fd9843ba5cd8d8854e101c289c1f61e0f73465afccca938cc9ce936e7a2d"
[[hpckit-2025]]
name="intel-oneapi-compiler-shared-common"
version="2025.3.2-832"
file="pool/main/intel-oneapi-compiler-shared-common-2025.3-2025.3.2-832_all.deb"
sha256="d07cac0683a1f9a667bae175b2649b62d9a340d4871f8d22ea3948730c10d5a5"
[[hpckit-2025]]
name="intel-oneapi-compiler-shared-runtime"
version="2025.3.2-832"
file="pool/main/intel-oneapi-compiler-shared-runtime-2025.3-2025.3.2-832_amd64.deb"
sha256="1363f7350e384de53230eaad5bae6b8cfc564048b012289eb1f4f9b11d9a0dec"
[[hpckit-2025]]
name="intel-oneapi-dal"
version="2025.10.1-19"
file="pool/main/intel-oneapi-dal-2025.10-2025.10.1-19_amd64.deb"
sha256="943339a9a8438132014280f304beac30ee6ff895625fa4fbd4254124bed1f7b8"
[[hpckit-2025]]
name="intel-oneapi-dal-devel"
version="2025.10.1-19"
file="pool/main/intel-oneapi-dal-devel-2025.10-2025.10.1-19_amd64.deb"
sha256="631b47f87fea0da5e975cd61ebf006a3ae77170dc741dfd2a09df179257326eb"
[[hpckit-2025]]
name="intel-oneapi-dev-utilities"
version="2025.3.1-15"
file="pool/main/intel-oneapi-dev-utilities-2025.3-2025.3.1-15_amd64.deb"
sha256="61ab278788edbc2ad047e8f6f63f1f73f5508b4c96cc2b05e449289061a76c7d"
[[hpckit-2025]]
name="intel-oneapi-dnnl"
version="2025.3.0-409"
file="pool/main/intel-oneapi-dnnl-2025.3-2025.3.0-409_amd64.deb"
sha256="4468042a137707721be596861b4058dee5190cf3d7b3aa2c12d643228ac6360c"
[[hpckit-2025]]
name="intel-oneapi-dnnl-devel"
version="2025.3.0-409"
file="pool/main/intel-oneapi-dnnl-devel-2025.3-2025.3.0-409_amd64.deb"
sha256="256cc1f2347c882a0535be552e2048f11544e1c4fa8c024ae2dcd54f2ce81e87"
[[hpckit-2025]]
name="intel-oneapi-dpcpp-cpp"
version="2025.3.2-832"
file="pool/main/intel-oneapi-dpcpp-cpp-2025.3-2025.3.2-832_amd64.deb"
sha256="b36e18609d627a10fa4ca3b20e3bb34270a149175872936e6f7499bd8b873d13"
[[hpckit-2025]]
name="intel-oneapi-dpcpp-ct"
version="2025.3.1-18"
file="pool/main/intel-oneapi-dpcpp-ct-2025.3-2025.3.1-18_amd64.deb"
sha256="4ee8595d886639d2baef071b7d39817b1bf94db65ced729869823331ccef3e51"
[[hpckit-2025]]
name="intel-oneapi-dpcpp-debugger"
version="2025.3.1-7"
file="pool/main/intel-oneapi-dpcpp-debugger-2025.3-2025.3.1-7_amd64.deb"
sha256="e18bef111d389603228b399e280f898a72be514d4cb4ca5c9e30492640fb2db2"
[[hpckit-2025]]
name="intel-oneapi-hpc-toolkit-env"
version="2025.3.1-52"
file="pool/main/intel-oneapi-hpc-toolkit-env-2025.3-2025.3.1-52_all.deb"
sha256="3ec40bd7a9e49b5abfb0fcdd94a6015baa71b8335c9a9c9b4e2ec2a35aac5e60"
[[hpckit-2025]]
name="intel-oneapi-ipp"
version="2022.3.1-7"
file="pool/main/intel-oneapi-ipp-2022.3-2022.3.1-7_amd64.deb"
sha256="89c0d1ce9aac145a6e949678c17296c57ee233ff10f4443019c32fe5db5b7569"
[[hpckit-2025]]
name="intel-oneapi-ipp-devel"
version="2022.3.1-7"
file="pool/main/intel-oneapi-ipp-devel-2022.3-2022.3.1-7_amd64.deb"
sha256="ebdf865d359c030ce177fbbd916e6813ed7024bce37f680c33eff64c29d90708"
[[hpckit-2025]]
name="intel-oneapi-ippcp"
version="2025.3.0-274"
file="pool/main/intel-oneapi-ippcp-2025.3-2025.3.0-274_amd64.deb"
sha256="de95e2a06164443725bb0b23d6489c1b5bb65fdc34619d7eff1d01241d098c4c"
[[hpckit-2025]]
name="intel-oneapi-ippcp-devel"
version="2025.3.0-274"
file="pool/main/intel-oneapi-ippcp-devel-2025.3-2025.3.0-274_amd64.deb"
sha256="1b56080646f3e508550f4cef6f7dc05f90be96c0bc3c08485176d9619aa635b7"
[[hpckit-2025]]
name="intel-oneapi-ishmem"
version="1.5.0-222"
file="pool/main/intel-oneapi-ishmem-1.5-1.5.0-222_amd64.deb"
sha256="c8b97c0c7e6c8aacd532ed68fd273b7cecfa869c469a82ba1f2518619a6f4bda"
[[hpckit-2025]]
name="intel-oneapi-ishmem-devel"
version="1.5.0-222"
file="pool/main/intel-oneapi-ishmem-devel-1.5-1.5.0-222_amd64.deb"
sha256="7d21e663136bd2608757c4c2607a2f9589369047e89d58e6fd03801b7931ecbf"
[[hpckit-2025]]
name="intel-oneapi-libdpstd-devel"
version="2022.10.0-275"
file="pool/main/intel-oneapi-libdpstd-devel-2022.10-2022.10.0-275_amd64.deb"
sha256="b7172453b5f31fabc864d5b8793979ffd3c472b6af1dd01a434dc9ffb241474d"
[[hpckit-2025]]
name="intel-oneapi-mkl-classic-include"
version="2025.3.1-8"
file="pool/main/intel-oneapi-mkl-classic-include-2025.3-2025.3.1-8_amd64.deb"
sha256="4ba39c1de76e318723c35c3043f2ad6279eb13a8658955eb4c36c595cf672f9c"
[[hpckit-2025]]
name="intel-oneapi-mkl-cluster"
version="2025.3.1-8"
file="pool/main/intel-oneapi-mkl-cluster-2025.3-2025.3.1-8_amd64.deb"
sha256="2149ca2adb7cef318ff50ea1fd6135cf873c2c4a1f3c0e396051645d992c0e7d"
[[hpckit-2025]]
name="intel-oneapi-mkl-cluster-devel"
version="2025.3.1-8"
file="pool/main/intel-oneapi-mkl-cluster-devel-2025.3-2025.3.1-8_amd64.deb"
sha256="3eb204990eb328b218bbd0a178dc40e4ac3f3a4fd7578caaf00caf7f0d732e70"
[[hpckit-2025]]
name="intel-oneapi-mkl-core"
version="2025.3.1-8"
file="pool/main/intel-oneapi-mkl-core-2025.3-2025.3.1-8_amd64.deb"
sha256="1648440662a5146d2064456c6e7ba23b00dbe63cb4a26e3563eb43b4912ace2f"
[[hpckit-2025]]
name="intel-oneapi-mkl-core-devel"
version="2025.3.1-8"
file="pool/main/intel-oneapi-mkl-core-devel-2025.3-2025.3.1-8_amd64.deb"
sha256="d2efe5d549803e80c3a9b3e5e092860f0acdd2f37da0e1c12de17d2e730035e6"
[[hpckit-2025]]
name="intel-oneapi-mkl-sycl"
version="2025.3.1-8"
file="pool/main/intel-oneapi-mkl-sycl-2025.3-2025.3.1-8_amd64.deb"
sha256="d3db31980517d70ba5febee14e089ac75844a9420ffde2baa43dc6f3e7269df8"
[[hpckit-2025]]
name="intel-oneapi-mkl-sycl-blas"
version="2025.3.1-8"
file="pool/main/intel-oneapi-mkl-sycl-blas-2025.3-2025.3.1-8_amd64.deb"
sha256="deb413a909822c14a6ee8eb270d5edb3351dc1c2656175ef40a7f99e025e6aab"
[[hpckit-2025]]
name="intel-oneapi-mkl-sycl-data-fitting"
version="2025.3.1-8"
file="pool/main/intel-oneapi-mkl-sycl-data-fitting-2025.3-2025.3.1-8_amd64.deb"
sha256="ca9b47611b8e7b8503b087ca7de4ff6417325c10685d6d0254df1eb3a668aca8"
[[hpckit-2025]]
name="intel-oneapi-mkl-sycl-devel"
version="2025.3.1-8"
file="pool/main/intel-oneapi-mkl-sycl-devel-2025.3-2025.3.1-8_amd64.deb"
sha256="73c70ab19f76d2c4cb64686800b2682d01a79f3a686454ff6d0b5198ce5f4e0d"
[[hpckit-2025]]
name="intel-oneapi-mkl-sycl-dft"
version="2025.3.1-8"
file="pool/main/intel-oneapi-mkl-sycl-dft-2025.3-2025.3.1-8_amd64.deb"
sha256="e825872685f8b93130e32ca1b72d31cad808042f97f956b5e8e86065f94d29e8"
[[hpckit-2025]]
name="intel-oneapi-mkl-sycl-include"
version="2025.3.1-8"
file="pool/main/intel-oneapi-mkl-sycl-include-2025.3-2025.3.1-8_amd64.deb"
sha256="5fa96fb892c4b818fb176e556f3a93f99235affe0b47b7766717b9d6dcbd44ae"
[[hpckit-2025]]
name="intel-oneapi-mkl-sycl-lapack"
version="2025.3.1-8"
file="pool/main/intel-oneapi-mkl-sycl-lapack-2025.3-2025.3.1-8_amd64.deb"
sha256="5296ef4a969688e3af40ebd851162523e3b5d4f63fea1d2f48a8dfd6a675a0a5"
[[hpckit-2025]]
name="intel-oneapi-mkl-sycl-rng"
version="2025.3.1-8"
file="pool/main/intel-oneapi-mkl-sycl-rng-2025.3-2025.3.1-8_amd64.deb"
sha256="8559a0e7cdcd77f8f4e97c490b0d5e055605b21815e93d88383c53772f60c507"
[[hpckit-2025]]
name="intel-oneapi-mkl-sycl-sparse"
version="2025.3.1-8"
file="pool/main/intel-oneapi-mkl-sycl-sparse-2025.3-2025.3.1-8_amd64.deb"
sha256="1261ee1b3ce52dfcc642ba541953af144308b2242e57ab7a32550da51882afaf"
[[hpckit-2025]]
name="intel-oneapi-mkl-sycl-stats"
version="2025.3.1-8"
file="pool/main/intel-oneapi-mkl-sycl-stats-2025.3-2025.3.1-8_amd64.deb"
sha256="426fd7795f4ef278930e2ea8a0021b4ff3460ab1c826206e01a17458cca9a9ba"
[[hpckit-2025]]
name="intel-oneapi-mkl-sycl-vm"
version="2025.3.1-8"
file="pool/main/intel-oneapi-mkl-sycl-vm-2025.3-2025.3.1-8_amd64.deb"
sha256="47f9a6fa7fcc9bcc98de93cfea2c92cfda45f9e86ddd8129176f527e53a7f7e9"
[[hpckit-2025]]
name="intel-oneapi-mpi"
version="2021.17.2-91"
file="pool/main/intel-oneapi-mpi-2021.17-2021.17.2-91_amd64.deb"
sha256="c6a0b33e6f60471a7461ba3246e7c90ebe06d550664a0af2134bd07ffd8f6c8d"
[[hpckit-2025]]
name="intel-oneapi-mpi-devel"
version="2021.17.2-91"
file="pool/main/intel-oneapi-mpi-devel-2021.17-2021.17.2-91_amd64.deb"
sha256="519088a22fad2795fc56b216298ba4b467996107f9d359b0f56f1372b02508c0"
[[hpckit-2025]]
name="intel-oneapi-openmp"
version="2025.3.2-832"
file="pool/main/intel-oneapi-openmp-2025.3-2025.3.2-832_amd64.deb"
sha256="c2dd60eb82b8b63a1ae44e98bd983b1ba1c15e1c87cdf37901723120d6164a3f"
[[hpckit-2025]]
name="intel-oneapi-openmp-common"
version="2025.3.2-832"
file="pool/main/intel-oneapi-openmp-common-2025.3-2025.3.2-832_all.deb"
sha256="10af13bb74bbe14ed986d15114fc00352c95c09f32da77c58f50302ef3d0215a"
[[hpckit-2025]]
name="intel-oneapi-tbb"
version="2022.3.1-400"
file="pool/main/intel-oneapi-tbb-2022.3-2022.3.1-400_amd64.deb"
sha256="01ad7551130d6f30d34ed19084650ffc778d755ef4ede682345bf907bd510641"
[[hpckit-2025]]
name="intel-oneapi-tbb-devel"
version="2022.3.1-400"
file="pool/main/intel-oneapi-tbb-devel-2022.3-2022.3.1-400_amd64.deb"
sha256="eb085a1930230c9eda5e6ed32ebc167e9cad7c053f9cd5623201df08a5362947"
[[hpckit-2025]]
name="intel-oneapi-tcm"
version="1.4.1-445"
file="pool/main/intel-oneapi-tcm-1.4-1.4.1-445_amd64.deb"
sha256="8e2fd21ec71f9c9d41df2a23d23ea8aad7d2928ae0f66ed3de4b54dbd7b5ce78"
[[hpckit-2025]]
name="intel-oneapi-tlt"
version="2025.3.0-157"
file="pool/main/intel-oneapi-tlt-2025.3-2025.3.0-157_amd64.deb"
sha256="32fdc685d8dd8c54a646491dae19262e30533ba80c994cc33579e83259f7384a"
[[hpckit-2025]]
name="intel-oneapi-umf"
version="1.0.3-17"
file="pool/main/intel-oneapi-umf-1.0-1.0.3-17_amd64.deb"
sha256="0b93cf3f42df26c31713a94172b16903fabb75b03494da47b2b99d2f37ad2298"

View File

@@ -4,12 +4,10 @@
lib,
symlinkJoin,
autoPatchelfHook,
wrapCCWith,
wrapIntel,
overrideCC,
gcc,
hwloc,
libelf,
libgcc,
libffi_3_3,
libpsm2,
libuuid,
@@ -39,79 +37,18 @@ lib.makeOverridable (
removeAttrs
;
__components = removeAttrs components [ "extraPackages" ];
inherit (components) llvmMajorVersion;
__components = removeAttrs components [
"extraPackages"
"llvmMajorVersion"
];
_components = __components;
# _components = lib.traceSeqN 2 {
# inherit unpatched __components;
# deps = builtins.map (x: "${x.pname}-${x.version}") unpatched.deps;
# } __components;
wrapIntel =
cc:
let
targetConfig = stdenv.targetPlatform.config;
in
(wrapCCWith {
inherit cc;
nixSupport = {
cc-ldflags = [
"-L${gcc.cc}/lib/gcc/${targetConfig}/${gcc.version}"
"-L${gcc.cc.lib}/lib"
"-L${libgcc.out}/lib"
"-L${cc}/lib"
];
cc-cflags = [
"--gcc-toolchain=${gcc.cc}"
"-isystem \"${cc.original}/lib/clang/*/include\""
"-isystem ${cc}/include"
"-isystem ${cc}/include/intel64"
"-isystem ${gcc.cc}/lib/gcc/${targetConfig}/${gcc.version}/include"
];
libcxx-cxxflags = [
# "--gcc-toolchain=${gcc.cc}"
"-isystem ${gcc.cc}/include/c++/${gcc.version}"
"-isystem ${gcc.cc}/include/c++/${gcc.version}/${targetConfig}"
];
};
extraBuildCommands = ''
# FIXME: We should find a better way to modify the PATH instead of using
# this ugly hack. See https://jungle.bsc.es/git/rarias/bscpkgs/issues/9
echo 'path_backup="${gcc.cc}/bin:$path_backup"' >>$out/nix-support/cc-wrapper-hook
# Disable hardening by default
echo "" > $out/nix-support/add-hardening.sh
wrap icx $wrapper $ccPath/icx
wrap icpx $wrapper $ccPath/icpx
wrap ifx $wrapper $ccPath/ifx
ln -s $out/bin/icpx $out/bin/c++
ln -s $out/bin/icx $out/bin/cc
ln -s $ccPath/sycl-ls $out/bin/sycl-ls
ln -s $ccPath/sycl-trace $out/bin/sycl-trace
sed -i 's/.*isCxx=0/isCxx=1/' $out/bin/icpx
# Use this to detect when a compiler subprocess is called
# from icpx (--fsycl-host-compiler)
echo 'export NIX_CC_WRAPPER_INTEL=1' >>$out/nix-support/cc-wrapper-hook
# oneMath looks for sycl libraries in bin/../lib
ln -s ${cc}/lib $out/lib
ln -s ${cc}/include $out/include
'';
}).overrideAttrs
(old: {
installPhase = old.installPhase + ''
export named_cc="icx"
export named_cxx="icpx"
export named_fc="ifx"
'';
});
in
stdenvNoCC.mkDerivation (finalAttrs: {
pname = lib.removeSuffix "-extracted" unpatched.pname;
@@ -171,7 +108,7 @@ lib.makeOverridable (
pname = "intel-${folder}";
inherit version;
paths = [ original ] ++ lib.optionals (folder == "compiler") [ etc-vendors ];
passthru = { inherit original; };
passthru = { inherit original llvmMajorVersion; };
}
) _components;
in
@@ -194,7 +131,25 @@ lib.makeOverridable (
stdenv = overrideCC stdenv finalAttrs.finalPackage.cc;
cc = wrapIntel finalAttrs.finalPackage.pkgs.compiler;
cc = wrapIntel {
cc = finalAttrs.finalPackage.pkgs.compiler;
extraBuildCommands = ''
wrap icx $wrapper $ccPath/icx
wrap icpx $wrapper $ccPath/icpx
wrap ifx $wrapper $ccPath/ifx
ln -s $out/bin/icpx $out/bin/c++
ln -s $out/bin/icx $out/bin/cc
sed -i 's/.*isCxx=0/isCxx=1/' $out/bin/icpx
'';
extraInstallCommands = ''
export named_cc="icx"
export named_cxx="icpx"
export named_fc="ifx"
'';
};
};
})

View File

@@ -0,0 +1,226 @@
{-# LANGUAGE OverloadedStrings #-}
module Main (main) where
import Control.Arrow (second, (&&&))
import qualified Data.Map.Lazy as M
import qualified Data.Map.Strict as MS
import qualified Data.Text as T
import qualified Data.Text.IO as TIO
import Data.Char (isAlpha, isNumber)
import Data.List (find, nub, sortOn)
import Data.Map.Lazy (Map)
import Data.Maybe (catMaybes, fromMaybe, maybeToList)
import Data.Ord (Down (Down))
import Data.Text.Read (decimal)
import Debug.Trace (trace, traceShow)
import System.Environment (getArgs)
import System.IO (stderr)
import Text.Printf (PrintfType, hPrintf, printf)
type Str = T.Text
type Data = Map Str [Package]
type Version = [Int]
data Package = Package
{ name :: Str
, version :: Version
, filename, sha256 :: Str
, size :: Int
, depends :: [Dependency]
}
deriving (Show, Eq)
data Dependency = Dependency
{ pkgName :: Str
, pkgVersion :: Maybe (Ordering', Version)
}
deriving (Show, Eq)
-- Standard Ordering cannot represent GE or LE, we have to cook our own
data Ordering' = GT' | LT' | EQ' | GE' | LE' deriving (Show, Eq)
-- PARSING
parse :: Str -> Data
parse =
M.map (sortOn (Down . version))
. M.fromListWith (++)
. fmap (second pure)
. catMaybes
. fmap
( (parsePackage . M.fromList)
. fmap (second (T.strip . T.drop 1) . T.breakOn ":")
. T.lines
. T.strip
)
. T.splitOn "\n\n"
parseDependency :: Str -> Dependency
parseDependency t = case (T.words t) of
(a : b : c : []) -> mkPkg a b c
(a : c : []) -> let (a', b) = T.breakOn "(" a in mkPkg a' b c -- workaround for packages that don't have a space between the name and the version parenthesis
(a : []) -> Dependency a Nothing
(b) -> traceShow b $ undefined
where
mkPkg a b c = Dependency a (Just ((toOrd' $ T.drop 1 b), (parseVersion $ T.dropEnd 1 c)))
toOrd' :: Str -> Ordering'
toOrd' ">>" = GT'
toOrd' "<<" = LT'
toOrd' "=" = EQ'
toOrd' ">=" = GE'
toOrd' "<=" = LE'
toOrd' t = traceShow t $ undefined
dropEmpty :: [Str] -> [Str]
dropEmpty = Prelude.filter (not . T.null)
parseVersion :: Str -> Version
parseVersion = fmap (unwrapEither . decimal) . dropEmpty . T.split (not . isNumber)
where
unwrapEither (Right (a, "")) = a
-- should never fail, since we filtered non numbers for the split and removed empty strings
unwrapEither (Left err) = trace err $ undefined
unwrapEither (Right (_, b)) = trace (T.unpack b) $ undefined
parsePackage :: Map Str Str -> Maybe (Str, Package)
parsePackage d =
(,)
<$> package
<*> ( Package
<$> package
<*> (parseVersion <$> d M.!? "Version")
<*> (d M.!? "Filename")
<*> (d M.!? "SHA256")
<*> (read . T.unpack <$> (d M.!? "Installed-Size"))
<*> (pure $ fmap parseDependency $ dropEmpty $ (>>= T.splitOn ",") $ maybeToList $ d M.!? "Depends")
)
where
package = d M.!? "Package"
-- DEPENDENCY SOLVER
-- Compare versions in debian control file syntax
-- See: https://www.debian.org/doc/debian-policy/ch-relationships.html#syntax-of-relationship-fields
--
-- NOTE: this is not a proper version comparison
--
-- A proper version solver, should aggregate dependencies with the same name
-- and compute the constraint (e.g. a (>= 2) a (<< 5) -> 2 <= a << 5)
--
-- But in the intel repo, there are no such "duplicated" dependencies to specify
-- upper limits, which leads to issues when intel-hpckit-2021 depends on things
-- like intel-basekit >= 2021.1.0-2403 and we end up installing the newest
-- basekit instead of the one from 2021.1
--
-- To mitigate this, >= is set to take the latest version with matching major
-- and minor (only revision and patch are allowed to change)
compareVersions :: Maybe (Ordering', Version) -> Version -> Bool
compareVersions Nothing _ = True
compareVersions (Just (kind, want)) got
| null want = True
| kind == GE' = and (Prelude.take 2 $ zipWith (==) got want) && result
| otherwise = result
where
result = matches (compare got want) kind
matches :: Ordering -> Ordering' -> Bool
matches EQ b = b `elem` [EQ', GE', LE']
matches LT b = b `elem` [LT', LE']
matches GT b = b `elem` [GT', GE']
findMatching :: Data -> Dependency -> Maybe Package
findMatching pkgList (Dependency name ver) = pkgList M.!? name >>= find (compareVersions (ver) . version)
getHpckit :: Data -> Version -> Maybe Package
getHpckit d v = findMatching d (Dependency "intel-hpckit" (Just (GE', v)))
-- TODO: replace maybeToList with proper error handling. Right now, if a
-- dependency is not found it is silently skipped.
solveDeps :: Data -> Package -> [Package]
solveDeps d p = removeDupes $ go ([], [p])
where
go (done, todo)
| null todo = done'
| otherwise = go (done', todo')
where
done' = filter (not . isBlacklisted) $ nub $ done ++ (filter isMetaPackage todo)
todo' = concatMap depends todo >>= maybeToList . findMatching d
isMetaPackage = ((/= 0) . size) -- Packages with size 0
removeDupes :: [Package] -> [Package]
removeDupes l = fmap snd . MS.toList $ MS.fromListWith (getLatest) $ (cleanName . name &&& id) <$> l
getLatest a b
| version a > version b = a
| otherwise = b
-- Remove trailing version information from package name
cleanName :: T.Text -> T.Text
cleanName = T.dropWhileEnd (not . isAlpha)
isBlacklisted :: Package -> Bool
isBlacklisted = (`elem` blacklist) . cleanName . name
where
blacklist =
[ "intel-basekit-env"
, "intel-basekit-getting-started"
, "intel-hpckit-env"
, "intel-hpckit-getting-started"
, "intel-oneapi-advisor"
, "intel-oneapi-common-licensing"
, "intel-oneapi-common-oneapi-vars"
, "intel-oneapi-common-vars"
, "intel-oneapi-compiler-cpp-eclipse-cfg"
, "intel-oneapi-compiler-dpcpp-eclipse-cfg"
, "intel-oneapi-condaindex"
, "intel-oneapi-dev-utilities-eclipse-cfg"
, "intel-oneapi-dpcpp-ct-eclipse-cfg"
, "intel-oneapi-eclipse-ide"
, "intel-oneapi-hpc-toolkit-getting-started"
, "intel-oneapi-icc-eclipse-plugin-cpp"
, "intel-oneapi-inspector"
, "intel-oneapi-vtune"
, "intel-oneapi-vtune-eclipse-plugin-vtune"
]
-- OUTPUT
showVer, showVerDash :: [Int] -> T.Text
showVer = T.dropEnd 1 . T.concat . zipWith (flip (<>)) ([".", ".", "-"] ++ repeat ".") . fmap (T.pack . show)
showVerDash = T.intercalate "-" . fmap (T.pack . show)
displayTOML :: (PrintfType t) => Version -> Package -> t
displayTOML kit (Package n v f h _ _) = printf "[[hpckit-%s]]\nname=\"%s\"\nversion=\"%s\"\nfile=\"%s\"\nsha256=\"%s\"\n\n" (showVerDash kit) (cleanName n) (showVer v) f h
-- Reads debian Package List from apt repo from stdin and outputs TOML with
-- hpckit versions passed as arguments
main :: IO ()
main = do
args <- fmap T.pack <$> getArgs
let v = case args of
[] -> ["2025"]
_ -> args
d <- parse <$> TIO.getContents
sizes <- mapM (processHpcKit d . parseVersion) v
hPrintf stderr "Total Installed-Size: %.3fMb\n" ((fromIntegral (sum sizes)) / 1e6 :: Double)
where
-- TODO: replace fromMaybe+trace with either error handling?
processHpcKit :: Data -> Version -> IO Int
processHpcKit d v = do
let kit = getHpckit d v
deps = fromMaybe (trace (T.unpack $ "Could not find deps for kit: " <> showVer v <> " (SKIPPED)") $ []) $ solveDeps d <$> kit
totalSize = sum $ size <$> deps
mapM_ (displayTOML v) deps
return totalSize

View File

@@ -7,5 +7,4 @@ trap 'rm -f "$out_64" "$out_all"' EXIT INT HUP
curl https://apt.repos.intel.com/oneapi/dists/all/main/binary-amd64/Packages -o "$out_64"
curl https://apt.repos.intel.com/oneapi/dists/all/main/binary-all/Packages -o "$out_all"
# NOTE: we use `jq -r tostring` to minify the json (3.2Mb -> 2.3Mb)
cat "$out_64" "$out_all" | ./toJson.awk | ./process.jq | jq -r tostring >packages.json
cat "$out_64" "$out_all" | runghc ./update.hs 2023.1.0 2024 2025 >packages.toml

View File

@@ -0,0 +1,246 @@
{
stdenv,
lib,
ninja,
autoAddDriverRunpath,
wrapCC,
cmake,
emhash,
fetchFromGitHub,
khronos-ocl-icd-loader,
libbacktrace,
opencl-headers,
parallel-hashmap,
perl,
pkg-config,
python3,
spirv-headers,
spirv-tools,
symlinkJoin,
zlib,
config,
cudaPackages ? null,
enableCuda ? config.cudaSupport,
}:
let
llvmMajorVersion = "21";
version = "6.2.1";
src = fetchFromGitHub {
owner = "intel";
repo = "llvm";
tag = "v${version}";
sha256 = "sha256-j8+DmGKO0qDF5JjH+DlkLKs1kBz6dS7ukwySd/Crqv0=";
};
pinned = {
inherit parallel-hashmap;
vc-intrinsics.src = fetchFromGitHub {
owner = "intel";
repo = "vc-intrinsics";
rev = "4e51b2467104a257c22788e343dafbdde72e28bb";
sha256 = "sha256-AHXeKbih4bzmcuu+tx2TeS7Ixmk54uS1vKFVxI6ZP8g=";
};
unified-memory-framework.src = fetchFromGitHub {
owner = "oneapi-src";
repo = "unified-memory-framework";
tag = "v0.11.0";
sha256 = "sha256-k8QdP2u1QOoeCZ6ps4sM8+1iZq/H3q0lqCfVk8mz9KI=";
};
ocl-headers = opencl-headers.overrideAttrs {
version = "2024.10.24";
src = fetchFromGitHub {
owner = "KhronosGroup";
repo = "OpenCL-Headers";
tag = "v2024.10.24";
sha256 = "sha256-KDlruE0IG8d+lAChxYyc6dg5XOvqCMrMyO69sdAzejA=";
};
};
ocl-icd = khronos-ocl-icd-loader;
spirv-headers = spirv-headers.overrideAttrs {
version = "1.4.309.0";
src = fetchFromGitHub {
owner = "KhronosGroup";
repo = "SPIRV-Headers";
tag = "vulkan-sdk-1.4.309.0";
sha256 = "sha256-Q1i6i5XimULuGufP6mimwDW674anAETUiIEvDQwvg5Y=";
};
};
};
fetchcontent_cmakeFlags = lib.mapAttrsToList (
name: value: (lib.cmakeFeature "FETCHCONTENT_SOURCE_DIR_${lib.toUpper name}" (toString value.src))
) pinned;
# Hack to fix #include <emhash/...>
emhash' = symlinkJoin {
name = "emhash";
paths = [ emhash ];
postBuild = ''
pushd $out/include
ln -s . emhash
popd
'';
};
in
stdenv.mkDerivation {
pname = "intel-llvm";
inherit src version;
enableParallelBuilding = true;
strictDeps = true;
nativeBuildInputs = [
perl
cmake
ninja
pkg-config
python3
spirv-tools
]
++ lib.optionals enableCuda [
autoAddDriverRunpath
cudaPackages.cuda_nvcc
];
buildInputs = [
emhash'
libbacktrace
zlib
pinned.ocl-icd
pinned.ocl-headers
pinned.spirv-headers
]
++ lib.optionals enableCuda [
cudaPackages.cudatoolkit
];
patches = [ ./fix-ur.patch ]; # Has been fixed in next release
preBuild = ''
chmod -R u+w /build/source
'';
cmakeDir = "../llvm";
cmakeFlags =
let
cmakeList = name: l: lib.cmakeOptionType "list" name (builtins.concatStringsSep ";" l);
LLVM_EXTERNAL_PROJECTS = [
"sycl"
"llvm-spirv"
"opencl"
"xpti"
"xptifw"
"compiler-rt"
"sycl-jit"
"libdevice"
]
++ lib.optionals enableCuda [
"libclc"
];
in
[
(lib.cmakeBool "LLVM_ENABLE_ASSERTIONS" true)
(cmakeList "LLVM_TARGETS_TO_BUILD" (
[
"host"
"SPIRV"
]
++ lib.optionals enableCuda [ "NVPTX" ]
))
(cmakeList "LLVM_EXTERNAL_PROJECTS" LLVM_EXTERNAL_PROJECTS)
(cmakeList "LLVM_ENABLE_PROJECTS" ([ "clang" ] ++ LLVM_EXTERNAL_PROJECTS))
(lib.cmakeBool "UR_USE_EXTERNAL_UMF" false)
(lib.cmakeOptionType "path" "UR_OPENCL_INCLUDE_DIR" (toString pinned.ocl-headers))
(lib.cmakeOptionType "path" "UR_OPENCL_ICD_LOADER_LIBRARY" (toString pinned.ocl-icd))
(lib.cmakeFeature "UR_OPENCL_ICD_LOADER_LIBRARY" (toString pinned.ocl-icd))
(lib.cmakeBool "BUILD_SHARED_LIBS" false)
(lib.cmakeBool "LLVM_BUILD_TOOLS" true)
(lib.cmakeBool "LLVM_ENABLE_ZSTD" true)
(lib.cmakeBool "LLVM_USE_STATIC_ZSTD" true)
(lib.cmakeBool "LLVM_ENABLE_DOXYGEN" false)
(lib.cmakeBool "LLVM_ENABLE_LLD" false)
(lib.cmakeBool "LLVM_ENABLE_SPHINX" false)
(lib.cmakeBool "LLVM_SPIRV_ENABLE_LIBSPIRV_DIS" false)
(lib.cmakeBool "SYCL_ENABLE_WERROR" false)
(lib.cmakeBool "SYCL_INCLUDE_TESTS" false)
(lib.cmakeBool "SYCL_ENABLE_EXTENSION_JIT" true)
(lib.cmakeBool "SYCL_ENABLE_MAJOR_RELEASE_PREVIEW_LIB" false)
(lib.cmakeBool "SYCL_ENABLE_XPTI_TRACING" true)
(lib.cmakeBool "XPTI_ENABLE_WERROR" false)
(cmakeList "SYCL_ENABLE_BACKENDS" ([ "opencl" ] ++ lib.optionals enableCuda [ "cuda" ]))
]
++ fetchcontent_cmakeFlags
++ lib.optionals enableCuda [
(lib.cmakeOptionType "list" "LIBCLC_TARGETS_TO_BUILD" "nvptx64--nvidiacl")
(lib.cmakeBool "LIBCLC_GENERATE_REMANGLED_VARIANTS" true)
(lib.cmakeBool "LIBCLC_NATIVECPU_HOST_TARGET" false)
];
hardeningDisable = [ "zerocallusedregs" ];
postPatch =
let
# See the postPatch phase for details on why this is used
ccWrapperStub = wrapCC (
stdenv.mkDerivation {
name = "ccWrapperStub";
dontUnpack = true;
installPhase = ''
mkdir -p $out/bin
cat > $out/bin/clang-${llvmMajorVersion} <<'EOF'
#!/bin/sh
exec "$NIX_BUILD_TOP/source/build/bin/clang-${llvmMajorVersion}" "$@"
EOF
chmod +x $out/bin/clang-${llvmMajorVersion}
cp $out/bin/clang-${llvmMajorVersion} $out/bin/clang
cp $out/bin/clang-${llvmMajorVersion} $out/bin/clang++
'';
passthru.isClang = true;
}
);
in
''
# Parts of libdevice are built using the freshly-built compiler.
# As it tries to link to system libraries, we need to wrap it with the
# usual nix cc-wrapper.
# Since the compiler to be wrapped is not available at this point,
# we use a stub that points to where it will be later on
# in `$NIX_BUILD_TOP/source/build/bin/clang-${llvmMajorVersion}`
substituteInPlace libdevice/cmake/modules/SYCLLibdevice.cmake \
--replace-fail "\''${clang_exe}" "${ccWrapperStub}/bin/clang++"
'';
passthru = {
inherit llvmMajorVersion;
inherit enableCuda cudaPackages;
};
meta = {
homepage = "https://github.com/intel/llvm";
description = "Intel staging area for llvm.org contribution";
maintainers = with lib.maintainers.bsc; [ abonerib ];
platforms = lib.platforms.linux;
license = [
lib.licenses.asl20
lib.licenses.llvm-exception
];
};
}

View File

@@ -0,0 +1,23 @@
diff --git a/unified-runtime/source/adapters/cuda/CMakeLists.txt b/unified-runtime/source/adapters/cuda/CMakeLists.txt
index a8401c71a..2ab363926 100644
--- a/unified-runtime/source/adapters/cuda/CMakeLists.txt
+++ b/unified-runtime/source/adapters/cuda/CMakeLists.txt
@@ -62,14 +62,14 @@ add_library(cudadrv SHARED IMPORTED GLOBAL)
if (WIN32)
set_target_properties(
cudadrv PROPERTIES
- IMPORTED_IMPLIB ${CUDA_cuda_driver_LIBRARY}
- INTERFACE_INCLUDE_DIRECTORIES ${CUDAToolkit_INCLUDE_DIRS}
+ IMPORTED_IMPLIB "${CUDA_cuda_driver_LIBRARY}"
+ INTERFACE_INCLUDE_DIRECTORIES "${CUDAToolkit_INCLUDE_DIRS}"
)
else()
set_target_properties(
cudadrv PROPERTIES
- IMPORTED_LOCATION ${CUDA_cuda_driver_LIBRARY}
- INTERFACE_INCLUDE_DIRECTORIES ${CUDAToolkit_INCLUDE_DIRS}
+ IMPORTED_LOCATION "${CUDA_cuda_driver_LIBRARY}"
+ INTERFACE_INCLUDE_DIRECTORIES "${CUDAToolkit_INCLUDE_DIRS}"
)
endif()

File diff suppressed because one or more lines are too long

View File

@@ -1,297 +0,0 @@
{
lib,
stdenv,
callPackage,
dpkg,
fetchurl,
sqlite,
elfutils,
}:
let
inherit (builtins)
attrNames
attrValues
concatMap
elem
filter
fromJSON
getAttr
groupBy
head
isNull
listToAttrs
map
mapAttrs
readFile
replaceStrings
splitVersion
;
inherit (lib)
converge
findFirst
groupBy'
hasPrefix
optional
pipe
take
toInt
toList
versionAtLeast
versionOlder
;
aptData = fromJSON (readFile ./packages.json);
# Compare versions in debian control file syntax
# See: https://www.debian.org/doc/debian-policy/ch-relationships.html#syntax-of-relationship-fields
#
# NOTE: this is not a proper version comparison
#
# A proper version solver, should aggregate dependencies with the same name
# and compute the constraint (e.g. a (>= 2) a (<< 5) -> 2 <= a << 5)
#
# But in the intel repo, there are no such "duplicated" dependencies to specify
# upper limits, which leads to issues when intel-hpckit-2021 depends on things
# like intel-basekit >= 2021.1.0-2403 and we end up installing the newest
# basekit instead of the one from 2021.
#
# To mitigate this, >= is set to take the latest version with matching major
# and minor (only revision and patch are allowed to change)
compareVersions =
got: kind: want:
let
g0 = take 2 (splitVersion got);
w0 = take 2 (splitVersion want);
in
if isNull want then
true
else if kind == "=" then
got == want
else if kind == "<<" then
versionOlder got want
else if kind == "<=" then
versionAtLeast want got
else if kind == ">>" then
versionOlder want got
else if kind == ">=" then
(g0 == w0) && versionAtLeast got want # always match major version
else
throw "unknown operation: ${kind}";
findMatching =
{
pname,
kind,
version,
}:
findFirst (x: pname == x.pname && compareVersions x.version kind version) null aptData;
isIntel = pkg: (hasPrefix "intel-" pkg.pname);
expandDeps =
pkg: (map findMatching (filter isIntel pkg.dependencies)) ++ (optional (pkg.size != 0) pkg);
# get the oldest by major version. If they have the same major version, take
# the newest. This prevents most issues with resolutions
# versionOlder b a -> true if b is older than a (b `older` a)
getNewerInMajor =
a: b:
let
va = a.version;
vb = b.version;
va0 = head (splitVersion va);
vb0 = head (splitVersion vb);
in
if isNull a then
b
else if va0 != vb0 then
if va0 > vb0 then b else a
else if versionOlder vb va then
a
else
b;
removeDups = l: attrValues (groupBy' getNewerInMajor null (getAttr "provides") l);
_resolveDeps = converge (l: removeDups (concatMap expandDeps l));
resolveDeps =
pkg:
let
deps = _resolveDeps (toList pkg);
namedDeps = (map (x: "${x.pname}-${x.version}") deps);
in
builtins.traceVerbose (builtins.deepSeq namedDeps namedDeps) deps;
blacklist = [
"intel-basekit-env"
"intel-basekit-getting-started"
"intel-hpckit-env"
"intel-hpckit-getting-started"
"intel-oneapi-advisor"
"intel-oneapi-common-licensing"
"intel-oneapi-common-oneapi-vars"
"intel-oneapi-common-vars"
"intel-oneapi-compiler-cpp-eclipse-cfg"
"intel-oneapi-compiler-dpcpp-eclipse-cfg"
"intel-oneapi-condaindex"
"intel-oneapi-dev-utilities-eclipse-cfg"
"intel-oneapi-dpcpp-ct-eclipse-cfg"
"intel-oneapi-eclipse-ide"
"intel-oneapi-hpc-toolkit-getting-started"
"intel-oneapi-icc-eclipse-plugin-cpp"
"intel-oneapi-vtune"
"intel-oneapi-vtune-eclipse-plugin-vtune"
];
isInBlacklist = pkg: elem pkg.provides blacklist;
removeBlacklist = filter (e: !(isInBlacklist e));
dpkgExtractAll =
pname: version:
{ srcs, deps }:
stdenv.mkDerivation {
inherit pname version srcs;
nativeBuildInputs = [ dpkg ];
phases = [ "installPhase" ];
passthru = { inherit deps; };
installPhase = ''
mkdir -p $out
for src in $srcs; do
echo "Unpacking $src"
dpkg -x $src $out
done
'';
};
apthost = "https://apt.repos.intel.com/oneapi/";
fetchDeb =
p:
fetchurl {
url = apthost + p.filename;
inherit (p) sha256;
};
buildIntel =
pkg:
pipe pkg [
resolveDeps
removeBlacklist
(l: {
srcs = map fetchDeb l;
deps = l;
})
(dpkgExtractAll "${pkg.provides}-extracted" pkg.version)
];
findHpcKit =
year:
findMatching {
pname = "intel-hpckit";
kind = "<<";
version = toString (year + 1);
};
years = map toInt (attrNames components);
patchIntel = callPackage ./patch_intel.nix { };
# Version information for each hpckit. This is used to normalize the paths
# so that files are in $out/{bin,lib,include...} instead of all over the place
# in $out/opt/intel/oneapi/*/*/{...}.
#
# The most important is the compiler component, which is used to build the
# stdenv for the hpckit.
#
# NOTE: this have to be manually specified, so we can avoid IFD. To add a
# new version, add a new field with an empty attrset, (e.g. "2026" = {}; ),
# build hpckit_2026.unpatched and use the values from
# result/opt/intel/oneapi/* to populate the attrset.
#
# WARN: if there are more than one version in the folders of the unpatched
# components, our dependency resolution hacks have probably failed and the
# package set may be broken.
components = {
"2025" = {
ishmem = "1.4";
pti = "0.13";
tcm = "1.4";
umf = "0.11";
ccl = "2021.16";
compiler = "2025.2";
dal = "2025.8";
debugger = "2025.2";
dev-utilities = "2025.2";
dnnl = "2025.2";
dpcpp-ct = "2025.2";
dpl = "2022.9";
ipp = "2022.2";
ippcp = "2025.2";
mkl = "2025.2";
mpi = "2021.16";
tbb = "2022.2";
};
"2024" = {
tcm = "1.1";
ccl = "2021.13";
compiler = "2024.2";
dal = "2024.6";
debugger = "2024.2";
dev-utilities = "2024.2";
diagnostics = "2024.2";
dnnl = "2024.2";
dpcpp-ct = "2024.2";
dpl = "2022.6";
ipp = "2021.12";
ippcp = "2021.12";
mkl = "2024.2";
mpi = "2021.13";
tbb = "2021.13";
extraPackages = [
sqlite
elfutils
];
};
};
replaceDots = replaceStrings [ "." ] [ "_" ];
in
lib.recurseIntoAttrs (
listToAttrs (
map (
year:
let
year_str = toString year;
in
{
name = "hpckit_${year_str}";
value = patchIntel {
unpatched = buildIntel (findHpcKit year);
components = components.${year_str};
};
}
) years
)
)
// {
apt = pipe aptData [
(groupBy (p: replaceDots p.provides))
(mapAttrs (
_: l:
listToAttrs (
map (pkg: {
name = replaceDots ("v" + pkg.version);
value = pkg;
}) l
)
))
];
inherit resolveDeps patchIntel buildIntel;
}

View File

@@ -1,29 +0,0 @@
#!/usr/bin/env -S jq -f
def extract_fields: {
pname : .Package,
version : .Version,
provides : .Package | sub("[0-9.-]*$"; ""),
filename : .Filename,
size : ."Installed-Size" | tonumber,
sha256 : .SHA256,
dependencies : .Depends,
} ;
# parses dependencies into a list of [{.pname, .kind, .version}]
# some dependencies do not have a version specified, in which case, kind = version = null
#
# example dependencies:
# intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing-2023.0.0
def split_dependencies : map(try(.dependencies |= split(",\\s?"; "")) // .dependencies |= []) ;
def match_version : capture("(?<pname>[a-zA-Z0-9_\\-.]*) *(\\((?<kind>[<>=]*) *(?<version>.*)\\))?"; "") ;
def parse_dependencies : map_values(.dependencies.[] |= match_version) ;
def sort_version_decreasing : sort_by(.version | split("[-.]"; "") | map(tonumber)) | reverse ;
map(extract_fields) | split_dependencies | parse_dependencies | sort_version_decreasing
# [.[] | select(.pname == "intel-hpckit") | .version]

View File

@@ -1,29 +0,0 @@
#!/usr/bin/env -S awk -f
BEGIN {
FS=": "
prev_empty=1
t=" "
print "[ {"
}
!NF { # empty line, update separator so next non empty line closes the dict
prev_empty=1
t="},\n{ "
next # skip line (we won't match anything else)
}
{
printf t "\"%s\" : \"%s\"\n", $1, $2
if (prev_empty) {
# we were the first after a group of empty lines, following ones have to
# have a comma
prev_empty=0
t=", "
}
}
END { print "} ]" }

View File

@@ -3,6 +3,7 @@
, lib
, fetchFromGitHub
, cmake
, ninja
, bash
, python3
, perl
@@ -48,6 +49,7 @@ in stdenv.mkDerivation {
inherit (source) src version;
enableParallelBuilding = true;
strictDeps = true;
passthru = {
CC = "clang";
@@ -62,6 +64,7 @@ in stdenv.mkDerivation {
nativeBuildInputs = [
bash
cmake
ninja
elfutils
llvmPackages_latest.lld
pkg-config

View File

@@ -39,7 +39,9 @@ stdenv.mkDerivation rec {
perl
pkg-config
python3
] ++ lib.optionals enableNosv [
];
buildInputs = lib.optionals enableNosv [
nosv
] ++ lib.optionals enableOvni [
ovni
@@ -54,6 +56,7 @@ stdenv.mkDerivation rec {
dontStrip = enableDebug;
separateDebugInfo = true;
strictDeps = true;
cmakeFlags = [
"-DLIBOMP_OMPD_SUPPORT=OFF"
@@ -71,6 +74,28 @@ stdenv.mkDerivation rec {
rm -f $out/libllvmrt/libomp.*
'';
doInstallCheck = true;
# There are not cmake flags to force nOS-V, it enables it when found through
# pkg-config. If enableNosv is set, but we fail to find it at build time,
# the build will succeed but won't use nOS-V (libompv won't be created).
# This is a sanity check to ensure that after install we have the proper
# files.
installCheckPhase =
if enableNosv then
''
test -f $out/lib/libompv.so
test -f $out/libllvmrt/libompv.so
test ! -f $out/lib/libomp.so
test ! -f $out/libllvmrt/libomp.so
''
else
''
test -f $out/lib/libomp.so
test -f $out/libllvmrt/libomp.so
test ! -f $out/lib/libompv.so
test ! -f $out/libllvmrt/libompv.so
'';
passthru = {
inherit nosv;
};

View File

@@ -27,6 +27,7 @@ stdenv.mkDerivation rec {
hardeningDisable = [ "all" ];
enableParallelBuilding = false;
strictDeps = true;
preBuild = ''
makeFlagsArray+=(

View File

@@ -9,6 +9,7 @@ python3Packages.buildPythonApplication {
src = ./.;
doCheck = false;
strictDeps = true;
build-system = with python3Packages; [
setuptools

View File

@@ -53,6 +53,7 @@ in mpich.overrideAttrs (old: {
'';
hardeningDisable = [ "all" ];
strictDeps = true;
meta = old.meta // {
maintainers = old.meta.maintainers ++ (with lib.maintainers.bsc; [ rarias ]);

View File

@@ -16,7 +16,7 @@
, jemallocNanos6 ? null
, cachelineBytes ? 64
, enableGlibcxxDebug ? false
, enablePapi ? stdenv.hostPlatform == stdenv.buildPlatform # Disabled when cross-compiling
, enablePapi ? true
, useGit ? false
, gitUrl ? "ssh://git@bscpm04.bsc.es/nanos6/nanos6"
, gitBranch ? "master"
@@ -80,7 +80,8 @@ in
(optional enableGlibcxxDebug "CXXFLAGS=-D_GLIBCXX_DEBUG") ++
# Most nanos6 api symbols are resolved at runtime, so prefer
# ifunc by default
(optional isCross "--with-symbol-resolution=ifunc");
(optional isCross "--with-symbol-resolution=ifunc") ++
(optional enablePapi "--with-papi=${papi}");
postConfigure = lib.optionalString (!enableDebug) ''
# Disable debug
@@ -95,16 +96,14 @@ in
dontStrip = enableDebug;
separateDebugInfo = true;
strictDeps = true;
nativeBuildInputs = [
autoconf
automake
libtool
pkg-config
# TODO: papi_version is needed for configure:
# ./configure: line 27378: papi_version: command not found
# This probably breaks cross-compilation
] ++ lib.optionals enablePapi [ papi ];
];
buildInputs = [
boost

View File

@@ -5,6 +5,7 @@ jemalloc.overrideAttrs (old: {
"--with-jemalloc-prefix=nanos6_je_"
"--enable-stats"
];
enableParallelBuilding = true;
hardeningDisable = [ "all" ];
meta = old.meta // {
description = old.meta.description + " (for Nanos6)";

View File

@@ -0,0 +1,650 @@
with builtins;
{
nix,
unzip,
zip,
unixtools,
stdenv,
buildPackages,
upx,
bootstrapPrograms ? [
"gitMinimal"
"netcat-openbsd"
"openssh"
"bashInteractive"
],
cacert ? pkgs.cacert,
compression ? "zstd -19 -T0",
lib ? pkgs.lib,
pkgs ? import <nixpkgs> {},
# hardcode executable to run. Useful when creating a bundle.
bundledPackage ? null,
nixStatic,
busyboxStatic ? pkgs.pkgsStatic.busybox,
bwrapStatic ? pkgs.pkgsStatic.bubblewrap,
zstdStatic ? pkgs.pkgsStatic.zstd,
perlBuildBuild ? pkgs.pkgsBuildBuild.perl,
}@inp:
with lib;
let
perl = perlBuildBuild;
pname =
if bundledPackage == null
then "nix-portable"
else lib.getName bundledPackage;
bundledExe = lib.getExe bundledPackage;
nixpkgsSrc = pkgs.path;
maketar = targets:
let
closureInfo = buildPackages.closureInfo { rootPaths = targets; };
in
stdenv.mkDerivation {
name = "nix-portable-store-tarball";
nativeBuildInputs = [ perl zstd ];
exportReferencesGraph = map (x: [("closure-" + baseNameOf x) x]) targets;
buildCommand = ''
storePaths=$(cat ${closureInfo}/store-paths)
mkdir $out
echo $storePaths > $out/index
cp -r ${closureInfo} $out/closureInfo
tar -cf - \
--owner=0 --group=0 --mode=u+rw,uga+r \
--hard-dereference \
$storePaths | ${compression} > $out/tar
'';
};
packStaticBin = binPath: let
binName = (last (splitString "/" binPath)); in
pkgs.runCommand
binName
{ nativeBuildInputs = [ upx ]; }
''
mkdir -p $out/bin
theBinPath=${binPath}
if [[ -L "$theBinPath" ]]; then
theBinPath=$(readlink -f "$theBinPath")
fi
upx -9 -o $out/bin/${binName} $theBinPath
'';
installBin = pkg: bin: ''
unzip -qqoj "\$self" ${ lib.removePrefix "/" "${pkg}/bin/${bin}"} -d \$dir/bin
chmod +wx \$dir/bin/${bin};
'';
installDynamic = pkgname: let
out = pkgs.${pkgname}.out;
in ''
if [ ! -e \$store${lib.removePrefix "/nix/store" pkgs.${pkgname}.out} ] ; then
debug "Installing ${pkgname}"
\$run \$store${lib.removePrefix "/nix/store" nix}/bin/nix build --impure --no-link --expr "
(import ${nixpkgsSrc} {}).${pkgname}.out
"
else
debug "${pkgname} already installed"
fi
export PATH="${out}/bin:\$PATH"
'';
caBundleZstd = pkgs.runCommand "cacerts" {} "cat ${cacert}/etc/ssl/certs/ca-bundle.crt | ${zstd}/bin/zstd -19 > $out";
bwrap = packStaticBin "${bwrapStatic}/bin/bwrap";
nixStatic = packStaticBin "${inp.nixStatic}/bin/nix";
zstd = packStaticBin "${zstdStatic}/bin/zstd";
# the default nix store contents to extract when first used
storeTar = maketar ([ cacert nix nixpkgsSrc ] ++ lib.optional (bundledPackage != null) bundledPackage);
# The runtime script which unpacks the necessary files to $HOME/.nix-portable
# and then executes nix via bwrap
# Some shell expressions will be evaluated at build time and some at run time.
# Variables/expressions escaped via `\$` will be evaluated at run time
runtimeScript = ''
#!/usr/bin/env bash
set -eo pipefail
start=\$(date +%s%N) # start time in nanoseconds
# dump environment on exit if debug is enabled
if [ -n "\$NP_DEBUG" ] && [ "\$NP_DEBUG" -ge 1 ]; then
trap "declare -p > \''${TMPDIR:-/tmp}/np_env" EXIT
fi
set -e
if [ -n "\$NP_DEBUG" ] && [ "\$NP_DEBUG" -ge 2 ]; then
set -x
fi
# &3 is our error out which we either forward to &2 or to /dev/null
# depending on the setting
if [ -n "\$NP_DEBUG" ] && [ "\$NP_DEBUG" -ge 1 ]; then
debug(){
echo \$@ || true
}
exec 3>&2
else
debug(){
true
}
exec 3>/dev/null
fi
# to reference this script's file
self="\$(realpath \''${BASH_SOURCE[0]})"
# fingerprint will be inserted by builder
fingerprint="_FINGERPRINT_PLACEHOLDER_"
# user specified location for program files and nix store
[ -z "\$NP_LOCATION" ] && NP_LOCATION="\$HOME"
NP_LOCATION="\$(readlink -f "\$NP_LOCATION")"
dir="\$NP_LOCATION/.nix-portable"
# Create NP_LOCATION and remove sgid bit
mkdir -p \$dir
if [ ! -z "\$BSC_MACHINE" ]; then
# Attempt to avoid issues with sgid folders
chmod g-s \$dir
chgrp bsc \$dir
fi
store="\$dir/nix/store"
# create /nix/var/nix to prevent nix from falling back to chroot store.
mkdir -p \$dir/{bin,nix/var/nix,nix/store}
# create minimal drv file for nix to spawn a nix shell
echo 'builtins.derivation {name="foo"; builder="/bin/sh"; args = ["-c" "echo hello \> \\\$out"]; system=builtins.currentSystem;}' > "\$dir/mini-drv.nix"
# the fingerprint being present inside a file indicates that
# this version of nix-portable has already been initialized
if test -e \$dir/conf/fingerprint && [ "\$(cat \$dir/conf/fingerprint)" == "\$fingerprint" ]; then
newNPVersion=false
else
newNPVersion=true
fi
# Nix portable ships its own nix.conf
export NIX_CONF_DIR=\$dir/conf/
NP_CONF_SANDBOX=\''${NP_CONF_SANDBOX:-false}
NP_CONF_STORE=\''${NP_CONF_STORE:-auto}
recreate_nix_conf(){
mkdir -p "\$NIX_CONF_DIR"
rm -f "\$NIX_CONF_DIR/nix.conf"
# static config
echo "build-users-group = " >> \$dir/conf/nix.conf
echo "experimental-features = nix-command flakes" >> \$dir/conf/nix.conf
echo "ignored-acls = security.selinux system.nfs4_acl" >> \$dir/conf/nix.conf
echo "sandbox-paths = /bin/sh=\$dir/busybox/bin/busybox" >> \$dir/conf/nix.conf
echo "extra-substituters = https://jungle.bsc.es/cache">> \$dir/conf/nix.conf
echo "extra-trusted-public-keys = jungle.bsc.es:pEc7MlAT0HEwLQYPtpkPLwRsGf80ZI26aj29zMw/HH0=" >> \$dir/conf/nix.conf
echo "extra-system-features = sys-devices" >> \$dir/conf/nix.conf
echo "extra-sandbox-paths = /sys/devices/system/cpu=/sys/devices/system/cpu /sys/devices/system/node=/sys/devices/system/node" >> \$dir/conf/nix.conf
echo "extra-trusted-users = @bsc" >> \$dir/conf/nix.conf
# configurable config
echo "sandbox = \$NP_CONF_SANDBOX" >> \$dir/conf/nix.conf
echo "store = \$NP_CONF_STORE" >> \$dir/conf/nix.conf
}
### install files
PATH_OLD="\$PATH"
# as soon as busybox is unpacked, restrict PATH to busybox to ensure reproducibility of this script
# only unpack binaries if necessary
if [ "\$newNPVersion" == "false" ]; then
debug "binaries already installed"
# our busybox does not run on termux, therefore we suffix the PATH only on termux
export PATH="\''${TERMUX_VERSION:+\$PATH:}\$dir/busybox/bin"
else
debug "installing files"
mkdir -p \$dir/emptyroot
# install busybox
mkdir -p \$dir/busybox/bin
(base64 -d> "\$dir/busybox/bin/busybox" && chmod +x "\$dir/busybox/bin/busybox") << END
$(cat ${busyboxStatic}/bin/busybox | base64)
END
busyBins="${toString (attrNames (filterAttrs (d: type: type == "symlink") (readDir "${busyboxStatic}/bin")))}"
for bin in \$busyBins; do
[ ! -e "\$dir/busybox/bin/\$bin" ] && ln -s busybox "\$dir/busybox/bin/\$bin"
done
# our busybox does not run on termux, therefore we suffix the PATH only on termux
export PATH="\''${TERMUX_VERSION:+\$PATH:}\$dir/busybox/bin"
# install other binaries
${installBin zstd "zstd"}
${installBin bwrap "bwrap"}
${installBin nixStatic "nix"}
# install ssl cert bundle
unzip -poj "\$self" ${ lib.removePrefix "/" "${caBundleZstd}"} | \$dir/bin/zstd -d > \$dir/ca-bundle.crt
recreate_nix_conf
fi
# Override $SHELL with nix bashInteractive
export SHELL="${pkgs.bashInteractive.out}/bin/bash"
export PS1="\n\[\033[1;32m\][\[\e]0;\u@\h: \w\a\]\u@\h:\w]\$\[\033[0m\] "
# unset bash function aliases
unset -f which ml module
### setup SSL
# find ssl certs or use from nixpkgs
debug "figuring out ssl certs"
if [ -z "\$SSL_CERT_FILE" ]; then
debug "SSL_CERT_FILE not defined. trying to find certs automatically"
if [ -e /etc/ssl/certs/ca-bundle.crt ]; then
export SSL_CERT_FILE=\$(realpath /etc/ssl/certs/ca-bundle.crt)
debug "found /etc/ssl/certs/ca-bundle.crt with real path \$SSL_CERT_FILE"
elif [ -e /etc/ssl/certs/ca-certificates.crt ]; then
export SSL_CERT_FILE=\$(realpath /etc/ssl/certs/ca-certificates.crt)
debug "found /etc/ssl/certs/ca-certificates.crt with real path \$SSL_CERT_FILE"
elif [ ! -e /etc/ssl/certs ]; then
debug "/etc/ssl/certs does not exist. Will use certs from nixpkgs."
export SSL_CERT_FILE=\$dir/ca-bundle.crt
else
debug "certs seem to reside in /etc/ssl/certs. No need to set up anything"
fi
fi
if [ -n "\$SSL_CERT_FILE" ]; then
sslBind="\$(realpath \$SSL_CERT_FILE) \$dir/ca-bundle.crt"
export SSL_CERT_FILE="\$dir/ca-bundle.crt"
else
sslBind="/etc/ssl /etc/ssl"
fi
if [ -n "\$NP_GIT" ]; then
echo "WARN: NP_GIT is not supported, using nix version instead"
fi
storePathOfFile(){
file=\$(realpath \$1)
sPath="\$(echo \$file | awk -F "/" 'BEGIN{OFS="/";}{print \$2,\$3,\$4}')"
echo "/\$sPath"
}
collectBinds(){
pathsTopLevel="/boot /run /sys \$PWD /gpfs /tmp /scratch"
toBind=""
for p in \$pathsTopLevel; do
if [ -e "\$p" ]; then
real=\$(realpath \$p)
if [ -e "\$real" ]; then
if [[ "\$real" == /nix/store/* ]]; then
storePath=\$(storePathOfFile \$real)
toBind="\$toBind \$storePath \$storePath"
else
toBind="\$toBind \$real \$p"
fi
fi
fi
done
# TODO: add /var/run/dbus/system_bus_socket
paths="/etc/host.conf /etc/hosts /etc/hosts.equiv /etc/mtab /etc/netgroup /etc/networks /etc/passwd /etc/group /etc/nsswitch.conf /etc/resolv.conf /etc/localtime \$HOME"
for p in \$paths; do
if [ -e "\$p" ]; then
real=\$(realpath \$p)
if [ -e "\$real" ]; then
if [[ "\$real" == /nix/store/* ]]; then
storePath=\$(storePathOfFile \$real)
toBind="\$toBind \$storePath \$storePath"
else
toBind="\$toBind \$real \$real"
fi
fi
fi
done
# provide /bin/sh via the shipped busybox
toBind="\$toBind \$dir/busybox/bin/busybox /bin/sh"
toBind="\$toBind \$dir/busybox/bin/busybox /usr/bin/env"
# on termux, make sure termux packages still work inside the nix-portable environment
if [ -n "\$TERMUX_VERSION" ]; then
# binds required so termux native packages still run inside the nix-portable sandbox
# TODO: this doesn't quite work yet. debug and fix
toBind="\$toBind /system/lib64/libc.so /system/lib64/libc.so"
toBind="\$toBind /system/lib64/ld-android.so /system/lib64/ld-android.so"
toBind="\$toBind /system/lib64/libdl.so /system/lib64/libdl.so"
toBind="\$toBind /system/bin /system/bin"
toBind="\$toBind /system/lib64 /system/lib64"
toBind="\$toBind /apex/com.android.runtime/bin /apex/com.android.runtime/bin"
toBind="\$toBind /linkerconfig/ld.config.txt /linkerconfig/ld.config.txt"
toBind="\$toBind \$dir/ca-bundle.crt /etc/ssl/certs/ca-certificates.crt"
toBind="\$toBind \$(realpath \$HOME/../usr/etc/resolv.conf) /etc/resolv.conf"
fi
}
makeBindArgs(){
arg=\$1; shift
sep=\$1; shift
binds=""
while :; do
if [ -n "\$1" ]; then
from="\$1"; shift
to="\$1"; shift || { echo "no bind destination provided for \$from!"; exit 3; }
binds="\$binds \$arg \$from\$sep\$to";
else
break
fi
done
}
### select container runtime
debug "figuring out which runtime to use"
[ -z "\$NP_BWRAP" ] && NP_BWRAP=\$dir/bin/bwrap
debug "bwrap executable: \$NP_BWRAP"
[ -z "\$NP_NIX" ] && NP_NIX=\$dir/bin/nix
debug "nix executable: \$NP_NIX"
debug "testing all available runtimes..."
if [ -z "\$NP_RUNTIME" ]; then
# read last automatic selected runtime from disk
if [ "\$newNPVersion" == "true" ]; then
debug "removing cached auto selected runtime"
rm -f "\$dir/conf/last_auto_runtime"
fi
if [ -f "\$dir/conf/last_auto_runtime" ]; then
last_auto_runtime="\$(cat "\$dir/conf/last_auto_runtime")"
else
last_auto_runtime=
fi
debug "last auto selected runtime: \$last_auto_runtime"
if [ "\$last_auto_runtime" != "" ]; then
NP_RUNTIME="\$last_auto_runtime"
# check if nix --store works
elif \\
debug "testing nix --store" \\
&& mkdir -p \$dir/tmp/ \\
&& touch \$dir/tmp/testfile \\
&& "\$NP_NIX" --store "\$dir/tmp/__store" shell -f "\$dir/mini-drv.nix" -c "\$dir/bin/nix" store add-file --store "\$dir/tmp/__store" "\$dir/tmp/testfile" >/dev/null 2>&3; then
chmod -R +w \$dir/tmp/__store
rm -r \$dir/tmp/__store
debug "nix --store works on this system -> will use nix as runtime"
NP_RUNTIME=nix
# check if bwrap works properly
elif \\
debug "nix --store failed -> testing bwrap" \\
&& \$NP_BWRAP --bind \$dir/emptyroot / --bind \$dir/ /nix --bind \$dir/busybox/bin/busybox "\$dir/true" "\$dir/true" 2>&3 ; then
debug "bwrap seems to work on this system -> will use bwrap"
NP_RUNTIME=bwrap
else
debug "bwrap doesn't work on this system -> will use proot"
NP_RUNTIME=proot
fi
echo -n "\$NP_RUNTIME" > "\$dir/conf/last_auto_runtime"
else
debug "runtime selected via NP_RUNTIME: \$NP_RUNTIME"
fi
debug "NP_RUNTIME: \$NP_RUNTIME"
if [ "\$NP_RUNTIME" == "nix" ]; then
run="\$NP_NIX shell -f \$dir/mini-drv.nix -c"
export PATH="\$PATH:\$store${lib.removePrefix "/nix/store" nix}/bin"
NP_CONF_STORE="\$dir"
recreate_nix_conf
elif [ "\$NP_RUNTIME" == "bwrap" ]; then
collectBinds
makeBindArgs --bind " " \$toBind \$sslBind
run="\$NP_BWRAP \$BWRAP_ARGS \\
--bind \$dir/emptyroot /\\
--dev-bind /dev /dev\\
--proc /proc\\
--bind \$dir/nix /nix\\
\$binds"
# --bind \$dir/busybox/bin/busybox /bin/sh\\
else
# proot
echo Unsupported runtime: $NP_RUNTIME
exit 1
fi
debug "base command will be: \$run"
### setup environment
export NIX_PATH="\$dir/channels:nixpkgs=\$dir/channels/nixpkgs"
mkdir -p \$dir/channels
[ -h \$dir/channels/nixpkgs ] || ln -s ${nixpkgsSrc} \$dir/channels/nixpkgs
### install nix store
# Install all the nix store paths necessary for the current nix-portable version
# We only unpack missing store paths from the tar archive.
index="$(cat ${storeTar}/index)"
export missing=\$(
for path in \$index; do
basepath=\$(basename \$path)
if [ ! -e \$store/\$basepath ]; then
echo "nix/store/\$basepath"
fi
done
)
if [ -n "\$missing" ]; then
debug "extracting missing store paths"
(
mkdir -p \$dir/tmp \$store/
rm -rf \$dir/tmp/*
cd \$dir/tmp
unzip -qqp "\$self" ${ lib.removePrefix "/" "${storeTar}/tar"} \
| \$dir/bin/zstd -d \
| tar -x \$missing --strip-components 2
mv \$dir/tmp/* \$store/
)
rm -rf \$dir/tmp
fi
if [ -n "\$missing" ]; then
debug "registering new store paths to DB"
reg="$(cat ${storeTar}/closureInfo/registration)"
cmd="\$run \$store${lib.removePrefix "/nix/store" nix}/bin/nix-store --load-db"
debug "running command: \$cmd"
echo "\$reg" | \$cmd
fi
### select executable
# the executable can either be selected by
# - executing './nix-portable BIN_NAME',
# - symlinking to nix-portable, in which case the name of the symlink selects the nix executable
# Alternatively the executable can be hardcoded by specifying the argument 'executable' of nix-portable's default.nix file.
executable="${if bundledPackage == null then "" else bundledExe}"
if [ "\$executable" != "" ]; then
bin="\$executable"
debug "executable is hardcoded to: \$bin"
elif [[ "\$(basename \$0)" == nix-portable* ]]; then\
if [ -z "\$1" ]; then
echo "Error: please specify the nix binary to execute"
echo "Alternatively symlink against \$0"
exit 1
elif [ "\$1" == "debug" ]; then
bin="\$(which \$2)"
shift; shift
else
bin="\$store${lib.removePrefix "/nix/store" nix}/bin/\$1"
shift
fi
# for binary selection via symlink
else
bin="\$store${lib.removePrefix "/nix/store" nix}/bin/\$(basename \$0)"
fi
### check which runtime has been used previously
if [ -f "\$dir/conf/last_runtime" ]; then
lastRuntime=\$(cat "\$dir/conf/last_runtime")
else
lastRuntime=
fi
### check if nix is functional with or without sandbox
# sandbox-fallback is not reliable: https://github.com/NixOS/nix/issues/4719
if [ "\$newNPVersion" == "true" ] || [ "\$lastRuntime" != "\$NP_RUNTIME" ]; then
nixBin="\$(dirname \$bin)/nix"
debug "Testing if nix can build stuff without sandbox"
if ! \$run "\$nixBin" build --no-link -f "\$dir/mini-drv.nix" --option sandbox false >&3 2>&3; then
echo "Fatal error: nix is unable to build packages"
exit 1
fi
debug "Testing if nix sandbox is functional"
if ! \$run "\$nixBin" build --no-link -f "\$dir/mini-drv.nix" --option sandbox true >&3 2>&3; then
debug "Sandbox doesn't work -> disabling sandbox"
NP_CONF_SANDBOX=false
recreate_nix_conf
else
debug "Sandboxed builds work -> enabling sandbox"
NP_CONF_SANDBOX=true
recreate_nix_conf
fi
fi
### save fingerprint and lastRuntime
if [ "\$newNPVersion" == "true" ]; then
echo -n "\$fingerprint" > "\$dir/conf/fingerprint"
fi
if [ "\$lastRuntime" != \$NP_RUNTIME ]; then
echo -n \$NP_RUNTIME > "\$dir/conf/last_runtime"
fi
### set PATH
export PATH="\$dir/busybox/bin"
export PATH="\$PATH:\$store${lib.removePrefix "/nix/store" nix}/bin"
### install programs via nix
${concatMapStringsSep "\n" installDynamic bootstrapPrograms}
### print elapsed time
end=\$(date +%s%N) # end time in nanoseconds
# time elapsed in millis with two decimal places
# print stats about initialization time of nix-portable
# skipt for termux, as it doesn't have bc installed
if [ -z "\$TERMUX_VERSION" ]; then
elapsed=\$(echo "scale=2; (\$end - \$start)/1000000" | bc)
debug "Time to initialize nix-portable: \$elapsed millis"
fi
### run commands
[ -z "\$NP_RUN" ] && NP_RUN="\$run"
if [ "\$NP_RUNTIME" == "proot" ]; then
debug "running command: \$NP_RUN \$bin \$@"
exec \$NP_RUN \$bin "\$@"
else
cmd="\$NP_RUN \$bin \$@"
debug "running command: \$cmd"
exec \$NP_RUN \$bin "\$@"
fi
exit
'';
runtimeScriptEscaped = replaceStrings ["\""] ["\\\""] runtimeScript;
nixPortable = pkgs.runCommand pname {
nativeBuildInputs = [unixtools.xxd unzip];
meta = {
homepage = "https://github.com/DavHau/nix-portable";
description = "Nix - Static, Permissionless, Installation-free, Pre-configured for mn5";
maintainers = with lib.maintainers.bsc; [ abonerib ];
platforms = lib.platforms.linux;
license = lib.licenses.mit;
};
} ''
mkdir -p $out/bin
echo "${runtimeScriptEscaped}" > $out/bin/nix-portable.zip
xxd $out/bin/nix-portable.zip | tail
sizeA=$(printf "%08x" `stat -c "%s" $out/bin/nix-portable.zip` | tac -rs ..)
echo 504b 0304 0000 0000 0000 0000 0000 0000 | xxd -r -p >> $out/bin/nix-portable.zip
echo 0000 0000 0000 0000 0000 0200 0000 4242 | xxd -r -p >> $out/bin/nix-portable.zip
sizeB=$(printf "%08x" `stat -c "%s" $out/bin/nix-portable.zip` | tac -rs ..)
echo 504b 0102 0000 0000 0000 0000 0000 0000 | xxd -r -p >> $out/bin/nix-portable.zip
echo 0000 0000 0000 0000 0000 0000 0200 0000 | xxd -r -p >> $out/bin/nix-portable.zip
echo 0000 0000 0000 0000 0000 $sizeA 4242 | xxd -r -p >> $out/bin/nix-portable.zip
echo 504b 0506 0000 0000 0000 0100 3000 0000 | xxd -r -p >> $out/bin/nix-portable.zip
echo $sizeB 0000 0000 0000 0000 0000 0000 | xxd -r -p >> $out/bin/nix-portable.zip
unzip -vl $out/bin/nix-portable.zip
zip="${zip}/bin/zip -0"
$zip $out/bin/nix-portable.zip ${bwrap}/bin/bwrap
$zip $out/bin/nix-portable.zip ${nixStatic}/bin/nix
$zip $out/bin/nix-portable.zip ${zstd}/bin/zstd
$zip $out/bin/nix-portable.zip ${storeTar}/tar
$zip $out/bin/nix-portable.zip ${caBundleZstd}
# create fingerprint
fp=$(sha256sum $out/bin/nix-portable.zip | cut -d " " -f 1)
sed -i "s/_FINGERPRINT_PLACEHOLDER_/$fp/g" $out/bin/nix-portable.zip
# fix broken zip header due to manual modification
${zip}/bin/zip -F $out/bin/nix-portable.zip --out $out/bin/nix-portable-fixed.zip
rm $out/bin/nix-portable.zip
executable=${if bundledPackage == null then "" else bundledExe}
if [ "$executable" == "" ]; then
target="$out/bin/nix-portable"
else
target="$out/bin/$(basename "$executable")"
fi
mv $out/bin/nix-portable-fixed.zip "$target"
chmod +x "$target"
'';
in
nixPortable.overrideAttrs (prev: {
passthru = (prev.passthru or {}) // {
inherit bwrap;
};
})

View File

@@ -14,7 +14,7 @@ let
nixConfDir = "share";
nix_wrap_sh = writeText "nix-wrap.sh" ''
#!/usr/bin/env bash
#
busybox_bin="${nixPrefix}${busybox}/bin"
bubblewrap_bin="${nixPrefix}/${bubblewrap}/bin"
@@ -69,7 +69,6 @@ stdenv.mkDerivation rec {
name = "nix-wrap";
buildInputs = [
bashInteractive
busybox
nix
];
src = null;
@@ -92,7 +91,6 @@ stdenv.mkDerivation rec {
homepage = null;
description = "nix bubblewrap wrapper";
maintainers = [ ];
broken = true;
platforms = lib.platforms.linux;
license = lib.licenses.mit;
};

View File

@@ -8,6 +8,7 @@ stdenv.mkDerivation {
version = "0.0.1";
src = ./nixgen;
dontUnpack = true;
strictDeps = true;
phases = [ "installPhase" ];
installPhase = ''
mkdir -p $out/bin

View File

@@ -16,6 +16,7 @@ stdenv.mkDerivation rec {
makeFlags = [ "DESTDIR=$(out)" ];
preBuild = "env";
dontPatchShebangs = true;
strictDeps = true;
meta = {
homepage = "https://gitlab.pm.bsc.es/rarias/nixtools";

View File

@@ -48,6 +48,7 @@ in
enableParallelBuilding = true;
dontStrip = true;
separateDebugInfo = true;
strictDeps = true;
configureFlags = [
"--with-nosv=${nosv}"

View File

@@ -7,7 +7,7 @@
, numactl
, hwloc
, papi
, enablePapi ? stdenv.hostPlatform == stdenv.buildPlatform # Disabled when cross-compiling
, enablePapi ? true
, cacheline ? 64 # bits
, ovni ? null
, useGit ? false
@@ -40,16 +40,17 @@ let
source = if (useGit) then git else release;
in
stdenv.mkDerivation rec {
stdenv.mkDerivation {
pname = "nosv";
inherit (source) src version;
hardeningDisable = [ "all" ];
dontStrip = true;
separateDebugInfo = true;
strictDeps = true;
configureFlags = [
"--with-ovni=${ovni}"
"CACHELINE_WIDTH=${toString cacheline}"
];
] ++ lib.optionals enablePapi [ "--with-papi=${papi}" ];
nativeBuildInputs = [
autoreconfHook
pkg-config
@@ -59,6 +60,7 @@ in
hwloc
ovni
] ++ lib.optionals enablePapi [ papi ];
patches = [ ./fix-papi.patch ];
meta = {
homepage = "https://gitlab.bsc.es/nos-v/nos-v";
@@ -66,5 +68,6 @@ in
maintainers = with lib.maintainers.bsc; [ abonerib rarias ];
platforms = lib.platforms.linux;
license = lib.licenses.gpl3Plus;
cross = true;
};
}

136
pkgs/nosv/fix-papi.patch Normal file
View File

@@ -0,0 +1,136 @@
Commit ID: c09633f172ce4075e0a05a33f6dcbe8e03e1202a
Change ID: onmwypnnrysktutwsvotqovzponvwrxs
Bookmarks: fix/papi fix/papi@git fix/papi@origin
Author : Aleix Boné <aleix.boneribo@bsc.es> (2025-12-10 11:14:14)
Committer: Aleix Boné <aleix.boneribo@bsc.es> (2025-12-12 12:56:48)
Improve PAPI m4 module for cross compilation
diff --git a/m4/papi.m4 b/m4/papi.m4
index de90584870..8398f856f5 100644
--- a/m4/papi.m4
+++ b/m4/papi.m4
@@ -1,6 +1,6 @@
# This file is part of Nanos6 and is licensed under the terms contained in the COPYING file.
#
-# Copyright (C) 2021-2022 Barcelona Supercomputing Center (BSC)
+# Copyright (C) 2021-2025 Barcelona Supercomputing Center (BSC)
AC_DEFUN([AC_CHECK_PAPI],
[
@@ -8,34 +8,38 @@
[papi],
[AS_HELP_STRING([--with-papi=prefix], [specify the installation prefix of PAPI])],
[ ac_cv_use_papi_prefix=$withval ],
- [ ac_cv_use_papi_prefix="" ]
+ [ ac_cv_use_papi_prefix="check" ]
)
if test x"${ac_cv_use_papi_prefix}" = x"no"; then
AC_MSG_CHECKING([the PAPI installation prefix])
AC_MSG_RESULT([${ac_cv_use_papi_prefix}])
ac_use_papi=no
- elif test x"${ac_cv_use_papi_prefix}" != x"" ; then
- AC_MSG_CHECKING([the PAPI installation prefix])
- AC_MSG_RESULT([${ac_cv_use_papi_prefix}])
- papi_LIBS="-L${ac_cv_use_papi_prefix}/lib -lpapi -Wl,-rpath,${ac_cv_use_papi_prefix}/lib"
- papi_CFLAGS="-I$ac_cv_use_papi_prefix/include"
- ac_use_papi=yes
- else
+ elif test x"${ac_cv_use_papi_prefix}" = x""; then
+ AC_MSG_RESULT([invalid prefix])
+ AC_MSG_ERROR([papi prefix specified but empty])
+ elif test x"${ac_cv_use_papi_prefix}" = x"yes" -o x"${ac_cv_use_papi_prefix}" = x"check"; then
PKG_CHECK_MODULES(
[papi],
- [papi],
+ [papi >= 5.6.0],
[
AC_MSG_CHECKING([the PAPI installation prefix])
AC_MSG_RESULT([retrieved from pkg-config])
papi_CFLAGS="${papi_CFLAGS}"
ac_use_papi=yes
+ ac_papi_version_correct=yes
], [
AC_MSG_CHECKING([the PAPI installation prefix])
AC_MSG_RESULT([not available])
ac_use_papi=no
]
)
+ else
+ AC_MSG_CHECKING([the PAPI installation prefix])
+ AC_MSG_RESULT([${ac_cv_use_papi_prefix}])
+ papi_LIBS="-L${ac_cv_use_papi_prefix}/lib -lpapi -Wl,-rpath,${ac_cv_use_papi_prefix}/lib"
+ papi_CFLAGS="-I$ac_cv_use_papi_prefix/include"
+ ac_use_papi=yes
fi
if test x"${ac_use_papi}" = x"yes" ; then
@@ -53,10 +57,10 @@
ac_use_papi=yes
],
[
- if test x"${ac_cv_use_papi_prefix}" != x"" ; then
- AC_MSG_ERROR([PAPI cannot be found.])
+ if test x"${ac_cv_use_papi_prefix}" = x"yes" ; then
+ AC_MSG_ERROR([PAPI >= 5.6.0 cannot be found.])
else
- AC_MSG_WARN([PAPI cannot be found.])
+ AC_MSG_WARN([PAPI >= 5.6.0 not available.])
fi
ac_use_papi=no
]
@@ -64,30 +68,38 @@
CFLAGS="${ac_save_CFLAGS}"
LIBS="${ac_save_LIBS}"
+ elif test x"${ac_cv_use_papi_prefix}" = x"yes" ; then
+ AC_MSG_ERROR([PAPI >= 5.6.0 cannot be found.])
fi
- if test x"${ac_use_papi}" = x"yes" ; then
- if test x"${ac_cv_use_papi_prefix}" != x"" ; then
+ if test x"${ac_use_papi}" = x"yes" -a x"${ac_papi_version_correct}" != x"yes" ; then
+ if test x"${ac_cv_use_papi_prefix}" != x"yes" -a x"${ac_cv_use_papi_prefix}" != x"check" ; then
papiBinary=${ac_cv_use_papi_prefix}/bin/papi_version
else
papiBinary=papi_version
fi
- papiVersion=`$papiBinary | sed 's/[[^0-9.]]*\([[0-9.]]*\).*/\1/'`
- AX_COMPARE_VERSION(
- [[${papiVersion}]],
- [[ge]],
- [[5.6.0]],
- [[ac_papi_version_correct=yes]],
- [[ac_papi_version_correct=no]]
- )
- if test x"${ac_papi_version_correct}" != x"yes" ; then
- AC_MSG_ERROR([PAPI version must be >= 5.6.0.])
- ac_use_papi=no
+ if test x"$cross_compiling" = x"yes" ; then
+ AC_MSG_WARN([Cross-compiling detected, skipping PAPI version check])
else
- AC_MSG_CHECKING([if the PAPI version >= 5.6.0.])
- AC_MSG_RESULT([${ac_papi_version_correct}])
+ papiVersion=`$papiBinary | sed 's/[[^0-9.]]*\([[0-9.]]*\).*/\1/'`
+
+ AX_COMPARE_VERSION(
+ [[${papiVersion}]],
+ [[ge]],
+ [[5.6.0]],
+ [[ac_papi_version_correct=yes]],
+ [[ac_papi_version_correct=no]]
+ )
+
+ if test x"${ac_papi_version_correct}" != x"yes" ; then
+ AC_MSG_ERROR([PAPI version must be >= 5.6.0.])
+ ac_use_papi=no
+ else
+ AC_MSG_CHECKING([if the PAPI version >= 5.6.0.])
+ AC_MSG_RESULT([${ac_papi_version_correct}])
+ fi
fi
fi

View File

@@ -31,13 +31,13 @@ assert mklSupport || cudaSupport || enableHip;
stdenv.mkDerivation rec {
pname = "oneMath";
version = "0.8";
version = "0.9";
src = fetchFromGitHub {
owner = "uxlfoundation";
repo = "oneMath";
rev = "v${version}";
sha256 = "sha256-xK8lKI3oqKlx3xtvdScpMq+HXAuoYCP0BZdkEqnJP5o=";
sha256 = "sha256-jVcrpne6OyOeUlQHg07zZXEyFXvEGCYW88sWnYgEeu8=";
};
cmakeFlags = [

View File

@@ -24,6 +24,7 @@ stdenv.mkDerivation rec {
doCheck = true;
enableParallelBuilding = true;
strictDeps = true;
nativeBuildInputs = [ mpiAll ];
buildInputs = [ mpiAll ];
hardeningDisable = [ "all" ];

View File

@@ -40,6 +40,7 @@ in
inherit (source) src version;
dontStrip = true;
separateDebugInfo = true;
strictDeps = true;
postPatch = ''
patchShebangs --build test/
'';

31
pkgs/papi/default.nix Normal file
View File

@@ -0,0 +1,31 @@
{
stdenv,
papi,
}:
if stdenv.hostPlatform == stdenv.buildPlatform then
papi
else
papi.overrideAttrs (old: {
configureFlags = (old.configureFlags or [ ]) ++ [
# Only perf-events works when cross compiling, since for the rest, papi's
# configure.in uses `test -f` which is not allowed when cross-compiling.
# FIXME: patch configure.in to skip the faulty checks when cross-compiling
"--disable-perf-event-uncore"
"--with-sysdetect=no"
# Flags below are adapted from "cross compile sample" in papi's
# src/configure.in. (--host is already set by nix). Verified to
# cross-compile in both riscv64 and aarch64-multiplatform targets.
"--with-ffsll"
"--with-tls=__thread"
"--with-virtualtimer=clock_thread_cputime_id"
"--with-walltimer=clock_realtime"
"--with-perf-events"
"--with-CPU=${stdenv.hostPlatform.uname.processor}"
"--with-arch=${stdenv.hostPlatform.uname.processor}"
];
patches = (old.patches or [ ]) ++ [ ./fix-ar-cross.patch ];
meta = old.meta // { cross = true; };
})

View File

@@ -0,0 +1,19 @@
diff --git a/sde_lib/Makefile b/sde_lib/Makefile
index 8518f92..90a9953 100644
--- a/sde_lib/Makefile
+++ b/sde_lib/Makefile
@@ -1,4 +1,5 @@
CC ?= gcc
+AR ?= ar
SDE_INC = -I. -I..
SDE_LD = -ldl -pthread
CFLAGS += -Wextra -Wall -O2
@@ -18,7 +19,7 @@ dynamic: $(DOBJS)
rm -f *_d.o
static: $(SOBJS)
- ar rs libsde.a $(SOBJS)
+ $(AR) rs libsde.a $(SOBJS)
rm -f *_s.o
clean:

View File

@@ -47,6 +47,7 @@ stdenv.mkDerivation rec {
dontStrip = true;
enableParallelBuilding = true;
strictDeps = true;
preConfigure = ''
export CFLAGS="-O3"

View File

@@ -34,6 +34,7 @@ stdenv.mkDerivation rec {
enableParallelBuilding = true;
dontStrip = true;
strictDeps = true;
preConfigure = ''
export CFLAGS="-O3 -DPARALLEL_ENABLED"

View File

@@ -248,7 +248,7 @@ stdenv.mkDerivation (finalAttrs: {
leixb
jansol
xddxdd
bsc.maintainers.leixb
bsc.abonerib
];
platforms = platforms.linux ++ platforms.darwin;
};

View File

@@ -1,58 +0,0 @@
{
stdenv,
lib,
fetchurl,
ocl-icd,
opencl-headers,
}:
stdenv.mkDerivation {
pname = "rodinia-opencl";
version = "3.1";
src = fetchurl {
url = "http://www.cs.virginia.edu/~skadron/lava/Rodinia/Packages/rodinia_3.1.tar.bz2";
hash = "sha256-+uusfBHtj4/Pa/LX6FwwhvwtEfciBNbfwo3FsujyrP0=";
};
patches = [
./rodinia-fixes.patch
./rodinia-rm.patch
];
buildInputs = [
opencl-headers
ocl-icd
];
buildFlags = [
"OPENCL"
"--always-make"
];
preBuild = ''
mkdir -p bin/linux/{cuda,omp,opencl}
'';
installPhase = ''
runHook preInstall
mkdir -p $out/share
cp -r bin data opencl $out
cp LICENSE README $out/share
runHook postInstall
'';
meta = {
homepage = "https://rodinia.cs.virginia.edu/";
description = "Test Suite of Compute-Intensive Applications with Accelerators";
maintainers = with lib.maintainers.bsc; [ abonerib ];
platforms = lib.platforms.linux;
license = {
deprecated = false;
free = false;
fullName = "Rodinia License";
redistributable = true;
shortName = "rodinia";
url = "https://www.cs.virginia.edu/~skadron/lava/rodinia/license.htm";
};
};
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -13,6 +13,7 @@ buildGoModule rec {
vendorHash = "sha256-A1dd9T9SIEHDCiVT2UwV6T02BSLh9ej6LC/2l54hgwI=";
doCheck = false;
strictDeps = true;
meta = with lib; {
description = "Prometheus SLURM Exporter";

View File

@@ -18,6 +18,7 @@ stdenv.mkDerivation rec {
};
hardeningDisable = [ "all" ];
dontStrip = true;
strictDeps = true;
configureFlags = [ "--with-ovni=${ovni}" ];
nativeBuildInputs = [

View File

@@ -17,6 +17,7 @@ stdenv.mkDerivation rec {
pname = "tagaspi";
enableParallelBuilding = true;
separateDebugInfo = true;
strictDeps = true;
version = "2.0";
src = fetchFromGitHub {

View File

@@ -45,6 +45,7 @@ in stdenv.mkDerivation {
inherit (source) src version;
enableParallelBuilding = true;
separateDebugInfo = true;
strictDeps = true;
nativeBuildInputs = [
autoconf

View File

@@ -84,4 +84,12 @@ syclStdenv.mkDerivation {
'';
hardeningDisable = [ "all" ];
meta = {
homepage = "https://github.com/bsc-pm/tasycl";
description = "Interoperability support between task-based programming models and SYCL";
maintainers = with lib.maintainers.bsc; [ abonerib ];
platforms = lib.platforms.linux;
license = lib.licenses.gpl3Plus;
};
}

View File

@@ -9,6 +9,7 @@ python3Packages.buildPythonApplication {
src = ./.;
doCheck = false;
strictDeps = true;
build-system = with python3Packages; [
setuptools

View File

@@ -23,9 +23,6 @@ in stdenv.mkDerivation {
dontUnpack = true;
dontConfigure = true;
# nOS-V requires access to /sys/devices to request NUMA information
requiredSystemFeatures = [ "sys-devices" ];
buildInputs = [ openmp ];
buildPhase = ''

View File

@@ -71,6 +71,8 @@ stdenv.mkDerivation (finalAttrs: {
# Make PoCL report Intel vendor id so oneapi SYCL works
POCL_DRIVER_VERSION_OVERRIDE = "2024.18.6.0.02_160000";
POCL_CPU_VENDOR_ID_OVERRIDE = 32902;
HWLOC_SYNTHETIC = "node:1 core:1 pu:1";
};
doInstallCheck = true;
installCheckPhase = ''

View File

@@ -59,6 +59,8 @@ intelPackages.stdenv.mkDerivation (finalAttrs: {
# Make PoCL report Intel vendor id so oneapi SYCL works
POCL_DRIVER_VERSION_OVERRIDE = "2024.18.6.0.02_160000";
POCL_CPU_VENDOR_ID_OVERRIDE = 32902;
HWLOC_SYNTHETIC = "node:1 core:1 pu:1";
};
doInstallCheck = true;
installCheckPhase = ''
@@ -93,7 +95,7 @@ intelPackages.stdenv.mkDerivation (finalAttrs: {
echo NODES_HOME=$NODES_HOME
command -v $CXX
icpx -Wno-deprecated-declarations -fsycl \
$CXX -Wno-deprecated-declarations -fsycl \
-fsycl-host-compiler=${clangOmpss2Nodes.forIcpx}/bin/clang++ \
-fsycl-host-compiler-options='-Wno-deprecated-declarations -fompss-2=libnodes' \
-lnodes -lnosv \