diff options
author | Naïm Favier <n@monade.li> | 2022-05-29 17:26:23 +0200 |
---|---|---|
committer | Naïm Favier <n@monade.li> | 2022-05-31 13:55:41 +0200 |
commit | eef2c762ce19c8cf7172b319a7f4cd5555b5f289 (patch) | |
tree | 9e2697335364ef36570ad9192fea222e39c66861 /pkgs/test/make-binary-wrapper | |
parent | 5db40e768d1447624235b27d7176726550eb353f (diff) |
makeBinaryWrapper: fix cross-compilation and add test
Fixes https://github.com/NixOS/nixpkgs/issues/175045
Diffstat (limited to 'pkgs/test/make-binary-wrapper')
-rw-r--r-- | pkgs/test/make-binary-wrapper/cross.nix | 23 | ||||
-rw-r--r-- | pkgs/test/make-binary-wrapper/default.nix | 58 |
2 files changed, 55 insertions, 26 deletions
diff --git a/pkgs/test/make-binary-wrapper/cross.nix b/pkgs/test/make-binary-wrapper/cross.nix new file mode 100644 index 0000000000000..36758086b92b2 --- /dev/null +++ b/pkgs/test/make-binary-wrapper/cross.nix @@ -0,0 +1,23 @@ +{ stdenv +, runCommand +, makeBinaryWrapper +, binutils +, expectedArch ? stdenv.hostPlatform.parsed.cpu.name +}: + +runCommand "make-binary-wrapper-test-cross" { + nativeBuildInputs = [ + makeBinaryWrapper + binutils + ]; + inherit expectedArch; +} '' + touch prog + chmod +x prog + makeWrapper prog $out + read -r _ arch < <($READELF --file-header $out | grep Machine:) + if [[ ''${arch,,} != *"''${expectedArch,,}"* ]]; then + echo "expected $expectedArch, got $arch" + exit 1 + fi +'' diff --git a/pkgs/test/make-binary-wrapper/default.nix b/pkgs/test/make-binary-wrapper/default.nix index 2d3389c4a012c..afc2b41ff5a7a 100644 --- a/pkgs/test/make-binary-wrapper/default.nix +++ b/pkgs/test/make-binary-wrapper/default.nix @@ -1,12 +1,19 @@ -{ lib, coreutils, python3, gcc, writeText, writeScript, runCommand, makeBinaryWrapper }: +{ lib +, stdenv +, pkgsCross +, makeBinaryWrapper +, writeText +, runCommand +, runCommandCC +}: let - env = { buildInputs = [ makeBinaryWrapper ]; }; - envCheck = runCommand "envcheck" env '' - ${gcc}/bin/cc -Wall -Werror -Wpedantic -o $out ${./envcheck.c} + env = { nativeBuildInputs = [ makeBinaryWrapper ]; }; + envCheck = runCommandCC "envcheck" env '' + cc -Wall -Werror -Wpedantic -o $out ${./envcheck.c} ''; - makeGoldenTest = testname: runCommand "test-wrapper_${testname}" env '' - mkdir -p ./tmp/foo + makeGoldenTest = testname: runCommand "make-binary-wrapper-test-${testname}" env '' + mkdir -p tmp/foo # for the chdir test params=$(<"${./.}/${testname}.cmdline") eval "makeCWrapper /send/me/flags $params" > wrapper.c @@ -32,24 +39,23 @@ let cp wrapper.c $out ''; - tests = let - names = [ - "add-flags" - "argv0" - "basic" - "chdir" - "combination" - "env" - "inherit-argv0" - "invalid-env" - "prefix" - "suffix" - "overlength-strings" - ]; - f = name: lib.nameValuePair name (makeGoldenTest name); - in builtins.listToAttrs (builtins.map f names); -in writeText "make-binary-wrapper-test" '' - ${lib.concatStringsSep "\n" (lib.mapAttrsToList (_: test: '' - "${test.name}" "${test}" - '') tests)} + tests = lib.genAttrs [ + "add-flags" + "argv0" + "basic" + "chdir" + "combination" + "env" + "inherit-argv0" + "invalid-env" + "overlength-strings" + "prefix" + "suffix" + ] makeGoldenTest // lib.optionalAttrs (! stdenv.isDarwin) { + cross = pkgsCross.aarch64-multiplatform.callPackage ./cross.nix { }; + }; +in + +writeText "make-binary-wrapper-tests" '' + ${lib.concatStringsSep "\n" (builtins.attrValues tests)} '' // tests |