depot/third_party/nixpkgs/pkgs/by-name/tu/tup/fusermount-setuid.patch

31 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)