nixpkgs/pkgs/development/tools/build-managers/tup/fusermount-setuid.patch
Emery Hemingway 126f296044 tup: patch tup to find setuid fusermount
Patching C sources to find programs out of PATH is discouraged
but Tup otherwise tracks changes to PATH and should not be slowed
down by a wrapper script.

Original fix from Sheena Artrip.

Fix #107516
2022-05-02 10:36:35 -05:00

32 lines
870 B
Diff

# Tup needs a setuid fusermount which may be outside $PATH.
diff --git a/src/tup/server/fuse_server.c b/src/tup/server/fuse_server.c
index d4ab648d..2dc9294b 100644
--- a/src/tup/server/fuse_server.c
+++ b/src/tup/server/fuse_server.c
@@ -105,16 +105,21 @@ static void *fuse_thread(void *arg)
#if defined(__linux__)
static int os_unmount(void)
{
- int rc;
#ifdef FUSE3
- rc = system("fusermount3 -u -z " TUP_MNT);
+#define FUSERMOUNT "fusermount3"
#else
- rc = system("fusermount -u -z " TUP_MNT);
+#define FUSERMOUNT "fusermount"
#endif
+ int rc;
+ const char *cmd = (access("/run/wrappers/bin/" FUSERMOUNT, X_OK) == 0)
+ ? "/run/wrappers/bin/" FUSERMOUNT " -u -z " TUP_MNT
+ : FUSERMOUNT " -u -z " TUP_MNT;
+ rc = system(cmd);
if(rc == -1) {
perror("system");
}
return rc;
+#undef FUSERMOUNT
}
#elif defined(__APPLE__)
static int os_unmount(void)