diff options
| -rw-r--r-- | pkgs/build-support/libredirect/default.nix | 19 | ||||
| -rw-r--r-- | pkgs/build-support/libredirect/test.c | 3 |
2 files changed, 16 insertions, 6 deletions
diff --git a/pkgs/build-support/libredirect/default.nix b/pkgs/build-support/libredirect/default.nix index 6e2de7fa11b0..0536d8f6aa6b 100644 --- a/pkgs/build-support/libredirect/default.nix +++ b/pkgs/build-support/libredirect/default.nix @@ -32,6 +32,14 @@ else stdenv.mkDerivation rec { buildPhase = '' runHook preBuild + ENABLE_TEST_SYSTEM=1 + if [ "$(cat /proc/self/uid_map)" = " 0 0 4294967295" ]; then + echo "Boot namespace detected! Disabling tests that use system()." + echo "The system() relies on /bin/sh which may not be compatible with nixpkgs's" + echo "glibc, so we can't test this without the sandboxing isolation." + ENABLE_TEST_SYSTEM=0 + fi + ${if stdenv.isDarwin && stdenv.isAarch64 then '' # We need the unwrapped binutils and clang: # We also want to build a fat library with x86_64, arm64, arm64e in there. @@ -45,16 +53,15 @@ else stdenv.mkDerivation rec { -isystem ${llvmPackages_13.libclang.lib}/lib/clang/*/include \ -L${llvmPackages_13.clang.libc}/lib \ -Wl,-install_name,$libName \ - -Wall -std=c99 -O3 -fPIC libredirect.c \ - -shared -o "$libName" '' else if stdenv.isDarwin then '' - $CC -Wall -std=c99 -O3 -fPIC libredirect.c \ + $CC \ -Wl,-install_name,$out/lib/$libName \ - -shared -o "$libName" '' else '' - $CC -Wall -std=c99 -O3 -fPIC libredirect.c \ + $CC \ + ''} \ + -Wall -std=c99 -O3 -fPIC libredirect.c \ + -DENABLE_TEST_SYSTEM=$ENABLE_TEST_SYSTEM \ -shared -o "$libName" - ''} if [ -n "$doInstallCheck" ]; then $CC -Wall -std=c99 \ diff --git a/pkgs/build-support/libredirect/test.c b/pkgs/build-support/libredirect/test.c index 7dd384ae3ed7..8eb92ef555c5 100644 --- a/pkgs/build-support/libredirect/test.c +++ b/pkgs/build-support/libredirect/test.c @@ -146,6 +146,8 @@ int main(int argc, char *argv[]) assert_mktemp_path(TESTDIR "/temp", "", buf); test_spawn(); + +#if ENABLE_TEST_SYSTEM test_system(); // Only run subprocess if no arguments are given @@ -154,6 +156,7 @@ int main(int argc, char *argv[]) if (argc == 1) { test_subprocess(); } +#endif test_execv(); |
