From 0c0992bb993108c67f33e795112441885cd87099 Mon Sep 17 00:00:00 2001 From: Max Date: Fri, 8 Aug 2025 18:25:26 +0200 Subject: [PATCH] ninja: remove impure dependency on /bin/sh --- .../0001-spawn-sh-instead-of-bin-sh.patch | 27 +++++++++++++++++++ pkgs/by-name/ni/ninja/package.nix | 5 +++- 2 files changed, 31 insertions(+), 1 deletion(-) create mode 100644 pkgs/by-name/ni/ninja/0001-spawn-sh-instead-of-bin-sh.patch diff --git a/pkgs/by-name/ni/ninja/0001-spawn-sh-instead-of-bin-sh.patch b/pkgs/by-name/ni/ninja/0001-spawn-sh-instead-of-bin-sh.patch new file mode 100644 index 000000000000..452f4deb69f4 --- /dev/null +++ b/pkgs/by-name/ni/ninja/0001-spawn-sh-instead-of-bin-sh.patch @@ -0,0 +1,27 @@ +From cf438f7a3ab2e70b06ec12653d1111e35084733f Mon Sep 17 00:00:00 2001 +From: Max +Date: Fri, 8 Aug 2025 18:20:48 +0200 +Subject: [PATCH] spawn sh instead of /bin/sh + +--- + src/subprocess-posix.cc | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/subprocess-posix.cc b/src/subprocess-posix.cc +index 0e62b3b..c1c31aa 100644 +--- a/src/subprocess-posix.cc ++++ b/src/subprocess-posix.cc +@@ -129,8 +129,8 @@ bool Subprocess::Start(SubprocessSet* set, const string& command) { + if (err != 0) + Fatal("posix_spawnattr_setflags: %s", strerror(err)); + +- const char* spawned_args[] = { "/bin/sh", "-c", command.c_str(), NULL }; +- err = posix_spawn(&pid_, "/bin/sh", &action, &attr, ++ const char* spawned_args[] = { "sh", "-c", command.c_str(), NULL }; ++ err = posix_spawnp(&pid_, "sh", &action, &attr, + const_cast(spawned_args), environ); + if (err != 0) + Fatal("posix_spawn: %s", strerror(err)); +-- +2.50.1 + diff --git a/pkgs/by-name/ni/ninja/package.nix b/pkgs/by-name/ni/ninja/package.nix index 2be38addad58..b2d143cbc63d 100644 --- a/pkgs/by-name/ni/ninja/package.nix +++ b/pkgs/by-name/ni/ninja/package.nix @@ -52,8 +52,11 @@ stdenv.mkDerivation (finalAttrs: { libxslt.bin ]; + patches = [ + ./0001-spawn-sh-instead-of-bin-sh.patch + ] # TODO: remove together with ninja 1.11 - patches = lib.optionals (lib.versionOlder finalAttrs.version "1.12") [ + ++ lib.optionals (lib.versionOlder finalAttrs.version "1.12") [ (fetchpatch { name = "ninja1.11-python3.13-compat.patch"; url = "https://github.com/ninja-build/ninja/commit/9cf13cd1ecb7ae649394f4133d121a01e191560b.patch";