Compare commits
1 Commits
master
...
add-nextcl
| Author | SHA1 | Date | |
|---|---|---|---|
| b180ea43b5 |
@@ -134,7 +134,7 @@
|
|||||||
home = "/home/Computational/varcila";
|
home = "/home/Computational/varcila";
|
||||||
description = "Vincent Arcila";
|
description = "Vincent Arcila";
|
||||||
group = "Computational";
|
group = "Computational";
|
||||||
hosts = [ "apex" "hut" "tent" "fox" "owl1" "owl2" ];
|
hosts = [ "apex" "hut" "tent" "fox" ];
|
||||||
hashedPassword = "$6$oB0Tcn99DcM4Ch$Vn1A0ulLTn/8B2oFPi9wWl/NOsJzaFAWjqekwcuC9sMC7cgxEVb.Nk5XSzQ2xzYcNe5MLtmzkVYnRS1CqP39Y0";
|
hashedPassword = "$6$oB0Tcn99DcM4Ch$Vn1A0ulLTn/8B2oFPi9wWl/NOsJzaFAWjqekwcuC9sMC7cgxEVb.Nk5XSzQ2xzYcNe5MLtmzkVYnRS1CqP39Y0";
|
||||||
openssh.authorizedKeys.keys = [
|
openssh.authorizedKeys.keys = [
|
||||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKGt0ESYxekBiHJQowmKpfdouw0hVm3N7tUMtAaeLejK vincent@varch"
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKGt0ESYxekBiHJQowmKpfdouw0hVm3N7tUMtAaeLejK vincent@varch"
|
||||||
|
|||||||
@@ -61,8 +61,6 @@
|
|||||||
registrationFlags = [
|
registrationFlags = [
|
||||||
# Increase build log length to 64 MiB
|
# Increase build log length to 64 MiB
|
||||||
"--output-limit 65536"
|
"--output-limit 65536"
|
||||||
# Allow the runner to be used in multiple projects
|
|
||||||
"--locked=false"
|
|
||||||
];
|
];
|
||||||
preBuildScript = pkgs.writeScript "setup-container" ''
|
preBuildScript = pkgs.writeScript "setup-container" ''
|
||||||
mkdir -p -m 0755 /nix/var/log/nix/drvs
|
mkdir -p -m 0755 /nix/var/log/nix/drvs
|
||||||
|
|||||||
@@ -6,12 +6,6 @@ let
|
|||||||
chmod +x $out
|
chmod +x $out
|
||||||
''
|
''
|
||||||
;
|
;
|
||||||
sblame-probe-script = pkgs.runCommand "sblame-probe.sh" { }
|
|
||||||
''
|
|
||||||
cp ${./sblame-probe.sh} $out;
|
|
||||||
chmod +x $out
|
|
||||||
''
|
|
||||||
;
|
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
# Use a new user to handle the SSH keys
|
# Use a new user to handle the SSH keys
|
||||||
@@ -34,17 +28,4 @@ in
|
|||||||
Group = "ssh-robot";
|
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";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
@@ -5,7 +5,7 @@
|
|||||||
../module/slurm-exporter.nix
|
../module/slurm-exporter.nix
|
||||||
../module/meteocat-exporter.nix
|
../module/meteocat-exporter.nix
|
||||||
../module/upc-qaire-exporter.nix
|
../module/upc-qaire-exporter.nix
|
||||||
./ssh-robot-probes.nix
|
./gpfs-probe.nix
|
||||||
../module/nix-daemon-exporter.nix
|
../module/nix-daemon-exporter.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
@@ -111,7 +111,6 @@
|
|||||||
"127.0.0.1:${toString config.services.prometheus.exporters.smartctl.port}"
|
"127.0.0.1:${toString config.services.prometheus.exporters.smartctl.port}"
|
||||||
"127.0.0.1:9341" # Slurm exporter
|
"127.0.0.1:9341" # Slurm exporter
|
||||||
"127.0.0.1:9966" # GPFS custom 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:9999" # Nix-daemon custom exporter
|
||||||
"127.0.0.1:9929" # Meteocat custom exporter
|
"127.0.0.1:9929" # Meteocat custom exporter
|
||||||
"127.0.0.1:9928" # UPC Qaire custom exporter
|
"127.0.0.1:9928" # UPC Qaire custom exporter
|
||||||
|
|||||||
@@ -29,7 +29,6 @@
|
|||||||
closing = pkgs.writeText "closing.txt"
|
closing = pkgs.writeText "closing.txt"
|
||||||
''
|
''
|
||||||
Subject: OmpSs-2 release enters closing period
|
Subject: OmpSs-2 release enters closing period
|
||||||
To: star@bsc.es
|
|
||||||
|
|
||||||
Hi,
|
Hi,
|
||||||
|
|
||||||
@@ -43,7 +42,6 @@
|
|||||||
freeze = pkgs.writeText "freeze.txt"
|
freeze = pkgs.writeText "freeze.txt"
|
||||||
''
|
''
|
||||||
Subject: OmpSs-2 release enters freeze period
|
Subject: OmpSs-2 release enters freeze period
|
||||||
To: star@bsc.es
|
|
||||||
|
|
||||||
Hi,
|
Hi,
|
||||||
|
|
||||||
@@ -57,7 +55,6 @@
|
|||||||
release = pkgs.writeText "release.txt"
|
release = pkgs.writeText "release.txt"
|
||||||
''
|
''
|
||||||
Subject: OmpSs-2 release now
|
Subject: OmpSs-2 release now
|
||||||
To: star@bsc.es
|
|
||||||
|
|
||||||
Hi,
|
Hi,
|
||||||
|
|
||||||
@@ -72,7 +69,7 @@
|
|||||||
script = ''
|
script = ''
|
||||||
set -eu
|
set -eu
|
||||||
set -o pipefail
|
set -o pipefail
|
||||||
cat ${mail} | ${config.security.wrapperDir}/sendmail -t star@bsc.es
|
cat ${mail} | ${config.security.wrapperDir}/sendmail star@bsc.es
|
||||||
'';
|
'';
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
Type = "oneshot";
|
Type = "oneshot";
|
||||||
|
|||||||
@@ -1,8 +0,0 @@
|
|||||||
#!/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"
|
|
||||||
@@ -11,6 +11,7 @@
|
|||||||
./nix-serve.nix
|
./nix-serve.nix
|
||||||
./gitlab-runner.nix
|
./gitlab-runner.nix
|
||||||
./gitea.nix
|
./gitea.nix
|
||||||
|
./nextcloud.nix
|
||||||
../hut/public-inbox.nix
|
../hut/public-inbox.nix
|
||||||
../hut/msmtp.nix
|
../hut/msmtp.nix
|
||||||
../module/p.nix
|
../module/p.nix
|
||||||
|
|||||||
71
m/tent/nextcloud.nix
Normal file
71
m/tent/nextcloud.nix
Normal file
@@ -0,0 +1,71 @@
|
|||||||
|
{ pkgs, config, ... }:
|
||||||
|
{
|
||||||
|
age.secrets.tent-nextcloud-admin-pass.file = ../../secrets/tent-nextcloud-admin-pass.age;
|
||||||
|
|
||||||
|
services.nextcloud = {
|
||||||
|
package = pkgs.nextcloud32;
|
||||||
|
enable = true;
|
||||||
|
hostName = "localhost";
|
||||||
|
config.adminpassFile = config.age.secrets.tent-nextcloud-admin-pass.path;
|
||||||
|
config.dbtype = "sqlite";
|
||||||
|
extraApps = {
|
||||||
|
inherit (config.services.nextcloud.package.packages.apps)
|
||||||
|
news
|
||||||
|
contacts
|
||||||
|
calendar
|
||||||
|
tasks;
|
||||||
|
# The app richdocuments (i.e. office) is not enabled yet as there are
|
||||||
|
# problems with the WOPI protocol in a subdir.
|
||||||
|
};
|
||||||
|
extraAppsEnable = true;
|
||||||
|
settings = let
|
||||||
|
prot = "https";
|
||||||
|
host = "jungle.bsc.es";
|
||||||
|
dir = "/nextcloud";
|
||||||
|
in {
|
||||||
|
overwriteprotocol = prot;
|
||||||
|
overwritehost = host;
|
||||||
|
overwritewebroot = dir;
|
||||||
|
overwrite.cli.url = "${prot}://${host}${dir}/";
|
||||||
|
htaccess.RewriteBase = dir;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
services.nginx.virtualHosts."${config.services.nextcloud.hostName}".listen = [ {
|
||||||
|
addr = "127.0.0.1";
|
||||||
|
port = 8066; # NOT an exposed port
|
||||||
|
} ];
|
||||||
|
|
||||||
|
services.nginx.virtualHosts."jungle.bsc.es".locations = {
|
||||||
|
"^~ /.well-known" = {
|
||||||
|
priority = 9000;
|
||||||
|
extraConfig = ''
|
||||||
|
absolute_redirect off;
|
||||||
|
location ~ ^/\\.well-known/(?:carddav|caldav)$ {
|
||||||
|
return 301 /nextcloud/remote.php/dav;
|
||||||
|
}
|
||||||
|
location ~ ^/\\.well-known/host-meta(?:\\.json)?$ {
|
||||||
|
return 301 /nextcloud/public.php?service=host-meta-json;
|
||||||
|
}
|
||||||
|
location ~ ^/\\.well-known/(?!acme-challenge|pki-validation) {
|
||||||
|
return 301 /nextcloud/index.php$request_uri;
|
||||||
|
}
|
||||||
|
try_files $uri $uri/ =404;
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
"/nextcloud/" = {
|
||||||
|
priority = 9999;
|
||||||
|
extraConfig = ''
|
||||||
|
proxy_set_header X-Real-IP $remote_addr;
|
||||||
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||||
|
proxy_set_header X-NginX-Proxy true;
|
||||||
|
proxy_set_header X-Forwarded-Proto http;
|
||||||
|
proxy_pass http://127.0.0.1:8066/; # tailing / is important!
|
||||||
|
proxy_set_header Host $host;
|
||||||
|
proxy_cache_bypass $http_upgrade;
|
||||||
|
proxy_redirect off;
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -39,8 +39,9 @@ let
|
|||||||
nanos6Debug = final.nanos6.override { enableDebug = true; };
|
nanos6Debug = final.nanos6.override { enableDebug = true; };
|
||||||
nixtools = callPackage ./pkgs/nixtools/default.nix { };
|
nixtools = callPackage ./pkgs/nixtools/default.nix { };
|
||||||
nixgen = callPackage ./pkgs/nixgen/default.nix { };
|
nixgen = callPackage ./pkgs/nixgen/default.nix { };
|
||||||
nix-portable = callPackage ./pkgs/nix-portable/default.nix { };
|
# Broken because of pkgsStatic.libcap
|
||||||
nix-wrap = callPackage ./pkgs/nix-wrap/default.nix { };
|
# See: https://github.com/NixOS/nixpkgs/pull/268791
|
||||||
|
#nix-wrap = callPackage ./pkgs/nix-wrap/default.nix { };
|
||||||
nodes = callPackage ./pkgs/nodes/default.nix { };
|
nodes = callPackage ./pkgs/nodes/default.nix { };
|
||||||
nosv = callPackage ./pkgs/nosv/default.nix { };
|
nosv = callPackage ./pkgs/nosv/default.nix { };
|
||||||
openmp = callPackage ./pkgs/llvm-ompss2/openmp.nix { monorepoSrc = final.clangOmpss2Unwrapped.src; version = final.clangOmpss2Unwrapped.version; };
|
openmp = callPackage ./pkgs/llvm-ompss2/openmp.nix { monorepoSrc = final.clangOmpss2Unwrapped.src; version = final.clangOmpss2Unwrapped.version; };
|
||||||
@@ -48,7 +49,6 @@ let
|
|||||||
osumb = callPackage ./pkgs/osu/default.nix { };
|
osumb = callPackage ./pkgs/osu/default.nix { };
|
||||||
ovni = callPackage ./pkgs/ovni/default.nix { };
|
ovni = callPackage ./pkgs/ovni/default.nix { };
|
||||||
ovniGit = final.ovni.override { useGit = true; };
|
ovniGit = final.ovni.override { useGit = true; };
|
||||||
papi = callPackage ./pkgs/papi/default.nix { papi = prev.papi; };
|
|
||||||
paraverKernel = callPackage ./pkgs/paraver/kernel.nix { };
|
paraverKernel = callPackage ./pkgs/paraver/kernel.nix { };
|
||||||
prometheus-slurm-exporter = prev.callPackage ./pkgs/slurm-exporter/default.nix { };
|
prometheus-slurm-exporter = prev.callPackage ./pkgs/slurm-exporter/default.nix { };
|
||||||
#pscom = callPackage ./pkgs/parastation/pscom.nix { }; # Unmaintaned
|
#pscom = callPackage ./pkgs/parastation/pscom.nix { }; # Unmaintaned
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
{ stdenv
|
{ stdenv
|
||||||
, lib
|
, lib
|
||||||
, fetchurl
|
, curl
|
||||||
|
, cacert
|
||||||
|
, runCommandLocal
|
||||||
, autoPatchelfHook
|
, autoPatchelfHook
|
||||||
, elfutils
|
, elfutils
|
||||||
, glib
|
, glib
|
||||||
@@ -24,24 +26,27 @@ let
|
|||||||
tarball = "AMDuProf_Linux_x64_${version}.tar.bz2";
|
tarball = "AMDuProf_Linux_x64_${version}.tar.bz2";
|
||||||
|
|
||||||
# NOTE: Remember to update the radare2 patch below if AMDuProfPcm changes.
|
# NOTE: Remember to update the radare2 patch below if AMDuProfPcm changes.
|
||||||
src = fetchurl {
|
uprofSrc = runCommandLocal tarball {
|
||||||
url = "https://download.amd.com/developer/eula/uprof/uprof-5-1/${tarball}";
|
nativeBuildInputs = [ curl ];
|
||||||
sha256 = "sha256-j9gxcBcIg6Zhc5FglUXf/VV9bKSo+PAKeootbN7ggYk=";
|
outputHash = "sha256-j9gxcBcIg6Zhc5FglUXf/VV9bKSo+PAKeootbN7ggYk=";
|
||||||
curlOptsList = [
|
SSL_CERT_FILE="${cacert}/etc/ssl/certs/ca-bundle.crt";
|
||||||
"-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'"
|
curl \
|
||||||
"-H" "Accept-Language: en-US,en;q=0.5"
|
-o $out \
|
||||||
"-H" "Accept-Encoding: gzip, deflate, br, zstd"
|
'https://download.amd.com/developer/eula/uprof/uprof-5-1/${tarball}' \
|
||||||
"-H" "Referer: https://www.amd.com/"
|
-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'
|
||||||
|
'';
|
||||||
|
|
||||||
in
|
in
|
||||||
stdenv.mkDerivation {
|
stdenv.mkDerivation {
|
||||||
pname = "AMD-uProf";
|
pname = "AMD-uProf";
|
||||||
inherit src version;
|
inherit version;
|
||||||
|
src = uprofSrc;
|
||||||
dontStrip = true;
|
dontStrip = true;
|
||||||
strictDeps = true;
|
|
||||||
phases = [ "installPhase" "fixupPhase" ];
|
phases = [ "installPhase" "fixupPhase" ];
|
||||||
nativeBuildInputs = [ autoPatchelfHook radare2 ];
|
nativeBuildInputs = [ autoPatchelfHook radare2 ];
|
||||||
buildInputs = [
|
buildInputs = [
|
||||||
|
|||||||
@@ -18,7 +18,6 @@ in stdenv.mkDerivation {
|
|||||||
set +x
|
set +x
|
||||||
'';
|
'';
|
||||||
hardeningDisable = [ "pic" "format" ];
|
hardeningDisable = [ "pic" "format" ];
|
||||||
strictDeps = true;
|
|
||||||
nativeBuildInputs = kernel.moduleBuildDependencies;
|
nativeBuildInputs = kernel.moduleBuildDependencies;
|
||||||
patches = [ ./makefile.patch ./hrtimer.patch ./remove-wr-rdmsrq.patch ];
|
patches = [ ./makefile.patch ./hrtimer.patch ./remove-wr-rdmsrq.patch ];
|
||||||
makeFlags = [
|
makeFlags = [
|
||||||
|
|||||||
@@ -59,7 +59,6 @@ stdenv.mkDerivation rec {
|
|||||||
];
|
];
|
||||||
hardeningDisable = [ "all" ];
|
hardeningDisable = [ "all" ];
|
||||||
dontStrip = true;
|
dontStrip = true;
|
||||||
strictDeps = true;
|
|
||||||
|
|
||||||
meta = {
|
meta = {
|
||||||
homepage = "https://gitlab.pm.bsc.es/rarias/bench6";
|
homepage = "https://gitlab.pm.bsc.es/rarias/bench6";
|
||||||
|
|||||||
@@ -16,8 +16,6 @@ stdenv.mkDerivation {
|
|||||||
};
|
};
|
||||||
nativeBuildInputs = [ cmake ];
|
nativeBuildInputs = [ cmake ];
|
||||||
|
|
||||||
strictDeps = true;
|
|
||||||
|
|
||||||
meta = {
|
meta = {
|
||||||
homepage = "https://github.com/rodarima/bigotes";
|
homepage = "https://github.com/rodarima/bigotes";
|
||||||
description = "Versatile benchmark tool";
|
description = "Versatile benchmark tool";
|
||||||
|
|||||||
@@ -10,13 +10,10 @@
|
|||||||
stdenv.mkDerivation (finalAttrs: {
|
stdenv.mkDerivation (finalAttrs: {
|
||||||
name = "cudainfo";
|
name = "cudainfo";
|
||||||
src = ./.;
|
src = ./.;
|
||||||
strictDeps = true;
|
|
||||||
nativeBuildInputs = [
|
|
||||||
cudatoolkit # Required for nvcc
|
|
||||||
autoAddDriverRunpath
|
|
||||||
];
|
|
||||||
buildInputs = [
|
buildInputs = [
|
||||||
|
cudatoolkit # Required for nvcc
|
||||||
(lib.getOutput "static" cudaPackages.cuda_cudart) # Required for -lcudart_static
|
(lib.getOutput "static" cudaPackages.cuda_cudart) # Required for -lcudart_static
|
||||||
|
autoAddDriverRunpath
|
||||||
];
|
];
|
||||||
installPhase = ''
|
installPhase = ''
|
||||||
mkdir -p $out/bin
|
mkdir -p $out/bin
|
||||||
@@ -26,7 +23,6 @@ stdenv.mkDerivation (finalAttrs: {
|
|||||||
name = "cudainfo-test";
|
name = "cudainfo-test";
|
||||||
requiredSystemFeatures = [ "cuda" ];
|
requiredSystemFeatures = [ "cuda" ];
|
||||||
dontBuild = true;
|
dontBuild = true;
|
||||||
strictDeps = true;
|
|
||||||
nativeCheckInputs = [
|
nativeCheckInputs = [
|
||||||
finalAttrs.finalPackage # The cudainfo package from above
|
finalAttrs.finalPackage # The cudainfo package from above
|
||||||
strace # When it fails, it will show the trace
|
strace # When it fails, it will show the trace
|
||||||
|
|||||||
@@ -20,7 +20,7 @@
|
|||||||
#, python3Packages
|
#, python3Packages
|
||||||
, installShellFiles
|
, installShellFiles
|
||||||
, symlinkJoin
|
, symlinkJoin
|
||||||
, enablePapi ? true
|
, enablePapi ? stdenv.hostPlatform == stdenv.buildPlatform # Disabled when cross-compiling
|
||||||
}:
|
}:
|
||||||
|
|
||||||
let
|
let
|
||||||
|
|||||||
@@ -33,7 +33,6 @@ stdenv.mkDerivation rec {
|
|||||||
};
|
};
|
||||||
|
|
||||||
enableParallelBuilding = true;
|
enableParallelBuilding = true;
|
||||||
strictDeps = true;
|
|
||||||
|
|
||||||
patches = [ ./rdma-core.patch ./max-mem.patch ];
|
patches = [ ./rdma-core.patch ./max-mem.patch ];
|
||||||
|
|
||||||
|
|||||||
@@ -128,7 +128,6 @@ let
|
|||||||
|
|
||||||
phases = [ "installPhase" "fixupPhase" ];
|
phases = [ "installPhase" "fixupPhase" ];
|
||||||
dontStrip = true;
|
dontStrip = true;
|
||||||
strictDeps = true;
|
|
||||||
installPhase = ''
|
installPhase = ''
|
||||||
mkdir -p $out/{bin,etc,lib,include}
|
mkdir -p $out/{bin,etc,lib,include}
|
||||||
mkdir -p $out/share/man
|
mkdir -p $out/share/man
|
||||||
@@ -180,7 +179,6 @@ let
|
|||||||
];
|
];
|
||||||
phases = [ "installPhase" "fixupPhase" ];
|
phases = [ "installPhase" "fixupPhase" ];
|
||||||
dontStrip = true;
|
dontStrip = true;
|
||||||
strictDeps = true;
|
|
||||||
|
|
||||||
autoPatchelfIgnoreMissingDeps = [ "libhwloc.so.5" ];
|
autoPatchelfIgnoreMissingDeps = [ "libhwloc.so.5" ];
|
||||||
|
|
||||||
@@ -224,7 +222,6 @@ let
|
|||||||
];
|
];
|
||||||
phases = [ "installPhase" "fixupPhase" ];
|
phases = [ "installPhase" "fixupPhase" ];
|
||||||
dontStrip = true;
|
dontStrip = true;
|
||||||
strictDeps = true;
|
|
||||||
|
|
||||||
autoPatchelfIgnoreMissingDeps = [ "libsycl.so.6" ];
|
autoPatchelfIgnoreMissingDeps = [ "libsycl.so.6" ];
|
||||||
|
|
||||||
@@ -292,7 +289,6 @@ let
|
|||||||
phases = [ "installPhase" "fixupPhase" ];
|
phases = [ "installPhase" "fixupPhase" ];
|
||||||
|
|
||||||
dontStrip = true;
|
dontStrip = true;
|
||||||
strictDeps = true;
|
|
||||||
|
|
||||||
installPhase = ''
|
installPhase = ''
|
||||||
mkdir -p $out/{bin,lib,include}
|
mkdir -p $out/{bin,lib,include}
|
||||||
@@ -381,7 +377,6 @@ let
|
|||||||
phases = [ "installPhase" "fixupPhase" ];
|
phases = [ "installPhase" "fixupPhase" ];
|
||||||
|
|
||||||
dontStrip = true;
|
dontStrip = true;
|
||||||
strictDeps = true;
|
|
||||||
|
|
||||||
installPhase = ''
|
installPhase = ''
|
||||||
mkdir -p $out/{bin,lib}
|
mkdir -p $out/{bin,lib}
|
||||||
|
|||||||
@@ -3,7 +3,6 @@
|
|||||||
, lib
|
, lib
|
||||||
, fetchFromGitHub
|
, fetchFromGitHub
|
||||||
, cmake
|
, cmake
|
||||||
, ninja
|
|
||||||
, bash
|
, bash
|
||||||
, python3
|
, python3
|
||||||
, perl
|
, perl
|
||||||
@@ -49,7 +48,6 @@ in stdenv.mkDerivation {
|
|||||||
inherit (source) src version;
|
inherit (source) src version;
|
||||||
|
|
||||||
enableParallelBuilding = true;
|
enableParallelBuilding = true;
|
||||||
strictDeps = true;
|
|
||||||
|
|
||||||
passthru = {
|
passthru = {
|
||||||
CC = "clang";
|
CC = "clang";
|
||||||
@@ -64,7 +62,6 @@ in stdenv.mkDerivation {
|
|||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
bash
|
bash
|
||||||
cmake
|
cmake
|
||||||
ninja
|
|
||||||
elfutils
|
elfutils
|
||||||
llvmPackages_latest.lld
|
llvmPackages_latest.lld
|
||||||
pkg-config
|
pkg-config
|
||||||
|
|||||||
@@ -39,9 +39,7 @@ stdenv.mkDerivation rec {
|
|||||||
perl
|
perl
|
||||||
pkg-config
|
pkg-config
|
||||||
python3
|
python3
|
||||||
];
|
] ++ lib.optionals enableNosv [
|
||||||
|
|
||||||
buildInputs = lib.optionals enableNosv [
|
|
||||||
nosv
|
nosv
|
||||||
] ++ lib.optionals enableOvni [
|
] ++ lib.optionals enableOvni [
|
||||||
ovni
|
ovni
|
||||||
@@ -56,7 +54,6 @@ stdenv.mkDerivation rec {
|
|||||||
dontStrip = enableDebug;
|
dontStrip = enableDebug;
|
||||||
|
|
||||||
separateDebugInfo = true;
|
separateDebugInfo = true;
|
||||||
strictDeps = true;
|
|
||||||
|
|
||||||
cmakeFlags = [
|
cmakeFlags = [
|
||||||
"-DLIBOMP_OMPD_SUPPORT=OFF"
|
"-DLIBOMP_OMPD_SUPPORT=OFF"
|
||||||
@@ -74,28 +71,6 @@ stdenv.mkDerivation rec {
|
|||||||
rm -f $out/libllvmrt/libomp.*
|
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 = {
|
passthru = {
|
||||||
inherit nosv;
|
inherit nosv;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -27,7 +27,6 @@ stdenv.mkDerivation rec {
|
|||||||
hardeningDisable = [ "all" ];
|
hardeningDisable = [ "all" ];
|
||||||
|
|
||||||
enableParallelBuilding = false;
|
enableParallelBuilding = false;
|
||||||
strictDeps = true;
|
|
||||||
|
|
||||||
preBuild = ''
|
preBuild = ''
|
||||||
makeFlagsArray+=(
|
makeFlagsArray+=(
|
||||||
|
|||||||
@@ -9,7 +9,6 @@ python3Packages.buildPythonApplication {
|
|||||||
src = ./.;
|
src = ./.;
|
||||||
|
|
||||||
doCheck = false;
|
doCheck = false;
|
||||||
strictDeps = true;
|
|
||||||
|
|
||||||
build-system = with python3Packages; [
|
build-system = with python3Packages; [
|
||||||
setuptools
|
setuptools
|
||||||
|
|||||||
@@ -53,7 +53,6 @@ in mpich.overrideAttrs (old: {
|
|||||||
'';
|
'';
|
||||||
|
|
||||||
hardeningDisable = [ "all" ];
|
hardeningDisable = [ "all" ];
|
||||||
strictDeps = true;
|
|
||||||
|
|
||||||
meta = old.meta // {
|
meta = old.meta // {
|
||||||
maintainers = old.meta.maintainers ++ (with lib.maintainers.bsc; [ rarias ]);
|
maintainers = old.meta.maintainers ++ (with lib.maintainers.bsc; [ rarias ]);
|
||||||
|
|||||||
@@ -16,7 +16,7 @@
|
|||||||
, jemallocNanos6 ? null
|
, jemallocNanos6 ? null
|
||||||
, cachelineBytes ? 64
|
, cachelineBytes ? 64
|
||||||
, enableGlibcxxDebug ? false
|
, enableGlibcxxDebug ? false
|
||||||
, enablePapi ? true
|
, enablePapi ? stdenv.hostPlatform == stdenv.buildPlatform # Disabled when cross-compiling
|
||||||
, useGit ? false
|
, useGit ? false
|
||||||
, gitUrl ? "ssh://git@bscpm04.bsc.es/nanos6/nanos6"
|
, gitUrl ? "ssh://git@bscpm04.bsc.es/nanos6/nanos6"
|
||||||
, gitBranch ? "master"
|
, gitBranch ? "master"
|
||||||
@@ -80,8 +80,7 @@ in
|
|||||||
(optional enableGlibcxxDebug "CXXFLAGS=-D_GLIBCXX_DEBUG") ++
|
(optional enableGlibcxxDebug "CXXFLAGS=-D_GLIBCXX_DEBUG") ++
|
||||||
# Most nanos6 api symbols are resolved at runtime, so prefer
|
# Most nanos6 api symbols are resolved at runtime, so prefer
|
||||||
# ifunc by default
|
# ifunc by default
|
||||||
(optional isCross "--with-symbol-resolution=ifunc") ++
|
(optional isCross "--with-symbol-resolution=ifunc");
|
||||||
(optional enablePapi "--with-papi=${papi}");
|
|
||||||
|
|
||||||
postConfigure = lib.optionalString (!enableDebug) ''
|
postConfigure = lib.optionalString (!enableDebug) ''
|
||||||
# Disable debug
|
# Disable debug
|
||||||
@@ -96,14 +95,16 @@ in
|
|||||||
dontStrip = enableDebug;
|
dontStrip = enableDebug;
|
||||||
separateDebugInfo = true;
|
separateDebugInfo = true;
|
||||||
|
|
||||||
strictDeps = true;
|
|
||||||
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
autoconf
|
autoconf
|
||||||
automake
|
automake
|
||||||
libtool
|
libtool
|
||||||
pkg-config
|
pkg-config
|
||||||
];
|
|
||||||
|
# TODO: papi_version is needed for configure:
|
||||||
|
# ./configure: line 27378: papi_version: command not found
|
||||||
|
# This probably breaks cross-compilation
|
||||||
|
] ++ lib.optionals enablePapi [ papi ];
|
||||||
|
|
||||||
buildInputs = [
|
buildInputs = [
|
||||||
boost
|
boost
|
||||||
|
|||||||
@@ -5,7 +5,6 @@ jemalloc.overrideAttrs (old: {
|
|||||||
"--with-jemalloc-prefix=nanos6_je_"
|
"--with-jemalloc-prefix=nanos6_je_"
|
||||||
"--enable-stats"
|
"--enable-stats"
|
||||||
];
|
];
|
||||||
enableParallelBuilding = true;
|
|
||||||
hardeningDisable = [ "all" ];
|
hardeningDisable = [ "all" ];
|
||||||
meta = old.meta // {
|
meta = old.meta // {
|
||||||
description = old.meta.description + " (for Nanos6)";
|
description = old.meta.description + " (for Nanos6)";
|
||||||
|
|||||||
@@ -1,650 +0,0 @@
|
|||||||
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;
|
|
||||||
};
|
|
||||||
})
|
|
||||||
@@ -14,7 +14,7 @@ let
|
|||||||
nixConfDir = "share";
|
nixConfDir = "share";
|
||||||
nix_wrap_sh = writeText "nix-wrap.sh" ''
|
nix_wrap_sh = writeText "nix-wrap.sh" ''
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
#
|
||||||
busybox_bin="${nixPrefix}${busybox}/bin"
|
busybox_bin="${nixPrefix}${busybox}/bin"
|
||||||
bubblewrap_bin="${nixPrefix}/${bubblewrap}/bin"
|
bubblewrap_bin="${nixPrefix}/${bubblewrap}/bin"
|
||||||
|
|
||||||
@@ -69,6 +69,7 @@ stdenv.mkDerivation rec {
|
|||||||
name = "nix-wrap";
|
name = "nix-wrap";
|
||||||
buildInputs = [
|
buildInputs = [
|
||||||
bashInteractive
|
bashInteractive
|
||||||
|
busybox
|
||||||
nix
|
nix
|
||||||
];
|
];
|
||||||
src = null;
|
src = null;
|
||||||
@@ -91,6 +92,7 @@ stdenv.mkDerivation rec {
|
|||||||
homepage = null;
|
homepage = null;
|
||||||
description = "nix bubblewrap wrapper";
|
description = "nix bubblewrap wrapper";
|
||||||
maintainers = [ ];
|
maintainers = [ ];
|
||||||
|
broken = true;
|
||||||
platforms = lib.platforms.linux;
|
platforms = lib.platforms.linux;
|
||||||
license = lib.licenses.mit;
|
license = lib.licenses.mit;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -8,7 +8,6 @@ stdenv.mkDerivation {
|
|||||||
version = "0.0.1";
|
version = "0.0.1";
|
||||||
src = ./nixgen;
|
src = ./nixgen;
|
||||||
dontUnpack = true;
|
dontUnpack = true;
|
||||||
strictDeps = true;
|
|
||||||
phases = [ "installPhase" ];
|
phases = [ "installPhase" ];
|
||||||
installPhase = ''
|
installPhase = ''
|
||||||
mkdir -p $out/bin
|
mkdir -p $out/bin
|
||||||
|
|||||||
@@ -16,7 +16,6 @@ stdenv.mkDerivation rec {
|
|||||||
makeFlags = [ "DESTDIR=$(out)" ];
|
makeFlags = [ "DESTDIR=$(out)" ];
|
||||||
preBuild = "env";
|
preBuild = "env";
|
||||||
dontPatchShebangs = true;
|
dontPatchShebangs = true;
|
||||||
strictDeps = true;
|
|
||||||
|
|
||||||
meta = {
|
meta = {
|
||||||
homepage = "https://gitlab.pm.bsc.es/rarias/nixtools";
|
homepage = "https://gitlab.pm.bsc.es/rarias/nixtools";
|
||||||
|
|||||||
@@ -48,7 +48,6 @@ in
|
|||||||
enableParallelBuilding = true;
|
enableParallelBuilding = true;
|
||||||
dontStrip = true;
|
dontStrip = true;
|
||||||
separateDebugInfo = true;
|
separateDebugInfo = true;
|
||||||
strictDeps = true;
|
|
||||||
|
|
||||||
configureFlags = [
|
configureFlags = [
|
||||||
"--with-nosv=${nosv}"
|
"--with-nosv=${nosv}"
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
, numactl
|
, numactl
|
||||||
, hwloc
|
, hwloc
|
||||||
, papi
|
, papi
|
||||||
, enablePapi ? true
|
, enablePapi ? stdenv.hostPlatform == stdenv.buildPlatform # Disabled when cross-compiling
|
||||||
, cacheline ? 64 # bits
|
, cacheline ? 64 # bits
|
||||||
, ovni ? null
|
, ovni ? null
|
||||||
, useGit ? false
|
, useGit ? false
|
||||||
@@ -40,17 +40,16 @@ let
|
|||||||
|
|
||||||
source = if (useGit) then git else release;
|
source = if (useGit) then git else release;
|
||||||
in
|
in
|
||||||
stdenv.mkDerivation {
|
stdenv.mkDerivation rec {
|
||||||
pname = "nosv";
|
pname = "nosv";
|
||||||
inherit (source) src version;
|
inherit (source) src version;
|
||||||
hardeningDisable = [ "all" ];
|
hardeningDisable = [ "all" ];
|
||||||
dontStrip = true;
|
dontStrip = true;
|
||||||
separateDebugInfo = true;
|
separateDebugInfo = true;
|
||||||
strictDeps = true;
|
|
||||||
configureFlags = [
|
configureFlags = [
|
||||||
"--with-ovni=${ovni}"
|
"--with-ovni=${ovni}"
|
||||||
"CACHELINE_WIDTH=${toString cacheline}"
|
"CACHELINE_WIDTH=${toString cacheline}"
|
||||||
] ++ lib.optionals enablePapi [ "--with-papi=${papi}" ];
|
];
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
autoreconfHook
|
autoreconfHook
|
||||||
pkg-config
|
pkg-config
|
||||||
@@ -60,7 +59,6 @@ in
|
|||||||
hwloc
|
hwloc
|
||||||
ovni
|
ovni
|
||||||
] ++ lib.optionals enablePapi [ papi ];
|
] ++ lib.optionals enablePapi [ papi ];
|
||||||
patches = [ ./fix-papi.patch ];
|
|
||||||
|
|
||||||
meta = {
|
meta = {
|
||||||
homepage = "https://gitlab.bsc.es/nos-v/nos-v";
|
homepage = "https://gitlab.bsc.es/nos-v/nos-v";
|
||||||
@@ -68,6 +66,5 @@ in
|
|||||||
maintainers = with lib.maintainers.bsc; [ abonerib rarias ];
|
maintainers = with lib.maintainers.bsc; [ abonerib rarias ];
|
||||||
platforms = lib.platforms.linux;
|
platforms = lib.platforms.linux;
|
||||||
license = lib.licenses.gpl3Plus;
|
license = lib.licenses.gpl3Plus;
|
||||||
cross = true;
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
doCheck = true;
|
||||||
enableParallelBuilding = true;
|
enableParallelBuilding = true;
|
||||||
strictDeps = true;
|
|
||||||
nativeBuildInputs = [ mpiAll ];
|
nativeBuildInputs = [ mpiAll ];
|
||||||
buildInputs = [ mpiAll ];
|
buildInputs = [ mpiAll ];
|
||||||
hardeningDisable = [ "all" ];
|
hardeningDisable = [ "all" ];
|
||||||
|
|||||||
@@ -40,7 +40,6 @@ in
|
|||||||
inherit (source) src version;
|
inherit (source) src version;
|
||||||
dontStrip = true;
|
dontStrip = true;
|
||||||
separateDebugInfo = true;
|
separateDebugInfo = true;
|
||||||
strictDeps = true;
|
|
||||||
postPatch = ''
|
postPatch = ''
|
||||||
patchShebangs --build test/
|
patchShebangs --build test/
|
||||||
'';
|
'';
|
||||||
|
|||||||
@@ -1,31 +0,0 @@
|
|||||||
{
|
|
||||||
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; };
|
|
||||||
})
|
|
||||||
@@ -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:
|
|
||||||
@@ -47,7 +47,6 @@ stdenv.mkDerivation rec {
|
|||||||
|
|
||||||
dontStrip = true;
|
dontStrip = true;
|
||||||
enableParallelBuilding = true;
|
enableParallelBuilding = true;
|
||||||
strictDeps = true;
|
|
||||||
|
|
||||||
preConfigure = ''
|
preConfigure = ''
|
||||||
export CFLAGS="-O3"
|
export CFLAGS="-O3"
|
||||||
|
|||||||
@@ -34,7 +34,6 @@ stdenv.mkDerivation rec {
|
|||||||
enableParallelBuilding = true;
|
enableParallelBuilding = true;
|
||||||
|
|
||||||
dontStrip = true;
|
dontStrip = true;
|
||||||
strictDeps = true;
|
|
||||||
|
|
||||||
preConfigure = ''
|
preConfigure = ''
|
||||||
export CFLAGS="-O3 -DPARALLEL_ENABLED"
|
export CFLAGS="-O3 -DPARALLEL_ENABLED"
|
||||||
|
|||||||
@@ -13,7 +13,6 @@ buildGoModule rec {
|
|||||||
|
|
||||||
vendorHash = "sha256-A1dd9T9SIEHDCiVT2UwV6T02BSLh9ej6LC/2l54hgwI=";
|
vendorHash = "sha256-A1dd9T9SIEHDCiVT2UwV6T02BSLh9ej6LC/2l54hgwI=";
|
||||||
doCheck = false;
|
doCheck = false;
|
||||||
strictDeps = true;
|
|
||||||
|
|
||||||
meta = with lib; {
|
meta = with lib; {
|
||||||
description = "Prometheus SLURM Exporter";
|
description = "Prometheus SLURM Exporter";
|
||||||
|
|||||||
@@ -18,7 +18,6 @@ stdenv.mkDerivation rec {
|
|||||||
};
|
};
|
||||||
hardeningDisable = [ "all" ];
|
hardeningDisable = [ "all" ];
|
||||||
dontStrip = true;
|
dontStrip = true;
|
||||||
strictDeps = true;
|
|
||||||
configureFlags = [ "--with-ovni=${ovni}" ];
|
configureFlags = [ "--with-ovni=${ovni}" ];
|
||||||
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
|
|||||||
@@ -17,7 +17,6 @@ stdenv.mkDerivation rec {
|
|||||||
pname = "tagaspi";
|
pname = "tagaspi";
|
||||||
enableParallelBuilding = true;
|
enableParallelBuilding = true;
|
||||||
separateDebugInfo = true;
|
separateDebugInfo = true;
|
||||||
strictDeps = true;
|
|
||||||
|
|
||||||
version = "2.0";
|
version = "2.0";
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
|
|||||||
@@ -45,7 +45,6 @@ in stdenv.mkDerivation {
|
|||||||
inherit (source) src version;
|
inherit (source) src version;
|
||||||
enableParallelBuilding = true;
|
enableParallelBuilding = true;
|
||||||
separateDebugInfo = true;
|
separateDebugInfo = true;
|
||||||
strictDeps = true;
|
|
||||||
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
autoconf
|
autoconf
|
||||||
|
|||||||
@@ -9,7 +9,6 @@ python3Packages.buildPythonApplication {
|
|||||||
src = ./.;
|
src = ./.;
|
||||||
|
|
||||||
doCheck = false;
|
doCheck = false;
|
||||||
strictDeps = true;
|
|
||||||
|
|
||||||
build-system = with python3Packages; [
|
build-system = with python3Packages; [
|
||||||
setuptools
|
setuptools
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ in
|
|||||||
"tent-gitlab-runner-pm-docker-token.age".publicKeys = tent;
|
"tent-gitlab-runner-pm-docker-token.age".publicKeys = tent;
|
||||||
"tent-gitlab-runner-pm-shell-token.age".publicKeys = tent;
|
"tent-gitlab-runner-pm-shell-token.age".publicKeys = tent;
|
||||||
"tent-gitlab-runner-bsc-docker-token.age".publicKeys = tent;
|
"tent-gitlab-runner-bsc-docker-token.age".publicKeys = tent;
|
||||||
|
"tent-nextcloud-admin-pass.age".publicKeys = tent;
|
||||||
"vpn-dac-login.age".publicKeys = tent;
|
"vpn-dac-login.age".publicKeys = tent;
|
||||||
"vpn-dac-client-key.age".publicKeys = tent;
|
"vpn-dac-client-key.age".publicKeys = tent;
|
||||||
|
|
||||||
|
|||||||
BIN
secrets/tent-nextcloud-admin-pass.age
Normal file
BIN
secrets/tent-nextcloud-admin-pass.age
Normal file
Binary file not shown.
@@ -23,6 +23,9 @@ in stdenv.mkDerivation {
|
|||||||
dontUnpack = true;
|
dontUnpack = true;
|
||||||
dontConfigure = true;
|
dontConfigure = true;
|
||||||
|
|
||||||
|
# nOS-V requires access to /sys/devices to request NUMA information
|
||||||
|
requiredSystemFeatures = [ "sys-devices" ];
|
||||||
|
|
||||||
buildInputs = [ openmp ];
|
buildInputs = [ openmp ];
|
||||||
|
|
||||||
buildPhase = ''
|
buildPhase = ''
|
||||||
|
|||||||
Reference in New Issue
Block a user