Compare commits

..

111 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
5c30975b8b Mount NFS home in tent at /nfs/home
Reviewed-by: Aleix Boné <abonerib@bsc.es>
2026-03-09 15:27:41 +01:00
d4c00679ee Increase NFS subnet to allow tent
Reviewed-by: Aleix Boné <abonerib@bsc.es>
2026-03-09 15:27:41 +01:00
32a576e870 Copy Gitea backup in /ceph too
Reviewed-by: Aleix Boné <abonerib@bsc.es>
2026-03-09 15:27:37 +01:00
8197221146 Mount /ceph in tent
Reviewed-by: Aleix Boné <abonerib@bsc.es>
2026-03-09 08:52:11 +01:00
374cd4ce48 Allow tent to reach ceph
Reviewed-by: Aleix Boné <abonerib@bsc.es>
2026-03-09 08:52:08 +01:00
d3e54b7c99 Rekey secrets adding tent for ceph
Reviewed-by: Aleix Boné <abonerib@bsc.es>
2026-03-09 08:52:05 +01:00
46b7efb5ac Rename Gitea backup service and directory
Reviewed-by: Aleix Boné <abonerib@bsc.es>
2026-03-09 08:51:48 +01:00
56ab099017 Override files in rotating gitea dump service
Reviewed-by: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2026-03-09 08:51:44 +01:00
2654b9fdd9 Enable rotating gitea backups
Reviewed-by: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2026-03-09 08:51:23 +01:00
84a5cb09ee Use host mode for docker network
In order to reduce the traffic of the secondary Ethernet device we need
to be able to directly use the physical device instead of the virtual
one. For now use the host mode and see later if we can revert it.

Reviewed-by: Aleix Boné <abonerib@bsc.es>
2026-03-05 15:29:23 +01:00
4899d20748 Fix weasel infiniband interface name
Reviewed-by: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2026-02-26 10:26:01 +01:00
76cd6d64b2 Add ssanzmar user to apex and fox
Reviewed-by: Aleix Boné <abonerib@bsc.es>
2026-02-24 14:06:12 +01:00
8dab0d82ba Update fox documentation in website
Reviewed-by: Aleix Boné <abonerib@bsc.es>
2026-02-04 15:08:13 +01:00
958dcd4774 Add emonteir user to apex and fox
Reviewed-by: Aleix Boné <abonerib@bsc.es>
2026-02-04 15:08:08 +01:00
7a6e4232de Add nom and nixfmt-tree to system packages
Reviewed-by: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2026-02-03 15:17:30 +01:00
3b56e905e5 Add standalone home-manager to system packages
Reviewed-by: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2026-02-03 15:17:29 +01:00
2d41309466 Format and sort default package list
Reviewed-by: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2026-02-03 15:17:24 +01:00
deb0cd1488 Allow USB access to TC1 from Gitlab Runner
Reviewed-by: Aleix Boné <abonerib@bsc.es>
2026-01-23 17:56:16 +01:00
cd1f502ecc Allow user USB access to FTDI device in tent
Reviewed-by: Aleix Boné <abonerib@bsc.es>
2026-01-23 17:56:11 +01:00
dda6a66782 Fix gitea user to allow sending email
In order to send email, the gitea user needs to be in the mail-robot
group.

Fixes: rarias/jungle#220
Reviewed-by: Aleix Boné <abonerib@bsc.es>
2026-01-20 12:18:52 +01:00
22420e6ac8 Remove unneeded perf package from eudy
It is already included in the base list of packages, which is now only
"perf" and doesn't depend on the kernel version.

Reviewed-by: Aleix Boné <abonerib@bsc.es>
2026-01-20 12:18:49 +01:00
a71cd78b4c Fix infiniband interface names
Reviewed-by: Aleix Boné <abonerib@bsc.es>
2026-01-20 12:18:46 +01:00
e84a2cadbb flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/8bb5646e0bed5dbd3ab08c7a7cc15b75ab4e1d0f?narHash=sha256-SqUuBFjhl/kpDiVaKLQBoD8TLD%2B/cTUzzgVFoaHrkqY%3D' (2025-11-30)
  → 'github:NixOS/nixpkgs/3c9db02515ef1d9b6b709fc60ba9a540957f661c?narHash=sha256-2GffSfQxe3sedHzK%2BsTKlYo/NTIAGzbFCIsNMUPAAnk%3D' (2026-01-05)

Reviewed-by: Aleix Boné <abonerib@bsc.es>
2026-01-20 12:18:41 +01:00
d3e43eb651 Remove conflicting definitions in amd-uprof-driver
See: https://lkml.org/lkml/2025/4/9/1709

Reviewed-by: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2026-01-20 12:15:18 +01:00
a491546ffb Mark mcxx as broken and remove from package list
Reviewed-by: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2026-01-20 12:15:14 +01:00
933c78a80b Fix moved package linuxPackages.perf is now perf
Reviewed-by: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2026-01-20 12:15:10 +01:00
150969be9b Fix replaced nixseparatedebuginfod
nixseparatedebuginfod has been replaced by nixseparatedebuginfod2

Reviewed-by: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2026-01-20 12:15:06 +01:00
9097729759 Use standard gcc for intel packages
This reverts 26f52aa27d

Reviewed-by: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2026-01-20 12:15:02 +01:00
779449f1db Fix renamed option watchdog.runtimeTime
The option 'systemd.watchdog.runtimeTime' has been renamed to
'systemd.settings.Manager.RuntimeWatchdogSec'.

Reviewed-by: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2026-01-20 12:14:59 +01:00
6cbe33bd80 Replace wrapGAppsHook with wrapGAppsHook3
Reviewed-by: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2026-01-20 12:14:56 +01:00
3f1f5ae8f2 Fix changed cudaPackages.cuda_cudart output
See: https://github.com/NixOS/nixpkgs/pull/437723
Reviewed-by: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2026-01-20 12:14:49 +01:00
fe8586e780 Set pyproject=true in buildPythonApplication
The buildPythonPackage and buildPythonApplication functions now
  require an explicit format attribute. Previously the default format
  used setuptools and called setup.py from the source tree, which is
  deprecated. The modern alternative is to configure pyproject = true
  with build-system = [ setuptools ].

Reviewed-by: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2026-01-20 12:14:31 +01:00
8677adba27 Fix renamed llvm bintools
Moved from llvmPackages_latest.tools.bintools to
llvmPackages_latest.bintools

Reviewed-by: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2026-01-20 12:14:27 +01:00
f614149edf Upgrade nixpkgs to 25.11
Reviewed-by: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2026-01-20 12:14:11 +01:00
859eebda98 Change varcila shell to zsh
Reviewed-by: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2026-01-07 13:22:17 +01:00
c2a201b085 Increase fail2ban ban time on each attempt
Reviewed-by: Aleix Boné <abonerib@bsc.es>
2026-01-07 13:14:34 +01:00
f921f0a4bd Disable password login via SSH in apex
Reviewed-by: Aleix Boné <abonerib@bsc.es>
2026-01-07 13:14:30 +01:00
aa16bfc0bc Enable fail2ban in apex login node
We are seeing a lot of failed attempts from the same IPs:

    apex% sudo journalctl -u sshd -b0 | grep 'Failed password' | wc -l
    2441

Reviewed-by: Aleix Boné <abonerib@bsc.es>
2026-01-07 13:14:22 +01:00
99 changed files with 3594 additions and 43197 deletions

6
flake.lock generated
View File

