# TODO:
# - Find pidfiles killproc --pidfile ${PIDFILE} -TERM instead of kill -TERM ${PID}
-# - Check transport-ibverbs package and ibverbs bcond
# - Add passing options from /etc/sysconfig/glusterfsd to glusterfsd
# - package /etc/glusterfs/glusterfs-logrotate as logrotate config
# - Fix/provide working systemd service files.
# As for 3.7.11, package provided seems be non-working.
+# - add nfs-ganesha to PLD and package ganesha integration files
# - configuration for firewalld? (--enable-firewalld, but checks for firewalld executable)
#
# Conditional build:
-%bcond_without ibverbs # ib-verbs transport
-%bcond_without systemtap # systemtap/dtrace support
%bcond_without system_fuse # system fusermount
#
Summary: Clustered File Storage that can scale to peta bytes
Summary(pl.UTF-8): Klastrowy system przechowywania plików skalujący się do petabajtów
Name: glusterfs
-Version: 3.12.6
+Version: 10.5
Release: 1
License: LGPL v3+ or GPL v2 (libraries), GPL v3+ (programs)
Group: Applications/System
-Source0: https://download.gluster.org/pub/gluster/glusterfs/3.12/LATEST/glusterfs-%{version}.tar.gz
-# Source0-md5: efdcddf38aecb3c2109bd773c58d1f9b
+Source0: https://download.gluster.org/pub/gluster/glusterfs/10/%{version}/glusterfs-%{version}.tar.gz
+# Source0-md5: 8ac48f7b7f9afa0e5dfa9ad42589ee27
Source1: glusterfsd.init
-Patch0: %{name}-noquiet.patch
-Patch1: %{name}-python.patch
-Patch3: interpreters.patch
+Patch0: ssl_paths.patch
+Patch1: ksh_getopts.patch
URL: https://www.gluster.org/
BuildRequires: acl-devel
BuildRequires: autoconf >= 2.50
BuildRequires: automake
BuildRequires: bison
#BuildRequires: cmocka-devel >= 1.0.1 for unittest
+BuildRequires: curl-devel
# for bd-xlator
BuildRequires: device-mapper-devel >= 2.02.79
BuildRequires: flex
BuildRequires: libaio-devel
-%{?with_ibverbs:BuildRequires: libibverbs-devel >= 1.0.4}
-%{?with_ibverbs:BuildRequires: librdmacm-devel >= 1.0.15}
+BuildRequires: libselinux-devel
+BuildRequires: libtcmalloc-devel
+BuildRequires: libtirpc-devel
BuildRequires: libtool
+BuildRequires: liburing-devel
BuildRequires: libuuid-devel
BuildRequires: libxml2-devel >= 1:2.6.19
BuildRequires: openssl-devel
BuildRequires: pkgconfig
-BuildRequires: python >= 1:2.4
-BuildRequires: python-devel >= 1:2.4
+BuildRequires: python3 >= 1:3.2
+BuildRequires: python3-devel >= 1:3.2
BuildRequires: readline-devel
+BuildRequires: rpcsvc-proto
BuildRequires: rpm-pythonprov
BuildRequires: rpmbuild(macros) >= 1.228
BuildRequires: sed >= 4.0
BuildRequires: sqlite3-devel >= 3
-%{?with_systemtap:BuildRequires: systemtap-sdt-devel}
BuildRequires: userspace-rcu-devel >= 0.8
BuildRequires: zlib-devel >= 1.2.0
BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
Group: Libraries
Requires: libxml2 >= 1:2.6.19
Requires: zlib >= 1.2.0
+Obsoletes: glusterfs-transport-ibverbs < 8
%description common
GlusterFS is a clustered file-system capable of scaling to several
Requires: %{name}-libs = %{version}-%{release}
# -lfl
Requires: flex
+Requires: libtirpc-devel
Requires: openssl-devel
-Obsoletes: glusterfs-static
+Obsoletes: glusterfs-static < 1.3.10-2
%description devel
This package provides the development files for GlusterFS library.
%description devel -l pl.UTF-8
Ten pakiet udostępnia pliki programistyczne biblioteki GlusterFS-a.
-%package -n python-gluster
-Summary: Python interface to GlusterFS libraries
-Summary(pl.UTF-8): Interfejs Pythona do bibliotek GlusterFS
+%package -n python3-gluster
+Summary: Python 3 interface to GlusterFS libraries
+Summary(pl.UTF-8): Interfejs Pythona 3 do bibliotek GlusterFS
Group: Libraries/Python
Requires: %{name}-libs = %{version}-%{release}
+Obsoletes: python-gluster < 6.6
-%description -n python-gluster
-Python interface to GlusterFS libraries.
+%description -n python3-gluster
+Python 3 interface to GlusterFS libraries.
-%description -n python-gluster -l pl.UTF-8
-Interfejs Pythona do bibliotek GlusterFS.
-
-%package transport-ibverbs
-Summary: InfiniBand "verbs" transport plugins for GlusterFS
-Summary(pl.UTF-8): Wtyczki transportu "verbs" InfiniBand dla GlusterFS-a
-Group: Libraries
-Requires: %{name}-common = %{version}-%{release}
-Requires: libibverbs >= 1.0.4
-Requires: librdmacm >= 1.0.15
-
-%description transport-ibverbs
-InfiniBand "verbs" transport plugins for GlusterFS.
-
-%description transport-ibverbs -l pl.UTF-8
-Wtyczki transportu "verbs" InfiniBand dla GlusterFS-a.
+%description -n python3-gluster -l pl.UTF-8
+Interfejs Pythona 3 do bibliotek GlusterFS.
%package server
Summary: GlusterFS Server
Requires: %{name}-common = %{version}-%{release}
Requires(post,preun): /sbin/chkconfig
Requires: rc-scripts
-Requires: python-modules
+Requires: python3-modules
%description server
This package provides the glusterfs server daemon.
Summary(pl.UTF-8): Obsługa zdarzeń dla GlusterFS-a
Group: Applications/File
Requires: %{name}-server = %{version}-%{release}
-Requires: python-gluster = %{version}-%{release}
-Requires: python-prettytable
-Requires: python-requests
+Requires: python3-gluster = %{version}-%{release}
+Requires: python3-prettytable
+Requires: python3-requests
%description events
GlusterFS Events.
Summary(pl.UTF-8): Geo-replikacja dla GlusterFS-a
Group: Applications/File
Requires: %{name}-server = %{version}-%{release}
-Requires: python-gluster = %{version}-%{release}
-Requires: python-prettytable
+Requires: python3-gluster = %{version}-%{release}
+Requires: python3-prettytable
Requires: rsync
%description geo-replication
%description geo-replication -l pl.UTF-8
Obsługa geo-replikacji dla GlusterFS-a.
+%package thin-arbiter
+Summary: GlusterFS thin-arbiter module
+Summary(pl.UTF-8): Moduł thin-arbiter dla GlusterFS-a
+Group: Applications/File
+Requires: %{name}-server = %{version}-%{release}
+
+%description thin-arbiter
+This package provides a tie-breaker functionality to GlusterFS
+replicate volume. It includes translators required to provide the
+functionality, and also few other scripts required for getting the
+setup done.
+
+This package provides the glusterfs thin-arbiter translator.
+
+%description thin-arbiter -l pl.UTF-8
+Ten pakiet dodaje funkcję dogrywki do replikacji wolumenów GlusterFS.
+Zawiera moduły tłumaczące wymagane do zapewniania tej funkcji oraz
+kilka skryptów wymaganych do konfiguracji.
+
+Ten pakiet zawiera moduł tłumaczący thin-arbiter.
+
%package -n emacs-glusterfs-mode
Summary: Emacs mode to edit GlusterFS configuration
Summary(pl.UTF-8): Tryb Emacsa do edycji konfiguracji GlusterFS-a
%setup -q
%patch0 -p1
%patch1 -p1
-%patch3 -p1
%build
%{__libtoolize}
%{__autoheader}
%{__automake}
%configure \
+ PYTHON=%{__python3} \
%{?with_system_fuse:--disable-fusermount} \
--disable-silent-rules \
- %{!?with_ibverbs:--disable-ibverbs} \
- --enable-systemtap%{!?with_systemtap:=no} \
+ --enable-gnfs \
--with-initdir=/etc/rc.d/init.d
-
%{__make} -j1
%install
%{__rm} $RPM_BUILD_ROOT%{_libdir}/glusterfs/%{version}/*/*.la
%{__rm} $RPM_BUILD_ROOT%{_libdir}/glusterfs/%{version}/*/*/*.la
-%{__rm} $RPM_BUILD_ROOT%{_libdir}/glusterfs/%{version}/*/*/*/*.la
%{__rm} -r $RPM_BUILD_ROOT%{_docdir}/glusterfs/benchmarking
%{__rm} $RPM_BUILD_ROOT%{_libexecdir}/glusterfs/python/syncdaemon/README.md
# example, installed as /var/lib/glusterd/groups/virt
%{__rm} $RPM_BUILD_ROOT%{_sysconfdir}/glusterfs/group-virt.example
-%py_postclean
-
%clean
rm -rf $RPM_BUILD_ROOT
%post libs -p /sbin/ldconfig
%postun libs -p /sbin/ldconfig
-%if 0
-# TODO: verify these scripts (see also included glusterfs.spec)
%post server
-# note: glusterfsd.init vs glusterd.service
/sbin/chkconfig --add glusterfsd
%service glusterfsd restart
-# TODO?
-#glusterd --xlator-option *.upgrade=on -N
%preun server
if [ "$1" = "0" ]; then
%post geo-replication
%service glusterd restart
-%endif
%files common
%defattr(644,root,root,755)
%doc ChangeLog NEWS README.md THANKS
%attr(755,root,root) %{_bindir}/glusterfind
-%attr(755,root,root) %{_sbindir}/glfsheal
# NOTE: glusterfs is link to glusterfsd and is needed by client mount
%attr(755,root,root) %{_sbindir}/glusterfs
%attr(755,root,root) %{_sbindir}/glusterfsd
%attr(755,root,root) %{_libdir}/glusterfs/%{version}/auth/addr.so
%attr(755,root,root) %{_libdir}/glusterfs/%{version}/auth/login.so
+%dir %{_libdir}/glusterfs/%{version}/cloudsync-plugins
+%attr(755,root,root) %{_libdir}/glusterfs/%{version}/cloudsync-plugins/cloudsynccvlt.so
+%attr(755,root,root) %{_libdir}/glusterfs/%{version}/cloudsync-plugins/cloudsyncs3.so
+
%dir %{_libdir}/glusterfs/%{version}/rpc-transport
%attr(755,root,root) %{_libdir}/glusterfs/%{version}/rpc-transport/socket.so
%attr(755,root,root) %{_libdir}/glusterfs/%{version}/xlator/cluster/*.so
%dir %{_libdir}/glusterfs/%{version}/xlator/debug
%attr(755,root,root) %{_libdir}/glusterfs/%{version}/xlator/debug/*.so
-%dir %{_libdir}/glusterfs/%{version}/xlator/encryption
-%attr(755,root,root) %{_libdir}/glusterfs/%{version}/xlator/encryption/*.so*
%dir %{_libdir}/glusterfs/%{version}/xlator/features
-%attr(755,root,root) %{_libdir}/glusterfs/%{version}/xlator/features/*.so*
-%dir %{_libdir}/glusterfs/%{version}/xlator/features/glupy
-%{_libdir}/glusterfs/%{version}/xlator/features/glupy/*.py*
+%attr(755,root,root) %{_libdir}/glusterfs/%{version}/xlator/features/*.so
+%exclude %{_libdir}/glusterfs/%{version}/xlator/features/thin-arbiter.so
%dir %{_libdir}/glusterfs/%{version}/xlator/mgmt
%attr(755,root,root) %{_libdir}/glusterfs/%{version}/xlator/mgmt/glusterd.so
%dir %{_libdir}/glusterfs/%{version}/xlator/mount
%attr(755,root,root) %{_libdir}/glusterfs/%{version}/xlator/mount/api.so
%attr(755,root,root) %{_libdir}/glusterfs/%{version}/xlator/mount/fuse.so
-#%dir %{_libdir}/glusterfs/%{version}/xlator/nfs
-#%attr(755,root,root) %{_libdir}/glusterfs/%{version}/xlator/nfs/server.so
+%dir %{_libdir}/glusterfs/%{version}/xlator/nfs
+%attr(755,root,root) %{_libdir}/glusterfs/%{version}/xlator/nfs/server.so
%dir %{_libdir}/glusterfs/%{version}/xlator/performance
-%attr(755,root,root) %{_libdir}/glusterfs/%{version}/xlator/performance/*.so*
+%attr(755,root,root) %{_libdir}/glusterfs/%{version}/xlator/performance/*.so
+%dir %{_libdir}/glusterfs/%{version}/xlator/playground
+%attr(755,root,root) %{_libdir}/glusterfs/%{version}/xlator/playground/template.so
%dir %{_libdir}/glusterfs/%{version}/xlator/protocol
-%attr(755,root,root) %{_libdir}/glusterfs/%{version}/xlator/protocol/*.so
+%attr(755,root,root) %{_libdir}/glusterfs/%{version}/xlator/protocol/client.so
+%attr(755,root,root) %{_libdir}/glusterfs/%{version}/xlator/protocol/server.so
%dir %{_libdir}/glusterfs/%{version}/xlator/storage
-%attr(755,root,root) %{_libdir}/glusterfs/%{version}/xlator/storage/*.so
+%attr(755,root,root) %{_libdir}/glusterfs/%{version}/xlator/storage/posix.so
%dir %{_libdir}/glusterfs/%{version}/xlator/system
%attr(755,root,root) %{_libdir}/glusterfs/%{version}/xlator/system/posix-acl.so
-%dir %{_libdir}/glusterfs/%{version}/xlator/testing
-%dir %{_libdir}/glusterfs/%{version}/xlator/testing/features
-%attr(755,root,root) %{_libdir}/glusterfs/%{version}/xlator/testing/features/*.so
-%dir %{_libdir}/glusterfs/%{version}/xlator/testing/performance
-%attr(755,root,root) %{_libdir}/glusterfs/%{version}/xlator/testing/performance/*.so
%if "%{_libexecdir}" != "%{_libdir}"
%dir %{_libexecdir}/glusterfs
%endif
+%dir %{_libexecdir}/glusterfs/scripts
+%attr(755,root,root) %{_libexecdir}/glusterfs/glfsheal
%attr(755,root,root) %{_libexecdir}/glusterfs/peer_add_secret_pub
%dir %{_libexecdir}/glusterfs/glusterfind
%attr(755,root,root) %{_libexecdir}/glusterfs/glusterfind/brickfind.py
%attr(755,root,root) %{_libexecdir}/glusterfs/glusterfind/changelog.py
%attr(755,root,root) %{_libexecdir}/glusterfs/glusterfind/nodeagent.py
-%{_libexecdir}/glusterfs/glusterfind/__init__.py*
-%{_libexecdir}/glusterfs/glusterfind/changelogdata.py*
-%{_libexecdir}/glusterfs/glusterfind/conf.py*
-%{_libexecdir}/glusterfs/glusterfind/libgfchangelog.py*
-%{_libexecdir}/glusterfs/glusterfind/main.py*
-%{_libexecdir}/glusterfs/glusterfind/utils.py*
+%{_libexecdir}/glusterfs/glusterfind/__init__.py
+%{_libexecdir}/glusterfs/glusterfind/changelogdata.py
+%{_libexecdir}/glusterfs/glusterfind/conf.py
+%{_libexecdir}/glusterfs/glusterfind/gfind_py2py3.py
+%{_libexecdir}/glusterfs/glusterfind/libgfchangelog.py
+%{_libexecdir}/glusterfs/glusterfind/main.py
+%{_libexecdir}/glusterfs/glusterfind/utils.py
%{_libexecdir}/glusterfs/glusterfind/tool.conf
+%{_libexecdir}/glusterfs/glusterfind/__pycache__
%dir %{_libexecdir}/glusterfs/python
%dir %{_datadir}/glusterfs
%dir %{_datadir}/glusterfs/scripts
+#%attr(755,root,root) %{_datadir}/glusterfs/scripts/control-cpu-load.sh
+#%attr(755,root,root) %{_datadir}/glusterfs/scripts/control-mem.sh
%attr(755,root,root) %{_datadir}/glusterfs/scripts/post-upgrade-script-for-quota.sh
%attr(755,root,root) %{_datadir}/glusterfs/scripts/pre-upgrade-script-for-quota.sh
%attr(755,root,root) %{_datadir}/glusterfs/scripts/stop-all-gluster-processes.sh
%{_mandir}/man8/glusterfs.8*
%{_mandir}/man8/glusterfsd.8*
+
+%dir %{_var}/lib/glusterd
%dir %{_var}/log/glusterfs
%files libs
%attr(755,root,root) %ghost %{_libdir}/libgfapi.so.0
%attr(755,root,root) %{_libdir}/libgfchangelog.so.*.*.*
%attr(755,root,root) %ghost %{_libdir}/libgfchangelog.so.0
-%attr(755,root,root) %{_libdir}/libgfdb.so.*.*.*
-%attr(755,root,root) %ghost %{_libdir}/libgfdb.so.0
%attr(755,root,root) %{_libdir}/libgfrpc.so.*.*.*
%attr(755,root,root) %ghost %{_libdir}/libgfrpc.so.0
%attr(755,root,root) %{_libdir}/libgfxdr.so.*.*.*
%attr(755,root,root) %ghost %{_libdir}/libgfxdr.so.0
+%attr(755,root,root) %{_libdir}/libglusterd.so.*.*.*
+%attr(755,root,root) %ghost %{_libdir}/libglusterd.so.0
%attr(755,root,root) %{_libdir}/libglusterfs.so.*.*.*
%attr(755,root,root) %ghost %{_libdir}/libglusterfs.so.0
%defattr(644,root,root,755)
%attr(755,root,root) %{_libdir}/libgfapi.so
%attr(755,root,root) %{_libdir}/libgfchangelog.so
-%attr(755,root,root) %{_libdir}/libgfdb.so
%attr(755,root,root) %{_libdir}/libgfrpc.so
%attr(755,root,root) %{_libdir}/libgfxdr.so
+%attr(755,root,root) %{_libdir}/libglusterd.so
%attr(755,root,root) %{_libdir}/libglusterfs.so
%{_libdir}/libgfapi.la
%{_libdir}/libgfchangelog.la
-%{_libdir}/libgfdb.la
%{_libdir}/libgfrpc.la
%{_libdir}/libgfxdr.la
+%{_libdir}/libglusterd.la
%{_libdir}/libglusterfs.la
%dir %{_includedir}/glusterfs
%{_includedir}/glusterfs/api
%{_includedir}/glusterfs/gfchangelog
-%{_includedir}/glusterfs/gfdb
%{_includedir}/glusterfs/rpc
%{_includedir}/glusterfs/server
%{_includedir}/glusterfs/*.h
%{_pkgconfigdir}/glusterfs-api.pc
%{_pkgconfigdir}/libgfchangelog.pc
-%{_pkgconfigdir}/libgfdb.pc
-%files -n python-gluster
+%files -n python3-gluster
%defattr(644,root,root,755)
-%dir %{py_sitescriptdir}/gluster
-%{py_sitescriptdir}/gluster/*.py[co]
-%{py_sitescriptdir}/gluster/cliutils
-%{py_sitescriptdir}/gluster/glupy
+%dir %{py3_sitescriptdir}/gluster
+%{py3_sitescriptdir}/gluster/__init__.py
+%{py3_sitescriptdir}/gluster/__pycache__
+%{py3_sitescriptdir}/gluster/cliutils
# created only when using py_build/py_install in xlators/features/glupy/src
-#%{py_sitescriptdir}/glusterfs_glupy-%{version}-py*.egg-info
-
-%if %{with ibverbs}
-%files transport-ibverbs
-%defattr(644,root,root,755)
-%attr(755,root,root) %{_libdir}/glusterfs/%{version}/rpc-transport/rdma.so
-%endif
+#%{py3_sitescriptdir}/glusterfs_glupy-%{version}-py*.egg-info
%files server
%defattr(644,root,root,755)
%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/%{name}/glusterfsd.vol
+%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/%{name}/group-db-workload
+%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/%{name}/group-distributed-virt
%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/%{name}/group-gluster-block
%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/%{name}/group-metadata-cache
%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/%{name}/group-nl-cache
+%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/%{name}/group-samba
%attr(754,root,root) /etc/rc.d/init.d/glusterfsd
%attr(755,root,root) %{_sbindir}/conf.py
%attr(755,root,root) %{_sbindir}/gcron.py
%attr(755,root,root) %{_sbindir}/gluster-setgfid2path
%attr(755,root,root) %{_sbindir}/glusterd
%attr(755,root,root) %{_sbindir}/snap_scheduler.py
+#%attr(755,root,root) %{_libexecdir}/glusterfs/mount-shared-storage.sh
%{_mandir}/man8/gluster-setgfid2path.8*
%{_mandir}/man8/glusterd.8*
-%dir %{_var}/lib/glusterd
%dir %{_var}/lib/glusterd/groups
+%config(noreplace) %verify(not md5 mtime size) %{_var}/lib/glusterd/groups/db-workload
+%config(noreplace) %verify(not md5 mtime size) %{_var}/lib/glusterd/groups/distributed-virt
%config(noreplace) %verify(not md5 mtime size) %{_var}/lib/glusterd/groups/gluster-block
%config(noreplace) %verify(not md5 mtime size) %{_var}/lib/glusterd/groups/metadata-cache
%config(noreplace) %verify(not md5 mtime size) %{_var}/lib/glusterd/groups/nl-cache
+%config(noreplace) %verify(not md5 mtime size) %{_var}/lib/glusterd/groups/samba
%config(noreplace) %verify(not md5 mtime size) %{_var}/lib/glusterd/groups/virt
%dir %{_var}/lib/glusterd/hooks
%dir %{_var}/lib/glusterd/hooks/1
%dir %{_var}/lib/glusterd/hooks/1/add-brick
%dir %{_var}/lib/glusterd/hooks/1/add-brick/post
+%attr(755,root,root) %config(noreplace) %verify(not md5 mtime size) %{_var}/lib/glusterd/hooks/1/add-brick/post/S10selinux-label-brick.sh
+%attr(755,root,root) %config(noreplace) %verify(not md5 mtime size) %{_var}/lib/glusterd/hooks/1/add-brick/post/S13create-subdir-mounts.sh
%attr(755,root,root) %config(noreplace) %verify(not md5 mtime size) %{_var}/lib/glusterd/hooks/1/add-brick/post/disabled-quota-root-xattr-heal.sh
%dir %{_var}/lib/glusterd/hooks/1/add-brick/pre
%attr(755,root,root) %config(noreplace) %verify(not md5 mtime size) %{_var}/lib/glusterd/hooks/1/add-brick/pre/S28Quota-enable-root-xattr-heal.sh
%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/glusterfs/eventsconfig.json
%attr(755,root,root) %{_sbindir}/gluster-eventsapi
%attr(755,root,root) %{_sbindir}/glustereventsd
-%dir %{_libexecdir}/glusterfs/events
-%attr(755,root,root) %{_libexecdir}/glusterfs/events/glustereventsd.py
-%{_libexecdir}/glusterfs/events/__init__.py*
-%{_libexecdir}/glusterfs/events/eventsapiconf.py*
-%{_libexecdir}/glusterfs/events/eventtypes.py*
-%{_libexecdir}/glusterfs/events/gf_event.py*
-%{_libexecdir}/glusterfs/events/handlers.py*
-%{_libexecdir}/glusterfs/events/utils.py*
-%{_libexecdir}/glusterfs/peer_eventsapi.py*
+%dir %{_libexecdir}/glusterfs/gfevents
+%attr(755,root,root) %{_libexecdir}/glusterfs/gfevents/glustereventsd.py
+%{_libexecdir}/glusterfs/gfevents/__init__.py
+%{_libexecdir}/glusterfs/gfevents/eventsapiconf.py
+%{_libexecdir}/glusterfs/gfevents/eventtypes.py
+%{_libexecdir}/glusterfs/gfevents/gf_event.py
+%{_libexecdir}/glusterfs/gfevents/handlers.py
+%{_libexecdir}/glusterfs/gfevents/utils.py
+%{_libexecdir}/glusterfs/gfevents/__pycache__
+%{_libexecdir}/glusterfs/peer_eventsapi.py
%{_datadir}/glusterfs/scripts/eventsdash.py
+# NFS-ganesha integration
+#%files ganesha
+#%defattr(644,root,root,755)
+#%attr(755,root,root) %{_libexecdir}/ganesha/create-export-ganesha.sh
+#%attr(755,root,root) %{_libexecdir}/ganesha/dbus-send.sh
+#%attr(755,root,root) %{_libexecdir}/ganesha/ganesha-ha.sh
+#%attr(755,root,root) %{_libexecdir}/ganesha/generate-epoch.py
+#%attr(755,root,root) %{_prefix}/lib/ocf/resource.d/heartbeat/ganesha_grace
+#%attr(755,root,root) %{_prefix}/lib/ocf/resource.d/heartbeat/ganesha_mon
+#%attr(755,root,root) %{_prefix}/lib/ocf/resource.d/heartbeat/ganesha_nfsd
+#%attr(755,root,root) %config(noreplace) %verify(not md5 mtime size) %{_var}/lib/glusterd/hooks/1/start/post/S31ganesha-start.sh
+
%files geo-replication
%defattr(644,root,root,755)
+%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/%{name}/gsyncd.conf
%attr(755,root,root) %{_sbindir}/gfind_missing_files
%attr(755,root,root) %{_sbindir}/gluster-georep-sshkey
%attr(755,root,root) %{_sbindir}/gluster-mountbroker
%dir %{_libexecdir}/glusterfs/gfind_missing_files
%attr(755,root,root) %{_libexecdir}/glusterfs/gfind_missing_files/*
%dir %{_libexecdir}/glusterfs/python/syncdaemon
-# gsyncd.py is a script, the rest probably don't require *.py
-%{_libexecdir}/glusterfs/python/syncdaemon/*.py*
-%attr(755,root,root) %{_datadir}/glusterfs/scripts/generate-gfid-file.sh
-%attr(755,root,root) %{_datadir}/glusterfs/scripts/get-gfid.sh
-%attr(755,root,root) %{_datadir}/glusterfs/scripts/gsync-sync-gfid
-%attr(755,root,root) %{_datadir}/glusterfs/scripts/gsync-upgrade.sh
-%attr(755,root,root) %{_datadir}/glusterfs/scripts/schedule_georep.py
-%attr(755,root,root) %{_datadir}/glusterfs/scripts/slave-upgrade.sh
+%{_libexecdir}/glusterfs/python/syncdaemon/*.py
+%{_libexecdir}/glusterfs/python/syncdaemon/__pycache__
+%attr(755,root,root) %{_libexecdir}/glusterfs/scripts/generate-gfid-file.sh
+%attr(755,root,root) %{_libexecdir}/glusterfs/scripts/get-gfid.sh
+%attr(755,root,root) %{_libexecdir}/glusterfs/scripts/gsync-sync-gfid
+%attr(755,root,root) %{_libexecdir}/glusterfs/scripts/gsync-upgrade.sh
+%attr(755,root,root) %{_libexecdir}/glusterfs/scripts/schedule_georep.py
+%attr(755,root,root) %{_libexecdir}/glusterfs/scripts/secondary-upgrade.sh
%dir %{_var}/lib/glusterd/hooks/1/gsync-create
%dir %{_var}/lib/glusterd/hooks/1/gsync-create/post
%attr(755,root,root) %config(noreplace) %verify(not md5 mtime size) %{_var}/lib/glusterd/hooks/1/gsync-create/post/S56glusterd-geo-rep-create-post.sh
+%files thin-arbiter
+%defattr(644,root,root,755)
+%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/%{name}/thin-arbiter.vol
+%attr(755,root,root) %{_libdir}/glusterfs/%{version}/xlator/features/thin-arbiter.so
+%attr(755,root,root) %{_datadir}/glusterfs/scripts/setup-thin-arbiter.sh
+
%files -n emacs-glusterfs-mode
%defattr(644,root,root,755)
%{_datadir}/emacs/site-lisp/glusterfs-mode.el