diff --git a/README.md b/README.md index 2e519a2..eb62962 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,13 @@ # fuse +With FUSE it is possible to implement a fully functional filesystem in a userspace program. +Features include: + +- simple library API +- simple installation (no need to patch or recompile the kernel) +- secure implementation +- userspace - kernel interface is very efficient +- usable by non privileged users +- runs on Linux kernels 2.4.X and 2.6.X +- has proven very stable over time. + diff --git a/fuse-2.8.7-fix_linking_issues_with_gold_linker.patch b/fuse-2.8.7-fix_linking_issues_with_gold_linker.patch new file mode 100644 index 0000000..8ee97df --- /dev/null +++ b/fuse-2.8.7-fix_linking_issues_with_gold_linker.patch @@ -0,0 +1,60 @@ +Index: fuse-2.8.6/lib/fuse.c +=================================================================== +--- fuse-2.8.6.orig/lib/fuse.c 2011-09-13 00:23:14.000000000 -0700 ++++ fuse-2.8.6/lib/fuse.c 2011-10-19 09:20:27.537099939 -0700 +@@ -3947,11 +3947,11 @@ + 11); + } + +-FUSE_SYMVER(".symver fuse_exited,__fuse_exited@"); +-FUSE_SYMVER(".symver fuse_process_cmd,__fuse_process_cmd@"); +-FUSE_SYMVER(".symver fuse_read_cmd,__fuse_read_cmd@"); +-FUSE_SYMVER(".symver fuse_set_getcontext_func,__fuse_set_getcontext_func@"); +-FUSE_SYMVER(".symver fuse_new_compat2,fuse_new@"); ++FUSE_SYMVER(".symver fuse_exited,__fuse_exited@FUSE_UNVERSIONED"); ++FUSE_SYMVER(".symver fuse_process_cmd,__fuse_process_cmd@FUSE_UNVERSIONED"); ++FUSE_SYMVER(".symver fuse_read_cmd,__fuse_read_cmd@FUSE_UNVERSIONED"); ++FUSE_SYMVER(".symver fuse_set_getcontext_func,__fuse_set_getcontext_func@FUSE_UNVERSIONED"); ++FUSE_SYMVER(".symver fuse_new_compat2,fuse_new@FUSE_UNVERSIONED"); + FUSE_SYMVER(".symver fuse_new_compat22,fuse_new@FUSE_2.2"); + + #endif /* __FreeBSD__ */ +Index: fuse-2.8.6/lib/fuse_mt.c +=================================================================== +--- fuse-2.8.6.orig/lib/fuse_mt.c 2011-09-13 00:23:14.000000000 -0700 ++++ fuse-2.8.6/lib/fuse_mt.c 2011-10-19 09:20:27.537099939 -0700 +@@ -113,4 +113,4 @@ + return fuse_session_loop_mt(fuse_get_session(f)); + } + +-FUSE_SYMVER(".symver fuse_loop_mt_proc,__fuse_loop_mt@"); ++FUSE_SYMVER(".symver fuse_loop_mt_proc,__fuse_loop_mt@FUSE_UNVERSIONED"); +Index: fuse-2.8.6/lib/fuse_versionscript +=================================================================== +--- fuse-2.8.6.orig/lib/fuse_versionscript 2011-09-13 00:23:14.000000000 -0700 ++++ fuse-2.8.6/lib/fuse_versionscript 2011-10-19 09:20:27.541099939 -0700 +@@ -1,3 +1,6 @@ ++FUSE_UNVERSIONED { ++}; ++ + FUSE_2.2 { + global: + fuse_destroy; +Index: fuse-2.8.6/lib/helper.c +=================================================================== +--- fuse-2.8.6.orig/lib/helper.c 2011-09-13 00:23:14.000000000 -0700 ++++ fuse-2.8.6/lib/helper.c 2011-10-19 09:20:27.541099939 -0700 +@@ -409,10 +409,10 @@ + return fuse_mount_compat22(mountpoint, NULL); + } + +-FUSE_SYMVER(".symver fuse_setup_compat2,__fuse_setup@"); ++FUSE_SYMVER(".symver fuse_setup_compat2,__fuse_setup@FUSE_UNVERSIONED"); + FUSE_SYMVER(".symver fuse_setup_compat22,fuse_setup@FUSE_2.2"); +-FUSE_SYMVER(".symver fuse_teardown,__fuse_teardown@"); +-FUSE_SYMVER(".symver fuse_main_compat2,fuse_main@"); ++FUSE_SYMVER(".symver fuse_teardown,__fuse_teardown@FUSE_UNVERSIONED"); ++FUSE_SYMVER(".symver fuse_main_compat2,fuse_main@FUSE_UNVERSIONED"); + FUSE_SYMVER(".symver fuse_main_real_compat22,fuse_main_real@FUSE_2.2"); + + #endif /* __FreeBSD__ */ diff --git a/fuse-initscript b/fuse-initscript new file mode 100644 index 0000000..5a465a4 --- /dev/null +++ b/fuse-initscript @@ -0,0 +1,83 @@ +#! /bin/sh +# +# fuse -- Init script for Filesystem in Userspace +# +# chkconfig: 345 26 76 +# description: Filesystem in Userspace +# +# Copyright (c) 2007 by Stefano Cotta Ramusino + +. /etc/sysconfig/rc +. $rc_functions + +NAME=fuse +LOCKFILE=/var/lock/subsys/$NAME +MOUNTPOINT=/sys/fs/$NAME/connections + +[ -x /usr/bin/fusermount ] || exit 0 + +# See how we were called. +case "$1" in + start) + echo -n $"Starting $NAME: " + if ! grep -qw fuse /proc/filesystems; then + modprobe fuse >/dev/null 2>&1 + fi + if grep -qw fusectl /proc/filesystems && \ + ! grep -qw $MOUNTPOINT /proc/mounts; then + mount -t fusectl none $MOUNTPOINT >/dev/null 2>&1 + fi + evaluate_retval + [ $? -eq 0 ] && touch $LOCKFILE + echo + ;; + stop) + echo -n $"Stopping $NAME: " + if grep -qw $MOUNTPOINT /proc/mounts; then + umount $MOUNTPOINT >/dev/null 2>&1 + fi + if grep -qw "^fuse" /proc/modules; then + rmmod fuse >/dev/null 2>&1 + fi + evaluate_retval + [ $? -eq 0 ] && rm -f $LOCKFILE + echo + ;; + restart) + $0 stop + $0 start + ;; + condstop) + [ -e $LOCKFILE ] && $0 stop || : + ;; + condrestart) + [ -e $LOCKFILE ] && $0 restart || : + ;; + status) + if [ -e $LOCKFILE ]; then + echo $"$NAME is running" + else + echo $"$NAME is not running" + fi + if grep -qw fuse /proc/filesystems; then + echo $"$NAME filesystem is supported" + else + echo $"$NAME filesystem is not supported" + fi + if grep -qw fusectl /proc/filesystems; then + echo $"fusectl filesystem is supported" + else + echo $"fusectl filesystem is not supported" + fi + if grep -qw $MOUNTPOINT /proc/mounts; then + echo $"mount point $MOUNTPOINT exists" + else + echo $"mount point $MOUNTPOINT does not exist" + fi + ;; + *) + echo $"Usage: ""$0 {start|stop|status|restart|condstop|condrestart}" + exit 1 +esac + +: diff --git a/fuse.spec b/fuse.spec new file mode 100644 index 0000000..5b36e1c --- /dev/null +++ b/fuse.spec @@ -0,0 +1,200 @@ +%define libname lib%{name} + +Name: fuse +Version: 2.9.3 +Release: 1mamba +Summary: File System in Userspace (FUSE) utilities +Group: System/Tools +Vendor: openmamba +Distribution: openmamba +Packager: Stefano Cotta Ramusino +URL: http://fuse.sourceforge.net +Source: http://downloads.sourceforge.net/fuse/fuse-%{version}.tar.gz +Source1: %{name}-initscript +Patch0: %{name}-2.8.7-fix_linking_issues_with_gold_linker.patch +License: GPL, LGPL +## AUTOBUILDREQ-BEGIN +BuildRequires: glibc-devel +## AUTOBUILDREQ-END +BuildRequires: libselinux-devel +Requires: %{libname} = %{?epoch:%epoch:}%{version}-%{release} +BuildRoot: %{_tmppath}/%{name}-%{version}-root + +%description +With FUSE it is possible to implement a fully functional filesystem in a userspace program. +Features include: + +- simple library API +- simple installation (no need to patch or recompile the kernel) +- secure implementation +- userspace - kernel interface is very efficient +- usable by non privileged users +- runs on Linux kernels 2.4.X and 2.6.X +- has proven very stable over time. + +%package -n %{libname} +Summary: File System in Userspace (FUSE) libraries +Group: System/Libraries + +%description -n %{libname} +Libraries for FUSE. + +%package -n %{libname}-devel +Summary: Devel package for %{libname} +Group: Development/Libraries +Requires: %{libname} = %{?epoch:%epoch:}%{version}-%{release} + +%description -n %{libname}-devel +Libraries for FUSE. + +This package contains static libraries and header files need for development. + +%prep +%setup -q +%patch0 -p1 + +%build +%configure \ + --disable-kernel-module \ + --exec-prefix=/ \ + --libdir=/%{_lib} \ + --bindir=/bin \ + --with-pkgconfigdir=%{_libdir}/pkgconfig + +%make + +%install +[ "%{buildroot}" != / ] && rm -rf %{buildroot} +%makeinstall + +# change permission to allow stripping +chmod 0755 %{buildroot}/bin/%{name}rmount + +install -D -m 755 %{S:1} \ + %{buildroot}%{_sysconfdir}/init.d/%{name} + +# create compatibility symlinks +install -d %{buildroot}%{_bindir} +ln -s /bin/%{name}rmount %{buildroot}%{_bindir}/%{name}rmount +ln -s /bin/ulockmgr_server %{buildroot}%{_bindir}/ulockmgr_server + +%clean +[ "%{buildroot}" != / ] && rm -rf %{buildroot} + +%post +# new install +if [ $1 -eq 1 ]; then + /sbin/chkconfig --add %{name} + service %{name} start +fi +: + +%preun +# erase +if [ $1 -eq 0 ]; then + service %{name} stop + /sbin/chkconfig --del %{name} +fi +: + +%postun +# upgrade +if [ $1 -eq 1 ]; then + if [ -e %{_sysconfdir}/modules.d/%{name} ]; then + rm -f %{_sysconfdir}/modules.d/%{name} + /sbin/chkconfig --add %{name} + fi + /sbin/chkconfig %{name} + [ $? -eq 0 ] && service %{name} restart +fi +: + +%post -n %{libname} -p /sbin/ldconfig +%postun -n %{libname} -p /sbin/ldconfig + +%files +%defattr(-,root,root) +%config %{_sysconfdir}/udev/rules.d/99-%{name}.rules +/sbin/mount.fuse +%attr(4754,root,users) /bin/fusermount +/bin/ulockmgr_server +%{_bindir}/fusermount +%{_bindir}/ulockmgr_server +%{_sysconfdir}/init.d/fuse +%{_mandir}/man1/fusermount.1.gz +%{_mandir}/man1/ulockmgr_server.1.gz +%{_mandir}/man8/mount.fuse.8.gz +%doc COPYING + +%files -n %{libname} +%defattr(-,root,root) +/%{_lib}/*.so.* +%doc AUTHORS COPYING.LIB + +%files -n %{libname}-devel +%defattr(-,root,root) +%dir %{_includedir}/%{name} +%{_includedir}/%{name}/*.h +%{_includedir}/*.h +/%{_lib}/*.a +/%{_lib}/*.la +/%{_lib}/*.so +%{_libdir}/pkgconfig/*.pc +%doc ChangeLog NEWS README README.NFS + +%changelog +* Sat Jul 06 2013 Automatic Build System 2.9.3-1mamba +- automatic version update by autodist + +* Sun Dec 02 2012 Automatic Build System 2.9.2-1mamba +- automatic version update by autodist + +* Sat Feb 25 2012 Silvan Calarco 2.8.7-1mamba +- update to 2.8.7 +- added patch to fix linking issues with gold linker + +* Thu Sep 30 2010 Automatic Build System 2.8.5-1mamba +- automatic update by autodist + +* Tue May 11 2010 Automatic Build System 2.8.4-1mamba +- automatic update by autodist + +* Thu Dec 31 2009 Silvan Calarco 2.8.1-1mamba +- update to 2.8.1 +- fusermount: set suid for users group + +* Thu Aug 27 2009 Automatic Build System 2.8.0-1mamba +- automatic update by autodist + +* Sun Nov 02 2008 Silvan Calarco 2.7.4-1mamba +- automatic update by autodist + +* Sat Nov 17 2007 Stefano Cotta Ramusino 2.7.1-1mamba +- update to 2.7.1 + +* Sat Aug 25 2007 Stefano Cotta Ramusino 2.7.0-1mamba +- update to 2.7.0 + +* Thu May 03 2007 Stefano Cotta Ramusino 2.6.5-1mamba +- update to 2.6.5 + +* Fri Apr 27 2007 Stefano Cotta Ramusino 2.6.3-2mamba +- allow users to umount fuse filesystems + +* Wed Apr 18 2007 Stefano Cotta Ramusino 2.6.3-1mamba +- update to version 2.6.3 by autospec +- added init script + +* Mon Oct 16 2006 Davide Madrisan 2.5.3-2qilnx +- patched configuration file for udev to make it compatibile with latest udev + versions +- replace the udev configuration rule and do a backup copy of the previous one + +* Tue Jun 27 2006 Stefano Cotta Ramusino 2.5.3-1qilnx +- update to version 2.5.3 by autospec + +* Fri Apr 14 2006 Stefano Cotta Ramusino 2.5.2-2qilnx +- added autoboot for fuse module + +* Mon Mar 13 2006 Stefano Cotta Ramusino 2.5.2-1qilnx +- package created by autospec