diff --git a/gnu/local.mk b/gnu/local.mk index caf5fd68b0..247b9ec34f 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -1092,7 +1092,8 @@ dist_patch_DATA = \ %D%/packages/patches/freedink-engine-fix-sdl-hints.patch \ %D%/packages/patches/freeglut-gcc-compat.patch \ %D%/packages/patches/freeimage-unbundle.patch \ - %D%/packages/patches/fuse-overlapping-headers.patch \ + %D%/packages/patches/fuse-glibc-2.34.patch \ + %D%/packages/patches/fuse-overlapping-headers.patch \ %D%/packages/patches/fxdiv-system-libraries.patch \ %D%/packages/patches/gajim-honour-GAJIM_PLUGIN_PATH.patch \ %D%/packages/patches/ganeti-disable-version-symlinks.patch \ diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index b868991461..9bfa1951be 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -3291,8 +3291,11 @@ (define-public fuse (sha256 (base32 "1ddlq6kzxilccgbvxjfx80jx6kamgw4sv49phks2zhlcc1frvrnh")) - (patches (search-patches "fuse-overlapping-headers.patch")))) + (patches (search-patches "fuse-overlapping-headers.patch" + "fuse-glibc-2.34.patch")))) (build-system gnu-build-system) + (native-inputs + (list autoconf automake gettext-minimal libtool)) (inputs (list bash-minimal util-linux)) (arguments @@ -3309,6 +3312,10 @@ (define-public fuse "/lib/udev/rules.d")) #:phases (modify-phases %standard-phases + (add-before 'bootstrap 'force-bootstrap + (lambda _ + ;; Force a bootstrap to make the patch changes effective. + (delete-file "configure"))) (add-before 'build 'set-file-names (lambda* (#:key inputs #:allow-other-keys) ;; libfuse calls out to mount(8) and umount(8). Make sure diff --git a/gnu/packages/patches/fuse-glibc-2.34.patch b/gnu/packages/patches/fuse-glibc-2.34.patch new file mode 100644 index 0000000000..5f973e2491 --- /dev/null +++ b/gnu/packages/patches/fuse-glibc-2.34.patch @@ -0,0 +1,49 @@ +Don't redefine 'closefrom' if available through glibc. + +Shamelessly stolen from Gentoo: + + https://gitweb.gentoo.org/repo/gentoo.git/tree/sys-fs/fuse/files/fuse-2.9.9-closefrom-glibc-2-34.patch + +diff --git a/configure.ac b/configure.ac +index 9946a0efa..a2d481aa9 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -55,6 +55,7 @@ fi + + AC_CHECK_FUNCS([fork setxattr fdatasync splice vmsplice utimensat]) + AC_CHECK_FUNCS([posix_fallocate]) ++AC_CHECK_FUNCS([closefrom]) + AC_CHECK_MEMBERS([struct stat.st_atim]) + AC_CHECK_MEMBERS([struct stat.st_atimespec]) + +diff --git a/util/ulockmgr_server.c b/util/ulockmgr_server.c +index 273c7d923..a04dac5c6 100644 +--- a/util/ulockmgr_server.c ++++ b/util/ulockmgr_server.c +@@ -22,6 +22,10 @@ + #include + #include + ++#ifdef HAVE_CONFIG_H ++ #include "config.h" ++#endif ++ + struct message { + unsigned intr : 1; + unsigned nofd : 1; +@@ -124,6 +128,7 @@ static int receive_message(int sock, void *buf, size_t buflen, int *fdp, + return res; + } + ++#if !defined(HAVE_CLOSEFROM) + static int closefrom(int minfd) + { + DIR *dir = opendir("/proc/self/fd"); +@@ -141,6 +146,7 @@ static int closefrom(int minfd) + } + return 0; + } ++#endif + + static void send_reply(int cfd, struct message *msg) + {