@@ -2,11 +2,11 @@
"nodes": {
"nixpkgs": {
"locked": {
"lastModified": 1764522689,
"narHash": "sha256-SqUuBFjhl/kpDiVaKLQBoD8TLD+/cTUzzgVFoaHrkqY=",
"lastModified": 1767634882,
"narHash": "sha256-2GffSfQxe3sedHzK+sTKlYo/NTIAGzbFCIsNMUPAAnk=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "8bb5646e0bed5dbd3ab08c7a7cc15b75ab4e1d0f",
"rev": "3c9db02515ef1d9b6b709fc60ba9a540957f661c",
"type": "github"
},
"original": {

View File

@@ -22,8 +22,9 @@ rec {
storage = [ bay lake2 ];
monitor = [ hut ];
login = [ apex ];
services = [ tent ];
system = storage ++ monitor ++ login;
system = storage ++ monitor ++ login ++ services;
safe = system ++ compute;
all = safe ++ playground;
};

View File

@@ -57,6 +57,18 @@
};
};
services.fail2ban = {
enable = true;
maxretry = 5;
bantime-increment = {
enable = true; # Double ban time on each attack
maxtime = "7d"; # Ban up to a week
};
};
# Disable SSH login with password, allow only keypair
services.openssh.settings.PasswordAuthentication = false;
networking.firewall = {
extraCommands = ''
# Blackhole BSC vulnerability scanner (OpenVAS) as it is spamming our

View File

@@ -7,7 +7,7 @@
mountdPort = 4002;
statdPort = 4000;
exports = ''
/home 10.0.40.0/24(rw,async,no_subtree_check,no_root_squash)
/home 10.0.40.0/21(rw,async,no_subtree_check,no_root_squash)
/home 10.106.0.0/24(rw,async,no_subtree_check,no_root_squash)
'';
};
@@ -15,19 +15,19 @@
# Check with `rpcinfo -p`
extraCommands = ''
# Accept NFS traffic from compute nodes but not from the outside
iptables -A nixos-fw -p tcp -s 10.0.40.0/24 --dport 111 -j nixos-fw-accept
iptables -A nixos-fw -p tcp -s 10.0.40.0/24 --dport 2049 -j nixos-fw-accept
iptables -A nixos-fw -p tcp -s 10.0.40.0/24 --dport 4000 -j nixos-fw-accept
iptables -A nixos-fw -p tcp -s 10.0.40.0/24 --dport 4001 -j nixos-fw-accept
iptables -A nixos-fw -p tcp -s 10.0.40.0/24 --dport 4002 -j nixos-fw-accept
iptables -A nixos-fw -p tcp -s 10.0.40.0/24 --dport 20048 -j nixos-fw-accept
iptables -A nixos-fw -p tcp -s 10.0.40.0/21 --dport 111 -j nixos-fw-accept
iptables -A nixos-fw -p tcp -s 10.0.40.0/21 --dport 2049 -j nixos-fw-accept
iptables -A nixos-fw -p tcp -s 10.0.40.0/21 --dport 4000 -j nixos-fw-accept
iptables -A nixos-fw -p tcp -s 10.0.40.0/21 --dport 4001 -j nixos-fw-accept
iptables -A nixos-fw -p tcp -s 10.0.40.0/21 --dport 4002 -j nixos-fw-accept
iptables -A nixos-fw -p tcp -s 10.0.40.0/21 --dport 20048 -j nixos-fw-accept
# Same but UDP
iptables -A nixos-fw -p udp -s 10.0.40.0/24 --dport 111 -j nixos-fw-accept
iptables -A nixos-fw -p udp -s 10.0.40.0/24 --dport 2049 -j nixos-fw-accept
iptables -A nixos-fw -p udp -s 10.0.40.0/24 --dport 4000 -j nixos-fw-accept
iptables -A nixos-fw -p udp -s 10.0.40.0/24 --dport 4001 -j nixos-fw-accept
iptables -A nixos-fw -p udp -s 10.0.40.0/24 --dport 4002 -j nixos-fw-accept
iptables -A nixos-fw -p udp -s 10.0.40.0/24 --dport 20048 -j nixos-fw-accept
iptables -A nixos-fw -p udp -s 10.0.40.0/21 --dport 111 -j nixos-fw-accept
iptables -A nixos-fw -p udp -s 10.0.40.0/21 --dport 2049 -j nixos-fw-accept
iptables -A nixos-fw -p udp -s 10.0.40.0/21 --dport 4000 -j nixos-fw-accept
iptables -A nixos-fw -p udp -s 10.0.40.0/21 --dport 4001 -j nixos-fw-accept
iptables -A nixos-fw -p udp -s 10.0.40.0/21 --dport 4002 -j nixos-fw-accept
iptables -A nixos-fw -p udp -s 10.0.40.0/21 --dport 20048 -j nixos-fw-accept
# Accept NFS traffic from wg0
iptables -A nixos-fw -p tcp -i wg0 -s 10.106.0.0/24 --dport 111 -j nixos-fw-accept

View File

@@ -24,7 +24,7 @@
address = "10.0.40.40";
prefixLength = 24;
} ];
interfaces.ibp5s0.ipv4.addresses = [ {
interfaces.ibs785.ipv4.addresses = [ {
address = "10.0.42.40";
prefixLength = 24;
} ];
@@ -35,7 +35,7 @@
# Accept monitoring requests from hut
iptables -A nixos-fw -p tcp -s hut -m multiport --dport 9283,9002 -j nixos-fw-accept
# Accept all Ceph traffic from the local network
iptables -A nixos-fw -p tcp -s 10.0.40.0/24 -m multiport --dport 3300,6789,6800:7568 -j nixos-fw-accept
iptables -A nixos-fw -p tcp -s 10.0.40.0/21 -m multiport --dport 3300,6789,6800:7568 -j nixos-fw-accept
'';
};
};

View File

@@ -2,11 +2,36 @@
{
environment.systemPackages = with pkgs; [
vim wget git htop tmux pciutils tcpdump ripgrep nix-index nixos-option
nix-diff ipmitool freeipmi ethtool lm_sensors cmake gnumake file tree
ncdu perf ldns pv
cmake
ethtool
file
freeipmi
git
gnumake
home-manager
htop
ipmitool
ldns
lm_sensors
ncdu
nix-diff
nix-index
nix-output-monitor
nixfmt-tree
nixos-option
pciutils
perf
pv
ripgrep
tcpdump
tmux
tree
vim
wget
# From jungle overlay
osumb nixgen
nixgen
osumb
];
programs.direnv.enable = true;

View File

@@ -134,11 +134,12 @@
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"
];
shell = pkgs.zsh;
};
pmartin1 = {
@@ -193,6 +194,32 @@
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOlRX7ZCnqtUJYCxKgWmgSrFCYuA2LHY96rVwqxXPl86 aaguirre@BSC-8488184117"
];
};
emonteir = {
uid = 9656;
isNormalUser = true;
home = "/home/Computational/emonteir";
description = "Erwin Royson Monteiro";
group = "Computational";
hosts = [ "apex" "fox" ];
hashedPassword = "$6$0mU88zd3ZuK5NiJQ$DFWL5RMLH6esQM5UyhBCiiNryw4lDDmvJp7Usz3tmevnsiSJr6u0RsUKAnR/K8GRBFrV1.GocrgNjKjik5GY//";
openssh.authorizedKeys.keys = [
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOKZKot/Y3F5Wq9pQIXlCbyvQuVVeWMCsAC96Nd+LTcG erwin@Oreo"
];
};
ssanzmar = {
uid = 9657;
isNormalUser = true;
home = "/home/Computational/ssanzmar";
description = "Sergio Sanz Martínez";
group = "Computational";
hosts = [ "apex" "fox" ];
hashedPassword = "$6$HUjNDJeJMmNQ6M64$laXSOZcXg6o4v2r8Jm8Xj9kmqw7veCY32po3TVDPRR4WlyxvOeqwoKr4NjlUlPPpKN55Oot3ZYHi.9iNXsH5E1";
openssh.authorizedKeys.keys = [
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIELrsRRHXryrdA2ZBx5XmdGxL4DC5bmJydhBeTWQ0SQ sergio.sanz.martinez@estudiantat.upc.edu"
];
};
};
groups = {

View File

@@ -1,11 +1,6 @@
{ config, pkgs, lib, ... }:
{ pkgs, lib, ... }:
{
# add the perf tool
environment.systemPackages = with pkgs; [
config.boot.kernelPackages.perf
];
# allow non-root users to read tracing data from the kernel
boot.kernel.sysctl."kernel.perf_event_paranoid" = -2;
boot.kernel.sysctl."kernel.kptr_restrict" = 0;

View File

@@ -45,7 +45,7 @@
address = "10.0.40.7";
prefixLength = 24;
} ];
interfaces.ibp5s0.ipv4.addresses = [ {
interfaces.ibs785.ipv4.addresses = [ {
address = "10.0.42.7";
prefixLength = 24;
} ];

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

@@ -4,8 +4,8 @@ let
name = "jungle-web";
src = pkgs.fetchgit {
url = "https://jungle.bsc.es/git/rarias/jungle-website.git";
rev = "52abaf4d71652a9ef77a0b098db14ca33bffff4c";
hash = "sha256-/ul9GazbOrOkmlvSgDz/+2W+V+ir5725Y7mVLc3rb0M=";
rev = "5f18335d14126d2fef134c0cd441771436f7dfa1";
hash = "sha256-s9VBF91sQ7hg9+lrwNFPYgoXTTyXaQcAulCiGJgWERo=";
};
buildInputs = [ pkgs.hugo ];
buildPhase = ''

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

@@ -46,7 +46,7 @@
address = "10.0.40.42";
prefixLength = 24;
} ];
interfaces.ibp5s0.ipv4.addresses = [ {
interfaces.ibs785.ipv4.addresses = [ {
address = "10.0.42.42";
prefixLength = 24;
} ];
@@ -57,7 +57,7 @@
# Accept monitoring requests from hut
iptables -A nixos-fw -p tcp -s hut --dport 9002 -j nixos-fw-accept
# Accept all Ceph traffic from the local network
iptables -A nixos-fw -p tcp -s 10.0.40.0/24 -m multiport --dport 3300,6789,6800:7568 -j nixos-fw-accept
iptables -A nixos-fw -p tcp -s 10.0.40.0/21 -m multiport --dport 3300,6789,6800:7568 -j nixos-fw-accept
'';
};
};

