From a78abbad4adf84d2c6451b43964b7e23fd07d2ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Thalheim?= Date: Sun, 24 Mar 2024 08:35:58 +0100 Subject: [PATCH 1/3] nix-ld: move to pkgs/by-name --- .../linux/nix-ld/default.nix => by-name/ni/nix-ld/package.nix} | 0 pkgs/top-level/all-packages.nix | 2 -- 2 files changed, 2 deletions(-) rename pkgs/{os-specific/linux/nix-ld/default.nix => by-name/ni/nix-ld/package.nix} (100%) diff --git a/pkgs/os-specific/linux/nix-ld/default.nix b/pkgs/by-name/ni/nix-ld/package.nix similarity index 100% rename from pkgs/os-specific/linux/nix-ld/default.nix rename to pkgs/by-name/ni/nix-ld/package.nix diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 0ba4229909c3..05d9dedb3cf0 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -33416,8 +33416,6 @@ with pkgs; nixos-shell = callPackage ../tools/virtualization/nixos-shell { }; - nix-ld = callPackage ../os-specific/linux/nix-ld { }; - noaa-apt = callPackage ../applications/radio/noaa-apt { }; node-problem-detector = callPackage ../applications/networking/cluster/node-problem-detector { }; From e29150b7fed98496afa8d2314066802346419d48 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Thalheim?= Date: Sun, 24 Mar 2024 08:49:52 +0100 Subject: [PATCH 2/3] nix-ld: use dynamicLinker as provided by stdenv --- pkgs/by-name/ni/nix-ld/package.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/by-name/ni/nix-ld/package.nix b/pkgs/by-name/ni/nix-ld/package.nix index 208c59ab7576..03dbf07f4b20 100644 --- a/pkgs/by-name/ni/nix-ld/package.nix +++ b/pkgs/by-name/ni/nix-ld/package.nix @@ -32,7 +32,7 @@ stdenv.mkDerivation rec { postInstall = '' mkdir -p $out/nix-support - ldpath=/${stdenv.hostPlatform.libDir}/$(basename $(< ${stdenv.cc}/nix-support/dynamic-linker)) + ldpath=/${stdenv.hostPlatform.libDir}/$(basename ${stdenv.cc.bintools.dynamicLinker}) echo "$ldpath" > $out/nix-support/ldpath mkdir -p $out/lib/tmpfiles.d/ cat > $out/lib/tmpfiles.d/nix-ld.conf < Date: Sun, 24 Mar 2024 08:51:02 +0100 Subject: [PATCH 3/3] nix-ld-rs: init at 2024-03-23 --- nixos/tests/nix-ld.nix | 52 ++++++++++++++++++-------- pkgs/by-name/ni/nix-ld-rs/package.nix | 54 +++++++++++++++++++++++++++ pkgs/by-name/ni/nix-ld/package.nix | 2 +- 3 files changed, 92 insertions(+), 16 deletions(-) create mode 100644 pkgs/by-name/ni/nix-ld-rs/package.nix diff --git a/nixos/tests/nix-ld.nix b/nixos/tests/nix-ld.nix index 8733f5b0c397..9b851f88617a 100644 --- a/nixos/tests/nix-ld.nix +++ b/nixos/tests/nix-ld.nix @@ -1,17 +1,39 @@ -import ./make-test-python.nix ({ lib, pkgs, ...} : +{ system ? builtins.currentSystem, + config ? {}, + pkgs ? import ../.. { inherit system config; } +}: +let + inherit (import ../lib/testing-python.nix { inherit system pkgs; }) makeTest; + shared = + { config, pkgs, ... }: + { + programs.nix-ld.enable = true; + environment.systemPackages = [ + (pkgs.runCommand "patched-hello" { } '' + install -D -m755 ${pkgs.hello}/bin/hello $out/bin/hello + patchelf $out/bin/hello --set-interpreter $(cat ${config.programs.nix-ld.package}/nix-support/ldpath) + '') + ]; + }; +in { - name = "nix-ld"; - nodes.machine = { pkgs, ... }: { - programs.nix-ld.enable = true; - environment.systemPackages = [ - (pkgs.runCommand "patched-hello" {} '' - install -D -m755 ${pkgs.hello}/bin/hello $out/bin/hello - patchelf $out/bin/hello --set-interpreter $(cat ${pkgs.nix-ld}/nix-support/ldpath) - '') - ]; + nix-ld = makeTest { + name = "nix-ld"; + nodes.machine = shared; + testScript = '' + start_all() + machine.succeed("hello") + ''; }; - testScript = '' - start_all() - machine.succeed("hello") - ''; -}) + nix-ld-rs = makeTest { + name = "nix-ld-rs"; + nodes.machine = { + imports = [ shared ]; + programs.nix-ld.package = pkgs.nix-ld-rs; + }; + testScript = '' + start_all() + machine.succeed("hello") + ''; + }; +} diff --git a/pkgs/by-name/ni/nix-ld-rs/package.nix b/pkgs/by-name/ni/nix-ld-rs/package.nix new file mode 100644 index 000000000000..d6514033741a --- /dev/null +++ b/pkgs/by-name/ni/nix-ld-rs/package.nix @@ -0,0 +1,54 @@ +{ + stdenv, + fetchFromGitHub, + nixosTests, + rustPlatform, + lib, +}: + +rustPlatform.buildRustPackage { + name = "nix-ld-rs"; + + src = fetchFromGitHub { + owner = "nix-community"; + repo = "nix-ld-rs"; + rev = "f7154a6aedba4917c8cc72b805b79444b5bfafca"; + sha256 = "sha256-tx6gO6NR4BnYVhoskyvQY9l6/8sK0HwoDHvsYcvIlgo="; + }; + + cargoHash = "sha256-4IDu5qAgF4Zq4GOsimuy8NiRCN9PXM+8oVzD2GO3QmM="; + + hardeningDisable = [ "stackprotector" ]; + + NIX_SYSTEM = stdenv.system; + RUSTC_BOOTSTRAP = "1"; + + preCheck = '' + export NIX_LD=${stdenv.cc.bintools.dynamicLinker} + ''; + + postInstall = '' + mkdir -p $out/libexec + ln -s $out/bin/nix-ld-rs $out/libexec/nix-ld-rs + ln -s $out/bin/nix-ld-rs $out/libexec/nix-ld + + mkdir -p $out/nix-support + + ldpath=/${stdenv.hostPlatform.libDir}/$(basename ${stdenv.cc.bintools.dynamicLinker}) + echo "$ldpath" > $out/nix-support/ldpath + mkdir -p $out/lib/tmpfiles.d/ + cat > $out/lib/tmpfiles.d/nix-ld.conf <