diff options
author | Niels de Vos <ndevos@redhat.com> | 2015-05-05 10:28:15 +0200 |
---|---|---|
committer | Niels de Vos <ndevos@redhat.com> | 2015-05-08 01:34:59 -0700 |
commit | fd8b8a81c243776b20e6d48993524ee3f1351ca6 (patch) | |
tree | 66ae1b5b4720d697fc05bd8da40ae6a61c16d813 /glusterfs.spec.in | |
parent | 1a9df097463d41679b87b6cbd4634fc3390fe82c (diff) |
rpm: reduce package dependencies and add -client-xlators
Restructuring the RPM packages in order to reduce the dependencies that
get installed for glusterfs-api (mainly on request for Qemu hosts).
The dependencies of these packages look roughly like this:
.------------------.
| glusterfs-server |
'-------+----------'
|\
| \
| '---------------+--------------------.
| | |
| v v
| .----------------. .---------------.
| | glusterfs-fuse | | glusterfs-api |
| '--------+-------' '------+--------'
| /| /|
| / | / |
| / | / |
| / | / |
| .-----------+----=---------------' |
|/ | |
v v v
.-----------. .--------------------------.
| glusterfs | | glusterfs-client-xlators |
'-----------' '--------------------------'
With this structure, users can install glusterfs-server, glusterfs-fuse
or glusterfs-api (libgfapi) without getting any unneeded xlators or
other scripts/binaries.
The "glusterfs" and "glusterfsd" binary (symlinked) is now part of the
glusterfs-fuse package (moved from glusterfs). This does not make a
difference for glusterfs-server installations, because a server
installation always needs the glusterfs-fuse package for doing internal
mounts.
The advantage is that glusterfs-api does not pull in any executables
that get into the $PATH. This has caused confusion before when people
tried to remove the (wrongly assumed) server-only "glusterfsd" binaries.
URL: http://thread.gmane.org/gmane.comp.file-systems.gluster.devel/10643
Change-Id: Id03f1a634ea3c62ab7008345be92e01ccf43b1a6
BUG: 1195947
Signed-off-by: Niels de Vos <ndevos@redhat.com>
Reviewed-on: http://review.gluster.org/10554
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Kaleb KEITHLEY <kkeithle@redhat.com>
Tested-by: NetBSD Build System
Reviewed-by: Humble Devassy Chirammal <humble.devassy@gmail.com>
Diffstat (limited to 'glusterfs.spec.in')
-rw-r--r-- | glusterfs.spec.in | 164 |
1 files changed, 114 insertions, 50 deletions
diff --git a/glusterfs.spec.in b/glusterfs.spec.in index c2d2aab4caa..580a5357603 100644 --- a/glusterfs.spec.in +++ b/glusterfs.spec.in @@ -185,14 +185,6 @@ BuildRequires: python-simplejson %endif %if ( 0%{?_with_systemd:1} ) BuildRequires: systemd-units -Requires(post): systemd-units -Requires(preun): systemd-units -Requires(postun): systemd-units -%else -Requires(post): /sbin/chkconfig -Requires(preun): /sbin/service -Requires(preun): /sbin/chkconfig -Requires(postun): /sbin/service %endif Requires: %{name}-libs = %{version}-%{release} @@ -239,13 +231,14 @@ called Translators from GNU Hurd kernel. Much of the code in GlusterFS is in user space and easily manageable. This package includes the glusterfs binary, the glusterfsd daemon and the -gluster command line, libglusterfs and glusterfs translator modules common to -both GlusterFS server and client framework. +libglusterfs and glusterfs translator modules common to both GlusterFS server +and client framework. %package api Summary: GlusterFS api library Group: System Environment/Daemons Requires: %{name} = %{version}-%{release} +Requires: %{name}-client-xlators = %{version}-%{release} # we provide the Python package/namespace 'gluster' #Provides: python-gluster = %{version}-%{release} @@ -339,6 +332,7 @@ BuildRequires: fuse-devel Requires: attr Requires: %{name} = %{version}-%{release} +Requires: %{name}-client-xlators = %{version}-%{release} Obsoletes: %{name}-client < %{version}-%{release} Provides: %{name}-client = %{version}-%{release} @@ -352,7 +346,8 @@ terms of features and extensibility. It borrows a powerful concept called Translators from GNU Hurd kernel. Much of the code in GlusterFS is in user space and easily manageable. -This package provides support to FUSE based clients. +This package provides support to FUSE based clients and inlcudes the +glusterfs(d) binary. %package ganesha Summary: NFS-Ganesha configuration @@ -508,14 +503,27 @@ like Pacemaker. Summary: Clustered file-system server Group: System Environment/Daemons Requires: %{name} = %{version}-%{release} -Requires: %{name}-cli = %{version}-%{release} Requires: %{name}-libs = %{version}-%{release} +Requires: %{name}-cli = %{version}-%{release} +# some daemons (like quota) use a fuse-mount, glusterfsd is part of -fuse Requires: %{name}-fuse = %{version}-%{release} +# self-heal daemon, rebalance, nfs-server etc. are actually clients +Requires: %{name}-client-xlators = %{version}-%{release} # psmisc for killall, lvm2 for snapshot, and nfs-utils and # rpcbind/portmap for gnfs server Requires: psmisc Requires: lvm2 Requires: nfs-utils +%if ( 0%{?_with_systemd:1} ) +Requires(post): systemd-units +Requires(preun): systemd-units +Requires(postun): systemd-units +%else +Requires(post): /sbin/chkconfig +Requires(preun): /sbin/service +Requires(preun): /sbin/chkconfig +Requires(postun): /sbin/service +%endif %if ( 0%{?fedora} ) || ( 0%{?rhel} && 0%{?rhel} >= 6 ) Requires: rpcbind %else @@ -540,6 +548,21 @@ is in user space and easily manageable. This package provides the glusterfs server daemon. +%package client-xlators +Summary: GlusterFS client-side translators +Group: Applications/File + +%description client-xlators +GlusterFS is a distributed file-system capable of scaling to several +petabytes. It aggregates various storage bricks over Infiniband RDMA +or TCP/IP interconnect into one large parallel network file +system. GlusterFS is one of the most sophisticated file systems in +terms of features and extensibility. It borrows a powerful concept +called Translators from GNU Hurd kernel. Much of the code in GlusterFS +is in user space and easily manageable. + +This package provides the translators needed on any GlusterFS client. + %prep %setup -q -n %{name}-%{version}%{?prereltag} @@ -885,55 +908,62 @@ fi /sbin/ldconfig ##----------------------------------------------------------------------------- -## All %files should be placed here and keep them sorted +## All files should be placed here and keep them grouped ## %files %doc ChangeLog COPYING-GPLV2 COPYING-LGPLV3 INSTALL README.md THANKS -%config(noreplace) %{_sysconfdir}/logrotate.d/glusterfs -%config(noreplace) %{_sysconfdir}/sysconfig/* %if ( 0%{!?_without_syslog:1} ) %if ( 0%{?fedora} ) || ( 0%{?rhel} && 0%{?rhel} >= 6 ) %{_sysconfdir}/rsyslog.d/gluster.conf.example %endif %endif -%{_libdir}/glusterfs -%{_sbindir}/glusterfs* %{_mandir}/man8/*gluster*.8* %exclude %{_mandir}/man8/gluster.8* %dir %{_localstatedir}/log/glusterfs -%dir %{_localstatedir}/run/gluster -%if 0%{?_tmpfilesdir:1} -%{_tmpfilesdir}/gluster.conf -%endif -%dir %{_sharedstatedir}/glusterd %if ( 0%{!?_without_rdma:1} ) %exclude %{_libdir}/glusterfs/%{version}%{?prereltag}/rpc-transport/rdma* %endif -# server-side, etc., xlators in other RPMs -%exclude %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/mount/api* -%exclude %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/mount/fuse* -%exclude %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/storage* -%exclude %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/posix* -%exclude %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/protocol/server* -%exclude %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/mgmt* -%exclude %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/nfs* -# Glupy files are in the -extra-xlators package -%exclude %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/glupy* -%exclude /usr/lib/python2.7/site-packages/gluster/glupy.py* - -# sample xlators not generally used or usable -%exclude %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/encryption/rot-13* -%exclude %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/mac-compat* -%exclude %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/testing/performance/symlink-cache* %dir %{_datadir}/glusterfs/scripts %{_datadir}/glusterfs/scripts/post-upgrade-script-for-quota.sh %{_datadir}/glusterfs/scripts/pre-upgrade-script-for-quota.sh +# xlators that are needed on the client- and on the server-side +%dir %{_libdir}/glusterfs/%{version}%{?prereltag}/auth +%{_libdir}/glusterfs/%{version}%{?prereltag}/auth/addr.so +%{_libdir}/glusterfs/%{version}%{?prereltag}/auth/login.so +%dir %{_libdir}/glusterfs/%{version}%{?prereltag}/rpc-transport +%{_libdir}/glusterfs/%{version}%{?prereltag}/rpc-transport/socket.so +%dir %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/debug +%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/debug/error-gen.so +%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/debug/io-stats.so +%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/debug/trace.so +%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/encryption/crypt.so +%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/access-control.so +%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/barrier.so +%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/cdc.so +%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/changelog.so +%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/gfid-access.so +%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/read-only.so +%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/shard.so +%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/snapview-client.so +%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/worm.so +%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/meta.so +%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/performance/io-cache.so +%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/performance/io-threads.so +%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/performance/md-cache.so +%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/performance/open-behind.so +%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/performance/quick-read.so +%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/performance/read-ahead.so +%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/performance/readdir-ahead.so +%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/performance/stat-prefetch.so +%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/performance/write-behind.so +%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/system/posix-acl.so + %files api %exclude %{_libdir}/*.so # libgfapi files %{_libdir}/libgfapi.* -%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/mount/api* +%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/mount/api.so %files api-devel %{_libdir}/pkgconfig/glusterfs-api.pc @@ -958,9 +988,24 @@ fi %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/glupy/helloworld.* %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/glupy/negative.* +%files client-xlators +%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/cluster/*.so +%exclude %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/cluster/pump.so +%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/ganesha.so +%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/qemu-block.so +%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/protocol/client.so + %files extra-xlators -# Glupy C shared library +%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/encryption/rot-13.so %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/glupy.so +%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/mac-compat.so +%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/marker.so +%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/prot_client.so +%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/prot_dht.so +%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/prot_server.so +%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/quiesce.so +%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/testing/features/template.so +%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/testing/performance/symlink-cache.so # Glupy Python files %{python_sitelib}/gluster/glupy/* # Don't expect a .egg-info file on EL5 @@ -969,7 +1014,11 @@ fi %endif %files fuse -%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/mount/fuse* +# glusterfs is a symlink to glusterfsd, -server depends on -fuse. +%{_sbindir}/glusterfs +%{_sbindir}/glusterfsd +%config(noreplace) %{_sysconfdir}/logrotate.d/glusterfs +%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/mount/fuse.so /sbin/mount.glusterfs %if ( 0%{!?_without_fusermount:1} ) %{_bindir}/fusermount-glusterfs @@ -1044,6 +1093,11 @@ fi %doc extras/clear_xattrs.sh %config(noreplace) %{_sysconfdir}/sysconfig/glusterd %config(noreplace) %{_sysconfdir}/glusterfs +%dir %{_localstatedir}/run/gluster +%if 0%{?_tmpfilesdir:1} +%{_tmpfilesdir}/gluster.conf +%endif +%dir %{_sharedstatedir}/glusterd %dir %{_sharedstatedir}/glusterd/groups %config(noreplace) %{_sharedstatedir}/glusterd/groups/virt # Legacy configs @@ -1067,13 +1121,26 @@ fi # binaries %{_sbindir}/glusterd %{_sbindir}/glfsheal -%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/storage* +# {_sbindir}/glusterfsd is the actual binary, but glusterfs (client) is a +# symlink. The binary itself (and symlink) are part of the glusterfs-fuse +# package, because glusterfs-server depends on that anyway. +%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/cluster/pump.so +%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/arbiter.so +%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/bit-rot.so +%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/bitrot-stub.so +%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/changetimerecorder.so +%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/index.so +%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/locks.so %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/posix* -%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/protocol/server* +%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/snapview-server.so +%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/quota* +%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/trash.so +%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/upcall.so %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/mgmt* %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/nfs* +%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/protocol/server* +%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/storage* %{_libdir}/libgfdb.so.* -%{_sharedstatedir}/glusterd #snap_scheduler %{_sbindir}/snap_scheduler.py @@ -1120,15 +1187,12 @@ fi # Incrementalapi %{_libexecdir}/glusterfs/glusterfind %{_bindir}/glusterfind -%exclude %{_libexecdir}/glusterfs/glusterfind/brickfind.pyc -%exclude %{_libexecdir}/glusterfs/glusterfind/changelog.pyc -%exclude %{_libexecdir}/glusterfs/glusterfind/nodecleanup.pyc -%exclude %{_libexecdir}/glusterfs/glusterfind/brickfind.pyo -%exclude %{_libexecdir}/glusterfs/glusterfind/changelog.pyo -%exclude %{_libexecdir}/glusterfs/glusterfind/nodecleanup.pyo %changelog +* Tue May 05 2015 Niels de Vos <ndevos@redhat.com> +- Introduce glusterfs-client-xlators to reduce dependencies (#1195947) + * Wed Apr 15 2015 Humble Chirammal <hchiramm@redhat.com> - Introducing python-gluster package to own gluster namespace in sitelib (#1211848) |