27
m/module/tc1-board.nix Normal file
View File

@@ -0,0 +1,27 @@
{ lib, pkgs, ... }:
{
# Allow user access to FTDI USB device
services.udev.packages = lib.singleton (pkgs.writeTextFile {
# Needs to be < 73
name = "60-ftdi-tc1.rules";
text = ''
# Bus 003 Device 003: ID 0403:6011 Future Technology Devices International, Ltd FT4232H Quad HS USB-UART/FIFO IC
# Use := to make sure it doesn't get changed later
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6011", MODE:="0666"
'';
destination = "/etc/udev/rules.d/60-ftdi-tc1.rules";
});
# Allow access to USB for docker in GitLab runner
services.gitlab-runner = {
services.gitlab-bsc-docker = {
registrationFlags = [
# We need raw access to the USB port to reboot the board
"--docker-devices /dev/bus/usb/003/003"
# And TTY access for the serial port
"--docker-devices /dev/ttyUSB2"
];
};
};
}

View File

@@ -20,7 +20,7 @@
address = "10.0.40.1";
prefixLength = 24;
} ];
interfaces.ibp5s0.ipv4.addresses = [ {
interfaces.ibs785.ipv4.addresses = [ {
address = "10.0.42.1";
prefixLength = 24;
} ];

View File

@@ -21,7 +21,7 @@
prefixLength = 24;
} ];
# Watch out! The OmniPath device is not in the same place here:
interfaces.ibp129s0.ipv4.addresses = [ {
interfaces.ibs801.ipv4.addresses = [ {
address = "10.0.42.2";
prefixLength = 24;
} ];

View File

@@ -16,6 +16,8 @@
../module/p.nix
../module/vpn-dac.nix
../module/hut-substituter.nix
../module/tc1-board.nix
../module/ceph.nix
];
# Select the this using the ID to avoid mismatches
@@ -63,6 +65,13 @@
fsType = "ext4";
};
# Mount the NFS home
fileSystems."/nfs/home" = {
device = "10.106.0.30:/home";
fsType = "nfs";
options = [ "nfsvers=3" "rsize=1024" "wsize=1024" "cto" "nofail" ];
};
# Make a /vault/$USER directory for each user.
systemd.services.create-vault-dirs = let
# Take only normal users in tent

View File

@@ -1,4 +1,7 @@
{ config, lib, ... }:
let
cfg = config.services.gitea;
in
{
services.gitea = {
enable = true;
@@ -26,5 +29,54 @@
SENDMAIL_ARGS = "--";
};
};
dump = {
enable = false; # Do not enable NixOS module, use our custom systemd script below
backupDir = "/vault/backup/gitea";
};
};
systemd.services.gitea-backup = let
exe = lib.getExe cfg.package;
in {
description = "Gitea daily backup";
after = [ "gitea.service" ];
path = [ cfg.package ];
environment = {
USER = cfg.user;
HOME = cfg.stateDir;
GITEA_WORK_DIR = cfg.stateDir;
GITEA_CUSTOM = cfg.customDir;
};
serviceConfig = {
Type = "oneshot";
User = cfg.user;
WorkingDirectory = cfg.dump.backupDir;
};
script = ''
name="gitea-dump-$(date +%a).${cfg.dump.type}"
${exe} dump --type ${cfg.dump.type} --file - >"$name.tmp"
mv "$name.tmp" "$name"
cp "$name" "/ceph/backup/gitea/$name"
'';
};
# Create also the /ceph directories if needed
systemd.tmpfiles.rules = [
"d /ceph/backup/gitea/ 0750 ${cfg.user} ${cfg.group} - -"
"z /ceph/backup/gitea/ 0750 ${cfg.user} ${cfg.group} - -"
];
systemd.timers.gitea-backup = {
description = "Update timer for gitea-backup";
partOf = [ "gitea-backup.service" ];
wantedBy = [ "timers.target" ];
timerConfig.OnCalendar = cfg.dump.interval;
};
# Allow gitea user to send mail
users.users.gitea.extraGroups = [ "mail-robot" ];
}

View File

@@ -43,6 +43,7 @@
registrationFlags = [
# Increase build log length to 64 MiB
"--output-limit 65536"
"--docker-network-mode host"
];
preBuildScript = pkgs.writeScript "setup-container" ''
mkdir -p -m 0755 /nix/var/log/nix/drvs

View File

@@ -4,8 +4,8 @@ let
name = "jungle-web";
src = pkgs.fetchgit {
url = "https://jungle.bsc.es/git/rarias/jungle-website.git";
rev = "52abaf4d71652a9ef77a0b098db14ca33bffff4c";
hash = "sha256-/ul9GazbOrOkmlvSgDz/+2W+V+ir5725Y7mVLc3rb0M=";
rev = "5f18335d14126d2fef134c0cd441771436f7dfa1";
hash = "sha256-s9VBF91sQ7hg9+lrwNFPYgoXTTyXaQcAulCiGJgWERo=";
};
buildInputs = [ pkgs.hugo ];
buildPhase = ''

View File

@@ -25,7 +25,7 @@
address = "10.0.40.6";
prefixLength = 24;
} ];
interfaces.ibp5s0.ipv4.addresses = [ {
interfaces.ibs785.ipv4.addresses = [ {
address = "10.0.42.6";
prefixLength = 24;
} ];

View File

@@ -19,7 +19,13 @@ let
cudainfo = prev.callPackage ./pkgs/cudainfo/default.nix { };
#extrae = callPackage ./pkgs/extrae/default.nix { }; # Broken and outdated
gpi-2 = callPackage ./pkgs/gpi-2/default.nix { };
intelPackages_2023 = callPackage ./pkgs/intel-oneapi/2023.nix { };
gromacs = callPackage ./pkgs/gromacs/default.nix { enableSYCL = true; };
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:
# https://discourse.nixos.org/t/whats-the-right-way-to-make-a-custom-kernel-module-available/4636
@@ -29,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 { };
@@ -39,16 +47,17 @@ 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 { };
openmp = callPackage ./pkgs/llvm-ompss2/openmp.nix { monorepoSrc = final.clangOmpss2Unwrapped.src; version = final.clangOmpss2Unwrapped.version; };
openmpv = final.openmp.override { enableNosv = true; enableOvni = true; };
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-noicd = callPackage ./pkgs/pocl/default.nix { enableICD = false; };
@@ -63,17 +72,10 @@ let
stdenvClangOmpss2NodesOmpv = final.stdenv.override { cc = final.clangOmpss2NodesOmpv; allowedRequisites = null; };
tagaspi = callPackage ./pkgs/tagaspi/default.nix { };
tampi = callPackage ./pkgs/tampi/default.nix { };
tasycl = callPackage ./pkgs/tasycl/default.nix { };
tasycl-acpp = callPackage ./pkgs/tasycl/default.nix { useIntel = false; };
upc-qaire-exporter = prev.callPackage ./pkgs/upc-qaire-exporter/default.nix { };
taopencl = callPackage ./pkgs/taopencl/default.nix { };
wxparaver = callPackage ./pkgs/paraver/default.nix { };
gromacs = callPackage ./pkgs/gromacs/default.nix { enableSYCL = true; };
_cuda = prev._cuda.extend (_: _prev: final.lib.recursiveUpdate _prev {
extensions = _prev.extensions ++ [(finalAttrs: _: {
tacuda = finalAttrs.callPackage ./pkgs/tacuda/default.nix { };
})];
});
};
tests = rec {
@@ -81,6 +83,13 @@ let
#sigsegv = callPackage ./test/reproducers/sigsegv.nix { };
hello-c = callPackage ./test/compilers/hello-c.nix { };
hello-cpp = callPackage ./test/compilers/hello-cpp.nix { };
hello-sycl = callPackage ./test/compilers/hello-sycl.nix { };
hello-syclompss = callPackage ./test/compilers/icpx-ompss2.nix { };
hello-sycl-pocl = (callPackage ./test/compilers/hello-sycl.nix { }).withPocl;
hello-sycl-intel = (callPackage ./test/compilers/hello-sycl.nix { }).withIntel;
hello-syclompss-pocl = (callPackage ./test/compilers/icpx-ompss2.nix { }).withPocl;
hello-syclompss-intel = (callPackage ./test/compilers/icpx-ompss2.nix { }).withIntel;
lto = callPackage ./test/compilers/lto.nix { };
asan = callPackage ./test/compilers/asan.nix { };
intel2023-icx-c = hello-c.override { stdenv = final.intelPackages_2023.stdenv; };
@@ -90,6 +99,17 @@ let
intel2023-ifort = callPackage ./test/compilers/hello-f.nix {
stdenv = final.intelPackages_2023.stdenv-ifort;
};
intel2024-icx-c = hello-c.override { stdenv = final.intelPackages_2024.stdenv; };
intel2025-icx-c = hello-c.override { stdenv = final.intelPackages_2025.stdenv; };
intel2024-icx-cpp = hello-cpp.override { stdenv = final.intelPackages_2024.stdenv; };
intel2025-icx-cpp = hello-cpp.override { stdenv = final.intelPackages_2025.stdenv; };
# 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 {
@@ -114,6 +134,8 @@ let
pocl = callPackage ./test/compilers/pocl.nix { };
ocl-run-pocl = ocl-build.test-icd;
ocl-run-pocl-noicd = ocl-build-noicd.test-noicd;
sycl-ls = callPackage ./test/compilers/sycl-ls.nix { };
};
# For now, only build toplevel packages in CI/Hydra

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
];
};
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

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

