diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..56529d2 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/fuse-3.4.2.tar.gz diff --git a/fuse.conf b/fuse.conf new file mode 100644 index 0000000..cd4c6bd --- /dev/null +++ b/fuse.conf @@ -0,0 +1,2 @@ +# mount_max = 1000 +# user_allow_other diff --git a/fuse3-0001-More-parentheses.patch b/fuse3-0001-More-parentheses.patch new file mode 100644 index 0000000..5a1d7fb --- /dev/null +++ b/fuse3-0001-More-parentheses.patch @@ -0,0 +1,19 @@ +From: Peter Lemenkov +Date: Mon, 9 Aug 2010 12:10:40 +0400 +Subject: [PATCH] More parentheses + +Signed-off-by: Peter Lemenkov + +diff --git a/lib/fuse.c b/lib/fuse.c +index a40e995..479736c 100755 +--- a/lib/fuse.c ++++ b/lib/fuse.c +@@ -1759,7 +1759,7 @@ int fuse_fs_open(struct fuse_fs *fs, const char *path, + fprintf(stderr, "open flags: 0x%x %s\n", fi->flags, + path); + +- err = fs->op.open(path, fi); ++ err = (fs->op.open)(path, fi); + + if (fs->debug && !err) + fprintf(stderr, " open[%llu] flags: 0x%x %s\n", diff --git a/fuse3-0002-disable-device-creation-during-build-install.patch b/fuse3-0002-disable-device-creation-during-build-install.patch new file mode 100644 index 0000000..050e468 --- /dev/null +++ b/fuse3-0002-disable-device-creation-during-build-install.patch @@ -0,0 +1,29 @@ +From: Tom Callaway +Date: Mon, 25 Mar 2019 15:17:36 -0400 +Subject: [PATCH] disable device creation during build/install + + +diff --git a/util/install_helper.sh b/util/install_helper.sh +index 688b245..8f40a9f 100755 +--- a/util/install_helper.sh ++++ b/util/install_helper.sh +@@ -22,18 +22,12 @@ else + DESTDIR="${DESTDIR%/}" + fi + +-chown root:root "${DESTDIR}${bindir}/fusermount3" ++# chown root:root "${DESTDIR}${bindir}/fusermount3" + chmod u+s "${DESTDIR}${bindir}/fusermount3" + + install -D -m 644 "${MESON_SOURCE_ROOT}/util/fuse.conf" \ + "${DESTDIR}${sysconfdir}/fuse.conf" + +- +-if test ! -e "${DESTDIR}/dev/fuse"; then +- mkdir -p "${DESTDIR}/dev" +- mknod "${DESTDIR}/dev/fuse" -m 0666 c 10 229 +-fi +- + install -D -m 644 "${MESON_SOURCE_ROOT}/util/udev.rules" \ + "${DESTDIR}${udevrulesdir}/99-fuse3.rules" + diff --git a/fuse3-0003-Whitelist-smb2-392.patch b/fuse3-0003-Whitelist-smb2-392.patch new file mode 100644 index 0000000..3bb3778 --- /dev/null +++ b/fuse3-0003-Whitelist-smb2-392.patch @@ -0,0 +1,63 @@ +From: Peter Lemenkov +Date: Wed, 3 Apr 2019 22:43:48 +0200 +Subject: [PATCH] Whitelist smb2 (#392) + +See also https://bugzilla.redhat.com/1694552#c7 +Signed-off-by: Peter Lemenkov + +diff --git a/ChangeLog.rst b/ChangeLog.rst +index 74bd0be..f711b2f 100644 +--- a/ChangeLog.rst ++++ b/ChangeLog.rst +@@ -1,3 +1,6 @@ ++* Added SMB2 to whitelist (so users can now mount FUSE filesystems ++ on mountpoints within SMB 2.0 filesystems). ++ + libfuse 3.4.2 (2019-03-09) + ========================== + +diff --git a/util/fusermount.c b/util/fusermount.c +index 7f9b7cd..5e0b104 100644 +--- a/util/fusermount.c ++++ b/util/fusermount.c +@@ -1012,35 +1012,36 @@ static int check_perm(const char **mntp, struct stat *stbuf, int *mountpoint_fd) + * but got expanded as we found more filesystems that needed to be + * overlayed. */ + typeof(fs_buf.f_type) f_type_whitelist[] = { +- 0x5346414f /* OPENAFS_SUPER_MAGIC */, + 0x61756673 /* AUFS_SUPER_MAGIC */, + 0x00000187 /* AUTOFS_SUPER_MAGIC */, + 0xCA451A4E /* BCACHEFS_STATFS_MAGIC */, + 0x9123683E /* BTRFS_SUPER_MAGIC */, + 0x00C36400 /* CEPH_SUPER_MAGIC */, + 0xFF534D42 /* CIFS_MAGIC_NUMBER */, +- 0X00004D44 /* MSDOS_SUPER_MAGIC */, + 0x0000F15F /* ECRYPTFS_SUPER_MAGIC */, + 0x0000EF53 /* EXT[234]_SUPER_MAGIC */, + 0xF2F52010 /* F2FS_SUPER_MAGIC */, + 0x65735546 /* FUSE_SUPER_MAGIC */, + 0x01161970 /* GFS2_MAGIC */, + 0x47504653 /* GPFS_SUPER_MAGIC */, +- 0x3153464A /* JFS_SUPER_MAGIC */, ++ 0x0000482b /* HFSPLUS_SUPER_MAGIC */, + 0x000072B6 /* JFFS2_SUPER_MAGIC */, ++ 0x3153464A /* JFS_SUPER_MAGIC */, + 0x0BD00BD0 /* LL_SUPER_MAGIC */, ++ 0X00004D44 /* MSDOS_SUPER_MAGIC */, + 0x0000564C /* NCP_SUPER_MAGIC */, + 0x00006969 /* NFS_SUPER_MAGIC */, + 0x00003434 /* NILFS_SUPER_MAGIC */, + 0x5346544E /* NTFS_SB_MAGIC */, ++ 0x5346414f /* OPENAFS_SUPER_MAGIC */, + 0x794C7630 /* OVERLAYFS_SUPER_MAGIC */, + 0x52654973 /* REISERFS_SUPER_MAGIC */, ++ 0xFE534D42 /* SMB2_SUPER_MAGIC */, + 0x73717368 /* SQUASHFS_MAGIC */, + 0x01021994 /* TMPFS_MAGIC */, + 0x24051905 /* UBIFS_SUPER_MAGIC */, + 0x58465342 /* XFS_SB_MAGIC */, + 0x2FC12FC1 /* ZFS_SUPER_MAGIC */, +- 0x0000482b /* HFSPLUS_SUPER_MAGIC */, + }; + for (i = 0; i < sizeof(f_type_whitelist)/sizeof(f_type_whitelist[0]); i++) { + if (f_type_whitelist[i] == fs_buf.f_type) diff --git a/fuse3.spec b/fuse3.spec new file mode 100644 index 0000000..95291db --- /dev/null +++ b/fuse3.spec @@ -0,0 +1,131 @@ +Name: fuse3 +Version: 3.4.2 +Release: 3%{?dist} +Summary: File System in Userspace (FUSE) v3 utilities +License: GPL+ +URL: http://fuse.sf.net +Source0: https://github.com/libfuse/libfuse/archive/fuse-%{version}.tar.gz +Source1: fuse.conf + +Patch1: fuse3-0001-More-parentheses.patch +Patch2: fuse3-0002-disable-device-creation-during-build-install.patch +# https://bugzilla.redhat.com/1694552#c7 +# https://github.com/libfuse/libfuse/pull/392 +# backported for fuse-3.4.2 +Patch3: fuse3-0003-Whitelist-smb2-392.patch + +BuildRequires: which +Conflicts: filesystem < 3 +BuildRequires: libselinux-devel +BuildRequires: meson, ninja-build, gcc +%if ! 0%{?el6} && ! 0%{?el7} +BuildRequires: systemd-udev +%endif +Requires: %{_sysconfdir}/fuse.conf +# fuse-common 3.4.2-2 had the fuse & fuse3 man pages in it +Conflicts: fuse-common <= 3.4.2-2 + +%description +With FUSE it is possible to implement a fully functional filesystem in a +userspace program. This package contains the FUSE v3 userspace tools to +mount a FUSE filesystem. + +%package libs +Summary: File System in Userspace (FUSE) v3 libraries +License: LGPLv2+ +Conflicts: filesystem < 3 + +%description libs +Devel With FUSE it is possible to implement a fully functional filesystem in a +userspace program. This package contains the FUSE v3 libraries. + +%package devel +Summary: File System in Userspace (FUSE) v3 devel files +Requires: %{name}-libs = %{version}-%{release} +Requires: pkgconfig +License: LGPLv2+ +Conflicts: filesystem < 3 + +%description devel +With FUSE it is possible to implement a fully functional filesystem in a +userspace program. This package contains development files (headers, +pgk-config) to develop FUSE v3 based applications/filesystems. + +%if ! 0%{?el6} && ! 0%{?el7} +%package -n fuse-common +Summary: Common files for File System in Userspace (FUSE) v2 and v3 +License: GPL+ + +%description -n fuse-common +Common files for FUSE v2 and FUSE v3. +%endif + +%prep +%setup -n libfuse-fuse-%{version} + +%patch1 -p1 -b .add_parentheses +%patch2 -p1 -b .nodev +%patch3 -p1 -b .smb2_whitelist + +%build +%if ! 0%{?_vpath_srcdir:1} +%global _vpath_srcdir . +%endif +%meson +%meson_build + +%install +export MESON_INSTALL_DESTDIR_PREFIX=%{buildroot}/usr %meson_install +find %{buildroot} . +find %{buildroot} -type f -name "*.la" -exec rm -f {} ';' +# change from 4755 to 0755 to allow stripping -- fixed later in files +chmod 0755 %{buildroot}/%{_bindir}/fusermount3 + +# Get rid of static libs +rm -f %{buildroot}/%{_libdir}/*.a +# No need to create init-script +rm -f %{buildroot}%{_sysconfdir}/init.d/fuse3 + +%if 0%{?el6} || 0%{?el7} +# This is in the fuse package here +rm -f %{buildroot}%{_sysconfdir}/fuse.conf +%else +# Install config-file +install -p -m 0644 %{SOURCE1} %{buildroot}%{_sysconfdir} +%endif + +# Delete pointless udev rules, which do not belong in /etc (brc#748204) +rm -f %{buildroot}/usr/lib/udev/rules.d/99-fuse3.rules + +%if 0%{?el6} || 0%{?el7} +%post -p /sbin/ldconfig libs +%postun -p /sbin/ldconfig libs +%else +%ldconfig_scriptlets libs +%endif + +%files +%license LICENSE GPL2.txt +%doc AUTHORS ChangeLog.rst README.md +%{_sbindir}/mount.fuse3 +%attr(4755,root,root) %{_bindir}/fusermount3 +%{_mandir}/man1/* +%{_mandir}/man8/* + +%files libs +%license LGPL2.txt +%{_libdir}/libfuse3.so.* + +%files devel +%{_libdir}/libfuse3.so +%{_libdir}/pkgconfig/fuse3.pc +%{_includedir}/fuse3/ + +%if ! 0%{?el6} && ! 0%{?el7} +%files -n fuse-common +%config(noreplace) %{_sysconfdir}/fuse.conf +%endif + +%changelog +* Mon Apr 08 2019 Dave Dykstra - 3.4.2-3 +- Separate out from fuse package diff --git a/sources b/sources new file mode 100644 index 0000000..ebbdfdd --- /dev/null +++ b/sources @@ -0,0 +1,2 @@ +SHA512 (fuse-2.9.9.tar.gz) = 3d82fafd04f2924299bb09d2bb144935fa004a43fb9a6568e2e1cc5a60fded2efa1711029a0d7f12b3e6e4501f7217f2ee3545646d89da8dece083cb390f23e2 +SHA512 (fuse-3.4.2.tar.gz) = ba59f261a51803517cf5d131a74455cf3143e80382c9a9612037cbce9941af867d379955417c384fe0b28e31b5a16f9d0ff35337c7e565830767879458c942be