diff options
Diffstat (limited to 'pkgs/os-specific/linux/fuse/common.nix')
-rw-r--r-- | pkgs/os-specific/linux/fuse/common.nix | 58 |
1 files changed, 35 insertions, 23 deletions
diff --git a/pkgs/os-specific/linux/fuse/common.nix b/pkgs/os-specific/linux/fuse/common.nix index 8938eaae8183..b18b6de0d140 100644 --- a/pkgs/os-specific/linux/fuse/common.nix +++ b/pkgs/os-specific/linux/fuse/common.nix @@ -1,8 +1,10 @@ { version, sha256Hash, maintainers }: { stdenv, fetchFromGitHub, fetchpatch -, utillinux, autoconf, automake, libtool, gettext -, fusePackages }: +, fusePackages, utillinux, gettext +, autoconf, automake, libtool +, meson, ninja, pkgconfig +}: let isFuse3 = stdenv.lib.hasPrefix "3" version; @@ -16,15 +18,25 @@ in stdenv.mkDerivation rec { sha256 = sha256Hash; }; - patches = stdenv.lib.optional - (!isFuse3 && stdenv.isAarch64) - (fetchpatch { - url = "https://github.com/libfuse/libfuse/commit/914871b20a901e3e1e981c92bc42b1c93b7ab81b.patch"; - sha256 = "1w4j6f1awjrycycpvmlv0x5v9gprllh4dnbjxl4dyl2jgbkaw6pa"; - }); - - nativeBuildInputs = [ libtool autoconf automake ]; - buildInputs = [ gettext utillinux ]; + patches = + stdenv.lib.optional + (!isFuse3 && stdenv.isAarch64) + (fetchpatch { + url = "https://github.com/libfuse/libfuse/commit/914871b20a901e3e1e981c92bc42b1c93b7ab81b.patch"; + sha256 = "1w4j6f1awjrycycpvmlv0x5v9gprllh4dnbjxl4dyl2jgbkaw6pa"; + }) + ++ stdenv.lib.optionals isFuse3 [ + ./fuse3-no-udev.patch # only required for udevrulesdir + ./fuse3-install.patch + # install_man makes the build non-reproducible by encoding the date + ./fuse3-install_man.patch + ]; + + + nativeBuildInputs = if isFuse3 + then [ meson ninja pkgconfig ] + else [ autoconf automake libtool ]; + buildInputs = stdenv.lib.optional (!isFuse3) gettext; outputs = [ "out" ] ++ stdenv.lib.optional isFuse3 "common"; @@ -39,27 +51,27 @@ in stdenv.mkDerivation rec { export NIX_CFLAGS_COMPILE="-DFUSERMOUNT_DIR=\"/run/wrappers/bin\"" sed -e 's@/bin/@${utillinux}/bin/@g' -i lib/mount_util.c - sed -e 's@CONFIG_RPATH=/usr/share/gettext/config.rpath@CONFIG_RPATH=${gettext}/share/gettext/config.rpath@' -i makeconf.sh - - ./makeconf.sh - ''; - - postFixup = if isFuse3 then '' - cd $out - + '' + (if isFuse3 then '' + # The configure phase will delete these files (temporary workaround for + # ./fuse3-install_man.patch) + install -D -m444 doc/fusermount3.1 $out/share/man/man1/fusermount3.1 + install -D -m444 doc/mount.fuse.8 $out/share/man/man8/mount.fuse.8 + '' else '' + sed -e 's@CONFIG_RPATH=/usr/share/gettext/config.rpath@CONFIG_RPATH=${gettext}/share/gettext/config.rpath@' -i makeconf.sh + ./makeconf.sh + ''); + + postFixup = "cd $out\n" + (if isFuse3 then '' mv bin/mount.fuse3 bin/mount.fuse - mv etc/udev/rules.d/99-fuse3.rules etc/udev/rules.d/99-fuse.rules install -D -m555 bin/mount.fuse $common/bin/mount.fuse install -D -m444 etc/udev/rules.d/99-fuse.rules $common/etc/udev/rules.d/99-fuse.rules install -D -m444 share/man/man8/mount.fuse.8.gz $common/share/man/man8/mount.fuse.8.gz '' else '' - cd $out - cp ${fusePackages.fuse_3.common}/bin/mount.fuse bin/mount.fuse cp ${fusePackages.fuse_3.common}/etc/udev/rules.d/99-fuse.rules etc/udev/rules.d/99-fuse.rules cp ${fusePackages.fuse_3.common}/share/man/man8/mount.fuse.8.gz share/man/man8/mount.fuse.8.gz - ''; + ''); enableParallelBuilding = true; |