@@ -40,45 +40,19 @@ let
mpi = "2021.9.0";
};
aptPackageIndex = stdenv.mkDerivation {
name = "intel-oneapi-packages";
srcs = [
# Run update.sh to update the package lists
./amd64-packages ./all-packages
];
phases = [ "installPhase" ];
installPhase = ''
awk -F': ' '\
BEGIN { print "[ {" } \
NR>1 && /^Package: / { print "} {"; } \
/: / { printf "%s = \"%s\";\n", $1, $2 } \
END { print "} ]" }' $srcs > $out
'';
};
aptPackages = import aptPackageIndex;
apthost = "https://apt.repos.intel.com/oneapi/";
getSum = pkgList: name:
findMatch = name:
let
matches = lib.filter (x: name == x.Package) pkgList;
#n = lib.length matches;
#match = builtins.trace (name + " -- ${builtins.toString n}") (lib.elemAt matches 0);
match = lib.elemAt matches 0;
in
match.SHA256;
getUrl = pkgList: name:
let
matches = lib.filter (x: name == x.Package) pkgList;
#match = assert lib.length matches == 1; lib.elemAt matches 0;
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.trace (name + " -- n=${builtins.toString n}")
(lib.elemAt matches 0);
match = builtins.traceVerbose (name + " -- ${builtins.toString n}") (builtins.head matches);
apthost = "https://apt.repos.intel.com/oneapi/";
in
apthost + match.Filename;
{
url = apthost + match.file;
sha256 = match.sha256;
};
uncompressDebs = debs: name: stdenv.mkDerivation {
name = name;
@@ -98,10 +72,7 @@ let
joinDebs = name: names:
let
urls = builtins.map (x: getUrl aptPackages x) names;
sums = builtins.map (x: getSum aptPackages x) names;
getsrc = url: sha256: builtins.fetchurl { inherit url sha256; };
debs = lib.zipListsWith getsrc urls sums;
debs = builtins.map (x: builtins.fetchurl (findMatch x)) names;
in
uncompressDebs debs "${name}-source";
@@ -328,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}"
@@ -470,7 +441,7 @@ let
'';
};
ifort-wrapper = wrapIntel rec {
ifort-wrapper = wrapIntel {
cc = intel-compiler-fortran;
mygcc = gcc;
extraBuild = ''

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

@@ -0,0 +1,156 @@
{
stdenv,
stdenvNoCC,
lib,
symlinkJoin,
autoPatchelfHook,
wrapIntel,
overrideCC,
hwloc,
libelf,
libffi_3_3,
libpsm2,
libuuid,
libxml2,
numactl,
ocl-icd,
openssl,
python3,
rdma-core,
ucx,
zlib,
writeTextFile,
}:
lib.makeOverridable (
{
unpatched,
components ? { },
extraPackages ? components.extraPackages or [ ],
}:
let
inherit (builtins)
attrValues
filter
mapAttrs
removeAttrs
;
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;
in
stdenvNoCC.mkDerivation (finalAttrs: {
pname = lib.removeSuffix "-extracted" unpatched.pname;
inherit (unpatched) version;
src = unpatched;
phases = [
"installPhase"
"fixupPhase"
];
buildInputs = [
libffi_3_3
libelf
libxml2
hwloc
numactl
libuuid
libpsm2
zlib
ocl-icd
rdma-core
ucx
openssl
python3
stdenv.cc.cc.lib
]
++ extraPackages;
autoPatchelfIgnoreMissingDeps = [
"libhwloc.so.5"
"libcuda.so.1"
"libze_loader.so.1"
];
# There are broken symlinks that go outside packages, ignore them
dontCheckForBrokenSymlinks = true;
nativeBuildInputs = [ autoPatchelfHook ];
installPhase = ''
cp -r $src/opt/intel/oneapi/ $out
'';
passthru =
let
pkgs = mapAttrs (
folder: version:
let
original = "${finalAttrs.finalPackage}/${folder}/${version}";
etc-vendors = writeTextFile {
name = "intel-ocl-icd";
text = "${original}/lib/libintelocl.so";
destination = "/etc/OpenCL/vendors/intel.icd";
};
in
symlinkJoin {
pname = "intel-${folder}";
inherit version;
paths = [ original ] ++ lib.optionals (folder == "compiler") [ etc-vendors ];
passthru = { inherit original llvmMajorVersion; };
}
) _components;
in
pkgs
// {
inherit unpatched;
pkgs = lib.recurseIntoAttrs pkgs;
components = _components;
# This contains all packages properly symlinked into toplevel directories
# in $out.
#
# NOTE: there are clashes with packages that have symlinks outside their
# scope (libtcm and env/vars.sh)
all = symlinkJoin {
pname = finalAttrs.finalPackage.pname + "-symlinked";
inherit (finalAttrs.finalPackage) version;
paths = filter lib.isDerivation (attrValues finalAttrs.finalPackage.pkgs);
};
stdenv = overrideCC stdenv finalAttrs.finalPackage.cc;
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

10
pkgs/intel-oneapi/deb/update.sh Executable file
View File

@@ -0,0 +1,10 @@
#!/bin/sh
out_64=$(mktemp intel-api.64.XXXXXX)
out_all=$(mktemp intel-api.all.XXXXXX)
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"
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()

View File

@@ -1,4 +0,0 @@
#!/bin/sh
curl https://apt.repos.intel.com/oneapi/dists/all/main/binary-amd64/Packages -o amd64-packages
curl https://apt.repos.intel.com/oneapi/dists/all/main/binary-all/Packages -o all-packages

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

@@ -3,6 +3,7 @@
, lib
, gcc
, clangOmpss2Unwrapped
, writeShellScript
, openmp ? null
, wrapCCWith
, llvmPackages_latest
@@ -37,10 +38,7 @@ let
inherit gcc;
cc = clangOmpss2Unwrapped;
gccVersion = with versions; let v = gcc.version; in concatStringsSep "." [(major v) (minor v) (patch v)];
in wrapCCWith {
inherit cc bintools;
# extraPackages adds packages to depsTargetTargetPropagated
extraPackages = optional (openmp != null) openmp;
extraBuildCommands = ''
echo "-target ${targetConfig}" >> $out/nix-support/cc-cflags
echo "-B${gcc.cc}/lib/gcc/${targetConfig}/${gccVersion}" >> $out/nix-support/cc-cflags
@@ -57,14 +55,50 @@ in wrapCCWith {
echo "--gcc-toolchain=${gcc}" >> $out/nix-support/cc-cflags
wrap clang++ $wrapper $ccPath/clang++
'' + optionalString (openmp != null) ''
echo "export OPENMP_RUNTIME=${ompname}" >> $out/nix-support/cc-wrapper-hook
'' + optionalString (ompss2rt != null) ''
echo "export OMPSS2_RUNTIME=${rtname}" >> $out/nix-support/cc-wrapper-hook
echo "export ${homevar}=${ompss2rt}" >> $out/nix-support/cc-wrapper-hook
'' + optionalString (ompss2rt != null && ompss2rt.pname == "nodes") ''
echo "export NOSV_HOME=${ompss2rt.nosv}" >> $out/nix-support/cc-wrapper-hook
'';
}
envExports = lib.optionalString (openmp != null) ''
echo "export OPENMP_RUNTIME=${ompname}" >> $out/nix-support/cc-wrapper-hook
'' + optionalString (ompss2rt != null) ''
echo "export OMPSS2_RUNTIME=${rtname}" >> $out/nix-support/cc-wrapper-hook
echo "export ${homevar}=${ompss2rt}" >> $out/nix-support/cc-wrapper-hook
'' + optionalString (ompss2rt != null && ompss2rt.pname == "nodes") ''
echo "export NOSV_HOME=${ompss2rt.nosv}" >> $out/nix-support/cc-wrapper-hook
'';
extraPackages = optional (openmp != null) openmp;
wrappedCC = wrapCCWith {
# extraPackages adds packages to depsTargetTargetPropagated
inherit cc bintools extraPackages;
extraBuildCommands = extraBuildCommands + envExports;
};
resetIntelCCFlags = let tconf = builtins.replaceStrings ["-"] ["_"] targetConfig;
in writeShellScript "remove-intel.sh" ''
if [ "''${NIX_CC_WRAPPER_INTEL:-0}" = 1 ]; then
unset NIX_CFLAGS_COMPILE_${tconf}
unset NIX_CC_WRAPPER_FLAGS_SET_${tconf}
if (( "''${NIX_DEBUG:-0}" >= 1 )); then
echo "ompss2: cleaned NIX_CFLAGS_COMPILE_${tconf} (invokation from intel compiler detected)"
fi
fi
'';
intelExtraBuildCommands = ''
sed -i 's|# Flirting.*|source ${resetIntelCCFlags}\n\n&|' $out/bin/clang
sed -i 's|# Flirting.*|source ${resetIntelCCFlags}\n\n&|' $out/bin/clang++
'';
wrappedCCIntel = wrapCCWith {
inherit cc bintools extraPackages;
# extraPackages adds packages to depsTargetTargetPropagated
extraBuildCommands = intelExtraBuildCommands + envExports;
};
in wrappedCC.overrideAttrs (oldAttrs: {
passthru = oldAttrs.passthru // {
forIcpx = wrappedCCIntel;
};
})

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

91
pkgs/onemath/default.nix Normal file
View File

@@ -0,0 +1,91 @@
{
lib,
fetchFromGitHub,
cmake,
withCFlags,
intelPackages,
mklSupport ? true,
config,
cudaSupport ? config.cudaSupport,
cudaPackages ? { },
rocmSupport ? config.rocmSupport,
hipTargets ? null, # only one target at a time supported
rocmPackages ? { },
}:
let
# rocmSupport is not enough, we need a specific target
enableHip = rocmSupport && hipTargets != null;
stdenv = withCFlags (lib.optionals cudaSupport [
"--cuda-path=${cudaPackages.cudatoolkit}"
]) intelPackages.stdenv;
in
# at least one backend has to be enabled
assert mklSupport || cudaSupport || enableHip;
stdenv.mkDerivation rec {
pname = "oneMath";
version = "0.9";
src = fetchFromGitHub {
owner = "uxlfoundation";
repo = "oneMath";
rev = "v${version}";
sha256 = "sha256-jVcrpne6OyOeUlQHg07zZXEyFXvEGCYW88sWnYgEeu8=";
};
cmakeFlags = [
(lib.cmakeBool "ENABLE_MKLCPU_BACKEND" mklSupport)
(lib.cmakeBool "ENABLE_MKLGPU_BACKEND" mklSupport)
(lib.cmakeBool "ENABLE_CUBLAS_BACKEND" cudaSupport)
(lib.cmakeBool "ENABLE_CUFFT_BACKEND" cudaSupport)
(lib.cmakeBool "ENABLE_CURAND_BACKEND" cudaSupport)
(lib.cmakeBool "ENABLE_CUSOLVER_BACKEND" cudaSupport)
(lib.cmakeBool "ENABLE_CUSPARSE_BACKEND" cudaSupport)
(lib.cmakeBool "ENABLE_ROCBLAS_BACKEND" enableHip)
(lib.cmakeBool "ENABLE_ROCFFT_BACKEND" enableHip)
(lib.cmakeBool "ENABLE_ROCSOLVER_BACKEND" enableHip)
(lib.cmakeBool "ENABLE_ROCRAND_BACKEND" enableHip)
(lib.cmakeBool "ENABLE_ROCSPARSE_BACKEND" enableHip)
(lib.cmakeBool "BUILD_FUNCTIONAL_TESTS" false)
(lib.cmakeBool "BUILD_EXAMPLES" false)
]
++ lib.optionals enableHip [
(lib.cmakeFeature "HIP_TARGETS" hipTargets)
];
nativeBuildInputs = [ cmake ];
buildInputs =
lib.optionals (mklSupport) [
intelPackages.mkl
intelPackages.tbb
]
++ lib.optionals (enableHip) [
rocmPackages.rocmPath
rocmPackages.rocblas
rocmPackages.rocfft
rocmPackages.rocsolver
rocmPackages.rocrand
rocmPackages.rocsparse
]
++ lib.optionals (cudaSupport) [
(lib.getDev cudaPackages.cuda_cudart)
cudaPackages.cudatoolkit
cudaPackages.libcublas
cudaPackages.libcurand
cudaPackages.libcufft
cudaPackages.libcusparse
cudaPackages.libcusolver
];
}

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

@@ -21,8 +21,8 @@
useGit ? false,
gitUrl ? "git@gitlab-internal.bsc.es:task-awareness/pocl/pocl.git",
gitBranch ? "new-device",
gitCommit ? "dd10c2221b31223cbb796182df6a07f11c7541f5",
gitBranch ? "feat/nosv",
gitCommit ? "556542309fc3c5900cf05dae5b41d200cd3de6a0",
staticLLVM ? true,
enableICD ? true,
@@ -248,7 +248,7 @@ stdenv.mkDerivation (finalAttrs: {
leixb
jansol
xddxdd
bsc.maintainers.leixb
bsc.abonerib
];
platforms = platforms.linux ++ platforms.darwin;
};

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

@@ -1,72 +0,0 @@
{
backendStdenv,
fetchFromGitHub,
automake,
autoconf,
libtool,
gnumake,
autoreconfHook,
boost,
cudatoolkit,
libcublas,
cuda_cudart,
useGit ? false,
gitUrl ? "git@gitlab-internal.bsc.es:task-awareness/tacuda/tacuda.git",
gitBranch ? "main",
gitCommit ? "35234f9445e6149a2bd38d119841e2485d6ee05e",
}:
let
release_ver = "2.1.0";
release = {
version = release_ver;
src = fetchFromGitHub {
owner = "bsc-pm";
repo = "tacuda";
rev = release_ver;
hash = "sha256-Cj3EiLVJSLvRv0ydeg7Vp4SpkniEqHkcWF+YOJQ8EcM=";
};
};
git = rec {
version = src.shortRev;
src = builtins.fetchGit {
url = gitUrl;
ref = gitBranch;
rev = gitCommit;
};
};
source = if (useGit) then git else release;
in
backendStdenv.mkDerivation {
pname = "tacuda";
inherit (source) src version;
enableParallelBuilding = true;
separateDebugInfo = true;
strictDeps = true;
nativeBuildInputs = [
autoreconfHook
automake
autoconf
libtool
gnumake
];
patches = [ ./fix_config.patch ];
configureFlags = [ "--with-cuda-include=${cudatoolkit}/include" ];
buildInputs = [
boost
libcublas
cuda_cudart
];
}

View File

@@ -1,13 +0,0 @@
diff --git a/m4/cuda.m4 b/m4/cuda.m4
index 23f5c94..8f9b534 100644
--- a/m4/cuda.m4
+++ b/m4/cuda.m4
@@ -40,7 +40,7 @@ search_libs="cuda cublas cudart"
required_libs=""
m4_foreach([function],
- [cuInit,
+ [
cublasSgemm,
cudaStreamCreate,
cudaLaunchKernel,

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

@@ -1,46 +0,0 @@
{
stdenv,
automake,
autoconf,
libtool,
gnumake,
boost,
mpi,
gcc,
autoreconfHook,
ocl-icd,
opencl-headers,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "taopencl";
version = finalAttrs.src.shortRev;
src = builtins.fetchGit {
url = "git@gitlab-internal.bsc.es:task-awareness/taopencl/taopencl.git";
ref = "master";
rev = "c3b7b32ae8fa4af7ceff598532a881f8f1490aaf";
};
enableParallelBuilding = true;
separateDebugInfo = true;
configureFlags = [
"--with-opencl-lib=${ocl-icd}/lib"
"--with-opencl-include=${opencl-headers}/include"
];
buildInputs = [
autoreconfHook
automake
autoconf
libtool
gnumake
boost
mpi
gcc
];
dontDisableStatic = true;
hardeningDisable = [ "all" ];
})

95
pkgs/tasycl/default.nix Normal file
View File

@@ -0,0 +1,95 @@
{
lib,
stdenv,
autoconf,
automake,
autoreconfHook,
boost,
fetchFromGitHub,
gnumake,
libtool,
withCFlags,
useIntel ? true,
adaptivecpp ? null,
intelPackages ? null,
useGit ? false,
gitUrl ? "git@gitlab-internal.bsc.es:task-awareness/tasycl/tasycl.git",
gitBranch ? "main",
gitCommit ? "78f98dcf60a66e0eaa3b4ebcf55be076bec64825",
}:
assert !useIntel -> adaptivecpp != null;
assert useIntel -> intelPackages != null;
let
variant = if useIntel then "intel" else "acpp";
syclStdenv = withCFlags [ "-O3" ] (if useIntel then intelPackages.stdenv else stdenv);
release = rec {
version = "2.1.0";
src = fetchFromGitHub {
owner = "bsc-pm";
repo = "tasycl";
rev = version;
hash = "sha256-0kXnb0lHeQNHR27GTLbJ8xbiICLU8k2+FqEnnFSrzzo=";
};
};
git = rec {
version = src.shortRev;
src = builtins.fetchGit {
url = gitUrl;
ref = gitBranch;
rev = gitCommit;
};
};
source = if (useGit) then git else release;
in
syclStdenv.mkDerivation {
pname = "tasycl-${variant}";
inherit (source) src version;
enableParallelBuilding = true;
separateDebugInfo = true;
nativeBuildInputs = [
autoreconfHook
automake
autoconf
libtool
gnumake
];
buildInputs = [
boost
];
configureFlags = lib.optionals (!useIntel) [
"CXX=${lib.getExe adaptivecpp}"
];
# add symlinks so we can explicitly link with tasycl-intel / tasycl-acpp
postInstall = ''
pushd $out/lib
for i in libtasycl* ; do
ln -s "$i" "''\${i/tasycl/tasycl-${variant}}"
done
popd
'';
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

@@ -1,25 +1,29 @@
age-encryption.org/v1
-> ssh-ed25519 AY8zKw /gmhFOFqOs8IobAImvQVKeM5Y6k0FpuR61/Cu5drVVI
g9FXJg2oIoien0zJ70FWHwSTM8SBwbpS188S3Swj7EM
-> ssh-ed25519 sgAamA opPjlWPhSiI0Rd5l7kd204S5FXFLcQcQftyKb7MDmnU
3XrRDVnglCP+vBwvfd1rP5gHttsGDHyXwbf10a8/kKY
-> ssh-ed25519 HY2yRg QKZbubM76C3tobPoyCFDRclA9Pzb2fC7s4WOoIgdORc
K5kckU0KhQFTE6SikJXFJgM41Tco5+VqOsaG0qLrY1Q
-> ssh-ed25519 fw2Xhg +ohqts8dLFjvdHxrGHcOGxU0dm+V3N//giljHkobpDM
jR/UzGrfS9lrJ/VeolKLxfzeJAf2fIB2pdIn/6ukqNk
-> ssh-ed25519 tcumPQ 3DPkDPIQQSVtXSLzIRETsIyXQ0k1o18Evn6vf+l/6R8
bLXF62OmJjnOT1vvgq3+AcOKKSG5NonrK5EqCVc0Mwo
-> ssh-ed25519 JJ1LWg 2Wefc7eLolMU5InEmCNTq21Mf71mI0a2N1HgDrlHvy4
qXFW9CQBnrzubZ0mzS0Io2WGRrwGBkmeYndBTcZn/fM
-> ssh-ed25519 cDBabA oiH36AoIt/fFFYgnoxtH7OoetP+2/wjtn8qo3RJDSHc
qKmkxy1aZGP4ZwC0iH7n7hiJ0+rFQYvjQb5O1a1Z0r4
-> ssh-ed25519 cK5kHw bX3RtO5StMejUYWAaA37fjHA5nO7Xs1vWDQk3yOjs2o
Egxmcf8FKAd+E5hMLmhV1yQsCo5rJyUazf1szOvpTAM
-> ssh-ed25519 CAWG4Q oKqqRDJH0w8lsoQBQk0w8PO+z5gFNmSaGBUSumvDp1I
m1zWp9MfViAmtpbJhqOHraIokDaPKb0DvvO4vAGCTWI
-> ssh-ed25519 xA739A G26kPOz6sbFATs+KAr7gbDvji13eA1smFusQAOJXMwA
Sppvz7A103kZoNxoGsd6eXeCvVh7mBE2MRwLFj9O1dY
-> ssh-ed25519 MSF3dg 55ekNcp+inbUd+GQ/VZ7BoBASaJ8YDqF74CVXy1PUxQ
aTHLLAbzQPWWld/OT3BKebc6FcmsqMTaWCPBGm1UHic
--- mVkAMnI9XQhS3fMiFuuXP/yLR9wEG9+Rr8pA4Uc0avY
<04>DU <20><>s<EFBFBD><73><EFBFBD><EFBFBD>j<EFBFBD><6A>M<EFBFBD><4D>$<24>[<5B>M<EFBFBD><4D><EFBFBD><03>[_<>K7s<37>ju<>v<EFBFBD>D<EFBFBD>4<EFBFBD>g<EFBFBD><67>܄3<>Gn<47><6E><EFBFBD> ɽ<>P<EFBFBD>7~rZs<><73>
-> ssh-ed25519 AY8zKw Crgof1PMHzv3jBw8VeJAst6FKSoyqPFdANFpf79CAgo
7fagE5BmlWdTsdY/i3RbExu1KBcjW1LQXbYwu6chxlk
-> ssh-ed25519 sgAamA tGRCaK8mjvz65YziXjRcjMOHIRoyGNJFzBEEbivXPDo
YLzE5a3J81r+gzkfZIeh9gS+mXzMooC82tBbZ+C3C8o
-> ssh-ed25519 HY2yRg +vhO1/vdGPM1JnZRsvVnViFWaFWUZ7MIqvWdePivkxA
2K+JdN82DTeGh9QwZBTaghg8C5BCLoEsOgTCM64PU28
-> ssh-ed25519 fw2Xhg NHDn0dq32I/AVdUZlpzBX6retlEYEUipde7A9R90qW4
SJO78ooqEwfHlBRW+YCzgSQJb1JHNo8jz37t3qvLClE
-> ssh-ed25519 G5LX5w d4HfLzI2623artkR2FIfRJgr5yb2BKZJUWqPnwOWDCk
Kh50QESJZSjaJPyp3xroHGn0fD5pPNEYgKkDdqxGpjs
-> ssh-ed25519 tcumPQ wQyOKtT15Qezs3cyv5/xxIPVD7Jyk6N6ZLkfxxBHLTo
rKlRBjJdfDVT6U8211+ssFF8yY9yRs1u3GhCSvsw2oE
-> ssh-ed25519 JJ1LWg 98tF1MdA244xNny4w3RnMFuubf4WcuQaZf2bN2Uq8Qc
MA1Xh1H9vHisVYdqkxNeBkngtn8cYuT2eSimvooIXYo
-> ssh-ed25519 cDBabA imJ0rXLQETELP7yo3sArhqA9nJwY+S6gkC7tA7CJsQA
pKMHW/KDAoEj5ZD64VKekg6et9hlS2PKSgDw3eB3eu8
-> ssh-ed25519 WY7yGw +2g5021/02HvLxLqq42ynr6qKgOKJ3J5GgB1a1bmFXg
fYvj52R6bM6ngPOZ2lwVezTJnx+8LJBbdnaapKKbyd0
-> ssh-ed25519 cK5kHw fLZ6yF3NggJ724rjYqhs5ZZh1xUExuK+ITAyqONluzk
NS9OMX70XEHrbPQnmC4KB/eoiHChIb8DwDLYJiwOLUU
-> ssh-ed25519 CAWG4Q tVduE/wMzdfS+DjNbU3Q4blNhL/A63IehNSZGJkJjD0
jEBB5zG+gLA/88YF+KqWQsNH7lfCsWNvAkrgfbescFs
-> ssh-ed25519 xA739A ZhFvev77I+YOl1YSHKn2ZcEvGoLjWOILufjd4q/k8HM
YXEtHHtjPQlgZW60zHgHm7CLI6vYiRo+AM8QERL9tCg
-> ssh-ed25519 MSF3dg 9DvLNheBU1vlfW2zNNxBrGnJ6k4P5ox7s+OGKlgRdyQ
wseHfLGHz0huNi5sZsNOfeNkm6Kjjx0SZ8lK4/oXtUQ
--- bnJE+14onuSla0XmckD4z/wChWGZh6exbkcbyhcmNYU
<EFBFBD><EFBFBD>t<>N<><10>U<EFBFBD>wi2<69><32>-<2D>iV'(<1E>IF<49><46> S<><53>xs/s<><73> <09><>NDm<44>Q<EFBFBD><51><EFBFBD>o<EFBFBD><6F><EFBFBD><EFBFBD>wZv<7F><76>.\

Binary file not shown.

Binary file not shown.

View File

@@ -1,13 +1,13 @@
age-encryption.org/v1
-> ssh-ed25519 HY2yRg U2KQWviZIVNemm9e8h7H+eOzoYNxXgLLS3hsZLMAuGk
6n5dH1McNzk3rscP4v2pqZYDWtUFMd15rZsEd/mqIFM
-> ssh-ed25519 cK5kHw Ebrj/cpz1cFWAYAV9OxgyyH85OEMUnfUIV66p7jaoFY
6J7hWqODtS/fIF4BpxhxbrxZq5vbolvbLqRKqazT02M
-> ssh-ed25519 CAWG4Q mXqoQH9ycHF7u0y8mazCgynHxNLxTnrmQHke+2a5QCc
mq6PdSF+KOqthuXwzTCsOQsi5KG0z1wHUck+bSTyOBY
-> ssh-ed25519 xA739A TADeswueqDEroZWLjMw3RDNwVQ2xRD+JUMVZENovn0M
KFlnSjVFbjc+ZsbY8Ed7edC5B01TJGzd/dSryiLArPc
-> ssh-ed25519 MSF3dg Pq+ZD8AqJGDHDbd4PO1ngNFST8+6C2ghZkO/knKzzEc
wyiL/u38hdQMokmfTsBrY7CtYwc+31FG4EDaqVEn31U
--- 1z4cOipayh0zYkvasEVEvGreajegE/dqBV7b6E7aFh0
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>R<EFBFBD>@<40>/i<>I'<27><><EFBFBD>Nx<4E>r"<1D>`<1E>O<EFBFBD><4F><EFBFBD>y<><79>8<EFBFBD><38> \/<2F><>I<19><17>D<EFBFBD>`<60>ߓ<EFBFBD><DF93><EFBFBD><1E><04>uy<75><79><EFBFBD>:9Lt<4C><1D><><EFBFBD>؋<EFBFBD><D88B><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>AU<41><55><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>`<60>;<3B>q8<71>GLU#<23>i<EFBFBD>y<EFBFBD><79>i<03>ڜ
-> ssh-ed25519 HY2yRg eHM55QsHK1ca9b5nP3EoVUZYu0w2d4B5tkilNK0j/lw
6Na6lkMe0fOd7+vNP1fLIaVEQDUw5m65Wh8jUH1I6C0
-> ssh-ed25519 cK5kHw 0ekhoBYwF7OSWwn4P5f/J4gXb9UHJAWGKV0yI7HCzzE
2Q+Tt5jXAB9ip9jf1z+jeM4FSiqd1w5DNtbqtacuOcM
-> ssh-ed25519 CAWG4Q Jmw4v9efOFXHjjNky96q/d6vGBP5dNM4wK9zoGrwOh8
u5I17wcIq8/2ARWckDXsYckhfX0jWE4AEm5mip/KHws
-> ssh-ed25519 xA739A 10pPeC2YG9DJzaQlt7p+fGo27VDiL2dN6JmvY2npcUw
4aRV8DekYeL9HagGWgOSjlYnPKmYdKZH8Aw4lRdm+r8
-> ssh-ed25519 MSF3dg hDwIE3Su6cN3sq2E5v/oy6vTNfxTT1ZPts85//gIhwY
aoiaGjQYJB1ededhIuVBCKDRLIOVThWz1pSTvg65J3Y
--- OYPAGb5U/nwLOIV5VchSvxhChjNnwzbEgU9glSkWCl4
<EFBFBD>=<3D><><EFBFBD>c<EFBFBD>WȟJSaІ&<26><1F>ቧ)E<> <0B> C<><43>J~u<>c<63><7F>2<EFBFBD><32>v<EFBFBD><76><EFBFBD><03><>s<EFBFBD><73><EFBFBD>vf<76><10><>X7(<28>~<7E><1A>=XCi;<3B>״<EFBFBD><><DFA2><EFBFBD>ܣ<EFBFBD><10><><07>ɳCe<43>D;;X*<2A>3<EFBFBD>i<EFBFBD><69>r<EFBFBD>Em<45><6D><

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -1,14 +1,13 @@
age-encryption.org/v1
-> ssh-ed25519 G5LX5w SRJhNenoQXbT1FgX3TMPnVH5P6oe2eHot+M1YsEjsEk
hfTSLgKi98Eh7JK5o7x2POpTEtQlQCpEa3keUFYCuME
-> ssh-ed25519 cK5kHw z5TwWJTkvx7HztjXHJW/aCOtOfPrQaLP0gyIT7rXcyU
b4NCpHfasgvkLLr+6LcWUl60p59aSNnfp3bl2OFYXo0
-> ssh-ed25519 CAWG4Q 4VpS1/OnFe8nxcQbRTKNhjsh/ZQ5cbhSMXwK/jjQ+3o
WF9wvOkqVml4UcEzyzeumKuUwCwwr2zvKLMg+PCB8nk
-> ssh-ed25519 xA739A 67FhuJ070jBVMt/xbKHWhfri6iIm0FyaFvzQabsvFBM
1G5/913dDv/r/6p1x/c5YiUnZzrX/LvIj33KW+PN0KU
-> ssh-ed25519 MSF3dg Bj/yB4N2wkyHCHC22tcjjJAA4ebSamN0Z4UVX3ZnryI
6D/ZgTs+j+MGDAbPU5zyK0i9zN6tQy68IcOnQZ27mYg
--- 169erk3ICSYLs4FPEuXCn7QlekWhsmSn0Lr+/R14I5Q
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><05>ҽ3<D2BD>s<EFBFBD>
w<EFBFBD><EFBFBD>4D<EFBFBD><EFBFBD>b.<2E><><EFBFBD>"|<7C><><EFBFBD>)"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;<3B>.<2E>ɫ7)<29>LeC<05>=S؟
-> ssh-ed25519 G5LX5w /9lcJOXC9CN02+XLswUaJ0H7jU6Xhjd8Xg4+KY0l1Vc
fCLzsLc9zrocM8SHOKyZwt6eUEr8r1WLug9RLi63KU0
-> ssh-ed25519 cK5kHw 1qza6h2NRSs4g8LYdFU7E+Dn1CgdtCU7DPdYInP1GwM
/6uk7pTFkNTRTI7nA+x4y4CyOBVQVXX2lnpOg3ktPe4
-> ssh-ed25519 CAWG4Q o+vyzcejSaNVYPSGzzOdzaqPByZ6zA1uaJf4KOg+wQA
wfZmWrDSfRV8C+Hu+SeZDcomf/qigBqxuQK77SfnuEo
-> ssh-ed25519 xA739A +rBsOC+IBE3lmc/pfrziftLIqMSyaGMsggRjC5Pqwl0
xa7ulLz2+YC3g2hu7e9XhRYDIUb2sriaaigJRYF2oB8
-> ssh-ed25519 MSF3dg TK6PmKjjQt8ni0mJLCt7P41lUsgimlj3o5Q6n3N+DE4
ne+s3ctcg8cBjY06LY2lrW7wcxomvKHxu6MlirEA8Kg
--- eorg2ckkUZ1Ogi4iTTg2MoiVBwl1F0RCmH2D8N1d1So
<EFBFBD><EFBFBD><EFBFBD>8<1C><><EFBFBD><EFBFBD><EFBFBD><12>i<17>$]K<>J=2Z<1D><>ӼF<D3BC>][<14><><EFBFBD>8<EFBFBD><38>ޤ<12> <09>=<3D><>LD/<2F>gz

Binary file not shown.

View File

@@ -1,14 +1,13 @@
age-encryption.org/v1
-> ssh-ed25519 cDBabA heyW9/cxgwFX9IexQIXjAQDWGQPNcMXcArQp2Rxsqx4
o9MQ7EH8PDDjsJdpH9F3Xq2zUoaDAJQlfFmYucSFs6Y
-> ssh-ed25519 cK5kHw Sza4pos7K3qW3omEeyidI/jszJNf9smemSZnUJfCIww
D6vazXki7hIYraIuSiGPS+FPbkFUwHhHWDf52OhEIMg
-> ssh-ed25519 CAWG4Q YexIHueOIMmIN8JIDyNUOKBkyz/k18HqV3hTXh48KlM
xh8UJzzWT6ByN+Dpn4JrMNsjGC/uc/v6LynwjBDz9NQ
-> ssh-ed25519 xA739A KySG3TXdqfCMUkVEDGa74B0op745s3XGYxFLyAXSQAc
5EI/yb5ctW9Qu18bHm3/sK97kwGcKzzmWvPSCWm89XA
-> ssh-ed25519 MSF3dg MNxnNj0fHmri8ophexXPNjRUBUWrzcuk5S1mucxUMTE
GVFWXtISEU8ZmlwL4nh4weAgfGrt2GHX0DTzbpS6zg8
--- UdrqkYG2ZApAuwdZeNhC50NP2rkD/Ol6y8nJa4RHx7Y
<EFBFBD>ܻ<EFBFBD>m(<28><><EFBFBD>><3E>H<48>Y87<><37>G<0F>+*<12><><EFBFBD><EFBFBD>9V<>.<2E><><EFBFBD><EFBFBD><03><><EFBFBD>p<EFBFBD>Oo<4F>=+哇<>P0<50><30>{<7B>)<29><17><><EFBFBD><EFBFBD>><3E>z3P^
u
-> ssh-ed25519 cDBabA So/Tqwdwd7G0PbE4RwH2qDrNcdqTkhFjF4IJrLKKpkM
MEA5dzlUeFXm3pa+ndxrcE0ZWdO00Xf98+Q8U9LZ+cQ
-> ssh-ed25519 cK5kHw sCHD/hHBOfMBUQXkLG3MBPNC4ebLOXW37OlF/C8FEjU
4TFbKoy23Ic2vteXZ02fMrFxyb4NxyWaSo5I8dn48mI
-> ssh-ed25519 CAWG4Q KYGPAXTx8H5cBC3YIBxi5B7OeF15C9rEIPFCcG0vEDw
9LC2Zvp1Oiau1/hfPf+nJknl6BUSr+lzTn6TozZNxJg
-> ssh-ed25519 xA739A hpvNBHPgYRtUx0HyUAdCW8s7QTmGyPXwzRHb8qYoeG0
QkUZINY7Fr7HpyY6lbIMcP+hGO3oCmLL6N+yDN4weyk
-> ssh-ed25519 MSF3dg P9TmEfXS+hyxsbVKja58UWAFpad0ZS3LhwrMkLnSNAY
hiHuh7HhoYwHi2KFbCczXJoF3On9eqjD1Wsp9Q1NW/w
--- SN3peoDvjXuD/Q4DdebQFam1CE22NyGZlMmnKyCTuX8
s<0F><><14><>&׳֦<D7B3><D6A6><EFBFBD><EFBFBD>}<7D>#In0&<26><1F>{<7B>1<EFBFBD><31>.

Binary file not shown.

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

@@ -0,0 +1,93 @@
{
intelPackages,
writeText,
strace,
pocl,
}:
let
stdenv = intelPackages.stdenv;
hello_sycl = writeText "hello.cpp" ''
#include <sycl/sycl.hpp>
class hello_world;
int main(int argc, char** argv) try {
auto device_selector = sycl::default_selector_v;
sycl::queue queue(device_selector);
std::cout << "Running on: "
<< queue.get_device().get_info<sycl::info::device::name>()
<< std::endl;
queue.submit([&] (sycl::handler& cgh) {
auto os = sycl::stream{128, 128, cgh};
cgh.single_task<hello_world>([=]() {
os << "Hello World! (on device)\n";
});
});
return 0;
} catch (sycl::exception &e) {
std::cout << "SYCL exception: " << e.what() << std::endl;
return 0; // we expect to fail since no devices should be available;
}
'';
in
stdenv.mkDerivation (finalAttrs: {
version = "0.0.1";
name = "hello-sycl";
nativeBuildInputs = [
stdenv
strace
];
src = hello_sycl;
dontUnpack = true;
dontConfigure = true;
NIX_DEBUG = 0;
buildPhase = ''
cp $src hello.cpp
set -x
echo CXX=$CXX
command -v $CXX
$CXX -fsycl hello.cpp -o hello
./hello | tee test-output
set +x
'';
installPhase = ''
cp test-output $out
'';
passthru = {
withPocl = finalAttrs.finalPackage.overrideAttrs (old: {
nativeBuildInputs = old.nativeBuildInputs ++ [ pocl ];
env = (old.env or { }) // {
POCL_DEBUG = "error,warn";
POCL_CACHE_DIR = "/build/pocl_cache";
# 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 = ''
grep "Hello World! (on device)" $out
'';
});
withIntel = finalAttrs.finalPackage.overrideAttrs (old: {
env = (old.env or { }) // {
OCL_ICD_VENDORS = intelPackages.compiler + "/etc/OpenCL/vendors";
};
doInstallCheck = true;
installCheckPhase = ''
grep "Hello World! (on device)" $out
'';
});
};
})

View File

@@ -0,0 +1,112 @@
{
writeText,
intelPackages,
nodes,
nosv,
clangOmpss2Nodes,
strace,
pocl,
}:
let
hello_cpp = writeText "hello.cpp" ''
#include <cstdio>
#include <sycl/sycl.hpp>
int main(int argc, char** argv) try {
sycl::queue queue;
std::cout << "Running on: "
<< queue.get_device().get_info<sycl::info::device::name>()
<< std::endl;
#pragma oss task
queue.submit([&] (sycl::handler& cgh) {
auto os = sycl::stream{128, 128, cgh};
cgh.single_task<class hello_world>([=]() {
os << "Hello World! (on device)\n";
});
}).wait();
return 0;
} catch (sycl::exception &e) {
std::cout << "SYCL exception: " << e.what() << std::endl;
return 0; // we expect to fail since no devices should be available;
}
'';
in
intelPackages.stdenv.mkDerivation (finalAttrs: {
version = "0.0.1";
name = "hello-syclompss";
src = hello_cpp;
nativeBuildInputs = [
strace
nodes
nosv
];
passthru = {
withPocl = finalAttrs.finalPackage.overrideAttrs (old: {
nativeBuildInputs = old.nativeBuildInputs ++ [ pocl ];
env = (old.env or { }) // {
POCL_DEBUG = "error,warn";
POCL_CACHE_DIR = "/build/pocl_cache";
# 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 = ''
grep "Hello World! (on device)" $out
'';
});
withIntel = finalAttrs.finalPackage.overrideAttrs (old: {
env = (old.env or { }) // {
OCL_ICD_VENDORS = intelPackages.compiler + "/etc/OpenCL/vendors";
};
doInstallCheck = true;
installCheckPhase = ''
grep "Hello World! (on device)" $out
'';
});
};
dontUnpack = true;
dontConfigure = true;
# NODES requires access to /sys/devices to request NUMA information
requiredSystemFeatures = [ "sys-devices" ];
env.NODES_HOME = nodes;
NIX_DEBUG = 1;
buildPhase = ''
cp $src hello.cpp
set -x
echo CXX=$CXX
echo NODES_HOME=$NODES_HOME
command -v $CXX
$CXX -Wno-deprecated-declarations -fsycl \
-fsycl-host-compiler=${clangOmpss2Nodes.forIcpx}/bin/clang++ \
-fsycl-host-compiler-options='-Wno-deprecated-declarations -fompss-2=libnodes' \
-lnodes -lnosv \
$NODES_HOME/lib/nodes-main-wrapper.o \
hello.cpp -o hello
./hello | tee test-output
set +x
'';
installPhase = ''
cp test-output $out
'';
})

View File

@@ -0,0 +1,40 @@
{
intelPackages,
pocl,
runCommandWith,
symlinkJoin,
clinfo,
}:
runCommandWith
{
name = "sycl-ls";
inherit (intelPackages) stdenv;
runLocal = true;
derivationArgs = {
nativeBuildInputs = [ clinfo ];
env = {
OCL_ICD_VENDORS = symlinkJoin {
name = "vendors";
paths = builtins.map (p: p + "/etc/OpenCL/vendors") [
intelPackages.compiler
pocl
];
};
POCL_DRIVER_VERSION_OVERRIDE = "2025.20.6.0.04_224945";
POCL_CPU_VENDOR_ID_OVERRIDE = 32902;
POCL_DEBUG = "error,warn";
POCL_CACHE_DIR = "/build/pocl_cache";
HWLOC_SYNTHETIC = "node:1 core:1 pu:1";
};
};
}
# bash
''
clinfo -l | tee -a $out
sycl-ls | tee -a $out
test x6 = x"$(cat $out | wc -l)" # 2 lines per clinfo entry and 1 per sycl-ls
''