From f7a815a2d0e7e9d7ed1ec2da587790bd3ddda9e5 Mon Sep 17 00:00:00 2001 From: Justin Clift Date: Fri, 21 Mar 2014 20:13:16 +0000 Subject: features/glupy: Rename Glupy python module to avoid namespace conflict * Rename gluster.py to glupy.py to avoid namespace conflict (#1018619) * Move the main Glupy files into glusterfs-extra-xlators rpm * Move the Glupy Translator examples into glusterfs-devel rpm * Add Glupy entry to the MAINTAINERS file BUG: 1018619 Change-Id: I48de598ba5ae8eec0e7e276bbcca1abb0e549cef Signed-off-by: Justin Clift Reviewed-on: http://review.gluster.org/6979 Reviewed-by: Kaleb KEITHLEY Reviewed-by: Jeff Darcy --- glusterfs.spec.in | 61 ++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 60 insertions(+), 1 deletion(-) (limited to 'glusterfs.spec.in') diff --git a/glusterfs.spec.in b/glusterfs.spec.in index f3038eaa4..5c4f74af4 100644 --- a/glusterfs.spec.in +++ b/glusterfs.spec.in @@ -347,6 +347,25 @@ is in user space and easily manageable. This package provides the glusterfs libgfapi library. +%package extra-xlators +Summary: Extra Gluster filesystem Translators +Group: Applications/File +# We need -api rpm for its __init__.py in Python site-packages area +Requires: %{name}-api = %{version}-%{release} +Requires: python python-ctypes + +%description extra-xlators +GlusterFS is a clustered 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 extra filesystem Translators, such as Glupy, +for GlusterFS. + %if ( 0%{!?_without_ocf:1} ) %package resource-agents Summary: OCF Resource Agents for GlusterFS @@ -384,6 +403,8 @@ like Pacemaker. Summary: Development Libraries Group: Development/Libraries Requires: %{name} = %{version}-%{release} +# Needed for the Glupy examples to work +Requires: %{name}-extra-xlators = %{version}-%{release} %description devel GlusterFS is a clustered file-system capable of scaling to several @@ -451,6 +472,12 @@ sed -i 's|^runpath_var=LD_RUN_PATH|runpath_var=DIE_RPATH_DIE|' libtool make %{?_smp_mflags} +# Build Glupy +pushd xlators/features/glupy/src +FLAGS="$RPM_OPT_FLAGS" python setup.py build +popd + +# Build the Python libgfapi examples pushd api/examples FLAGS="$RPM_OPT_FLAGS" python setup.py build popd @@ -458,6 +485,10 @@ popd %install rm -rf %{buildroot} make install DESTDIR=%{buildroot} +# install the Glupy Python library in /usr/lib/python*/site-packages +pushd xlators/features/glupy/src +python setup.py install --skip-build --verbose --root %{buildroot} +popd # install the gfapi Python library in /usr/lib/python*/site-packages pushd api/examples python setup.py install --skip-build --verbose --root %{buildroot} @@ -669,6 +700,8 @@ rm -rf %{buildroot} %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* # 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* @@ -806,9 +839,26 @@ fi %files api %exclude %{_libdir}/*.so +# Shared Python-GlusterFS files +%{python_sitelib}/gluster/__init__.* +# Libgfapi files %{_libdir}/libgfapi.* %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/mount/api* -%{python_sitelib}/* +%{python_sitelib}/gluster/gfapi.* +# Don't expect a .egg-info file on EL5 +%if ( 0%{?rhel} && 0%{?rhel} > 5 ) || ( 0%{?fedora} ) +%{python_sitelib}/glusterfs_api*.egg-info +%endif + +%files extra-xlators +# Glupy C shared library +%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/glupy.so +# Glupy Python files +%{python_sitelib}/gluster/glupy.* +# Don't expect a .egg-info file on EL5 +%if ( 0%{?rhel} && 0%{?rhel} > 5 ) || ( 0%{?fedora} ) +%{python_sitelib}/glusterfs_glupy*.egg-info +%endif %if ( 0%{!?_without_ocf:1} ) %files resource-agents @@ -822,6 +872,10 @@ fi %exclude %{_includedir}/glusterfs/api %exclude %{_libdir}/libgfapi.so %{_libdir}/*.so +# Glupy Translator examples +%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/glupy/debug-trace.* +%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/glupy/helloworld.* +%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/glupy/negative.* %files api-devel %{_libdir}/pkgconfig/glusterfs-api.pc @@ -899,6 +953,11 @@ fi * Wed Feb 26 2014 Niels de Vos - Drop glusterfs-devel dependency from glusterfs-api (#1065750) +* Wed Feb 19 2014 Justin Clift +- Rename gluster.py to glupy.py to avoid namespace conflict (#1018619) +- Move the main Glupy files into glusterfs-extra-xlators rpm +- Move the Glupy Translator examples into glusterfs-devel rpm + * Thu Feb 06 2014 Aravinda VK - Include geo-replication upgrade scripts and hook scripts. -- cgit From 326b77695f15444f79cea9822e35361e6bd167d5 Mon Sep 17 00:00:00 2001 From: Poornima G Date: Wed, 26 Mar 2014 17:30:32 +0530 Subject: rpm: Include the hook scripts of add-brick, volume start, stop and set. Change-Id: I9485da3d9a54a52cc524daff8f4f4caca3a6065d BUG: 1080970 Signed-off-by: Poornima G Reviewed-on: http://review.gluster.org/7346 Reviewed-by: Vijay Bellur Tested-by: Gluster Build System --- glusterfs.spec.in | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'glusterfs.spec.in') diff --git a/glusterfs.spec.in b/glusterfs.spec.in index 5c4f74af4..5d29ad39e 100644 --- a/glusterfs.spec.in +++ b/glusterfs.spec.in @@ -651,6 +651,16 @@ touch %{buildroot}%{_sharedstatedir}/glusterd/nfs/run/nfs.pid install -p -m 0744 extras/hook-scripts/S56glusterd-geo-rep-create-post.sh \ %{buildroot}%{_sharedstatedir}/glusterd/hooks/1/gsync-create/post %endif +%{__install} -p -m 0744 extras/hook-scripts/start/post/*.sh \ + %{buildroot}%{_sharedstatedir}/glusterd/hooks/1/start/post +%{__install} -p -m 0744 extras/hook-scripts/stop/pre/*.sh \ + %{buildroot}%{_sharedstatedir}/glusterd/hooks/1/stop/pre +%{__install} -p -m 0744 extras/hook-scripts/set/post/*.sh \ + %{buildroot}%{_sharedstatedir}/glusterd/hooks/1/set/post +%{__install} -p -m 0744 extras/hook-scripts/add-brick/post/*.sh \ + %{buildroot}%{_sharedstatedir}/glusterd/hooks/1/add-brick/post +%{__install} -p -m 0744 extras/hook-scripts/add-brick/pre/*.sh \ + %{buildroot}%{_sharedstatedir}/glusterd/hooks/1/add-brick/pre find ./tests ./run-tests.sh -type f | cpio -pd %{buildroot}%{_prefix}/share/glusterfs @@ -795,6 +805,7 @@ fi %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/protocol/server* %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/mgmt* %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/nfs* +%{_sharedstatedir}/glusterd %ghost %attr(0644,-,-) %config(noreplace) %{_sharedstatedir}/glusterd/glusterd.info %ghost %attr(0600,-,-) %{_sharedstatedir}/glusterd/options # This is really ugly, but I have no idea how to mark these directories in @@ -950,6 +961,9 @@ if [ $1 -ge 1 ]; then fi %changelog +* Wed Mar 26 2014 Poornima G +- Include the hook scripts of add-brick, volume start, stop and set + * Wed Feb 26 2014 Niels de Vos - Drop glusterfs-devel dependency from glusterfs-api (#1065750) -- cgit From 091c49d85cf727ab9c391ba1ac2b44e1091fd259 Mon Sep 17 00:00:00 2001 From: "Kaleb S. KEITHLEY" Date: Thu, 3 Apr 2014 07:38:15 -0400 Subject: rpm: fix broken glusterfs-server install of hooks the %ghost hook directories are no longer ghosts now that files are installed in them Change-Id: I6133b891c73d87e4e35dc9c6c7ba7febbc9e2e7f BUG: 1080970 Signed-off-by: Kaleb S. KEITHLEY Reviewed-on: http://review.gluster.org/7391 Reviewed-by: Niels de Vos Reviewed-by: Justin Clift Tested-by: Justin Clift Tested-by: Gluster Build System --- glusterfs.spec.in | 11 ----------- 1 file changed, 11 deletions(-) (limited to 'glusterfs.spec.in') diff --git a/glusterfs.spec.in b/glusterfs.spec.in index 5d29ad39e..5e0c7c0dc 100644 --- a/glusterfs.spec.in +++ b/glusterfs.spec.in @@ -811,22 +811,11 @@ fi # This is really ugly, but I have no idea how to mark these directories in # any other way. They should belong to the glusterfs-server package, but # don't exist after installation. They are generated on the first start... -%ghost %dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/hooks -%ghost %dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/hooks/1 -%ghost %dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/hooks/1/stop %ghost %dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/hooks/1/stop/post -%ghost %dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/hooks/1/stop/pre -%ghost %dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/hooks/1/start -%ghost %dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/hooks/1/start/post %ghost %dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/hooks/1/start/pre %ghost %dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/hooks/1/remove-brick %ghost %dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/hooks/1/remove-brick/post %ghost %dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/hooks/1/remove-brick/pre -%ghost %dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/hooks/1/add-brick -%ghost %dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/hooks/1/add-brick/post -%ghost %dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/hooks/1/add-brick/pre -%ghost %dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/hooks/1/set -%ghost %dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/hooks/1/set/post %ghost %dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/hooks/1/set/pre %ghost %dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/hooks/1/create %ghost %dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/hooks/1/create/post -- cgit From 4bacb40fc898ee9519cfe4e9ee50401ec466168c Mon Sep 17 00:00:00 2001 From: "Bala.FA" Date: Thu, 27 Feb 2014 12:39:43 +0530 Subject: build: set version based on git tag or specific This patch brings version and release number generated at build time using git tags or fixed content from VERSION file. With git tag, version/release number are got from output of 'git describe --tags --match "v[0-9]*"' command. This behavior can be overriden by having VERSION file with fixed version/release. The VERSION file should have text describing version and release for example something like 'v3.4.0-1' For testing this patch, its required to remove autom4te.cache directory to avoid seeing previously set version. BUG: 1074919 Change-Id: I8f68172e8b389b0ba0846e9adb4b597e67a909aa Signed-off-by: Bala.FA Reviewed-on: http://review.gluster.org/7164 Tested-by: Gluster Build System Reviewed-by: Niels de Vos Reviewed-by: Kaleb KEITHLEY --- glusterfs.spec.in | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'glusterfs.spec.in') diff --git a/glusterfs.spec.in b/glusterfs.spec.in index 5e0c7c0dc..245812405 100644 --- a/glusterfs.spec.in +++ b/glusterfs.spec.in @@ -83,7 +83,7 @@ Vendor: Fedora Project %else Name: @PACKAGE_NAME@ Version: @PACKAGE_VERSION@ -Release: 1%{?dist} +Release: 0.@PACKAGE_RELEASE@%{?dist} Vendor: glusterfs.org %endif License: GPLv2 or LGPLv3+ @@ -950,6 +950,9 @@ if [ $1 -ge 1 ]; then fi %changelog +* Wed Apr 02 2014 Arumugam Balamurugan +- add version/release dynamically (#1074919) + * Wed Mar 26 2014 Poornima G - Include the hook scripts of add-brick, volume start, stop and set -- cgit From 2045c9ea1c7c3aac9d377070df6f0ee99619f421 Mon Sep 17 00:00:00 2001 From: "Bala.FA" Date: Fri, 28 Feb 2014 11:10:51 +0530 Subject: build: rearrange spec file elements This is majorly cleanup wrt spec file elements/definitions. This patch fixes to ease adding downstream specific conditions. BUG: 1074939 Change-Id: I311abf8457417591a0d08569d3f83d73fa63cdc0 Signed-off-by: Bala.FA Reviewed-on: http://review.gluster.org/7165 Tested-by: Gluster Build System Reviewed-by: Niels de Vos --- glusterfs.spec.in | 633 ++++++++++++++++++++++++++++-------------------------- 1 file changed, 334 insertions(+), 299 deletions(-) (limited to 'glusterfs.spec.in') diff --git a/glusterfs.spec.in b/glusterfs.spec.in index 245812405..5fa8ededc 100644 --- a/glusterfs.spec.in +++ b/glusterfs.spec.in @@ -5,6 +5,10 @@ # uncomment and add '%' to use the prereltag for pre-releases # %%global prereltag qa3 +##----------------------------------------------------------------------------- +## All argument definitions should be placed here and keep them sorted +## + # if you wish to compile an rpm without rdma support, compile like this... # rpmbuild -ta @PACKAGE_NAME@-@PACKAGE_VERSION@.tar.gz --without rdma %{?_without_rdma:%global _without_rdma --disable-ibverbs} @@ -44,9 +48,6 @@ %global _without_syslog --disable-syslog %endif -# there is no systemtap support! Perhaps some day there will be -%global _without_systemtap --enable-systemtap=no - # if you wish to compile an rpm without the BD map support... # rpmbuild -ta @PACKAGE_NAME@-@PACKAGE_VERSION@.tar.gz --without bd %{?_without_bd:%global _without_bd --disable-bd-xlator} @@ -64,16 +65,78 @@ %define _without_qemu_block --disable-qemu-block %endif +##----------------------------------------------------------------------------- +## All %global definitions should be placed here and keep them sorted +## + %if ( 0%{?fedora} && 0%{?fedora} > 16 ) || ( 0%{?rhel} && 0%{?rhel} > 6 ) -%global _with_systemd true +%global _with_systemd true %endif +# there is no systemtap support! Perhaps some day there will be +%global _without_systemtap --enable-systemtap=no + # From https://fedoraproject.org/wiki/Packaging:Python#Macros %if ( 0%{?rhel} && 0%{?rhel} <= 5 ) %{!?python_sitelib: %global python_sitelib %(python -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())")} %{!?python_sitearch: %global python_sitearch %(python -c "from distutils.sysconfig import get_python_lib; print(get_python_lib(1))")} %endif +%if ( 0%{?_with_systemd:1} ) +%define _init_enable() /bin/systemctl enable %1.service ; +%define _init_disable() /bin/systemctl disable %1.service ; +%define _init_restart() /bin/systemctl try-restart %1.service ; +%define _init_stop() /bin/systemctl stop %1.service ; +%define _init_install() install -D -p -m 0644 %1 %{buildroot}%{_unitdir}/%2.service ; +# can't seem to make a generic macro that works +%define _init_glusterd %{_unitdir}/glusterd.service +%define _init_glusterfsd %{_unitdir}/glusterfsd.service +%else +%define _init_enable() /sbin/chkconfig --add %1 ; +%define _init_disable() /sbin/chkconfig --del %1 ; +%define _init_restart() /sbin/service %1 condrestart &>/dev/null ; +%define _init_stop() /sbin/service %1 stop &>/dev/null ; +%define _init_install() install -D -p -m 0755 %1 %{buildroot}%{_sysconfdir}/init.d/%2 ; +# can't seem to make a generic macro that works +%define _init_glusterd %{_sysconfdir}/init.d/glusterd +%define _init_glusterfsd %{_sysconfdir}/init.d/glusterfsd +%endif + +%if ( 0%{_for_fedora_koji_builds} ) +%if ( 0%{?_with_systemd:1} ) +%global glusterfsd_service glusterfsd.service +%else +%global glusterfsd_service glusterfsd.init +%endif +%endif + +%{!?_pkgdocdir: %global _pkgdocdir %{_docdir}/%{name}-%{version}} + +%if ( 0%{?rhel} && 0%{?rhel} < 6 ) + # _sharedstatedir is not provided by RHEL5 + %define _sharedstatedir /var/lib +%endif + +# We do not want to generate useless provides and requires for xlator +# .so files to be set for glusterfs packages. +# Filter all generated: +# +# TODO: RHEL5 does not have a convenient solution +%if ( 0%{?rhel} == 6 ) + # filter_setup exists in RHEL6 only + %filter_provides_in %{_libdir}/glusterfs/%{version}/ + %global __filter_from_req %{?__filter_from_req} | grep -v -P '^(?!lib).*\.so.*$' + %filter_setup +%else + # modern rpm and current Fedora do not generate requires when the + # provides are filtered + %global __provides_exclude_from ^%{_libdir}/glusterfs/%{version}/.*$ +%endif + + +##----------------------------------------------------------------------------- +## All package definitions should be placed here and keep them sorted +## Summary: Cluster File System %if ( 0%{_for_fedora_koji_builds} ) Name: glusterfs @@ -97,8 +160,8 @@ Source3: glusterfs-fuse.logrotate Source4: glusterd.logrotate Source5: glusterfsd.logrotate Source6: rhel5-load-fuse-modules -Source11: glusterfsd.service -Source13: glusterfsd.init +Source7: glusterfsd.service +Source8: glusterfsd.init %else Source0: @PACKAGE_NAME@-@PACKAGE_VERSION@.tar.gz %endif @@ -109,37 +172,15 @@ BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX) BuildRequires: python-simplejson %endif %if ( 0%{?_with_systemd:1} ) -%if ( 0%{_for_fedora_koji_builds} ) -%global glusterfsd_service %{S:%{SOURCE11}} -%endif BuildRequires: systemd-units Requires(post): systemd-units Requires(preun): systemd-units Requires(postun): systemd-units -%define _init_enable() /bin/systemctl enable %1.service ; -%define _init_disable() /bin/systemctl disable %1.service ; -%define _init_restart() /bin/systemctl try-restart %1.service ; -%define _init_stop() /bin/systemctl stop %1.service ; -%define _init_install() install -D -p -m 0644 %1 %{buildroot}%{_unitdir}/%2.service ; -# can't seem to make a generic macro that works -%define _init_glusterd %{_unitdir}/glusterd.service -%define _init_glusterfsd %{_unitdir}/glusterfsd.service %else -%if ( 0%{_for_fedora_koji_builds} ) -%global glusterfsd_service %{S:%{SOURCE13}} -%endif Requires(post): /sbin/chkconfig Requires(preun): /sbin/service Requires(preun): /sbin/chkconfig Requires(postun): /sbin/service -%define _init_enable() /sbin/chkconfig --add %1 ; -%define _init_disable() /sbin/chkconfig --del %1 ; -%define _init_restart() /sbin/service %1 condrestart &>/dev/null ; -%define _init_stop() /sbin/service %1 stop &>/dev/null ; -%define _init_install() install -D -p -m 0755 %1 %{buildroot}%{_sysconfdir}/init.d/%2 ; -# can't seem to make a generic macro that works -%define _init_glusterd %{_sysconfdir}/init.d/glusterd -%define _init_glusterfsd %{_sysconfdir}/init.d/glusterfsd %endif Requires: %{name}-libs = %{version}-%{release} @@ -170,28 +211,6 @@ Obsoletes: %{name}-ufo Provides: %{name}-common = %{version}-%{release} Provides: %{name}-core = %{version}-%{release} -# We do not want to generate useless provides and requires for xlator .so files -# Filter all generated: -# -# TODO: RHEL5 does not have a convenient solution -%if ( 0%{?rhel} == 6 ) - # filter_setup exists in RHEL6 only - %filter_provides_in %{_libdir}/glusterfs/%{version}/ - %global __filter_from_req %{?__filter_from_req} | grep -v -P '^(?!lib).*\.so.*$' - %filter_setup -%else - # modern rpm and current Fedora do not generate requires when the - # provides are filtered - %global __provides_exclude_from ^%{_libdir}/glusterfs/%{version}/.*$ -%endif - -%{!?_pkgdocdir: %global _pkgdocdir %{_docdir}/%{name}-%{version}} - -%if ( 0%{?rhel} && 0%{?rhel} < 6 ) - # _sharedstatedir is not provided by RHEL5 - %define _sharedstatedir /var/lib -%endif - %description GlusterFS is a clustered file-system capable of scaling to several petabytes. It aggregates various storage bricks over Infiniband RDMA @@ -205,19 +224,14 @@ 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. -%package libs -Summary: GlusterFS common libraries -Group: Applications/File -%if ( 0%{!?_without_syslog:1} ) -%if ( 0%{?fedora} ) || ( 0%{?rhel} && 0%{?rhel} > 6 ) -Requires: rsyslog-mmjsonparse -%endif -%if ( 0%{?rhel} && 0%{?rhel} == 6 ) -Requires: rsyslog-mmcount -%endif -%endif +%package api +Summary: Clustered file-system api library +Group: System Environment/Daemons +Requires: %{name} = %{version}-%{release} +# we provide the Python package/namespace 'gluster' +Provides: python-gluster = %{version}-%{release} -%description libs +%description api GlusterFS is a clustered 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 @@ -226,7 +240,24 @@ 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 base GlusterFS libraries +This package provides the glusterfs libgfapi library. + +%package api-devel +Summary: Development Libraries +Group: Development/Libraries +Requires: %{name} = %{version}-%{release} +Requires: %{name}-devel = %{version}-%{release} + +%description api-devel +GlusterFS is a clustered 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 api include files. %package cli Summary: GlusterFS CLI @@ -244,15 +275,14 @@ is in user space and easily manageable. This package provides the GlusterFS CLI application and its man page -%if ( 0%{!?_without_rdma:1} ) -%package rdma -Summary: GlusterFS rdma support for ib-verbs -Group: Applications/File -BuildRequires: libibverbs-devel -BuildRequires: librdmacm-devel +%package devel +Summary: Development Libraries +Group: Development/Libraries Requires: %{name} = %{version}-%{release} +# Needed for the Glupy examples to work +Requires: %{name}-extra-xlators = %{version}-%{release} -%description rdma +%description devel GlusterFS is a clustered 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 @@ -261,28 +291,26 @@ 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 ib-verbs library. -%endif +This package provides the development libraries and include files. -%if ( 0%{!?_without_georeplication:1} ) -%package geo-replication -Summary: GlusterFS Geo-replication +%package extra-xlators +Summary: Extra Gluster filesystem Translators Group: Applications/File -Requires: %{name} = %{version}-%{release} -Requires: %{name}-server = %{version}-%{release} +# We need -api rpm for its __init__.py in Python site-packages area +Requires: %{name}-api = %{version}-%{release} Requires: python python-ctypes -%description geo-replication +%description extra-xlators GlusterFS is a clustered file-system capable of scaling to several -peta-bytes. It aggregates various storage bricks over Infiniband RDMA +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 system in +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 userspace and easily manageable. +is in user space and easily manageable. -This package provides support to geo-replication. -%endif +This package provides extra filesystem Translators, such as Glupy, +for GlusterFS. %package fuse Summary: Fuse client @@ -305,38 +333,39 @@ is in user space and easily manageable. This package provides support to FUSE based clients. -%package server -Summary: Clustered file-system server -Group: System Environment/Daemons +%if ( 0%{!?_without_georeplication:1} ) +%package geo-replication +Summary: GlusterFS Geo-replication +Group: Applications/File Requires: %{name} = %{version}-%{release} -Requires: %{name}-cli = %{version}-%{release} -Requires: %{name}-libs = %{version}-%{release} -Requires: %{name}-fuse = %{version}-%{release} -%if ( 0%{?fedora} ) || ( 0%{?rhel} && 0%{?rhel} >= 6 ) -Requires: rpcbind -%else -Requires: portmap -%endif +Requires: %{name}-server = %{version}-%{release} +Requires: python python-ctypes -%description server +%description geo-replication GlusterFS is a clustered file-system capable of scaling to several -petabytes. It aggregates various storage bricks over Infiniband RDMA +peta-bytes. 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 +system. GlusterFS is one of the most sophisticated file system 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. +is in userspace and easily manageable. -This package provides the glusterfs server daemon. +This package provides support to geo-replication. +%endif -%package api -Summary: Clustered file-system api library -Group: System Environment/Daemons -Requires: %{name} = %{version}-%{release} -# we provide the Python package/namespace 'gluster' -Provides: python-gluster = %{version}-%{release} +%package libs +Summary: GlusterFS common libraries +Group: Applications/File +%if ( 0%{!?_without_syslog:1} ) +%if ( 0%{?fedora} ) || ( 0%{?rhel} && 0%{?rhel} > 6 ) +Requires: rsyslog-mmjsonparse +%endif +%if ( 0%{?rhel} && 0%{?rhel} == 6 ) +Requires: rsyslog-mmcount +%endif +%endif -%description api +%description libs GlusterFS is a clustered 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 @@ -345,16 +374,17 @@ 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 glusterfs libgfapi library. +This package provides the base GlusterFS libraries -%package extra-xlators -Summary: Extra Gluster filesystem Translators +%if ( 0%{!?_without_rdma:1} ) +%package rdma +Summary: GlusterFS rdma support for ib-verbs Group: Applications/File -# We need -api rpm for its __init__.py in Python site-packages area -Requires: %{name}-api = %{version}-%{release} -Requires: python python-ctypes +BuildRequires: libibverbs-devel +BuildRequires: librdmacm-devel +Requires: %{name} = %{version}-%{release} -%description extra-xlators +%description rdma GlusterFS is a clustered 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 @@ -363,8 +393,21 @@ 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 extra filesystem Translators, such as Glupy, -for GlusterFS. +This package provides support to ib-verbs library. +%endif + +%package regression-tests +Summary: Development Tools +Group: Development/Tools +Requires: %{name} = %{version}-%{release} +Requires: %{name}-fuse = %{version}-%{release} +Requires: %{name}-server = %{version}-%{release} +Requires: perl(App::Prove) perl(Test::Harness) gcc util-linux-ng lvm2 +Requires: python attr dbench git nfs-utils xfsprogs + +%description regression-tests +The Gluster Test Framework, is a suite of scripts used for +regression testing of Gluster. %if ( 0%{!?_without_ocf:1} ) %package resource-agents @@ -399,31 +442,20 @@ Open Cluster Framework (OCF) compliant cluster resource managers, like Pacemaker. %endif -%package devel -Summary: Development Libraries -Group: Development/Libraries -Requires: %{name} = %{version}-%{release} -# Needed for the Glupy examples to work -Requires: %{name}-extra-xlators = %{version}-%{release} - -%description devel -GlusterFS is a clustered 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 development libraries and include files. - -%package api-devel -Summary: Development Libraries -Group: Development/Libraries +%package server +Summary: Clustered file-system server +Group: System Environment/Daemons Requires: %{name} = %{version}-%{release} -Requires: %{name}-devel = %{version}-%{release} +Requires: %{name}-cli = %{version}-%{release} +Requires: %{name}-libs = %{version}-%{release} +Requires: %{name}-fuse = %{version}-%{release} +%if ( 0%{?fedora} ) || ( 0%{?rhel} && 0%{?rhel} >= 6 ) +Requires: rpcbind +%else +Requires: portmap +%endif -%description api-devel +%description server GlusterFS is a clustered 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 @@ -432,20 +464,7 @@ 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 api include files. - -%package regression-tests -Summary: Development Tools -Group: Development/Tools -Requires: %{name} = %{version}-%{release} -Requires: %{name}-fuse = %{version}-%{release} -Requires: %{name}-server = %{version}-%{release} -Requires: perl(App::Prove) perl(Test::Harness) gcc util-linux-ng lvm2 -Requires: python attr dbench git nfs-utils xfsprogs - -%description regression-tests -The Gluster Test Framework, is a suite of scripts used for -regression testing of Gluster. +This package provides the glusterfs server daemon. %prep %setup -q -n %{name}-%{version}%{?prereltag} @@ -667,6 +686,9 @@ find ./tests ./run-tests.sh -type f | cpio -pd %{buildroot}%{_prefix}/share/glus %clean rm -rf %{buildroot} +##----------------------------------------------------------------------------- +## All %post should be placed here and keep them sorted +## %post /sbin/ldconfig %if ( 0%{!?_without_syslog:1} ) @@ -675,6 +697,88 @@ rm -rf %{buildroot} %endif %endif +%post api +/sbin/ldconfig + +%if ( 0%{!?_without_georeplication:1} ) +%post geo-replication +#restart glusterd. +if [ $1 -ge 1 ]; then + %_init_restart glusterd +fi +%endif + +%post libs +/sbin/ldconfig + +%post server +# Legacy server +%_init_enable glusterd +%_init_enable glusterfsd + +# Genuine Fedora (and EPEL) builds never put gluster files in /etc; if +# there are any files in /etc from a prior gluster.org install, move them +# to /var/lib. (N.B. Starting with 3.3.0 all gluster files are in /var/lib +# in gluster.org RPMs.) Be careful to copy them on the off chance that +# /etc and /var/lib are on separate file systems +if [ -d /etc/glusterd -a ! -h %{_sharedstatedir}/glusterd ]; then + mkdir -p %{_sharedstatedir}/glusterd + cp -a /etc/glusterd %{_sharedstatedir}/glusterd + rm -rf /etc/glusterd + ln -sf %{_sharedstatedir}/glusterd /etc/glusterd +fi + +# Rename old volfiles in an RPM-standard way. These aren't actually +# considered package config files, so %%config doesn't work for them. +if [ -d %{_sharedstatedir}/glusterd/vols ]; then + for file in $(find %{_sharedstatedir}/glusterd/vols -name '*.vol'); do + newfile=${file}.rpmsave + echo "warning: ${file} saved as ${newfile}" + cp ${file} ${newfile} + done +fi + +# add marker translator +# but first make certain that there are no old libs around to bite us +# BZ 834847 +if [ -e /etc/ld.so.conf.d/glusterfs.conf ]; then + rm -f /etc/ld.so.conf.d/glusterfs.conf + /sbin/ldconfig +fi +pidof -c -o %PPID -x glusterd &> /dev/null +if [ $? -eq 0 ]; then + kill -9 `pgrep -f gsyncd.py` &> /dev/null + + killall glusterd &> /dev/null + glusterd --xlator-option *.upgrade=on -N +else + glusterd --xlator-option *.upgrade=on -N +fi + +##----------------------------------------------------------------------------- +## All %preun should be placed here and keep them sorted +## +%preun server +if [ $1 -eq 0 ]; then + if [ -f %_init_glusterfsd ]; then + %_init_stop glusterfsd + fi + %_init_stop glusterd + if [ -f %_init_glusterfsd ]; then + %_init_disable glusterfsd + fi + %_init_disable glusterd +fi +if [ $1 -ge 1 ]; then + if [ -f %_init_glusterfsd ]; then + %_init_restart glusterfsd + fi + %_init_restart glusterd +fi + +##----------------------------------------------------------------------------- +## All %postun should be placed here and keep them sorted +## %postun /sbin/ldconfig %if ( 0%{!?_without_syslog:1} ) @@ -683,6 +787,15 @@ rm -rf %{buildroot} %endif %endif +%postun api +/sbin/ldconfig + +%postun libs +/sbin/ldconfig + +##----------------------------------------------------------------------------- +## All %files should be placed here and keep them sorted +## %files %doc ChangeLog COPYING-GPLV2 COPYING-LGPLV3 INSTALL README THANKS extras/clear_xattrs.sh %config(noreplace) %{_sysconfdir}/logrotate.d/* @@ -717,32 +830,66 @@ rm -rf %{buildroot} %exclude %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/mac-compat* %exclude %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/testing/performance/symlink-cache* -%post libs -/sbin/ldconfig - -%postun libs -/sbin/ldconfig +%files api +%exclude %{_libdir}/*.so +# Shared Python-GlusterFS files +%{python_sitelib}/gluster/__init__.* +# Libgfapi files +%{_libdir}/libgfapi.* +%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/mount/api* +%{python_sitelib}/gluster/gfapi.* +# Don't expect a .egg-info file on EL5 +%if ( 0%{?rhel} && 0%{?rhel} > 5 ) || ( 0%{?fedora} ) +%{python_sitelib}/glusterfs_api*.egg-info +%endif -%files libs -%{_libdir}/*.so.* -%exclude %{_libdir}/libgfapi.* +%files api-devel +%{_libdir}/pkgconfig/glusterfs-api.pc +%{_libdir}/pkgconfig/libgfchangelog.pc +%{_libdir}/libgfapi.so +%{_includedir}/glusterfs/api/* %files cli %{_sbindir}/gluster %{_mandir}/man8/gluster.8* -%if ( 0%{!?_without_rdma:1} ) -%files rdma -%{_libdir}/glusterfs/%{version}%{?prereltag}/rpc-transport/rdma* +%files devel +%{_includedir}/glusterfs +%exclude %{_includedir}/glusterfs/y.tab.h +%exclude %{_includedir}/glusterfs/api +%exclude %{_libdir}/libgfapi.so +%{_libdir}/*.so +# Glupy Translator examples +%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/glupy/debug-trace.* +%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/glupy/helloworld.* +%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/glupy/negative.* + +%files extra-xlators +# Glupy C shared library +%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/glupy.so +# Glupy Python files +%{python_sitelib}/gluster/glupy.* +# Don't expect a .egg-info file on EL5 +%if ( 0%{?rhel} && 0%{?rhel} > 5 ) || ( 0%{?fedora} ) +%{python_sitelib}/glusterfs_glupy*.egg-info %endif -%if ( 0%{!?_without_georeplication:1} ) -%post geo-replication -#restart glusterd. -if [ $1 -ge 1 ]; then - %_init_restart glusterd -fi +%files fuse +%if ( 0%{_for_fedora_koji_builds} ) +%config(noreplace) %{_sysconfdir}/logrotate.d/glusterfs-fuse +%endif +%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/mount/fuse* +/sbin/mount.glusterfs +%if ( 0%{!?_without_fusermount:1} ) +%{_bindir}/fusermount-glusterfs +%endif +%if ( 0%{_for_fedora_koji_builds} ) +%if ( 0%{?rhel} && 0%{?rhel} <= 5 ) +%{_sysconfdir}/sysconfig/modules/glusterfs-fuse.modules +%endif +%endif +%if ( 0%{!?_without_georeplication:1} ) %files geo-replication %{_sysconfdir}/logrotate.d/glusterfs-georep %{_libexecdir}/glusterfs/gsyncd @@ -764,20 +911,23 @@ fi %ghost %attr(0644,-,-) %{_sharedstatedir}/glusterd/geo-replication/gsyncd_template.conf %endif +%files libs +%{_libdir}/*.so.* +%exclude %{_libdir}/libgfapi.* -%files fuse -%if ( 0%{_for_fedora_koji_builds} ) -%config(noreplace) %{_sysconfdir}/logrotate.d/glusterfs-fuse -%endif -%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/mount/fuse* -/sbin/mount.glusterfs -%if ( 0%{!?_without_fusermount:1} ) -%{_bindir}/fusermount-glusterfs -%endif -%if ( 0%{_for_fedora_koji_builds} ) -%if ( 0%{?rhel} && 0%{?rhel} <= 5 ) -%{_sysconfdir}/sysconfig/modules/glusterfs-fuse.modules +%if ( 0%{!?_without_rdma:1} ) +%files rdma +%{_libdir}/glusterfs/%{version}%{?prereltag}/rpc-transport/rdma* %endif + +%files regression-tests +%{_prefix}/share/glusterfs/* +%exclude %{_prefix}/share/glusterfs/tests/basic/rpm.t + +%if ( 0%{!?_without_ocf:1} ) +%files resource-agents +# /usr/lib is the standard for OCF, also on x86_64 +%{_prefix}/lib/ocf/resource.d/glusterfs %endif %files server @@ -831,125 +981,10 @@ fi %ghost %dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/nfs/run %ghost %attr(0600,-,-) %{_sharedstatedir}/glusterd/nfs/run/nfs.pid -%post api -/sbin/ldconfig - -%postun api -/sbin/ldconfig - -%files api -%exclude %{_libdir}/*.so -# Shared Python-GlusterFS files -%{python_sitelib}/gluster/__init__.* -# Libgfapi files -%{_libdir}/libgfapi.* -%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/mount/api* -%{python_sitelib}/gluster/gfapi.* -# Don't expect a .egg-info file on EL5 -%if ( 0%{?rhel} && 0%{?rhel} > 5 ) || ( 0%{?fedora} ) -%{python_sitelib}/glusterfs_api*.egg-info -%endif - -%files extra-xlators -# Glupy C shared library -%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/glupy.so -# Glupy Python files -%{python_sitelib}/gluster/glupy.* -# Don't expect a .egg-info file on EL5 -%if ( 0%{?rhel} && 0%{?rhel} > 5 ) || ( 0%{?fedora} ) -%{python_sitelib}/glusterfs_glupy*.egg-info -%endif - -%if ( 0%{!?_without_ocf:1} ) -%files resource-agents -# /usr/lib is the standard for OCF, also on x86_64 -%{_prefix}/lib/ocf/resource.d/glusterfs -%endif - -%files devel -%{_includedir}/glusterfs -%exclude %{_includedir}/glusterfs/y.tab.h -%exclude %{_includedir}/glusterfs/api -%exclude %{_libdir}/libgfapi.so -%{_libdir}/*.so -# Glupy Translator examples -%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/glupy/debug-trace.* -%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/glupy/helloworld.* -%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/glupy/negative.* - -%files api-devel -%{_libdir}/pkgconfig/glusterfs-api.pc -%{_libdir}/pkgconfig/libgfchangelog.pc -%{_libdir}/libgfapi.so -%{_includedir}/glusterfs/api/* - -%files regression-tests -%{_prefix}/share/glusterfs/* -%exclude %{_prefix}/share/glusterfs/tests/basic/rpm.t - -%post server -# Legacy server -%_init_enable glusterd -%_init_enable glusterfsd - -# Genuine Fedora (and EPEL) builds never put gluster files in /etc; if -# there are any files in /etc from a prior gluster.org install, move them -# to /var/lib. (N.B. Starting with 3.3.0 all gluster files are in /var/lib -# in gluster.org RPMs.) Be careful to copy them on the off chance that -# /etc and /var/lib are on separate file systems -if [ -d /etc/glusterd -a ! -h %{_sharedstatedir}/glusterd ]; then - mkdir -p %{_sharedstatedir}/glusterd - cp -a /etc/glusterd %{_sharedstatedir}/glusterd - rm -rf /etc/glusterd - ln -sf %{_sharedstatedir}/glusterd /etc/glusterd -fi - -# Rename old volfiles in an RPM-standard way. These aren't actually -# considered package config files, so %%config doesn't work for them. -if [ -d %{_sharedstatedir}/glusterd/vols ]; then - for file in $(find %{_sharedstatedir}/glusterd/vols -name '*.vol'); do - newfile=${file}.rpmsave - echo "warning: ${file} saved as ${newfile}" - cp ${file} ${newfile} - done -fi - -# add marker translator -# but first make certain that there are no old libs around to bite us -# BZ 834847 -if [ -e /etc/ld.so.conf.d/glusterfs.conf ]; then - rm -f /etc/ld.so.conf.d/glusterfs.conf - /sbin/ldconfig -fi -pidof -c -o %PPID -x glusterd &> /dev/null -if [ $? -eq 0 ]; then - kill -9 `pgrep -f gsyncd.py` &> /dev/null - - killall glusterd &> /dev/null - glusterd --xlator-option *.upgrade=on -N -else - glusterd --xlator-option *.upgrade=on -N -fi - -%preun server -if [ $1 -eq 0 ]; then - if [ -f %_init_glusterfsd ]; then - %_init_stop glusterfsd - fi - %_init_stop glusterd - if [ -f %_init_glusterfsd ]; then - %_init_disable glusterfsd - fi - %_init_disable glusterd -fi -if [ $1 -ge 1 ]; then - if [ -f %_init_glusterfsd ]; then - %_init_restart glusterfsd - fi - %_init_restart glusterd -fi - %changelog +* Wed Apr 02 2014 Arumugam Balamurugan +- cleanup to rearrange spec file elements + * Wed Apr 02 2014 Arumugam Balamurugan - add version/release dynamically (#1074919) -- cgit From e55f3fe25a4fd2cc9021fad97faedc5e94aa4e7c Mon Sep 17 00:00:00 2001 From: Krutika Dhananjay Date: Tue, 17 Sep 2013 17:01:07 +0530 Subject: Add upgrade scripts for quota Change-Id: I289662300d32f75e2fc6e789037c3224054a38a5 BUG: 969461 Signed-off-by: Krutika Dhananjay Reviewed-on: http://review.gluster.org/7418 Tested-by: Gluster Build System Reviewed-by: Vijay Bellur --- glusterfs.spec.in | 2 ++ 1 file changed, 2 insertions(+) (limited to 'glusterfs.spec.in') diff --git a/glusterfs.spec.in b/glusterfs.spec.in index 5fa8ededc..fbaabea41 100644 --- a/glusterfs.spec.in +++ b/glusterfs.spec.in @@ -829,6 +829,8 @@ fi %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* +%{_datadir}/glusterfs/scripts/post-upgrade-script-for-quota.sh +%{_datadir}/glusterfs/scripts/pre-upgrade-script-for-quota.sh %files api %exclude %{_libdir}/*.so -- cgit