Compare commits
2 Commits
0ac3d3e515
...
robust-fet
| Author | SHA1 | Date | |
|---|---|---|---|
| 9b491e8d01 | |||
| 86edeba765 |
8
flake.lock
generated
8
flake.lock
generated
@@ -2,16 +2,16 @@
|
||||
"nodes": {
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1767634882,
|
||||
"narHash": "sha256-2GffSfQxe3sedHzK+sTKlYo/NTIAGzbFCIsNMUPAAnk=",
|
||||
"lastModified": 1752436162,
|
||||
"narHash": "sha256-Kt1UIPi7kZqkSc5HVj6UY5YLHHEzPBkgpNUByuyxtlw=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "3c9db02515ef1d9b6b709fc60ba9a540957f661c",
|
||||
"rev": "dfcd5b901dbab46c9c6e80b265648481aafb01f8",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixos-25.11",
|
||||
"ref": "nixos-25.05",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
inputs = {
|
||||
nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.11";
|
||||
nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.05";
|
||||
};
|
||||
|
||||
outputs = { self, nixpkgs, ... }:
|
||||
|
||||
@@ -57,18 +57,6 @@
|
||||
};
|
||||
};
|
||||
|
||||
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
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
address = "10.0.40.40";
|
||||
prefixLength = 24;
|
||||
} ];
|
||||
interfaces.ibs785.ipv4.addresses = [ {
|
||||
interfaces.ibp5s0.ipv4.addresses = [ {
|
||||
address = "10.0.42.40";
|
||||
prefixLength = 24;
|
||||
} ];
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
{ pkgs, ... }:
|
||||
{ pkgs, config, ... }:
|
||||
|
||||
{
|
||||
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
|
||||
ncdu config.boot.kernelPackages.perf ldns pv
|
||||
# From jungle overlay
|
||||
osumb nixgen
|
||||
];
|
||||
|
||||
@@ -139,7 +139,6 @@
|
||||
openssh.authorizedKeys.keys = [
|
||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKGt0ESYxekBiHJQowmKpfdouw0hVm3N7tUMtAaeLejK vincent@varch"
|
||||
];
|
||||
shell = pkgs.zsh;
|
||||
};
|
||||
|
||||
pmartin1 = {
|
||||
|
||||
@@ -5,5 +5,5 @@
|
||||
boot.kernelModules = [ "ipmi_watchdog" ];
|
||||
|
||||
# Enable systemd watchdog with 30 s interval
|
||||
systemd.settings.Manager.RuntimeWatchdogSec = 30;
|
||||
systemd.watchdog.runtimeTime = "30s";
|
||||
}
|
||||
|
||||
@@ -1,6 +1,11 @@
|
||||
{ pkgs, lib, ... }:
|
||||
{ config, 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;
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
address = "10.0.40.7";
|
||||
prefixLength = 24;
|
||||
} ];
|
||||
interfaces.ibs785.ipv4.addresses = [ {
|
||||
interfaces.ibp5s0.ipv4.addresses = [ {
|
||||
address = "10.0.42.7";
|
||||
prefixLength = 24;
|
||||
} ];
|
||||
|
||||
@@ -46,7 +46,7 @@
|
||||
address = "10.0.40.42";
|
||||
prefixLength = 24;
|
||||
} ];
|
||||
interfaces.ibs785.ipv4.addresses = [ {
|
||||
interfaces.ibp5s0.ipv4.addresses = [ {
|
||||
address = "10.0.42.42";
|
||||
prefixLength = 24;
|
||||
} ];
|
||||
|
||||
@@ -1,10 +1,3 @@
|
||||
{
|
||||
services.nixseparatedebuginfod2 = {
|
||||
enable = true;
|
||||
substituters = [
|
||||
"local:"
|
||||
"https://cache.nixos.org"
|
||||
"http://hut/cache"
|
||||
];
|
||||
};
|
||||
services.nixseparatedebuginfod.enable = true;
|
||||
}
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
address = "10.0.40.1";
|
||||
prefixLength = 24;
|
||||
} ];
|
||||
interfaces.ibs785.ipv4.addresses = [ {
|
||||
interfaces.ibp5s0.ipv4.addresses = [ {
|
||||
address = "10.0.42.1";
|
||||
prefixLength = 24;
|
||||
} ];
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
prefixLength = 24;
|
||||
} ];
|
||||
# Watch out! The OmniPath device is not in the same place here:
|
||||
interfaces.ibs801.ipv4.addresses = [ {
|
||||
interfaces.ibp129s0.ipv4.addresses = [ {
|
||||
address = "10.0.42.2";
|
||||
prefixLength = 24;
|
||||
} ];
|
||||
|
||||
@@ -27,7 +27,4 @@
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
# Allow gitea user to send mail
|
||||
users.users.gitea.extraGroups = [ "mail-robot" ];
|
||||
}
|
||||
|
||||
45
overlay.nix
45
overlay.nix
@@ -1,9 +1,8 @@
|
||||
final: /* Future last stage */
|
||||
prev: /* Previous stage */
|
||||
|
||||
with final.lib;
|
||||
|
||||
let
|
||||
lib = prev.lib;
|
||||
callPackage = final.callPackage;
|
||||
|
||||
bscPkgs = {
|
||||
@@ -12,9 +11,9 @@ let
|
||||
bench6 = callPackage ./pkgs/bench6/default.nix { };
|
||||
bigotes = callPackage ./pkgs/bigotes/default.nix { };
|
||||
clangOmpss2 = callPackage ./pkgs/llvm-ompss2/default.nix { };
|
||||
clangOmpss2Nanos6 = callPackage ./pkgs/llvm-ompss2/default.nix { useNanos6 = true; };
|
||||
clangOmpss2Nodes = callPackage ./pkgs/llvm-ompss2/default.nix { useNodes = true; useOpenmp = true; };
|
||||
clangOmpss2NodesOmpv = callPackage ./pkgs/llvm-ompss2/default.nix { useNodes = true; useOpenmpV = true; };
|
||||
clangOmpss2Nanos6 = callPackage ./pkgs/llvm-ompss2/default.nix { ompss2rt = final.nanos6; };
|
||||
clangOmpss2Nodes = callPackage ./pkgs/llvm-ompss2/default.nix { ompss2rt = final.nodes; openmp = final.openmp; };
|
||||
clangOmpss2NodesOmpv = callPackage ./pkgs/llvm-ompss2/default.nix { ompss2rt = final.nodes; openmp = final.openmpv; };
|
||||
clangOmpss2Unwrapped = callPackage ./pkgs/llvm-ompss2/clang.nix { };
|
||||
cudainfo = prev.callPackage ./pkgs/cudainfo/default.nix { };
|
||||
#extrae = callPackage ./pkgs/extrae/default.nix { }; # Broken and outdated
|
||||
@@ -30,13 +29,13 @@ let
|
||||
amd-uprof-driver = _prev.callPackage ./pkgs/amd-uprof/driver.nix { };
|
||||
});
|
||||
lmbench = callPackage ./pkgs/lmbench/default.nix { };
|
||||
# Broken and unmantained
|
||||
# mcxx = callPackage ./pkgs/mcxx/default.nix { };
|
||||
mcxx = callPackage ./pkgs/mcxx/default.nix { };
|
||||
meteocat-exporter = prev.callPackage ./pkgs/meteocat-exporter/default.nix { };
|
||||
mpi = final.mpich; # Set MPICH as default
|
||||
mpich = callPackage ./pkgs/mpich/default.nix { mpich = prev.mpich; };
|
||||
nanos6 = callPackage ./pkgs/nanos6/default.nix { };
|
||||
nanos6Debug = final.nanos6.override { enableDebug = true; };
|
||||
nix = callPackage ./pkgs/nix/default.nix { nix = prev.nix; };
|
||||
nixtools = callPackage ./pkgs/nixtools/default.nix { };
|
||||
nixgen = callPackage ./pkgs/nixgen/default.nix { };
|
||||
# Broken because of pkgsStatic.libcap
|
||||
@@ -49,17 +48,16 @@ let
|
||||
osumb = callPackage ./pkgs/osu/default.nix { };
|
||||
ovni = callPackage ./pkgs/ovni/default.nix { };
|
||||
ovniGit = final.ovni.override { useGit = true; };
|
||||
papi = callPackage ./pkgs/papi/default.nix { papi = prev.papi; };
|
||||
paraverKernel = callPackage ./pkgs/paraver/kernel.nix { };
|
||||
prometheus-slurm-exporter = prev.callPackage ./pkgs/slurm-exporter/default.nix { };
|
||||
#pscom = callPackage ./pkgs/parastation/pscom.nix { }; # Unmaintaned
|
||||
#psmpi = callPackage ./pkgs/parastation/psmpi.nix { }; # Unmaintaned
|
||||
slurm = import ./pkgs/slurm/default.nix { slurm = prev.slurm; };
|
||||
sonar = callPackage ./pkgs/sonar/default.nix { };
|
||||
stdenvClangOmpss2 = final.stdenv.override { cc = final.buildPackages.clangOmpss2; allowedRequisites = null; };
|
||||
stdenvClangOmpss2Nanos6 = final.stdenv.override { cc = final.buildPackages.clangOmpss2Nanos6; allowedRequisites = null; };
|
||||
stdenvClangOmpss2Nodes = final.stdenv.override { cc = final.buildPackages.clangOmpss2Nodes; allowedRequisites = null; };
|
||||
stdenvClangOmpss2NodesOmpv = final.stdenv.override { cc = final.buildPackages.clangOmpss2NodesOmpv; allowedRequisites = null; };
|
||||
stdenvClangOmpss2 = final.stdenv.override { cc = final.clangOmpss2; allowedRequisites = null; };
|
||||
stdenvClangOmpss2Nanos6 = final.stdenv.override { cc = final.clangOmpss2Nanos6; allowedRequisites = null; };
|
||||
stdenvClangOmpss2Nodes = final.stdenv.override { cc = final.clangOmpss2Nodes; allowedRequisites = null; };
|
||||
stdenvClangOmpss2NodesOmpv = final.stdenv.override { cc = final.clangOmpss2NodesOmpv; allowedRequisites = null; };
|
||||
tagaspi = callPackage ./pkgs/tagaspi/default.nix { };
|
||||
tampi = callPackage ./pkgs/tampi/default.nix { };
|
||||
upc-qaire-exporter = prev.callPackage ./pkgs/upc-qaire-exporter/default.nix { };
|
||||
@@ -99,19 +97,22 @@ let
|
||||
};
|
||||
};
|
||||
|
||||
# Load our custom lib functions with import, callPackage fails.
|
||||
lib' = import ./pkgs/lib.nix { lib = prev.lib; };
|
||||
|
||||
# For now, only build toplevel packages in CI/Hydra
|
||||
pkgsTopLevel = filterAttrs (_: isDerivation) bscPkgs;
|
||||
pkgsTopLevel = lib.filterAttrs (_: lib.isDerivation) bscPkgs;
|
||||
|
||||
# Native build in that platform doesn't imply cross build works
|
||||
canCrossCompile = platform: default: pkg:
|
||||
(isDerivation pkg) &&
|
||||
(lib.isDerivation pkg) &&
|
||||
# If meta.cross is undefined, use default
|
||||
(pkg.meta.cross or default) &&
|
||||
(meta.availableOn final.pkgsCross.${platform}.stdenv.hostPlatform pkg);
|
||||
(lib.meta.availableOn final.pkgsCross.${platform}.stdenv.hostPlatform pkg);
|
||||
|
||||
# For now only RISC-V
|
||||
crossSet = genAttrs [ "riscv64" ] (platform:
|
||||
filterAttrs (_: canCrossCompile platform true)
|
||||
crossSet = lib.genAttrs [ "riscv64" ] (platform:
|
||||
lib.filterAttrs (_: canCrossCompile platform true)
|
||||
final.pkgsCross.${platform}.bsc.pkgsTopLevel);
|
||||
|
||||
buildList = name: paths:
|
||||
@@ -127,21 +128,17 @@ let
|
||||
'';
|
||||
|
||||
pkgsList = buildList "ci-pkgs" (builtins.attrValues pkgsTopLevel);
|
||||
testsList = buildList "ci-tests" (collect isDerivation tests);
|
||||
testsList = buildList "ci-tests" (lib.collect lib.isDerivation tests);
|
||||
allList = buildList' "ci-all" [ pkgsList testsList ];
|
||||
# For now only RISC-V
|
||||
crossList = buildList "ci-cross"
|
||||
(filter
|
||||
(lib.filter
|
||||
(canCrossCompile "riscv64" false) # opt-in (pkgs with: meta.cross = true)
|
||||
(builtins.attrValues crossSet.riscv64));
|
||||
|
||||
in bscPkgs // {
|
||||
|
||||
lib = prev.lib // {
|
||||
maintainers = prev.lib.maintainers // {
|
||||
bsc = import ./pkgs/maintainers.nix;
|
||||
};
|
||||
};
|
||||
lib = lib';
|
||||
|
||||
# Prevent accidental usage of bsc-ci attribute
|
||||
bsc-ci = throw "the bsc-ci attribute is deprecated, use bsc.ci";
|
||||
|
||||
@@ -47,7 +47,6 @@ in
|
||||
inherit version;
|
||||
src = uprofSrc;
|
||||
dontStrip = true;
|
||||
strictDeps = true;
|
||||
phases = [ "installPhase" "fixupPhase" ];
|
||||
nativeBuildInputs = [ autoPatchelfHook radare2 ];
|
||||
buildInputs = [
|
||||
|
||||
@@ -18,9 +18,8 @@ in stdenv.mkDerivation {
|
||||
set +x
|
||||
'';
|
||||
hardeningDisable = [ "pic" "format" ];
|
||||
strictDeps = true;
|
||||
nativeBuildInputs = kernel.moduleBuildDependencies;
|
||||
patches = [ ./makefile.patch ./hrtimer.patch ./remove-wr-rdmsrq.patch ];
|
||||
patches = [ ./makefile.patch ./hrtimer.patch ];
|
||||
makeFlags = [
|
||||
"KERNEL_VERSION=${kernel.modDirVersion}"
|
||||
"KERNEL_DIR=${kernel.dev}/lib/modules/${kernel.modDirVersion}/build"
|
||||
|
||||
@@ -1,20 +0,0 @@
|
||||
diff --git a/inc/PwrProfAsm.h b/inc/PwrProfAsm.h
|
||||
index d77770a..c93a0e9 100644
|
||||
--- a/inc/PwrProfAsm.h
|
||||
+++ b/inc/PwrProfAsm.h
|
||||
@@ -347,6 +347,7 @@
|
||||
|
||||
#endif
|
||||
|
||||
+/*
|
||||
#define rdmsrq(msr,val1,val2,val3,val4) ({ \
|
||||
__asm__ __volatile__( \
|
||||
"rdmsr\n" \
|
||||
@@ -362,6 +363,7 @@
|
||||
:"c"(msr), "a"(val1), "d"(val2), "S"(val3), "D"(val4) \
|
||||
); \
|
||||
})
|
||||
+*/
|
||||
|
||||
#define rdmsrpw(msr,val1,val2,val3,val4) ({ \
|
||||
__asm__ __volatile__( \
|
||||
@@ -14,16 +14,19 @@
|
||||
, openblas
|
||||
, ovni
|
||||
, gitBranch ? "master"
|
||||
, gitURL ? "ssh://git@bscpm04.bsc.es/rarias/bench6.git"
|
||||
, gitCommit ? "bf29a53113737c3aa74d2fe3d55f59868faea7b4"
|
||||
, gitUrls ? [
|
||||
"ssh://git@bscpm04.bsc.es/rarias/bench6.git"
|
||||
"https://github.com/rodarima/bench6.git"
|
||||
]
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "bench6";
|
||||
version = "${src.shortRev}";
|
||||
|
||||
src = builtins.fetchGit {
|
||||
url = gitURL;
|
||||
src = lib.fetchGitMirror {
|
||||
urls = gitUrls;
|
||||
ref = gitBranch;
|
||||
rev = gitCommit;
|
||||
};
|
||||
@@ -59,7 +62,6 @@ stdenv.mkDerivation rec {
|
||||
];
|
||||
hardeningDisable = [ "all" ];
|
||||
dontStrip = true;
|
||||
strictDeps = true;
|
||||
|
||||
meta = {
|
||||
homepage = "https://gitlab.pm.bsc.es/rarias/bench6";
|
||||
|
||||
@@ -16,8 +16,6 @@ stdenv.mkDerivation {
|
||||
};
|
||||
nativeBuildInputs = [ cmake ];
|
||||
|
||||
strictDeps = true;
|
||||
|
||||
meta = {
|
||||
homepage = "https://github.com/rodarima/bigotes";
|
||||
description = "Versatile benchmark tool";
|
||||
|
||||
@@ -10,13 +10,10 @@
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
name = "cudainfo";
|
||||
src = ./.;
|
||||
strictDeps = true;
|
||||
nativeBuildInputs = [
|
||||
cudatoolkit # Required for nvcc
|
||||
autoAddDriverRunpath
|
||||
];
|
||||
buildInputs = [
|
||||
(lib.getOutput "static" cudaPackages.cuda_cudart) # Required for -lcudart_static
|
||||
cudatoolkit # Required for nvcc
|
||||
cudaPackages.cuda_cudart.static # Required for -lcudart_static
|
||||
autoAddDriverRunpath
|
||||
];
|
||||
installPhase = ''
|
||||
mkdir -p $out/bin
|
||||
@@ -26,7 +23,6 @@ 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
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
#, python3Packages
|
||||
, installShellFiles
|
||||
, symlinkJoin
|
||||
, enablePapi ? true
|
||||
, enablePapi ? stdenv.hostPlatform == stdenv.buildPlatform # Disabled when cross-compiling
|
||||
}:
|
||||
|
||||
let
|
||||
|
||||
@@ -33,7 +33,6 @@ stdenv.mkDerivation rec {
|
||||
};
|
||||
|
||||
enableParallelBuilding = true;
|
||||
strictDeps = true;
|
||||
|
||||
patches = [ ./rdma-core.patch ./max-mem.patch ];
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
, zlib
|
||||
, autoPatchelfHook
|
||||
, libfabric
|
||||
, gcc
|
||||
, gcc13
|
||||
, wrapCCWith
|
||||
}:
|
||||
|
||||
@@ -33,6 +33,8 @@ let
|
||||
maintainers = with lib.maintainers.bsc; [ abonerib ];
|
||||
};
|
||||
|
||||
gcc = gcc13;
|
||||
|
||||
v = {
|
||||
hpckit = "2023.1.0";
|
||||
compiler = "2023.1.0";
|
||||
@@ -128,7 +130,6 @@ let
|
||||
|
||||
phases = [ "installPhase" "fixupPhase" ];
|
||||
dontStrip = true;
|
||||
strictDeps = true;
|
||||
installPhase = ''
|
||||
mkdir -p $out/{bin,etc,lib,include}
|
||||
mkdir -p $out/share/man
|
||||
@@ -180,7 +181,6 @@ let
|
||||
];
|
||||
phases = [ "installPhase" "fixupPhase" ];
|
||||
dontStrip = true;
|
||||
strictDeps = true;
|
||||
|
||||
autoPatchelfIgnoreMissingDeps = [ "libhwloc.so.5" ];
|
||||
|
||||
@@ -224,7 +224,6 @@ let
|
||||
];
|
||||
phases = [ "installPhase" "fixupPhase" ];
|
||||
dontStrip = true;
|
||||
strictDeps = true;
|
||||
|
||||
autoPatchelfIgnoreMissingDeps = [ "libsycl.so.6" ];
|
||||
|
||||
@@ -292,7 +291,6 @@ let
|
||||
phases = [ "installPhase" "fixupPhase" ];
|
||||
|
||||
dontStrip = true;
|
||||
strictDeps = true;
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p $out/{bin,lib,include}
|
||||
@@ -381,7 +379,6 @@ let
|
||||
phases = [ "installPhase" "fixupPhase" ];
|
||||
|
||||
dontStrip = true;
|
||||
strictDeps = true;
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p $out/{bin,lib}
|
||||
|
||||
30
pkgs/lib.nix
Normal file
30
pkgs/lib.nix
Normal file
@@ -0,0 +1,30 @@
|
||||
{ lib }:
|
||||
|
||||
let
|
||||
# If not supported, fall back to tryEval, which will fail in the first case.
|
||||
safeCatchAll = if (builtins ? catchAll)
|
||||
then builtins.catchAll
|
||||
else e: (builtins.tryEval e) // { msg = ""; };
|
||||
in lib.extend (_: lib: {
|
||||
# Same as fetchGit but accepts a list of mirror urls
|
||||
fetchGitMirror = { urls, ... } @ args:
|
||||
let
|
||||
cleanArgs = lib.removeAttrs args [ "urls" ];
|
||||
fetchUrl = url: builtins.fetchGit (cleanArgs // { inherit url; });
|
||||
safeFetch = url: safeCatchAll (fetchUrl url);
|
||||
complain = url:
|
||||
let
|
||||
r = safeFetch url;
|
||||
in
|
||||
if (r.success) then r
|
||||
else lib.warn "cannot fetch ${url}, trying next
|
||||
mirror:${builtins.replaceStrings ["\n" ] ["\n> "] ("\n"+r.msg)}" r;
|
||||
fetchList = lib.map (url: complain url) urls;
|
||||
bad = throw "cannot fetch from any mirror";
|
||||
good = lib.findFirst (e: e.success) bad fetchList;
|
||||
in good.value;
|
||||
|
||||
maintainers = lib.maintainers // {
|
||||
bsc = import ./maintainers.nix;
|
||||
};
|
||||
})
|
||||
@@ -1,9 +1,9 @@
|
||||
{
|
||||
stdenv
|
||||
, llvmPackages_latest
|
||||
llvmPackages_latest
|
||||
, lib
|
||||
, fetchFromGitHub
|
||||
, cmake
|
||||
, bash
|
||||
, python3
|
||||
, perl
|
||||
, which
|
||||
@@ -11,6 +11,7 @@
|
||||
, libffi
|
||||
, zlib
|
||||
, pkg-config
|
||||
, gcc # needed to set the rpath of libstdc++ for clang-tblgen
|
||||
, enableDebug ? false
|
||||
, useGit ? false
|
||||
, gitUrl ? "ssh://git@bscpm04.bsc.es/llvm-ompss/llvm-mono.git"
|
||||
@@ -19,10 +20,7 @@
|
||||
}:
|
||||
|
||||
let
|
||||
llvmPackages = llvmPackages_latest;
|
||||
llvmStdenv = llvmPackages.stdenv;
|
||||
# needed to set the rpath of libstdc++ for clang-tblgen
|
||||
gcc = stdenv.cc;
|
||||
stdenv = llvmPackages_latest.stdenv;
|
||||
|
||||
release = rec {
|
||||
version = "2025.11";
|
||||
@@ -45,12 +43,11 @@ let
|
||||
|
||||
source = if (useGit) then git else release;
|
||||
|
||||
in llvmStdenv.mkDerivation {
|
||||
in stdenv.mkDerivation {
|
||||
pname = "clang-ompss2";
|
||||
inherit (source) src version;
|
||||
|
||||
enableParallelBuilding = true;
|
||||
strictDeps = true;
|
||||
|
||||
passthru = {
|
||||
CC = "clang";
|
||||
@@ -63,12 +60,13 @@ in llvmStdenv.mkDerivation {
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
bash
|
||||
cmake
|
||||
elfutils
|
||||
llvmPackages.lld
|
||||
perl
|
||||
llvmPackages_latest.lld
|
||||
pkg-config
|
||||
python3
|
||||
perl
|
||||
which
|
||||
zlib
|
||||
];
|
||||
@@ -99,13 +97,8 @@ in llvmStdenv.mkDerivation {
|
||||
cd build
|
||||
cmakeDir="../llvm"
|
||||
cmakeFlagsArray=(
|
||||
"-DLLVM_HOST_TRIPLE=${llvmStdenv.targetPlatform.config}"
|
||||
'' + (if "${llvmStdenv.targetPlatform.config}" == "riscv64-unknown-linux-gnu" then ''
|
||||
"-DLLVM_DEFAULT_TARGET_TRIPLE=riscv64-unknown-linux-gnu"
|
||||
"-DLLVM_TARGETS_TO_BUILD=RISCV"
|
||||
'' else ''
|
||||
"-DLLVM_HOST_TRIPLE=${stdenv.targetPlatform.config}"
|
||||
"-DLLVM_TARGETS_TO_BUILD=host"
|
||||
'') + ''
|
||||
"-DLLVM_BUILD_LLVM_DYLIB=ON"
|
||||
"-DLLVM_LINK_LLVM_DYLIB=ON"
|
||||
# Required to run clang-ast-dump and clang-tblgen during build
|
||||
@@ -114,8 +107,7 @@ in llvmStdenv.mkDerivation {
|
||||
"-DCMAKE_CXX_FLAGS_DEBUG=-g -ggnu-pubnames"
|
||||
"-DCMAKE_EXE_LINKER_FLAGS_DEBUG=-Wl,--gdb-index"
|
||||
"-DLLVM_LIT_ARGS=-sv --xunit-xml-output=xunit.xml"
|
||||
"-DLLVM_ENABLE_PROJECTS=clang;lld"
|
||||
"-DLLVM_ENABLE_RUNTIMES=compiler-rt"
|
||||
"-DLLVM_ENABLE_PROJECTS=clang;compiler-rt;lld"
|
||||
"-DLLVM_ENABLE_ASSERTIONS=ON"
|
||||
"-DLLVM_INSTALL_TOOLCHAIN_ONLY=ON"
|
||||
"-DCMAKE_INSTALL_BINDIR=bin"
|
||||
|
||||
@@ -3,61 +3,44 @@
|
||||
, lib
|
||||
, gcc
|
||||
, clangOmpss2Unwrapped
|
||||
|
||||
, openmp
|
||||
, useOpenmp ? false
|
||||
, openmpv
|
||||
, useOpenmpV ? false
|
||||
, nanos6
|
||||
, useNanos6 ? false
|
||||
, nodes
|
||||
, useNodes ? false
|
||||
|
||||
, openmp ? null
|
||||
, wrapCCWith
|
||||
, llvmPackages_latest
|
||||
, ompss2rt ? null
|
||||
}:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
getSplice = target: pkg: if pkg ? "__spliced" && pkg.__spliced ? target then pkg.__spliced."${target}" else pkg;
|
||||
getSpliceTargetTarget = getSplice "targetTarget";
|
||||
omp = if useOpenmp then openmp else if useOpenmpV then openmpv else null;
|
||||
ompss2rtUnspliced = if useNanos6 then nanos6 else if useNodes then nodes else null;
|
||||
ompss2rt = getSpliceTargetTarget ompss2rtUnspliced;
|
||||
usingNodesAndOmpv = omp != null && ompss2rt && (omp.pname == "openmp-v" && ompss2rt.pname == "nodes");
|
||||
sameNosvUnspliced = omp != null && ompss2rtUnspliced && omp.nosv == ompss2rtUnspliced.nosv;
|
||||
sameNosvSpliced = (getSpliceTargetTarget omp.nosv) == ompss2rt.nosv;
|
||||
usingNodesAndOmpv = (openmp.pname == "openmp-v" && ompss2rt.pname == "nodes");
|
||||
sameNosv = openmp.nosv == ompss2rt.nosv;
|
||||
in
|
||||
|
||||
assert assertMsg (usingNodesAndOmpv -> sameNosvUnspliced) "OpenMP-V and NODES must share the same nOS-V before splice";
|
||||
assert assertMsg (usingNodesAndOmpv -> sameNosvSpliced) "OpenMP-V and NODES must share the same nOS-V after splice";
|
||||
assert assertMsg (useOpenmp -> !useOpenmpV) "Either OpenMP or OpenMP-V may be enabled, but not both";
|
||||
assert assertMsg (useNanos6 -> !useNodes) "Either Nanos6 or NODES may be enabled, but not both";
|
||||
assert assertMsg (usingNodesAndOmpv -> sameNosv) "OpenMP-V and NODES must share the same nOS-V";
|
||||
|
||||
let
|
||||
homevar = if ompss2rt.pname == "nanos6" then "NANOS6_HOME" else "NODES_HOME";
|
||||
rtname = if ompss2rt.pname == "nanos6" then "libnanos6" else "libnodes";
|
||||
ompname = if omp.pname == "openmp-v" then "libompv" else "libomp";
|
||||
ompname = if openmp.pname == "openmp-v" then "libompv" else "libomp";
|
||||
|
||||
|
||||
# We need to replace the lld linker from bintools with our linker just built,
|
||||
# otherwise we run into incompatibility issues when mixing compiler and linker
|
||||
# versions.
|
||||
bintools-unwrapped = llvmPackages_latest.bintools-unwrapped.override {
|
||||
bintools-unwrapped = llvmPackages_latest.tools.bintools-unwrapped.override {
|
||||
lld = clangOmpss2Unwrapped;
|
||||
};
|
||||
bintools = llvmPackages_latest.bintools.override {
|
||||
bintools = llvmPackages_latest.tools.bintools.override {
|
||||
bintools = bintools-unwrapped;
|
||||
};
|
||||
targetConfig = stdenv.targetPlatform.config;
|
||||
inherit gcc;
|
||||
cc = clangOmpss2Unwrapped;
|
||||
gccVersion = with versions; let v = gcc.version; in concatStringsSep "." [(major v) (minor v) (patch v)];
|
||||
in (wrapCCWith {
|
||||
in wrapCCWith {
|
||||
inherit cc bintools;
|
||||
# extraPackages adds packages to depsTargetTargetPropagated
|
||||
extraPackages = optional (omp != null) omp;
|
||||
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
|
||||
@@ -73,15 +56,15 @@ in (wrapCCWith {
|
||||
|
||||
echo "--gcc-toolchain=${gcc}" >> $out/nix-support/cc-cflags
|
||||
|
||||
wrap ${targetConfig}clang++ $wrapper $ccPath/clang++
|
||||
wrap ${targetConfig}clang $wrapper $ccPath/clang
|
||||
wrap clang++ $wrapper $ccPath/clang++
|
||||
|
||||
'' + optionalString (omp != null) ''
|
||||
'' + 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}" >> $out/nix-support/cc-wrapper-hook
|
||||
echo "export NOSV_HOME=${ompss2rt.nosv}" >> $out/nix-support/cc-wrapper-hook
|
||||
'';
|
||||
}).overrideAttrs (prev: { passthru = (prev.passthru or {}) // { inherit ompss2rt; }; })
|
||||
}
|
||||
|
||||
|
||||
@@ -39,9 +39,7 @@ stdenv.mkDerivation rec {
|
||||
perl
|
||||
pkg-config
|
||||
python3
|
||||
];
|
||||
|
||||
buildInputs = lib.optionals enableNosv [
|
||||
] ++ lib.optionals enableNosv [
|
||||
nosv
|
||||
] ++ lib.optionals enableOvni [
|
||||
ovni
|
||||
@@ -56,7 +54,6 @@ stdenv.mkDerivation rec {
|
||||
dontStrip = enableDebug;
|
||||
|
||||
separateDebugInfo = true;
|
||||
strictDeps = true;
|
||||
|
||||
cmakeFlags = [
|
||||
"-DLIBOMP_OMPD_SUPPORT=OFF"
|
||||
@@ -74,28 +71,6 @@ 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;
|
||||
};
|
||||
|
||||
@@ -27,7 +27,6 @@ stdenv.mkDerivation rec {
|
||||
hardeningDisable = [ "all" ];
|
||||
|
||||
enableParallelBuilding = false;
|
||||
strictDeps = true;
|
||||
|
||||
preBuild = ''
|
||||
makeFlagsArray+=(
|
||||
|
||||
@@ -65,7 +65,6 @@ stdenv.mkDerivation rec {
|
||||
];
|
||||
|
||||
meta = {
|
||||
broken = true;
|
||||
homepage = "https://github.com/bsc-pm/mcxx";
|
||||
description = "C/C++/Fortran source-to-source compilation infrastructure aimed at fast prototyping";
|
||||
maintainers = with lib.maintainers.bsc; [ rpenacob ];
|
||||
|
||||
@@ -1,15 +1,12 @@
|
||||
{ python3Packages, lib }:
|
||||
|
||||
python3Packages.buildPythonApplication {
|
||||
python3Packages.buildPythonApplication rec {
|
||||
pname = "meteocat-exporter";
|
||||
version = "1.0";
|
||||
|
||||
pyproject = true;
|
||||
|
||||
src = ./.;
|
||||
|
||||
doCheck = false;
|
||||
strictDeps = true;
|
||||
|
||||
build-system = with python3Packages; [
|
||||
setuptools
|
||||
|
||||
@@ -53,7 +53,6 @@ in mpich.overrideAttrs (old: {
|
||||
'';
|
||||
|
||||
hardeningDisable = [ "all" ];
|
||||
strictDeps = true;
|
||||
|
||||
meta = old.meta // {
|
||||
maintainers = old.meta.maintainers ++ (with lib.maintainers.bsc; [ rarias ]);
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
, jemallocNanos6 ? null
|
||||
, cachelineBytes ? 64
|
||||
, enableGlibcxxDebug ? false
|
||||
, enablePapi ? true
|
||||
, enablePapi ? stdenv.hostPlatform == stdenv.buildPlatform # Disabled when cross-compiling
|
||||
, useGit ? false
|
||||
, gitUrl ? "ssh://git@bscpm04.bsc.es/nanos6/nanos6"
|
||||
, gitBranch ? "master"
|
||||
@@ -80,8 +80,7 @@ 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 enablePapi "--with-papi=${papi}");
|
||||
(optional isCross "--with-symbol-resolution=ifunc");
|
||||
|
||||
postConfigure = lib.optionalString (!enableDebug) ''
|
||||
# Disable debug
|
||||
@@ -96,14 +95,16 @@ 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
|
||||
|
||||
64
pkgs/nix/add-catchAll.patch
Normal file
64
pkgs/nix/add-catchAll.patch
Normal file
@@ -0,0 +1,64 @@
|
||||
From 3aa73c21e3afc91522a6121b0d591af6925b4ba6 Mon Sep 17 00:00:00 2001
|
||||
From: Rodrigo Arias Mallo <rodarima@gmail.com>
|
||||
Date: Mon, 13 Oct 2025 16:05:30 +0200
|
||||
Subject: [PATCH] Add builtins.catchAll to catch all types of errors
|
||||
|
||||
Allows fetching multiple Git repositories with builtin.fetchGit and
|
||||
catching any errors thrown by the builtin, in opposition to the builtin
|
||||
tryEval.
|
||||
---
|
||||
src/libexpr/primops.cc | 38 ++++++++++++++++++++++++++++++++++++++
|
||||
1 file changed, 38 insertions(+)
|
||||
|
||||
diff --git a/src/libexpr/primops.cc b/src/libexpr/primops.cc
|
||||
index 36a67a39d..3b26f9f43 100644
|
||||
--- a/src/libexpr/primops.cc
|
||||
+++ b/src/libexpr/primops.cc
|
||||
@@ -849,6 +849,44 @@ static RegisterPrimOp primop_tryEval({
|
||||
.fun = prim_tryEval,
|
||||
});
|
||||
|
||||
+/* Like tryEval but catch all errors. Success => {success=true; value=something;},
|
||||
+ * else => {success=false; value=false;} */
|
||||
+static void prim_catchAll(EvalState & state, const PosIdx pos, Value * * args, Value & v)
|
||||
+{
|
||||
+ auto attrs = state.buildBindings(3);
|
||||
+ try {
|
||||
+ state.forceValue(*args[0], pos);
|
||||
+ attrs.insert(state.sValue, args[0]);
|
||||
+ attrs.alloc("success").mkBool(true);
|
||||
+ attrs.alloc("msg").mkNull();
|
||||
+ } catch (Error & e) {
|
||||
+ attrs.alloc(state.sValue).mkBool(false);
|
||||
+ attrs.alloc("success").mkBool(false);
|
||||
+ attrs.alloc("msg").mkString(e.msg());
|
||||
+ }
|
||||
+ v.mkAttrs(attrs);
|
||||
+}
|
||||
+
|
||||
+static RegisterPrimOp primop_catchAll({
|
||||
+ .name = "__catchAll",
|
||||
+ .args = {"e"},
|
||||
+ .doc = R"(
|
||||
+ Try to shallowly evaluate *e*. Return a set containing the
|
||||
+ attributes `success` (`true` if *e* evaluated successfully,
|
||||
+ `false` if an error was thrown) and `value`, equalling *e* if
|
||||
+ successful and `false` otherwise. In contrast with `tryEval`,
|
||||
+ `catchAll` will prevent all errors from being thrown, including
|
||||
+ for those created by `abort` and type errors generated by
|
||||
+ builtins. Also note that this doesn't evaluate *e* deeply, so
|
||||
+ `let e = { x = throw ""; }; in (builtins.catchAll e).success`
|
||||
+ will be `true`. Using `builtins.deepSeq` one can get the expected
|
||||
+ result: `let e = { x = throw ""; }; in
|
||||
+ (builtins.catchAll (builtins.deepSeq e e)).success` will be
|
||||
+ `false`.
|
||||
+ )",
|
||||
+ .fun = prim_catchAll,
|
||||
+});
|
||||
+
|
||||
/* Return an environment variable. Use with care. */
|
||||
static void prim_getEnv(EvalState & state, const PosIdx pos, Value * * args, Value & v)
|
||||
{
|
||||
--
|
||||
2.51.0
|
||||
|
||||
@@ -1,219 +1,7 @@
|
||||
{ lib, fetchurl, fetchFromGitHub, callPackage
|
||||
, storeDir ? "/nix/store"
|
||||
, stateDir ? "/nix/var"
|
||||
, confDir ? "/etc"
|
||||
, boehmgc
|
||||
, stdenv, llvmPackages_6
|
||||
}:
|
||||
{ nix }:
|
||||
|
||||
let
|
||||
|
||||
common =
|
||||
{ lib, stdenv, fetchpatch, perl, curl, bzip2, sqlite, openssl ? null, xz
|
||||
, bash, coreutils, gzip, gnutar
|
||||
, pkg-config, boehmgc, perlPackages, libsodium, brotli, boost, editline, nlohmann_json
|
||||
, autoreconfHook, autoconf-archive, bison, flex, libxml2, libxslt, docbook5, docbook_xsl_ns
|
||||
, jq, libarchive, rustc, cargo
|
||||
# Used by tests
|
||||
, gmock
|
||||
, busybox-sandbox-shell
|
||||
, storeDir
|
||||
, stateDir
|
||||
, confDir
|
||||
, withLibseccomp ? lib.any (lib.meta.platformMatch stdenv.hostPlatform) libseccomp.meta.platforms, libseccomp
|
||||
, withAWS ? stdenv.isLinux || stdenv.isDarwin, aws-sdk-cpp
|
||||
|
||||
, name, suffix ? "", src, crates ? null
|
||||
|
||||
}:
|
||||
let
|
||||
sh = busybox-sandbox-shell;
|
||||
nix = stdenv.mkDerivation rec {
|
||||
inherit name src;
|
||||
version = lib.getVersion name;
|
||||
|
||||
is24 = lib.versionAtLeast version "2.4pre";
|
||||
isExactly23 = lib.versionAtLeast version "2.3" && lib.versionOlder version "2.4";
|
||||
|
||||
VERSION_SUFFIX = suffix;
|
||||
|
||||
outputs = [ "out" "dev" "man" "doc" ];
|
||||
|
||||
nativeBuildInputs =
|
||||
[ pkg-config ]
|
||||
++ lib.optionals is24 [ autoreconfHook autoconf-archive bison flex libxml2 libxslt
|
||||
docbook5 docbook_xsl_ns jq gmock ];
|
||||
|
||||
buildInputs =
|
||||
[ curl openssl sqlite xz bzip2 nlohmann_json
|
||||
brotli boost editline
|
||||
]
|
||||
++ lib.optional (stdenv.isLinux || stdenv.isDarwin) libsodium
|
||||
++ lib.optionals is24 [ libarchive rustc cargo ]
|
||||
++ lib.optional withLibseccomp libseccomp
|
||||
++ lib.optional withAWS
|
||||
((aws-sdk-cpp.override {
|
||||
apis = ["s3" "transfer"];
|
||||
customMemoryManagement = false;
|
||||
}).overrideDerivation (args: {
|
||||
patches = args.patches or [] ++ [(fetchpatch {
|
||||
url = "https://github.com/edolstra/aws-sdk-cpp/commit/7d58e303159b2fb343af9a1ec4512238efa147c7.patch";
|
||||
sha256 = "103phn6kyvs1yc7fibyin3lgxz699qakhw671kl207484im55id1";
|
||||
})];
|
||||
}));
|
||||
|
||||
propagatedBuildInputs = [ boehmgc ];
|
||||
|
||||
# Seems to be required when using std::atomic with 64-bit types
|
||||
NIX_LDFLAGS = lib.optionalString (stdenv.hostPlatform.system == "armv5tel-linux" || stdenv.hostPlatform.system == "armv6l-linux") "-latomic";
|
||||
|
||||
preConfigure =
|
||||
# Copy libboost_context so we don't get all of Boost in our closure.
|
||||
# https://github.com/NixOS/nixpkgs/issues/45462
|
||||
''
|
||||
mkdir -p $out/lib
|
||||
cp -pd ${boost}/lib/{libboost_context*,libboost_thread*,libboost_system*} $out/lib
|
||||
rm -f $out/lib/*.a
|
||||
${lib.optionalString stdenv.isLinux ''
|
||||
chmod u+w $out/lib/*.so.*
|
||||
patchelf --set-rpath $out/lib:${stdenv.cc.cc.lib}/lib $out/lib/libboost_thread.so.*
|
||||
''}
|
||||
'' +
|
||||
# Unpack the Rust crates.
|
||||
lib.optionalString is24 ''
|
||||
tar xvf ${crates} -C nix-rust/
|
||||
mv nix-rust/nix-vendored-crates* nix-rust/vendor
|
||||
'' +
|
||||
# For Nix-2.3, patch around an issue where the Nix configure step pulls in the
|
||||
# build system's bash and other utilities when cross-compiling
|
||||
lib.optionalString (stdenv.buildPlatform != stdenv.hostPlatform && isExactly23) ''
|
||||
mkdir tmp/
|
||||
substitute corepkgs/config.nix.in tmp/config.nix.in \
|
||||
--subst-var-by bash ${bash}/bin/bash \
|
||||
--subst-var-by coreutils ${coreutils}/bin \
|
||||
--subst-var-by bzip2 ${bzip2}/bin/bzip2 \
|
||||
--subst-var-by gzip ${gzip}/bin/gzip \
|
||||
--subst-var-by xz ${xz}/bin/xz \
|
||||
--subst-var-by tar ${gnutar}/bin/tar \
|
||||
--subst-var-by tr ${coreutils}/bin/tr
|
||||
mv tmp/config.nix.in corepkgs/config.nix.in
|
||||
'';
|
||||
|
||||
configureFlags =
|
||||
[ "--with-store-dir=${storeDir}"
|
||||
"--localstatedir=${stateDir}"
|
||||
"--sysconfdir=${confDir}"
|
||||
"--disable-init-state"
|
||||
"--enable-gc"
|
||||
]
|
||||
++ lib.optionals stdenv.isLinux [
|
||||
"--with-sandbox-shell=${sh}/bin/busybox"
|
||||
]
|
||||
++ lib.optional (
|
||||
stdenv.hostPlatform != stdenv.buildPlatform && stdenv.hostPlatform ? nix && stdenv.hostPlatform.nix ? system
|
||||
) ''--with-system=${stdenv.hostPlatform.nix.system}''
|
||||
# RISC-V support in progress https://github.com/seccomp/libseccomp/pull/50
|
||||
++ lib.optional (!withLibseccomp) "--disable-seccomp-sandboxing";
|
||||
|
||||
makeFlags = [ "profiledir=$(out)/etc/profile.d" ];
|
||||
|
||||
installFlags = [ "sysconfdir=$(out)/etc" ];
|
||||
|
||||
doInstallCheck = false;
|
||||
|
||||
# socket path becomes too long otherwise
|
||||
#preInstallCheck = lib.optional stdenv.isDarwin ''
|
||||
# export TMPDIR=$NIX_BUILD_TOP
|
||||
#'';
|
||||
|
||||
separateDebugInfo = stdenv.isLinux;
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
||||
meta = {
|
||||
description = "Powerful package manager that makes package management reliable and reproducible";
|
||||
longDescription = ''
|
||||
Nix is a powerful package manager for Linux and other Unix systems that
|
||||
makes package management reliable and reproducible. It provides atomic
|
||||
upgrades and rollbacks, side-by-side installation of multiple versions of
|
||||
a package, multi-user package management and easy setup of build
|
||||
environments.
|
||||
'';
|
||||
homepage = "https://nixos.org/";
|
||||
license = lib.licenses.lgpl2Plus;
|
||||
maintainers = [ lib.maintainers.eelco ];
|
||||
platforms = lib.platforms.unix;
|
||||
outputsToInstall = [ "out" "man" ];
|
||||
};
|
||||
|
||||
passthru = {
|
||||
perl-bindings = stdenv.mkDerivation {
|
||||
pname = "nix-perl";
|
||||
inherit version;
|
||||
|
||||
inherit src;
|
||||
|
||||
postUnpack = "sourceRoot=$sourceRoot/perl";
|
||||
|
||||
# This is not cross-compile safe, don't have time to fix right now
|
||||
# but noting for future travellers.
|
||||
nativeBuildInputs =
|
||||
[ perl pkg-config curl nix libsodium boost autoreconfHook autoconf-archive ];
|
||||
|
||||
configureFlags =
|
||||
[ "--with-dbi=${perlPackages.DBI}/${perl.libPrefix}"
|
||||
"--with-dbd-sqlite=${perlPackages.DBDSQLite}/${perl.libPrefix}"
|
||||
];
|
||||
|
||||
preConfigure = "export NIX_STATE_DIR=$TMPDIR";
|
||||
|
||||
preBuild = "unset NIX_INDENT_MAKE";
|
||||
};
|
||||
};
|
||||
};
|
||||
in nix;
|
||||
|
||||
in rec {
|
||||
|
||||
nix = nixUnstable;
|
||||
|
||||
nixUnstable = lib.lowPrio (callPackage common rec {
|
||||
name = "nix-2.4${suffix}";
|
||||
suffix = "pre7534_b92f58f6";
|
||||
|
||||
#src = /home/Computational/rarias/nix/nix-rodarima;
|
||||
src = fetchFromGitHub {
|
||||
owner = "rodarima";
|
||||
repo = "nix";
|
||||
rev = "3a642187c33ed46d952d3a50a83b2576b704fab7";
|
||||
sha256 = "0s8is2czpkcj1x1kcjqgbnsbbl03w3fwjjiclsd44zh1ij3wb90s";
|
||||
};
|
||||
|
||||
crates = fetchurl {
|
||||
url = "https://hydra.nixos.org/build/118797694/download/1/nix-vendored-crates-2.4pre7534_b92f58f6.tar.xz";
|
||||
sha256 = "a4c2612bbd81732bbb899bc0c230e07b16f6b6150ffbb19c4907dedbbc2bf9fc";
|
||||
};
|
||||
|
||||
inherit storeDir stateDir confDir boehmgc;
|
||||
});
|
||||
|
||||
nixFlakes = lib.lowPrio (callPackage common rec {
|
||||
name = "nix-2.4${suffix}";
|
||||
suffix = "pre20200521_00b562c";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "NixOS";
|
||||
repo = "nix";
|
||||
rev = "00b562c87ec4c3bbe514f5dc1f4d1c41f66f66bf";
|
||||
sha256 = "0s8is2czpkcj1x1kcjqgbnsbbl03w3fwjjiclsd44zh1ij3wb90s";
|
||||
};
|
||||
|
||||
crates = fetchurl {
|
||||
url = "https://hydra.nixos.org/build/118093786/download/1/nix-vendored-crates-2.4pre20200501_941f952.tar.xz";
|
||||
sha256 = "060f4n5srdbb8vsj0m14aqch7im79a4h5g3nrs41p1xc602vhcdl";
|
||||
};
|
||||
|
||||
inherit storeDir stateDir confDir boehmgc;
|
||||
});
|
||||
|
||||
}
|
||||
nix.overrideAttrs (old: {
|
||||
patches = (old.patches or []) ++ [
|
||||
./add-catchAll.patch
|
||||
];
|
||||
})
|
||||
|
||||
@@ -8,7 +8,6 @@ stdenv.mkDerivation {
|
||||
version = "0.0.1";
|
||||
src = ./nixgen;
|
||||
dontUnpack = true;
|
||||
strictDeps = true;
|
||||
phases = [ "installPhase" ];
|
||||
installPhase = ''
|
||||
mkdir -p $out/bin
|
||||
|
||||
@@ -16,7 +16,6 @@ stdenv.mkDerivation rec {
|
||||
makeFlags = [ "DESTDIR=$(out)" ];
|
||||
preBuild = "env";
|
||||
dontPatchShebangs = true;
|
||||
strictDeps = true;
|
||||
|
||||
meta = {
|
||||
homepage = "https://gitlab.pm.bsc.es/rarias/nixtools";
|
||||
|
||||
@@ -48,7 +48,6 @@ in
|
||||
enableParallelBuilding = true;
|
||||
dontStrip = true;
|
||||
separateDebugInfo = true;
|
||||
strictDeps = true;
|
||||
|
||||
configureFlags = [
|
||||
"--with-nosv=${nosv}"
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
, numactl
|
||||
, hwloc
|
||||
, papi
|
||||
, enablePapi ? true
|
||||
, enablePapi ? stdenv.hostPlatform == stdenv.buildPlatform # Disabled when cross-compiling
|
||||
, cacheline ? 64 # bits
|
||||
, ovni ? null
|
||||
, useGit ? false
|
||||
@@ -40,17 +40,16 @@ let
|
||||
|
||||
source = if (useGit) then git else release;
|
||||
in
|
||||
stdenv.mkDerivation {
|
||||
stdenv.mkDerivation rec {
|
||||
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
|
||||
@@ -60,7 +59,6 @@ in
|
||||
hwloc
|
||||
ovni
|
||||
] ++ lib.optionals enablePapi [ papi ];
|
||||
patches = [ ./fix-papi.patch ];
|
||||
|
||||
meta = {
|
||||
homepage = "https://gitlab.bsc.es/nos-v/nos-v";
|
||||
|
||||
@@ -1,136 +0,0 @@
|
||||
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
|
||||
|
||||
@@ -24,7 +24,6 @@ stdenv.mkDerivation rec {
|
||||
|
||||
doCheck = true;
|
||||
enableParallelBuilding = true;
|
||||
strictDeps = true;
|
||||
nativeBuildInputs = [ mpiAll ];
|
||||
buildInputs = [ mpiAll ];
|
||||
hardeningDisable = [ "all" ];
|
||||
|
||||
@@ -40,7 +40,6 @@ in
|
||||
inherit (source) src version;
|
||||
dontStrip = true;
|
||||
separateDebugInfo = true;
|
||||
strictDeps = true;
|
||||
postPatch = ''
|
||||
patchShebangs --build test/
|
||||
'';
|
||||
|
||||
@@ -1,22 +0,0 @@
|
||||
{
|
||||
stdenv,
|
||||
papi,
|
||||
}:
|
||||
|
||||
if stdenv.hostPlatform == stdenv.buildPlatform then
|
||||
papi
|
||||
else
|
||||
papi.overrideAttrs (old: {
|
||||
configureFlags = (old.configureFlags or [ ]) ++ [
|
||||
"--enable-perf_event_uncore=no"
|
||||
"--with-sysdetect=no"
|
||||
"--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 ];
|
||||
})
|
||||
@@ -1,19 +0,0 @@
|
||||
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:
|
||||
@@ -12,7 +12,7 @@
|
||||
, paraverKernel
|
||||
, openssl
|
||||
, glibcLocales
|
||||
, wrapGAppsHook3
|
||||
, wrapGAppsHook
|
||||
}:
|
||||
|
||||
let
|
||||
@@ -47,7 +47,6 @@ stdenv.mkDerivation rec {
|
||||
|
||||
dontStrip = true;
|
||||
enableParallelBuilding = true;
|
||||
strictDeps = true;
|
||||
|
||||
preConfigure = ''
|
||||
export CFLAGS="-O3"
|
||||
@@ -65,7 +64,7 @@ stdenv.mkDerivation rec {
|
||||
autoconf
|
||||
automake
|
||||
autoreconfHook
|
||||
wrapGAppsHook3
|
||||
wrapGAppsHook
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
|
||||
@@ -34,7 +34,6 @@ stdenv.mkDerivation rec {
|
||||
enableParallelBuilding = true;
|
||||
|
||||
dontStrip = true;
|
||||
strictDeps = true;
|
||||
|
||||
preConfigure = ''
|
||||
export CFLAGS="-O3 -DPARALLEL_ENABLED"
|
||||
|
||||
@@ -13,7 +13,6 @@ buildGoModule rec {
|
||||
|
||||
vendorHash = "sha256-A1dd9T9SIEHDCiVT2UwV6T02BSLh9ej6LC/2l54hgwI=";
|
||||
doCheck = false;
|
||||
strictDeps = true;
|
||||
|
||||
meta = with lib; {
|
||||
description = "Prometheus SLURM Exporter";
|
||||
|
||||
@@ -18,7 +18,6 @@ stdenv.mkDerivation rec {
|
||||
};
|
||||
hardeningDisable = [ "all" ];
|
||||
dontStrip = true;
|
||||
strictDeps = true;
|
||||
configureFlags = [ "--with-ovni=${ovni}" ];
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
||||
@@ -17,7 +17,6 @@ stdenv.mkDerivation rec {
|
||||
pname = "tagaspi";
|
||||
enableParallelBuilding = true;
|
||||
separateDebugInfo = true;
|
||||
strictDeps = true;
|
||||
|
||||
version = "2.0";
|
||||
src = fetchFromGitHub {
|
||||
|
||||
@@ -45,7 +45,6 @@ in stdenv.mkDerivation {
|
||||
inherit (source) src version;
|
||||
enableParallelBuilding = true;
|
||||
separateDebugInfo = true;
|
||||
strictDeps = true;
|
||||
|
||||
nativeBuildInputs = [
|
||||
autoconf
|
||||
|
||||
@@ -1,15 +1,12 @@
|
||||
{ python3Packages, lib }:
|
||||
|
||||
python3Packages.buildPythonApplication {
|
||||
python3Packages.buildPythonApplication rec {
|
||||
pname = "upc-qaire-exporter";
|
||||
version = "1.0";
|
||||
|
||||
pyproject = true;
|
||||
|
||||
src = ./.;
|
||||
|
||||
doCheck = false;
|
||||
strictDeps = true;
|
||||
|
||||
build-system = with python3Packages; [
|
||||
setuptools
|
||||
|
||||
@@ -23,6 +23,9 @@ in stdenv.mkDerivation {
|
||||
dontUnpack = true;
|
||||
dontConfigure = true;
|
||||
|
||||
# nOS-V requires access to /sys/devices to request NUMA information
|
||||
requiredSystemFeatures = [ "sys-devices" ];
|
||||
|
||||
buildInputs = [ openmp ];
|
||||
|
||||
buildPhase = ''
|
||||
|
||||
Reference in New Issue
Block a user