diff --git a/README.md b/README.md index a8c47be..5cf9144 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,6 @@ # zfs-fuse +ZFS is an advanced modern general-purpose filesystem from Sun Microsystems, originally designed for Solaris/OpenSolaris. + +This project is a port of ZFS to the FUSE framework for the Linux operating system. + diff --git a/zfs-fuse-0.4.0_beta1-SConstruct.patch b/zfs-fuse-0.4.0_beta1-SConstruct.patch new file mode 100644 index 0000000..887d6ff --- /dev/null +++ b/zfs-fuse-0.4.0_beta1-SConstruct.patch @@ -0,0 +1,11 @@ +--- zfs-fuse-0.4.0_beta1/src/SConstruct.orig 2007-03-26 07:34:58 -0400 ++++ zfs-fuse-0.4.0_beta1/src/SConstruct 2007-03-26 07:35:14 -0400 +@@ -11,7 +11,7 @@ + + env['CC'] = 'gcc' + env['LINKFLAGS'] = Split('-pipe -Wall -Werror') +-env['CCFLAGS'] = Split('-pipe -Wall -Werror -std=c99 -Wno-unused -Wno-missing-braces -Wno-parentheses -Wno-uninitialized -fno-strict-aliasing -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_REENTRANT -DTEXT_DOMAIN=\\"zfs-fuse\\"') ++env['CCFLAGS'] = Split('-Wall -std=c99 -Wno-unused -Wno-missing-braces -Wno-parentheses -Wno-uninitialized -fno-strict-aliasing -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_REENTRANT -DTEXT_DOMAIN=\\"zfs-fuse\\"') + + debug = int(ARGUMENTS.get('debug', '1')) + diff --git a/zfs-fuse-0.5.0-gcc43.patch b/zfs-fuse-0.5.0-gcc43.patch new file mode 100644 index 0000000..62e63d0 --- /dev/null +++ b/zfs-fuse-0.5.0-gcc43.patch @@ -0,0 +1,12 @@ +diff -Nru zfs-fuse-0.5.0.orig/src/lib/libzpool/zio.c zfs-fuse-0.5.0/src/lib/libzpool/zio.c +--- zfs-fuse-0.5.0.orig/src/lib/libzpool/zio.c 2008-09-13 03:37:59.000000000 +0200 ++++ zfs-fuse-0.5.0/src/lib/libzpool/zio.c 2009-03-22 12:56:39.000000000 +0100 +@@ -2210,7 +2210,7 @@ + } + + for (i = 0; i < rc; i++) { +- iocb = events[i].obj; ++ iocb = (struct iocb *)events[i].obj; + zio = (zio_t *) events[i].data; + + zio->io_error = -events[i].res2; diff --git a/zfs-fuse-0.5.0-gcc44.patch b/zfs-fuse-0.5.0-gcc44.patch new file mode 100644 index 0000000..e6b82a5 --- /dev/null +++ b/zfs-fuse-0.5.0-gcc44.patch @@ -0,0 +1,11 @@ +diff -Nru zfs-fuse-0.5.0.orig/src/lib/libumem/umem_update_thread.c zfs-fuse-0.5.0/src/lib/libumem/umem_update_thread.c +--- zfs-fuse-0.5.0.orig/src/lib/libumem/umem_update_thread.c 2008-09-13 03:37:59.000000000 +0200 ++++ zfs-fuse-0.5.0/src/lib/libumem/umem_update_thread.c 2010-02-05 15:31:07.000000000 +0100 +@@ -119,6 +119,7 @@ + } + } + /* LINTED no return statement */ ++ return (0); + } + + int diff --git a/zfs-fuse-0.7.0-glibc-2.14.patch b/zfs-fuse-0.7.0-glibc-2.14.patch new file mode 100644 index 0000000..8934503 --- /dev/null +++ b/zfs-fuse-0.7.0-glibc-2.14.patch @@ -0,0 +1,13 @@ +diff --git a/src/lib/libumem/malloc.c b/src/lib/libumem/malloc.c +index 7eec207..5a4d763 100644 +--- a/src/lib/libumem/malloc.c ++++ b/src/lib/libumem/malloc.c +@@ -453,7 +453,7 @@ static void __attribute__((constructor)) umem_malloc_init_hook(void) + } + } + +-void (*__malloc_initialize_hook)(void) = umem_malloc_init_hook; ++void (* __volatile __malloc_initialize_hook)(void) = umem_malloc_init_hook; + + #else + void __attribute__((constructor)) diff --git a/zfs-fuse-0.7.0-glibc-tirpc.patch b/zfs-fuse-0.7.0-glibc-tirpc.patch new file mode 100644 index 0000000..e8c7ebb --- /dev/null +++ b/zfs-fuse-0.7.0-glibc-tirpc.patch @@ -0,0 +1,78 @@ +diff -Nru zfs-fuse-0.7.0.orig/src/cmd/zdb/SConscript zfs-fuse-0.7.0/src/cmd/zdb/SConscript +--- zfs-fuse-0.7.0.orig/src/cmd/zdb/SConscript 2011-03-09 16:22:30.000000000 +0100 ++++ zfs-fuse-0.7.0/src/cmd/zdb/SConscript 2013-01-23 15:43:06.076397514 +0100 +@@ -3,6 +3,6 @@ + objects = Split('zdb.c zdb_il.c ptrace.c #lib/libavl/libavl.a #lib/libnvpair/libnvpair-user.a #lib/libumem/libumem.a #lib/libzfs/libzfs.a #lib/libzpool/libzpool-user.a #lib/libzfscommon/libzfscommon-user.a #lib/libuutil/libuutil.a #lib/libsolcompat/libsolcompat.a') + cpppath = Split('#lib/libavl/include #lib/libnvpair/include #lib/libumem/include #lib/libzfscommon/include #lib/libzpool/include #lib/libsolcompat/include #lib/libzfs/include') + +-libs = Split('rt pthread dl z m aio crypto') ++libs = Split('rt pthread dl z m aio crypto tirpc') + + env.Program('zdb', objects, CPPPATH = env['CPPPATH'] + cpppath, LIBS = libs) +diff -Nru zfs-fuse-0.7.0.orig/src/cmd/zfs/SConscript zfs-fuse-0.7.0/src/cmd/zfs/SConscript +--- zfs-fuse-0.7.0.orig/src/cmd/zfs/SConscript 2011-03-09 16:22:30.000000000 +0100 ++++ zfs-fuse-0.7.0/src/cmd/zfs/SConscript 2013-01-23 15:43:37.701072143 +0100 +@@ -3,6 +3,6 @@ + objects = Split('zfs_main.c zfs_iter.c ptrace.c #lib/libzfs/libzfs.a #lib/libzfscommon/libzfscommon-user.a #lib/libnvpair/libnvpair-user.a #lib/libumem/libumem.a #lib/libuutil/libuutil.a #lib/libavl/libavl.a #lib/libsolcompat/libsolcompat.a') + cpppath = Split('#lib/libuutil/include #lib/libnvpair/include #lib/libumem/include #lib/libzfscommon/include #lib/libzfs/include #lib/libsolcompat/include #lib/libavl/include') + +-libs = Split('pthread m dl crypto') ++libs = Split('pthread m dl crypto tirpc') + + env.Program('zfs', objects, CPPPATH = env['CPPPATH'] + cpppath, LIBS = libs) +diff -Nru zfs-fuse-0.7.0.orig/src/cmd/zpool/SConscript zfs-fuse-0.7.0/src/cmd/zpool/SConscript +--- zfs-fuse-0.7.0.orig/src/cmd/zpool/SConscript 2011-03-09 16:22:30.000000000 +0100 ++++ zfs-fuse-0.7.0/src/cmd/zpool/SConscript 2013-01-23 15:43:19.454259864 +0100 +@@ -3,6 +3,6 @@ + objects = Split('zpool_iter.c zpool_main.c zpool_util.c zpool_vdev.c ptrace.c #lib/libnvpair/libnvpair-user.a #lib/libzfs/libzfs.a #lib/libumem/libumem.a #lib/libzfscommon/libzfscommon-user.a #lib/libuutil/libuutil.a #lib/libavl/libavl.a #lib/libsolcompat/libsolcompat.a ../stat/common/timestamp.c') + cpppath = Split('#lib/libuutil/include #lib/libnvpair/include #lib/libumem/include #lib/libzfscommon/include #lib/libzfs/include #lib/libsolcompat/include #lib/libavl/include ../stat/common ') + +-libs = Split('pthread m dl crypto') ++libs = Split('pthread m dl crypto tirpc') + + env.Program('zpool', objects, CPPPATH = env['CPPPATH'] + cpppath, LIBS = libs) +diff -Nru zfs-fuse-0.7.0.orig/src/cmd/ztest/SConscript zfs-fuse-0.7.0/src/cmd/ztest/SConscript +--- zfs-fuse-0.7.0.orig/src/cmd/ztest/SConscript 2011-03-09 16:22:30.000000000 +0100 ++++ zfs-fuse-0.7.0/src/cmd/ztest/SConscript 2013-01-23 15:43:29.022161436 +0100 +@@ -3,7 +3,7 @@ + objects = Split('ztest.c #lib/libzpool/libzpool-user.a #lib/libzfscommon/libzfscommon-user.a #lib/libnvpair/libnvpair-user.a #lib/libavl/libavl.a #lib/libumem/libumem.a #lib/libsolcompat/libsolcompat.a') + cpppath = Split('#lib/libavl/include #lib/libnvpair/include #lib/libumem/include #lib/libzfscommon/include #lib/libzpool/include #lib/libsolcompat/include') + +-libs = Split('m dl rt pthread z aio crypto') ++libs = Split('m dl rt pthread z aio crypto tirpc') + + env.Program('ztest', objects, CPPPATH = env['CPPPATH'] + cpppath, LIBS = libs) + env.Depends('ztest', '../zdb/zdb') +diff -Nru zfs-fuse-0.7.0.orig/src/zfs-fuse/SConscript zfs-fuse-0.7.0/src/zfs-fuse/SConscript +--- zfs-fuse-0.7.0.orig/src/zfs-fuse/SConscript 2011-03-09 16:22:30.000000000 +0100 ++++ zfs-fuse-0.7.0/src/zfs-fuse/SConscript 2013-01-23 15:43:48.963956263 +0100 +@@ -4,6 +4,6 @@ + cpppath = Split('#lib/libavl/include #lib/libnvpair/include #lib/libumem/include #lib/libzfscommon/include #lib/libsolkerncompat/include') + ccflags = Split('-D_KERNEL') + +-libs = Split('rt pthread fuse dl z aio crypto') ++libs = Split('rt pthread fuse dl z aio crypto tirpc') + + env.Program('zfs-fuse', objects, CPPPATH = env['CPPPATH'] + cpppath, LIBS = libs, CCFLAGS = env['CCFLAGS'] + ccflags) +diff -Nru zfs-fuse-0.7.0.orig/src/zfs-fuse/wscript_build zfs-fuse-0.7.0/src/zfs-fuse/wscript_build +--- zfs-fuse-0.7.0.orig/src/zfs-fuse/wscript_build 2011-03-09 16:22:30.000000000 +0100 ++++ zfs-fuse-0.7.0/src/zfs-fuse/wscript_build 2013-01-23 15:43:58.253860685 +0100 +@@ -16,7 +16,7 @@ + includes = include_dirs, + defines = [ '_FILE_OFFSET_BITS=64', '_KERNEL'], + uselib_local = 'zpool-kernel zfscommon-kernel nvpair-kernel avl umem solkerncompat', +- uselib = 'aio_lib fuse_lib dl_lib z_lib pthread_lib rt_lib crypto', ++ uselib = 'aio_lib fuse_lib dl_lib z_lib pthread_lib rt_lib crypto tirpc', + install_path = '${PREFIX}/usr/local/sbin/', + target = 'zfs-fuse' + ) +--- zfs-fuse-0.7.0/src/cmd/zstreamdump/SConscript.orig 2013-02-25 13:03:36.402430081 +0100 ++++ zfs-fuse-0.7.0/src/cmd/zstreamdump/SConscript 2013-02-25 13:01:41.824454121 +0100 +@@ -3,6 +3,6 @@ + objects = Split('zstreamdump.c #lib/libzfs/libzfs.a #lib/libnvpair/libnvpair-user.a') + cpppath = Split('#lib/libnvpair/include #lib/libumem/include #lib/libzfscommon/include #lib/libzfs/include #lib/libsolcompat/include #lib/libzpool/include #lib/libavl/include') + +-libs = Split('pthread m dl') ++libs = Split('pthread m dl tirpc') + + env.Program('zstreamdump', objects, CPPPATH = env['CPPPATH'] + cpppath, LIBS = libs) diff --git a/zfs-fuse-initscript b/zfs-fuse-initscript new file mode 100644 index 0000000..7ee368a --- /dev/null +++ b/zfs-fuse-initscript @@ -0,0 +1,65 @@ +#!/bin/sh +# +# zfs-fuse Filesystem in the Userspace port of Solaris' ZFS +# +# chkconfig: 345 90 10 +# description: A port of ZFS to the FUSE framework for the Linux operating system +# +# Copyright (c) 2007 by Stefano Cotta Ramusino + +. /etc/sysconfig/rc +. $rc_functions + +NAME=zfs-fuse +DAEMON=/usr/sbin/$NAME +DAEMONPID=/var/run/$NAME.pid +LOCKFILE=/var/lock/subsys/$NAME + +[ -x $DAEMON ] || exit 0 + +running() { + status $NAME > /dev/null +} + +# See how we were called. +case "$1" in + start) + if ! running; then + echo -n $"Starting $NAME daemon: " + daemon --pidfile=$DAEMONPID $DAEMON -p $DAEMONPID + [ $? -eq 0 ] && touch $LOCKFILE + else + echo -n $"Service $NAME already running." + fi + echo + ;; + stop) + if running; then + echo -n $"Shutting down $NAME daemon: " + killproc -p $DAEMONPID $DAEMON + [ $? -eq 0 ] && rm -f $LOCKFILE $DAEMONPID + else + echo -n $"Service $NAME not running." + fi + echo + ;; + restart) + $0 stop + $0 start + ;; + condstop) + [ -e $LOCKFILE ] && $0 stop || : + ;; + condrestart) + [ -e $LOCKFILE ] && $0 restart || : + ;; + status) + status $NAME + ;; + *) + echo $"Usage: $0 {start|stop|restart|condstop|condrestart|status}" + exit 1 + ;; +esac + +: diff --git a/zfs-fuse.spec b/zfs-fuse.spec new file mode 100644 index 0000000..e54e254 --- /dev/null +++ b/zfs-fuse.spec @@ -0,0 +1,125 @@ +Name: zfs-fuse +Epoch: 1 +Version: 0.7.0 +Release: 1mamba +Summary: ZFS Filesystem for FUSE/Linux +Group: System/Kernel and Hardware/Drivers +Vendor: openmamba +Distribution: openmamba +Packager: Stefano Cotta Ramusino +URL: http://zfs-fuse.net/ +## To get zfs-fuse: +## hg clone http://www.wizy.org/mercurial/zfs-fuse/trunk +## mv trunk zfs-fuse +## tar jcvf zfs-fuse-hg`date '+%Y%m%d'`.tar.bz2 zfs-fuse +#Source: http://download.berlios.de/zfs-fuse/zfs-fuse-%{version}.tar.bz2 +#Source: http://zfs-fuse.net/releases/%{version}/zfs-fuse-%{version}.tar.bz2 +Source: http://fossies.org/linux/misc/zfs-fuse-%{version}.tar.xz +#Source: http://zfs-fuse.net/releases/%{version}/zfs-fuse-%{version}.tar.bz2 +Source1: %{name}-initscript +Patch: %{name}-0.4.0_beta1-SConstruct.patch +Patch1: %{name}-0.5.0-gcc43.patch +Patch2: %{name}-0.5.0-gcc44.patch +Patch3: zfs-fuse-0.7.0-glibc-2.14.patch +Patch4: zfs-fuse-0.7.0-glibc-tirpc.patch +License: Common Development and Distribution License +## AUTOBUILDREQ-BEGIN +BuildRequires: glibc-devel +BuildRequires: libaio-devel +BuildRequires: libfuse-devel +BuildRequires: libz-devel +## AUTOBUILDREQ-END +BuildRequires: scons +BuildRoot: %{_tmppath}/%{name}-%{version}-root + +%description +ZFS is an advanced modern general-purpose filesystem from Sun Microsystems, originally designed for Solaris/OpenSolaris. + +This project is a port of ZFS to the FUSE framework for the Linux operating system. + +%prep +%setup -q +%patch1 -p1 +%patch2 -p1 +%patch3 -p1 +%patch4 -p1 +#sed -i -e "s,-O2,%{optflags}," src/SConstruct + +%build +cd src +scons \ + debug=0 \ + optim="%{optflags} -ltirpc" + +%install +[ "%{buildroot}" != / ] && rm -rf "%{buildroot}" +pushd src +scons install \ + debug=0 \ + install_dir=%{buildroot}%{_sbindir} \ + man_dir=%{buildroot}%{_mandir}/man8 \ + cfg_dir=%{buildroot}%{_sysconfdir}/zfs +popd + +install -D -m 0755 %{S:1} \ + %{buildroot}%{_initrddir}/%{name} + +# remove unpackaged files +rm -f %{buildroot}%{_sbindir}/.sconsign + +%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} condstop + /sbin/chkconfig --del %{name} +fi +: + +%postun +# upgrade +if [ $1 -eq 1 ]; then + service %{name} condrestart +fi +: + +%files +%defattr(-,root,root) +%{_sysconfdir}/zfs/zfs_pool_alert +%{_initrddir}/%{name} +%{_sbindir}/zdb +%{_sbindir}/zfs +%{_sbindir}/zfs-fuse +%{_sbindir}/zpool +%{_sbindir}/zstreamdump +%{_sbindir}/ztest +%{_mandir}/man8/zdb.8* +%{_mandir}/man8/zfs-fuse.8* +%{_mandir}/man8/zfs.8* +%{_mandir}/man8/zpool.8* +%{_mandir}/man8/zstreamdump.8* +%doc LICENSE +#BUGS CHANGES HACKING README STATUS TESTING TODO + +%changelog +* Wed Aug 15 2012 Automatic Build System 0.7.0-1mamba +- automatic version update by autodist + +* Fri Feb 05 2010 Silvan Calarco 0.5.0-2mamba +- rebuilt to remove executable requirements + +* Sun Mar 22 2009 Silvan Calarco 0.5.0-1mamba +- automatic update by autodist + +* Mon Aug 27 2007 Stefano Cotta Ramusino hg20070828-1mamba +- package created by autospec