diff --git a/.gitignore b/.gitignore index 685d5f5..56518fd 100644 --- a/.gitignore +++ b/.gitignore @@ -7,3 +7,4 @@ fuse-2.8.4.tar.gz /fuse-2.9.3.tar.gz /fuse-2.9.4.tar.gz /fuse-2.9.7.tar.gz +/fuse-3.0.0.tar.gz diff --git a/fuse-3.0.0-More-parentheses.patch b/fuse-3.0.0-More-parentheses.patch new file mode 100644 index 0000000..6d10168 --- /dev/null +++ b/fuse-3.0.0-More-parentheses.patch @@ -0,0 +1,13 @@ +diff -up libfuse-fuse-3.0.0/lib/fuse.c.parens libfuse-fuse-3.0.0/lib/fuse.c +--- libfuse-fuse-3.0.0/lib/fuse.c.parens 2017-03-21 09:31:31.979537796 -0400 ++++ libfuse-fuse-3.0.0/lib/fuse.c 2017-03-21 09:31:42.676250718 -0400 +@@ -1653,7 +1653,7 @@ int fuse_fs_open(struct fuse_fs *fs, con + 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 -up libfuse-fuse-3.0.0/lib/fuse_lowlevel.c.parens libfuse-fuse-3.0.0/lib/fuse_lowlevel.c diff --git a/fuse.spec b/fuse.spec index 33dc21a..006232b 100644 --- a/fuse.spec +++ b/fuse.spec @@ -1,111 +1,235 @@ -Name: fuse -Version: 2.9.7 -Release: 2%{?dist} -Summary: File System in Userspace (FUSE) utilities +%global fuse2ver 2.9.7 +%global fuse2sver 2 +%global fuse3ver 3.0.0 -Group: System Environment/Base -License: GPL+ -URL: http://fuse.sf.net -Source0: https://github.com/libfuse/libfuse/archive/%{name}-%{version}.tar.gz -Source1: %{name}.conf +Name: fuse +Version: %{fuse2ver} +Release: 1%{?dist} +Summary: File System in Userspace (FUSE) v2 utilities +License: GPL+ +URL: http://fuse.sf.net +#fuse2 sources +Source0: https://github.com/libfuse/libfuse/archive/%{name}-%{fuse2ver}.tar.gz +#fuse3 sources +Source1: https://github.com/libfuse/libfuse/archive/%{name}-%{fuse3ver}.tar.gz +Source2: %{name}.conf -Patch1: fuse-0001-More-parentheses.patch +Patch1: fuse-3.0.0-More-parentheses.patch +Patch2: fuse-0001-More-parentheses.patch # https://bugzilla.redhat.com/show_bug.cgi?id=970768 -Patch2: fuse-2.9.2-namespace-conflict-fix.patch -Requires: which -Conflicts: filesystem < 3 -BuildRequires: libselinux-devel +Patch3: fuse-2.9.2-namespace-conflict-fix.patch + +Requires: which +Conflicts: filesystem < 3 +BuildRequires: libselinux-devel BuildRequires: autoconf, automake, libtool, gettext-devel +Requires: fuse-common = %{fuse3ver} %description With FUSE it is possible to implement a fully functional filesystem in a -userspace program. This package contains the FUSE userspace tools to +userspace program. This package contains the FUSE v2 userspace tools to +mount a FUSE filesystem. + +%package -n fuse3 +Version: %{fuse3ver} +Summary: File System in Userspace (FUSE) v3 utilitie +Requires: fuse-common = %{fuse3ver} + +%description -n fuse3 +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) libraries -Group: System Environment/Libraries -License: LGPLv2+ -Conflicts: filesystem < 3 +Version: %{fuse2ver} +Summary: File System in Userspace (FUSE) v2 libraries +Group: System Environment/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 libraries. +userspace program. This package contains the FUSE v2 libraries. +%package -n fuse3-libs +Version: %{fuse3ver} +Summary: File System in Userspace (FUSE) v3 libraries +Group: System Environment/Libraries +License: LGPLv2+ +Conflicts: filesystem < 3 + +%description -n fuse3-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) devel files -Group: Development/Libraries -Requires: %{name}-libs = %{version}-%{release} -Requires: pkgconfig -License: LGPLv2+ -Conflicts: filesystem < 3 +Version: %{fuse2ver} +Summary: File System in Userspace (FUSE) v2 devel files +Group: Development/Libraries +Requires: %{name}-libs = %{fuse2ver}-%{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 based applications/filesystems. +pgk-config) to develop FUSE v2 based applications/filesystems. +%package -n fuse3-devel +Version: %{fuse3ver} +Summary: File System in Userspace (FUSE) v3 devel files +Group: Development/Libraries +Requires: %{name}3-libs = %{fuse3ver}-%{release} +Requires: pkgconfig +License: LGPLv2+ +Conflicts: filesystem < 3 + +%description -n fuse3-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. + +%package common +Version: %{fuse3ver} +Summary: Common files for File System in Userspace (FUSE) v2 and v3 +License: GPL+ + +%description common +Common files for FUSE v2 and FUSE v3. %prep -%setup -q -n lib%{name}-%{name}-%{version} +%setup -q -T -c -n fuse2and3 -a0 -a1 + +# fuse 3 +pushd lib%{name}-%{name}-%{fuse3ver} ./makeconf.sh #disable device creation during build/install sed -i 's|mknod|echo Disabled: mknod |g' util/Makefile.in %patch1 -p1 -b .add_parentheses -%patch2 -p1 -b .conflictfix +popd + +# fuse 2 +pushd lib%{name}-%{name}-%{fuse2ver} +./makeconf.sh +#disable device creation during build/install +sed -i 's|mknod|echo Disabled: mknod |g' util/Makefile.in +%patch2 -p1 -b .add_parentheses +%patch3 -p1 -b .conflictfix +popd %build +# fuse 3 +pushd lib%{name}-%{name}-%{fuse3ver} # Can't pass --disable-static here, or else the utils don't build export MOUNT_FUSE_PATH="%{_sbindir}" CFLAGS="%{optflags} -D_GNU_SOURCE" %configure make %{?_smp_mflags} +popd + +# fuse 2 +pushd lib%{name}-%{name}-%{fuse2ver} +# Can't pass --disable-static here, or else the utils don't build +export MOUNT_FUSE_PATH="%{_sbindir}" +CFLAGS="%{optflags} -D_GNU_SOURCE" %configure +make %{?_smp_mflags} +popd %install +# fuse 3 +pushd lib%{name}-%{name}-%{fuse3ver} make install DESTDIR=%{buildroot} +popd 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}/fusermount +chmod 0755 %{buildroot}/%{_bindir}/fusermount3 + +# fuse 2 +pushd lib%{name}-%{name}-%{fuse2ver} +install -m 0755 lib/.libs/libfuse.so.%{fuse2ver} %{buildroot}/%{_libdir} +install -m 0755 lib/.libs/libulockmgr.so.1.0.1 %{buildroot}/%{_libdir} +install -p fuse.pc %{buildroot}/%{_libdir}/pkgconfig/ +install -m 0755 util/fusermount %{buildroot}/%{_bindir} +install -m 0755 util/mount.fuse %{buildroot}/%{_sbindir} +install -m 0755 util/ulockmgr_server %{buildroot}/%{_bindir} +mkdir -p %{buildroot}/%{_includedir}/fuse +install -p include/old/fuse.h %{buildroot}/%{_includedir}/ +install -p include/ulockmgr.h %{buildroot}/%{_includedir}/ +for i in cuse_lowlevel.h fuse_common_compat.h fuse_common.h fuse_compat.h fuse.h fuse_lowlevel_compat.h fuse_lowlevel.h fuse_opt.h; do + install -p include/$i %{buildroot}/%{_includedir}/fuse/ +done +popd +pushd %{buildroot}/%{_libdir} +ln -s libfuse.so.%{fuse2ver} libfuse.so.%{fuse2sver} +ln -s libfuse.so.%{fuse2ver} libfuse.so +ln -s libulockmgr.so.1.0.1 libulockmgr.so.1 +ln -s libulockmgr.so.1.0.1 libulockmgr.so +popd # Get rid of static libs rm -f %{buildroot}/%{_libdir}/*.a # No need to create init-script -rm -f %{buildroot}%{_sysconfdir}/init.d/fuse +rm -f %{buildroot}%{_sysconfdir}/init.d/fuse3 # Install config-file -install -p -m 0644 %{SOURCE1} %{buildroot}%{_sysconfdir} +install -p -m 0644 %{SOURCE2} %{buildroot}%{_sysconfdir} # Delete pointless udev rules, which do not belong in /etc (brc#748204) -rm -f %{buildroot}%{_sysconfdir}/udev/rules.d/99-fuse.rules +rm -f %{buildroot}%{_libdir}/udev/rules.d/99-fuse3.rules %post libs -p /sbin/ldconfig +%post -n fuse3-libs -p /sbin/ldconfig + %postun libs -p /sbin/ldconfig +%postun -n fuse3-libs -p /sbin/ldconfig + %files -%license COPYING -%doc AUTHORS ChangeLog NEWS README.md README.NFS +%license libfuse-fuse-%{fuse2ver}/COPYING +%doc libfuse-fuse-%{fuse2ver}/AUTHORS libfuse-fuse-%{fuse2ver}/ChangeLog libfuse-fuse-%{fuse2ver}/NEWS libfuse-fuse-%{fuse2ver}/README.md libfuse-fuse-%{fuse2ver}/README.NFS %{_sbindir}/mount.fuse %attr(4755,root,root) %{_bindir}/fusermount %{_bindir}/ulockmgr_server + +%files -n fuse3 +%license libfuse-fuse-%{fuse3ver}/COPYING +%doc libfuse-fuse-%{fuse3ver}/AUTHORS libfuse-fuse-%{fuse3ver}/ChangeLog.rst libfuse-fuse-%{fuse3ver}/README.md +%{_sbindir}/mount.fuse3 +%attr(4755,root,root) %{_bindir}/fusermount3 + +%files common %config(noreplace) %{_sysconfdir}/%{name}.conf %{_mandir}/man1/* %{_mandir}/man8/* %files libs -%license COPYING.LIB +%license libfuse-fuse-%{fuse2ver}/COPYING.LIB %{_libdir}/libfuse.so.* %{_libdir}/libulockmgr.so.* +%files -n fuse3-libs +%license libfuse-fuse-%{fuse3ver}/COPYING.LIB +%{_libdir}/libfuse3.so.* + %files devel %{_libdir}/libfuse.so %{_libdir}/libulockmgr.so -%{_libdir}/pkgconfig/*.pc +%{_libdir}/pkgconfig/fuse.pc %{_includedir}/fuse.h %{_includedir}/ulockmgr.h %{_includedir}/fuse +%files -n fuse3-devel +%{_libdir}/libfuse3.so +%{_libdir}/pkgconfig/fuse3.pc +%{_includedir}/fuse3/ + %changelog +* Tue Mar 21 2017 Tom Callaway - 3.0.0-1 +- update to 3.0.0 +- split out fuse3 packages + * Fri Feb 10 2017 Fedora Release Engineering - 2.9.7-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild diff --git a/sources b/sources index 4284722..c14e9c3 100644 --- a/sources +++ b/sources @@ -1 +1,2 @@ -91c97e5ae0a40312115dfecc4887bd9d fuse-2.9.7.tar.gz +SHA512 (fuse-2.9.7.tar.gz) = 960a576352663cfb730abd0020103c45f6fd8873d08ca40565a61421a7a80c110b31e88db5f45fc7e3d5e8b7a16a9e973483eda42c58c430dfb0599bc952800b +SHA512 (fuse-3.0.0.tar.gz) = c13874da7906b4b01030c2a0b185db0d87d5097b59395534f6a893edf6ddd88f4ddb6bda613c4a3076e5e2ca627600039aa45ea749c1ae1ee0fa3abdb5cae2b1