diff --git a/0001-configure.ac.patch b/0001-configure.ac.patch deleted file mode 100644 index 67b2e73..0000000 --- a/0001-configure.ac.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- glusterfs-11.0/configure.ac.orig 2023-02-07 08:27:06.663310072 -0500 -+++ glusterfs-11.0/configure.ac 2023-02-07 08:27:56.012452316 -0500 -@@ -1319,7 +1319,7 @@ - fi - - GF_HOST_OS="" --GF_LDFLAGS="${GF_LDFLAGS} -rdynamic" -+GF_LDFLAGS="${GF_LDFLAGS} -rdynamic -fuse-ld=mold" - - dnl see --with-libtirpc option check above, libtirpc(-devel) is required for - dnl ipv6-default diff --git a/0002-contrib-aclocal-python.m4.patch b/0002-contrib-aclocal-python.m4.patch deleted file mode 100644 index 0772c87..0000000 --- a/0002-contrib-aclocal-python.m4.patch +++ /dev/null @@ -1,212 +0,0 @@ ---- glusterfs-11.0/contrib/aclocal/python.m4.orig 2023-06-16 11:18:03.550994174 -0400 -+++ glusterfs-11.0/contrib/aclocal/python.m4 2023-06-16 11:18:47.875238947 -0400 -@@ -1,209 +1 @@ --## ------------------------ -*- Autoconf -*- --## Python file handling --## From Andrew Dalke --## Updated by James Henstridge - ## ------------------------ --# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008, 2009 --# Free Software Foundation, Inc. --# --# This file is free software; the Free Software Foundation --# gives unlimited permission to copy and/or distribute it, --# with or without modifications, as long as this notice is preserved. -- --# AM_PATH_PYTHON([MINIMUM-VERSION], [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) --# --------------------------------------------------------------------------- --# Adds support for distributing Python modules and packages. To --# install modules, copy them to $(pythondir), using the python_PYTHON --# automake variable. To install a package with the same name as the --# automake package, install to $(pkgpythondir), or use the --# pkgpython_PYTHON automake variable. --# --# The variables $(pyexecdir) and $(pkgpyexecdir) are provided as --# locations to install python extension modules (shared libraries). --# Another macro is required to find the appropriate flags to compile --# extension modules. --# --# If your package is configured with a different prefix to python, --# users will have to add the install directory to the PYTHONPATH --# environment variable, or create a .pth file (see the python --# documentation for details). --# --# If the MINIMUM-VERSION argument is passed, AM_PATH_PYTHON will --# cause an error if the version of python installed on the system --# doesn't meet the requirement. MINIMUM-VERSION should consist of --# numbers and dots only. --AC_DEFUN([AM_PATH_PYTHON], -- [ -- dnl Find a Python interpreter. Python versions prior to 2.0 are not -- dnl supported. (2.0 was released on October 16, 2000). -- m4_define_default([_AM_PYTHON_INTERPRETER_LIST], -- [python python2 python3 python3.2 python3.1 python3.0 python2.7 python2.6 python2.5 python2.4 python2.3 python2.2 dnl --python2.1 python2.0]) -- -- m4_if([$1],[],[ -- dnl No version check is needed. -- # Find any Python interpreter. -- if test -z "$PYTHON"; then -- AC_PATH_PROGS([PYTHON], _AM_PYTHON_INTERPRETER_LIST, :) -- fi -- am_display_PYTHON=python -- ], [ -- dnl A version check is needed. -- if test -n "$PYTHON"; then -- # If the user set $PYTHON, use it and don't search something else. -- AC_MSG_CHECKING([whether $PYTHON version >= $1]) -- AM_PYTHON_CHECK_VERSION([$PYTHON], [$1], -- [AC_MSG_RESULT(yes)], -- [AC_MSG_ERROR(too old)]) -- am_display_PYTHON=$PYTHON -- else -- # Otherwise, try each interpreter until we find one that satisfies -- # VERSION. -- AC_CACHE_CHECK([for a Python interpreter with version >= $1], -- [am_cv_pathless_PYTHON],[ -- for am_cv_pathless_PYTHON in _AM_PYTHON_INTERPRETER_LIST none; do -- test "$am_cv_pathless_PYTHON" = none && break -- AM_PYTHON_CHECK_VERSION([$am_cv_pathless_PYTHON], [$1], [break]) -- done]) -- # Set $PYTHON to the absolute path of $am_cv_pathless_PYTHON. -- if test "$am_cv_pathless_PYTHON" = none; then -- PYTHON=: -- else -- AC_PATH_PROG([PYTHON], [$am_cv_pathless_PYTHON]) -- fi -- am_display_PYTHON=$am_cv_pathless_PYTHON -- fi -- ]) -- -- if test "$PYTHON" = :; then -- dnl Run any user-specified action, or abort. -- m4_default([$3], [AC_MSG_ERROR([no suitable Python interpreter found])]) -- else -- -- dnl Query Python for its version number. Getting [:3] seems to be -- dnl the best way to do this; it's what "site.py" does in the standard -- dnl library. -- -- AC_CACHE_CHECK([for $am_display_PYTHON version], [am_cv_python_version], -- [am_cv_python_version=`$PYTHON -c "import sys; sys.stdout.write(sys.version[[:3]])"`]) -- AC_SUBST([PYTHON_VERSION], [$am_cv_python_version]) -- -- dnl Use the values of $prefix and $exec_prefix for the corresponding -- dnl values of PYTHON_PREFIX and PYTHON_EXEC_PREFIX. These are made -- dnl distinct variables so they can be overridden if need be. However, -- dnl general consensus is that you shouldn't need this ability. -- -- AC_SUBST([PYTHON_PREFIX], ['${prefix}']) -- AC_SUBST([PYTHON_EXEC_PREFIX], ['${exec_prefix}']) -- -- dnl At times (like when building shared libraries) you may want -- dnl to know which OS platform Python thinks this is. -- -- AC_CACHE_CHECK([for $am_display_PYTHON platform], [am_cv_python_platform], -- [am_cv_python_platform=`$PYTHON -c "import sys; sys.stdout.write(sys.platform)"`]) -- AC_SUBST([PYTHON_PLATFORM], [$am_cv_python_platform]) -- -- -- dnl Set up 4 directories: -- -- dnl pythondir -- where to install python scripts. This is the -- dnl site-packages directory, not the python standard library -- dnl directory like in previous automake betas. This behavior -- dnl is more consistent with lispdir.m4 for example. -- dnl Query distutils for this directory. distutils does not exist in -- dnl Python 1.5, so we fall back to the hardcoded directory if it -- dnl doesn't work. -- AC_CACHE_CHECK([for $am_display_PYTHON script directory], -- [am_cv_python_pythondir], -- [if test "x$prefix" = xNONE -- then -- am_py_prefix=$ac_default_prefix -- else -- am_py_prefix=$prefix -- fi -- am_cv_python_pythondir=`$PYTHON -c "import sys; from distutils import sysconfig; sys.stdout.write(sysconfig.get_python_lib(0,0,prefix='$am_py_prefix'))" 2>/dev/null || -- echo "$PYTHON_PREFIX/lib/python$PYTHON_VERSION/site-packages"` -- case $am_cv_python_pythondir in -- $am_py_prefix*) -- am__strip_prefix=`echo "$am_py_prefix" | sed 's|.|.|g'` -- am_cv_python_pythondir=`echo "$am_cv_python_pythondir" | sed "s,^$am__strip_prefix,$PYTHON_PREFIX,"` -- ;; -- *) -- case $am_py_prefix in -- /usr|/System*) ;; -- *) -- am_cv_python_pythondir=$PYTHON_PREFIX/lib/python$PYTHON_VERSION/site-packages -- ;; -- esac -- ;; -- esac -- ]) -- AC_SUBST([pythondir], [$am_cv_python_pythondir]) -- -- dnl pkgpythondir -- $PACKAGE directory under pythondir. Was -- dnl PYTHON_SITE_PACKAGE in previous betas, but this naming is -- dnl more consistent with the rest of automake. -- -- AC_SUBST([pkgpythondir], [\${pythondir}/$PACKAGE]) -- -- dnl pyexecdir -- directory for installing python extension modules -- dnl (shared libraries) -- dnl Query distutils for this directory. distutils does not exist in -- dnl Python 1.5, so we fall back to the hardcoded directory if it -- dnl doesn't work. -- AC_CACHE_CHECK([for $am_display_PYTHON extension module directory], -- [am_cv_python_pyexecdir], -- [if test "x$exec_prefix" = xNONE -- then -- am_py_exec_prefix=$am_py_prefix -- else -- am_py_exec_prefix=$exec_prefix -- fi -- am_cv_python_pyexecdir=`$PYTHON -c "import sys; from distutils import sysconfig; sys.stdout.write(sysconfig.get_python_lib(1,0,prefix='$am_py_exec_prefix'))" 2>/dev/null || -- echo "$PYTHON_EXEC_PREFIX/lib/python$PYTHON_VERSION/site-packages"` -- case $am_cv_python_pyexecdir in -- $am_py_exec_prefix*) -- am__strip_prefix=`echo "$am_py_exec_prefix" | sed 's|.|.|g'` -- am_cv_python_pyexecdir=`echo "$am_cv_python_pyexecdir" | sed "s,^$am__strip_prefix,$PYTHON_EXEC_PREFIX,"` -- ;; -- *) -- case $am_py_exec_prefix in -- /usr|/System*) ;; -- *) -- am_cv_python_pyexecdir=$PYTHON_EXEC_PREFIX/lib/python$PYTHON_VERSION/site-packages -- ;; -- esac -- ;; -- esac -- ]) -- AC_SUBST([pyexecdir], [$am_cv_python_pyexecdir]) -- -- dnl pkgpyexecdir -- $(pyexecdir)/$(PACKAGE) -- -- AC_SUBST([pkgpyexecdir], [\${pyexecdir}/$PACKAGE]) -- -- dnl Run any user-specified action. -- $2 -- fi -- --]) -- -- --# AM_PYTHON_CHECK_VERSION(PROG, VERSION, [ACTION-IF-TRUE], [ACTION-IF-FALSE]) --# --------------------------------------------------------------------------- --# Run ACTION-IF-TRUE if the Python interpreter PROG has version >= VERSION. --# Run ACTION-IF-FALSE otherwise. --# This test uses sys.hexversion instead of the string equivalent (first --# word of sys.version), in order to cope with versions such as 2.2c1. --# This supports Python 2.0 or higher. (2.0 was released on October 16, 2000). --AC_DEFUN([AM_PYTHON_CHECK_VERSION], -- [prog="import sys --# split strings by '.' and convert to numeric. Append some zeros --# because we need at least 4 digits for the hex conversion. --# map returns an iterator in Python 3.0 and a list in 2.x --minver = list(map(int, '$2'.split('.'))) + [[0, 0, 0]] --minverhex = 0 --# xrange is not present in Python 3.0 and range returns an iterator --for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[[i]] --sys.exit(sys.hexversion < minverhex)" -- AS_IF([AM_RUN_LOG([$1 -c "$prog"])], [$3], [$4])]) diff --git a/0003-makefile-am-subdirs.patch b/0003-makefile-am-subdirs.patch deleted file mode 100644 index ae2e543..0000000 --- a/0003-makefile-am-subdirs.patch +++ /dev/null @@ -1,126 +0,0 @@ -diff -ruN glusterfs-11.2/api/examples/Makefile.am glusterfs-11.2-mod/api/examples/Makefile.am ---- glusterfs-11.2/api/examples/Makefile.am 2025-06-10 16:27:14.000000000 +0300 -+++ glusterfs-11.2-mod/api/examples/Makefile.am 2025-07-02 12:31:15.002167956 +0300 -@@ -1,3 +1,5 @@ -+AUTOMAKE_OPTIONS = subdir-objects -+ - # The bits needed for glfsxmp - EXTRA_PROGRAMS = glfsxmp - glfsxmp_SOURCES = glfsxmp.c -diff -ruN glusterfs-11.2/contrib/fuse-util/Makefile.am glusterfs-11.2-mod/contrib/fuse-util/Makefile.am ---- glusterfs-11.2/contrib/fuse-util/Makefile.am 2025-06-10 16:27:14.000000000 +0300 -+++ glusterfs-11.2-mod/contrib/fuse-util/Makefile.am 2025-07-02 12:31:32.290546271 +0300 -@@ -1,3 +1,5 @@ -+AUTOMAKE_OPTIONS = subdir-objects -+ - bin_PROGRAMS = fusermount-glusterfs - - fusermount_glusterfs_SOURCES = fusermount.c mount_util.c $(CONTRIBDIR)/fuse-lib/mount-common.c -diff -ruN glusterfs-11.2/libglusterfs/src/Makefile.am glusterfs-11.2-mod/libglusterfs/src/Makefile.am ---- glusterfs-11.2/libglusterfs/src/Makefile.am 2025-06-10 16:27:14.000000000 +0300 -+++ glusterfs-11.2-mod/libglusterfs/src/Makefile.am 2025-07-02 12:26:47.776161392 +0300 -@@ -1,3 +1,5 @@ -+AUTOMAKE_OPTIONS = subdir-objects -+ - noinst_PYTHON = generator.py gen-defaults.py $(top_srcdir)/events/eventskeygen.py - - libglusterfs_la_CFLAGS = $(GF_CFLAGS) $(GF_DARWIN_LIBGLUSTERFS_CFLAGS) \ -diff -ruN glusterfs-11.2/xlators/cluster/afr/src/Makefile.am glusterfs-11.2-mod/xlators/cluster/afr/src/Makefile.am ---- glusterfs-11.2/xlators/cluster/afr/src/Makefile.am 2025-06-10 16:27:14.000000000 +0300 -+++ glusterfs-11.2-mod/xlators/cluster/afr/src/Makefile.am 2025-07-02 12:26:21.567940962 +0300 -@@ -1,3 +1,5 @@ -+AUTOMAKE_OPTIONS = subdir-objects -+ - xlator_LTLIBRARIES = afr.la - xlatordir = $(libdir)/glusterfs/$(PACKAGE_VERSION)/xlator/cluster - -diff -ruN glusterfs-11.2/xlators/cluster/dht/src/Makefile.am glusterfs-11.2-mod/xlators/cluster/dht/src/Makefile.am ---- glusterfs-11.2/xlators/cluster/dht/src/Makefile.am 2025-06-10 16:27:14.000000000 +0300 -+++ glusterfs-11.2-mod/xlators/cluster/dht/src/Makefile.am 2025-07-02 12:26:07.943843179 +0300 -@@ -1,3 +1,5 @@ -+AUTOMAKE_OPTIONS = subdir-objects -+ - xlator_LTLIBRARIES = dht.la nufa.la switch.la - - AM_CFLAGS = -Wall $(GF_CFLAGS) -diff -ruN glusterfs-11.2/xlators/cluster/ec/src/Makefile.am glusterfs-11.2-mod/xlators/cluster/ec/src/Makefile.am ---- glusterfs-11.2/xlators/cluster/ec/src/Makefile.am 2025-06-10 16:27:14.000000000 +0300 -+++ glusterfs-11.2-mod/xlators/cluster/ec/src/Makefile.am 2025-07-02 12:25:45.287655225 +0300 -@@ -1,3 +1,5 @@ -+AUTOMAKE_OPTIONS = subdir-objects -+ - xlator_LTLIBRARIES = ec.la - xlatordir = $(libdir)/glusterfs/$(PACKAGE_VERSION)/xlator/cluster - -diff -ruN glusterfs-11.2/xlators/features/changelog/lib/src/Makefile.am glusterfs-11.2-mod/xlators/features/changelog/lib/src/Makefile.am ---- glusterfs-11.2/xlators/features/changelog/lib/src/Makefile.am 2025-06-10 16:27:14.000000000 +0300 -+++ glusterfs-11.2-mod/xlators/features/changelog/lib/src/Makefile.am 2025-07-02 12:25:15.015401482 +0300 -@@ -1,3 +1,5 @@ -+AUTOMAKE_OPTIONS = subdir-objects -+ - libgfchangelog_la_CFLAGS = -Wall $(GF_CFLAGS) $(GF_DARWIN_LIBGLUSTERFS_CFLAGS) \ - -DDATADIR=\"$(localstatedir)\" - -diff -ruN glusterfs-11.2/xlators/features/cloudsync/src/cloudsync-plugins/src/cloudsyncs3/src/Makefile.am glusterfs-11.2-mod/xlators/features/cloudsync/src/cloudsync-plugins/src/cloudsyncs3/src/Makefile.am ---- glusterfs-11.2/xlators/features/cloudsync/src/cloudsync-plugins/src/cloudsyncs3/src/Makefile.am 2025-06-10 16:27:14.000000000 +0300 -+++ glusterfs-11.2-mod/xlators/features/cloudsync/src/cloudsync-plugins/src/cloudsyncs3/src/Makefile.am 2025-07-02 12:24:16.783001896 +0300 -@@ -1,3 +1,5 @@ -+AUTOMAKE_OPTIONS = subdir-objects -+ - csp_LTLIBRARIES = cloudsyncs3.la - cspdir = $(libdir)/glusterfs/$(PACKAGE_VERSION)/cloudsync-plugins - -diff -ruN glusterfs-11.2/xlators/features/cloudsync/src/cloudsync-plugins/src/cvlt/src/Makefile.am glusterfs-11.2-mod/xlators/features/cloudsync/src/cloudsync-plugins/src/cvlt/src/Makefile.am ---- glusterfs-11.2/xlators/features/cloudsync/src/cloudsync-plugins/src/cvlt/src/Makefile.am 2025-06-10 16:27:14.000000000 +0300 -+++ glusterfs-11.2-mod/xlators/features/cloudsync/src/cloudsync-plugins/src/cvlt/src/Makefile.am 2025-07-02 12:24:00.726984102 +0300 -@@ -1,3 +1,5 @@ -+AUTOMAKE_OPTIONS = subdir-objects -+ - csp_LTLIBRARIES = cloudsynccvlt.la - cspdir = $(libdir)/glusterfs/$(PACKAGE_VERSION)/cloudsync-plugins - -diff -ruN glusterfs-11.2/xlators/features/cloudsync/src/Makefile.am glusterfs-11.2-mod/xlators/features/cloudsync/src/Makefile.am ---- glusterfs-11.2/xlators/features/cloudsync/src/Makefile.am 2025-06-10 16:27:14.000000000 +0300 -+++ glusterfs-11.2-mod/xlators/features/cloudsync/src/Makefile.am 2025-07-02 12:24:45.054966491 +0300 -@@ -1,3 +1,5 @@ -+AUTOMAKE_OPTIONS = subdir-objects -+ - SUBDIRS = cloudsync-plugins - - xlator_LTLIBRARIES = cloudsync.la -diff -ruN glusterfs-11.2/xlators/features/thin-arbiter/src/Makefile.am glusterfs-11.2-mod/xlators/features/thin-arbiter/src/Makefile.am ---- glusterfs-11.2/xlators/features/thin-arbiter/src/Makefile.am 2025-06-10 16:27:14.000000000 +0300 -+++ glusterfs-11.2-mod/xlators/features/thin-arbiter/src/Makefile.am 2025-07-02 12:22:10.366019070 +0300 -@@ -1,3 +1,5 @@ -+AUTOMAKE_OPTIONS = subdir-objects -+ - xlator_LTLIBRARIES = thin-arbiter.la - - xlatordir = $(libdir)/glusterfs/$(PACKAGE_VERSION)/xlator/features -diff -ruN glusterfs-11.2/xlators/features/utime/src/Makefile.am glusterfs-11.2-mod/xlators/features/utime/src/Makefile.am ---- glusterfs-11.2/xlators/features/utime/src/Makefile.am 2025-06-10 16:27:14.000000000 +0300 -+++ glusterfs-11.2-mod/xlators/features/utime/src/Makefile.am 2025-07-02 12:21:54.421923762 +0300 -@@ -1,3 +1,5 @@ -+AUTOMAKE_OPTIONS = subdir-objects -+ - xlator_LTLIBRARIES = utime.la - xlatordir = $(libdir)/glusterfs/$(PACKAGE_VERSION)/xlator/features - -diff -ruN glusterfs-11.2/xlators/mgmt/glusterd/src/Makefile.am glusterfs-11.2-mod/xlators/mgmt/glusterd/src/Makefile.am ---- glusterfs-11.2/xlators/mgmt/glusterd/src/Makefile.am 2025-06-10 16:27:14.000000000 +0300 -+++ glusterfs-11.2-mod/xlators/mgmt/glusterd/src/Makefile.am 2025-07-02 12:20:49.141466838 +0300 -@@ -1,3 +1,5 @@ -+AUTOMAKE_OPTIONS = subdir-objects -+ - if WITH_SERVER - xlator_LTLIBRARIES = glusterd.la - endif -diff -ruN glusterfs-11.2/xlators/mount/fuse/src/Makefile.am glusterfs-11.2-mod/xlators/mount/fuse/src/Makefile.am ---- glusterfs-11.2/xlators/mount/fuse/src/Makefile.am 2025-06-10 16:27:14.000000000 +0300 -+++ glusterfs-11.2-mod/xlators/mount/fuse/src/Makefile.am 2025-07-02 12:19:50.029047303 +0300 -@@ -1,3 +1,5 @@ -+AUTOMAKE_OPTIONS = subdir-objects -+ - noinst_HEADERS_linux = $(CONTRIBDIR)/fuse-include/fuse_kernel.h\ - $(CONTRIBDIR)/fuse-include/mount_util.h\ - $(CONTRIBDIR)/fuse-lib/mount-gluster-compat.h diff --git a/glusterd.init b/glusterd.init new file mode 100644 index 0000000..fecb77d --- /dev/null +++ b/glusterd.init @@ -0,0 +1,109 @@ +#!/bin/sh +# +# glusterd Startup script for the glusterfs server +# +# chkconfig: - 20 80 +# description: Clustered file-system server + +### BEGIN INIT INFO +# Provides: glusterd +# Required-Start: $local_fs $network +# Required-Stop: $local_fs $network +# Should-Start: +# Should-Stop: +# Default-Start: +# Default-Stop: 0 1 2 3 4 5 6 +# Short-Description: glusterfs server +# Description: Clustered file-system server +### END INIT INFO + +# Source function library. +. /etc/rc.d/init.d/functions + +exe="/usr/sbin/glusterd" +prog="glusterd" + +# Fedora File System Layout dictates /run +[ -e /run ] && RUNDIR="/run" +pidf="${RUNDIR:-/var/run}/$prog.pid" + +# Set defaults, then source config for eventual overrides +GLUSTERD_NOFILE="65536" + +[ -e /etc/sysconfig/$prog ] && . /etc/sysconfig/$prog + +lockfile=/var/lock/subsys/$prog + +start() { + [ -x $exe ] || exit 5 + ulimit -n $GLUSTERD_NOFILE + echo -n $"Starting $prog: " + daemon $exe${GLUSTERD_LOGFILE+" -l $GLUSTERD_LOGFILE"}${GLUSTERD_LOGLEVEL+" -L $GLUSTERD_LOGLEVEL"} -p $pidf + retval=$? + echo + [ $retval -eq 0 ] && touch $lockfile /var/lock/subsys/glusterfsd + return $retval +} + +stop() { + echo -n $"Stopping $prog: " + killproc $prog + retval=$? + echo + [ $retval -eq 0 ] && rm -f $lockfile + return $retval +} + +restart() { + stop + start +} + +reload() { + restart +} + +force_reload() { + restart +} + +rh_status() { + status $prog +} + +rh_status_q() { + rh_status &>/dev/null +} + + +case "$1" in + start) + rh_status_q && exit 0 + $1 + ;; + stop) + rh_status_q || exit 0 + $1 + ;; + restart) + $1 + ;; + reload) + rh_status_q || exit 7 + $1 + ;; + force-reload) + force_reload + ;; + status) + rh_status + ;; + condrestart|try-restart) + rh_status_q || exit 0 + restart + ;; + *) + echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload}" + exit 2 +esac +exit $? diff --git a/glusterfs.spec b/glusterfs.spec index c125810..9597a3e 100644 --- a/glusterfs.spec +++ b/glusterfs.spec @@ -1,22 +1,21 @@ - %global _hardened_build 1 %global _for_fedora_koji_builds 1 -# uncomment and add '%' to use the %%dev for pre-releases +# uncomment and add '%' to use the prereltag for pre-releases # %%global prereltag rc0 ##----------------------------------------------------------------------------- -## All package definitions should be placed here in alphabetical order +## All argument definitions should be placed here and keep them sorted ## -# asan -# if you wish to compile an rpm with address sanitizer... -# rpmbuild -ta @PACKAGE_NAME@-@PACKAGE_VERSION@.tar.gz --with asan -%{?_with_asan:%global _with_asan --enable-asan} +# bd +# 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} -%if ( 0%{?rhel} && 0%{?rhel} < 7 ) -%global _with_asan %{nil} +%if ( 0%{?rhel} && 0%{?rhel} < 6 || 0%{?sles_version} ) +%global _without_bd --disable-bd-xlator %endif # cmocka @@ -44,21 +43,25 @@ # rpmbuild -ta @PACKAGE_NAME@-@PACKAGE_VERSION@.tar.gz --without georeplication %{?_without_georeplication:%global _without_georeplication --disable-georeplication} +# Disable geo-replication on EL5, as its default Python is too old +%if ( 0%{?rhel} && 0%{?rhel} < 6 ) +%global _without_georeplication --disable-georeplication +%endif + # gnfs # if you wish to compile an rpm with the legacy gNFS server xlator # rpmbuild -ta @PACKAGE_NAME@-@PACKAGE_VERSION@.tar.gz --with gnfs -%{?_without_gnfs:%global _with_gnfs --disable-gnfs} +%{?_with_gnfs:%global _with_gnfs --enable-gnfs} + +%if ( 0%{_for_fedora_koji_builds} ) +%global _with_gnfs --enable-gnfs +%endif # ipv6default # if you wish to compile an rpm with IPv6 default... # rpmbuild -ta @PACKAGE_NAME@-@PACKAGE_VERSION@.tar.gz --with ipv6default %{?_with_ipv6default:%global _with_ipv6default --with-ipv6-default} -# linux-io_uring -# If you wish to compile an rpm without linux-io_uring support... -# rpmbuild -ta @PACKAGE_NAME@-@PACKAGE_VERSION@.tar.gz --without-linux-io_uring -%{?_without_linux_io_uring:%global _without_linux_io_uring --disable-linux-io_uring} - # libtirpc # if you wish to compile an rpm without TIRPC (i.e. use legacy glibc rpc) # rpmbuild -ta @PACKAGE_NAME@-@PACKAGE_VERSION@.tar.gz --without libtirpc @@ -70,20 +73,21 @@ %global _without_libtirpc --without-libtirpc %endif -# libtcmalloc -# if you wish to compile an rpm without tcmalloc (i.e. use gluster mempool) -# rpmbuild -ta @PACKAGE_NAME@-@PACKAGE_VERSION@.tar.gz --without tcmalloc -%{?_without_tcmalloc:%global _without_tcmalloc --without-tcmalloc} - -%ifnarch x86_64 -%global _without_tcmalloc --without-tcmalloc -%endif - # ocf # if you wish to compile an rpm without the OCF resource agents... # rpmbuild -ta @PACKAGE_NAME@-@PACKAGE_VERSION@.tar.gz --without ocf %{?_without_ocf:%global _without_ocf --without-ocf} +# rdma +# 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} + +# No RDMA Support on s390(x) +%ifarch s390 s390x armv7hl +%global _without_rdma --disable-ibverbs +%endif + # server # if you wish to build rpms without server components, compile like this # rpmbuild -ta @PACKAGE_NAME@-@PACKAGE_VERSION@.tar.gz --without server @@ -107,13 +111,10 @@ %global _without_syslog --disable-syslog %endif -# tsan -# if you wish to compile an rpm with thread sanitizer... -# rpmbuild -ta @PACKAGE_NAME@-@PACKAGE_VERSION@.tar.gz --with tsan -%{?_with_tsan:%global _with_tsan --enable-tsan} - -%if ( 0%{?rhel} && 0%{?rhel} < 7 ) -%global _with_tsan %{nil} +# tier +# Disable data-tiering on EL5, sqlite is too old +%if ( 0%{?rhel} && 0%{?rhel} < 6 ) +%global _without_tiering --disable-tiering %endif # valgrind @@ -122,13 +123,11 @@ %{?_with_valgrind:%global _with_valgrind --enable-valgrind} ##----------------------------------------------------------------------------- -## All package definitions should be placed here in alphabetical order +## All %%global definitions should be placed here and keep them sorted ## -# selinux booleans whose default value needs modification -# these booleans will be consumed by "%%selinux_set_booleans" macro. -%if ( 0%{?rhel} && 0%{?rhel} >= 8 ) -%global selinuxbooleans rsync_full_access=1 rsync_client=1 +%if ( 0%{?fedora} || ( 0%{?rhel} && 0%{?rhel} > 6 ) ) +%global _with_systemd true %endif %if ( 0%{?fedora} || ( 0%{?rhel} && 0%{?rhel} > 6 ) ) @@ -141,22 +140,28 @@ %global _with_tmpfilesdir --without-tmpfilesdir %endif +# Eventing +%if ( 0%{?rhel} && 0%{?rhel} < 6 ) +%global _without_events --disable-events +%endif + # without server should also disable some server-only components %if ( 0%{?_without_server:1} ) %global _without_events --disable-events %global _without_georeplication --disable-georeplication %global _with_gnfs %{nil} +%global _without_tiering --disable-tiering %global _without_ocf --without-ocf %endif -%if ( 0%{?fedora} ) || ( 0%{?rhel} && 0%{?rhel} > 7 ) -%global _usepython3 1 -%global _pythonver 3 -%else -%global _usepython3 0 -%global _pythonver 2 +# From https://fedoraproject.org/wiki/Packaging:Python#Macros +%if ( 0%{?rhel} && 0%{?rhel} < 7 ) +%{!?python2_sitelib: %global python2_sitelib %(python -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())")} +%{!?python2_sitearch: %global python2_sitearch %(python -c "from distutils.sysconfig import get_python_lib; print(get_python_lib(1))")} +%global _rundir %{_localstatedir}/run %endif +%if ( 0%{?_with_systemd:1} ) %global service_start() /bin/systemctl --quiet start %1.service || : \ %{nil} %global service_stop() /bin/systemctl --quiet stop %1.service || :\ @@ -166,12 +171,34 @@ # can't seem to make a generic macro that works %global glusterd_svcfile %{_unitdir}/glusterd.service %global glusterfsd_svcfile %{_unitdir}/glusterfsd.service -%global glusterta_svcfile %{_unitdir}/gluster-ta-volume.service %global glustereventsd_svcfile %{_unitdir}/glustereventsd.service %global glusterfssharedstorage_svcfile %{_unitdir}/glusterfssharedstorage.service +%else +%global systemd_post() /sbin/chkconfig --add %1 >/dev/null 2>&1 || : \ +%{nil} +%global systemd_preun() /sbin/chkconfig --del %1 >/dev/null 2>&1 || : \ +%{nil} +%global systemd_postun_with_restart() /sbin/service %1 condrestart >/dev/null 2>&1 || : \ +%{nil} +%global service_start() /sbin/service %1 start >/dev/null 2>&1 || : \ +%{nil} +%global service_stop() /sbin/service %1 stop >/dev/null 2>&1 || : \ +%{nil} +%global service_install() install -D -p -m 0755 %{_sourcedir}/%1.init %{buildroot}%2 \ +%{nil} +# can't seem to make a generic macro that works +%global glusterd_svcfile %{_sysconfdir}/init.d/glusterd +%global glusterfsd_svcfile %{_sysconfdir}/init.d/glusterfsd +%global glustereventsd_svcfile %{_sysconfdir}/init.d/glustereventsd +%endif %{!?_pkgdocdir: %global _pkgdocdir %{_docdir}/%{name}-%{version}} +%if ( 0%{?rhel} && 0%{?rhel} < 6 ) +# _sharedstatedir is not provided by RHEL5 +%global _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: @@ -190,78 +217,78 @@ ##----------------------------------------------------------------------------- -## All package definitions should be placed here in alphabetical order +## All package definitions should be placed here and keep them sorted ## Summary: Distributed File System %if ( 0%{_for_fedora_koji_builds} ) Name: glusterfs -Version: 11.2 -Release: 4%{?prereltag:%{prereltag}}%{?dist} +Version: 4.1.8 +Release: %{?prereltag:1.}1%{?prereltag:.%{prereltag}}%{?dist} %else Name: @PACKAGE_NAME@ Version: @PACKAGE_VERSION@ -Release: 0.@PACKAGE_RELEASE@%{?dist}.26 +Release: 0.@PACKAGE_RELEASE@%{?dist}.6 %endif -License: GPL-2.0-only OR LGPL-3.0-or-later +License: GPLv2 or LGPLv3+ URL: http://docs.gluster.org/ %if ( 0%{_for_fedora_koji_builds} ) -Source0: http://github.com/gluster/glusterfs/archive/v%{version}%{?prereltag}/glusterfs-%{version}%{?prereltag}.tar.gz +Source0: http://download.gluster.org/pub/gluster/%{name}/4.1/%{version}%{?prereltag}/%{name}-%{version}%{?prereltag}.tar.gz +Patch0: python.patch Source1: glusterd.sysconfig Source2: glusterfsd.sysconfig +Source6: rhel5-load-fuse-modules Source7: glusterfsd.service Source8: glusterfsd.init %else Source0: @PACKAGE_NAME@-@PACKAGE_VERSION@.tar.gz %endif -Patch0001: 0001-configure.ac.patch -Patch0002: 0002-contrib-aclocal-python.m4.patch -Patch0003: 0003-makefile-am-subdirs.patch + +Requires(pre): shadow-utils +%if ( 0%{?rhel} && 0%{?rhel} < 6 ) +BuildRequires: python2-simplejson +%endif +%if ( 0%{?_with_systemd:1} ) BuildRequires: systemd - -%if 0%{!?_without_tcmalloc:1} -Requires: gperftools-libs%{?_isa} %endif -Requires: libglusterfs0%{?_isa} = %{version}-%{release} -Requires: libgfrpc0%{?_isa} = %{version}-%{release} -Requires: libgfxdr0%{?_isa} = %{version}-%{release} +Requires: %{name}-libs = %{version}-%{release} +%if ( 0%{?_with_systemd:1} ) %{?systemd_requires} -%if 0%{?_with_asan:1} && !( 0%{?rhel} && 0%{?rhel} < 7 ) -BuildRequires: libasan -%endif -%if 0%{?_with_tsan:1} && !( 0%{?rhel} && 0%{?rhel} < 7 ) -BuildRequires: libtsan %endif BuildRequires: bison flex BuildRequires: gcc make libtool -%ifarch x86_64 aarch64 -BuildRequires: mold -%endif BuildRequires: ncurses-devel readline-devel -BuildRequires: libxml2-devel openssl-devel openssl +BuildRequires: libxml2-devel openssl-devel BuildRequires: libaio-devel libacl-devel -BuildRequires: python%{_pythonver}-devel -%if 0%{!?_without_tcmalloc:1} -BuildRequires: gperftools-devel -%endif +BuildRequires: python2-devel %if ( 0%{?rhel} && 0%{?rhel} < 8 ) BuildRequires: python-ctypes %endif %if ( ( 0%{?_with_ipv6default:1} ) || ( 0%{!?_without_libtirpc:1} ) ) BuildRequires: libtirpc-devel %endif -%if ( 0%{?fedora} && 0%{?fedora} > 27 ) || ( 0%{?rhel} && 0%{?rhel} > 7 ) +%if ( 0%{?fedora} && 0%{?fedora} > 27 ) BuildRequires: rpcgen %endif BuildRequires: userspace-rcu-devel >= 0.7 %if ( 0%{?rhel} && 0%{?rhel} < 7 ) BuildRequires: automake %endif +%if ( 0%{?rhel} && 0%{?rhel} < 6 ) +BuildRequires: e2fsprogs-devel +%else BuildRequires: libuuid-devel +%endif %if ( 0%{?_with_cmocka:1} ) BuildRequires: libcmocka-devel >= 1.0.1 %endif +%if ( 0%{!?_without_tiering:1} ) +BuildRequires: sqlite-devel +%endif +%if ( 0%{!?_without_bd:1} ) +BuildRequires: lvm2-devel +%endif %if ( 0%{!?_without_georeplication:1} ) BuildRequires: libattr-devel %endif @@ -270,116 +297,139 @@ BuildRequires: libattr-devel BuildRequires: firewalld %endif -%if ( 0%{!?_without_linux_io_uring:1} ) -BuildRequires: liburing-devel -%endif - -Obsoletes: hekafs <= %{version}-%{release} +Obsoletes: hekafs Obsoletes: %{name}-common < %{version}-%{release} Obsoletes: %{name}-core < %{version}-%{release} %if ( 0%{_for_fedora_koji_builds} ) -Obsoletes: %{name}-regression-tests <= %{version}-%{release} +Obsoletes: %{name}-regression-tests %endif -Obsoletes: %{name}-ufo <= %{version}-%{release} -%if ( 0%{!?_with_gnfs:1} ) -Obsoletes: %{name}-gnfs <= %{version}-%{release} -%endif -Obsoletes: %{name}-rdma < %{version}-%{release} +Obsoletes: %{name}-ufo +Obsoletes: %{name}-ganesha Provides: %{name}-common = %{version}-%{release} Provides: %{name}-core = %{version}-%{release} -Provides: %{name}-rdma = %{version}-%{release} %description GlusterFS is a distributed file-system capable of scaling to several -petabytes. It aggregates various storage bricks over TCP/IP interconnect -into one large parallel network filesystem. 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. +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 includes the glusterfs binary, the glusterfsd daemon and the libglusterfs and glusterfs translator modules common to both GlusterFS server and client framework. +%package api +Summary: GlusterFS api library +Requires: %{name} = %{version}-%{release} +Requires: %{name}-client-xlators = %{version}-%{release} + +%description api +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 glusterfs libgfapi library. + +%package api-devel +Summary: Development Libraries +Requires: %{name} = %{version}-%{release} +Requires: %{name}-devel = %{version}-%{release} +Requires: libacl-devel + +%description api-devel +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 api include files. + +%if ( 0%{!?_without_server:1} ) %package cli Summary: GlusterFS CLI -%if ( ! (0%{?rhel} && 0%{?rhel} < 7) ) -BuildRequires: pkgconfig(bash-completion) -# bash-completion >= 1.90 satisfies this requirement. -# If it is not available, the condition can be adapted -# and the completion script will be installed in the backwards compatible -# %{sysconfdir}/bash_completion.d -%endif -Requires: libglusterfs0%{?_isa} = %{version}-%{release} - -%if "%{_sbindir}" == "%{_bindir}" -# Compat symlinks for Requires in other packages. -# We rely on filesystem to create the symlinks for us. -Requires: filesystem(unmerged-sbin-symlinks) -Provides: /usr/sbin/gluster -%endif +Requires: %{name}-libs = %{version}-%{release} %description cli GlusterFS is a distributed file-system capable of scaling to several -petabytes. It aggregates various storage bricks over TCP/IP interconnect -into one large parallel network filesystem. 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. +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 GlusterFS CLI application and its man page +%endif %package client-xlators Summary: GlusterFS client-side translators %description client-xlators GlusterFS is a distributed file-system capable of scaling to several -petabytes. It aggregates various storage bricks over TCP/IP interconnect -into one large parallel network filesystem. 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. +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. -%package cloudsync-plugins -Summary: Cloudsync Plugins -BuildRequires: libcurl-devel +%package devel +Summary: Development Libraries +Requires: %{name} = %{version}-%{release} +# Needed for the Glupy examples to work +Requires: %{name}-extra-xlators = %{version}-%{release} -%description cloudsync-plugins +%description devel GlusterFS is a distributed file-system capable of scaling to several -petabytes. It aggregates various storage bricks over TCP/IP interconnect -into one large parallel network filesystem. 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. +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. -This package provides cloudsync plugins for archival feature. %if ( 0%{!?_without_events:1} ) %package events Summary: GlusterFS Events Requires: %{name}-server%{?_isa} = %{version}-%{release} -Requires: python%{_pythonver} -Requires: python%{_pythonver}-prettytable -Requires: python%{_pythonver}-gluster = %{version}-%{release} -%if ( 0%{?rhel} && 0%{?rhel} < 8 ) +Requires: python2 +Requires: python2-prettytable +Requires: python2-gluster = %{version}-%{release} +%if ( 0%{?rhel} ) Requires: python-requests %else -Requires: python%{_pythonver}-requests +Requires: python2-requests %endif %if ( 0%{?rhel} && 0%{?rhel} < 7 ) Requires: python-argparse %endif +%if ( 0%{?_with_systemd:1} ) %{?systemd_requires} +%endif %description events GlusterFS is a distributed file-system capable of scaling to several -petabytes. It aggregates various storage bricks over TCP/IP interconnect -into one large parallel network filesystem. 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. +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 GlusterFS Events %endif @@ -388,23 +438,24 @@ This package provides the GlusterFS Events Summary: Extra Gluster filesystem Translators # We need python2-gluster rpm for gluster module's __init__.py in Python # site-packages area -Requires: python%{_pythonver}-gluster = %{version}-%{release} -Requires: python%{_pythonver} +Requires: python2-gluster = %{version}-%{release} +Requires: python2 %description extra-xlators GlusterFS is a distributed file-system capable of scaling to several -petabytes. It aggregates various storage bricks over TCP/IP interconnect -into one large parallel network filesystem. 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. +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. %package fuse Summary: Fuse client -BuildRequires: fuse3-devel +BuildRequires: fuse-devel Requires: attr Requires: psmisc @@ -416,87 +467,34 @@ Provides: %{name}-client = %{version}-%{release} %description fuse GlusterFS is a distributed file-system capable of scaling to several -petabytes. It aggregates various storage bricks over TCP/IP interconnect -into one large parallel network filesystem. 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. +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 support to FUSE based clients and includes the -glusterfs and glusterfsd binaries. - -%if ( 0%{!?_without_server:1} ) -%package ganesha -Summary: NFS-Ganesha configuration -Group: Applications/File - -Requires: %{name}-server%{?_isa} = %{version}-%{release} -Requires: nfs-ganesha-selinux >= 2.7.6 -Requires: nfs-ganesha-gluster >= 2.7.6 -Requires: pcs >= 0.10.0 -Requires: resource-agents >= 4.2.0 -Requires: dbus - -%if ( 0%{?rhel} && 0%{?rhel} == 6 ) -Requires: cman, pacemaker, corosync -%endif - -%if ( 0%{?fedora} ) || ( 0%{?rhel} && 0%{?rhel} > 5 ) -# we need portblock resource-agent in 3.9.5 and later. -Requires: net-tools -%endif - -%if ( 0%{?fedora} && 0%{?fedora} > 25 || ( 0%{?rhel} && 0%{?rhel} > 6 ) ) -%if ( 0%{?rhel} && 0%{?rhel} < 8 ) -Requires: selinux-policy >= 3.13.1-160 -Requires(post): policycoreutils-python -Requires(postun): policycoreutils-python -%else -Requires(post): policycoreutils-python-utils -Requires(postun): policycoreutils-python-utils -%endif -%endif - -%description ganesha -GlusterFS is a distributed file-system capable of scaling to several -petabytes. It aggregates various storage bricks over TCP/IP interconnect -into one large parallel network filesystem. 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 configuration and related files for using -NFS-Ganesha as the NFS server using GlusterFS -%endif +glusterfsd and glusterfs binaries. %if ( 0%{!?_without_georeplication:1} ) %package geo-replication Summary: GlusterFS Geo-replication Requires: %{name} = %{version}-%{release} Requires: %{name}-server = %{version}-%{release} -Requires: python%{_pythonver} -Requires: python%{_pythonver}-prettytable -Requires: python%{_pythonver}-gluster = %{version}-%{release} - +Requires: python2 +Requires: python2-prettytable +Requires: python2-gluster = %{version}-%{release} Requires: rsync -Requires: util-linux -Requires: tar -# required for setting selinux bools -%if ( 0%{?rhel} && 0%{?rhel} >= 8 ) -Requires(post): policycoreutils-python-utils -Requires(postun): policycoreutils-python-utils -Requires: selinux-policy-targeted -Requires(post): selinux-policy-targeted -BuildRequires: selinux-policy-devel -%endif %description geo-replication GlusterFS is a distributed file-system capable of scaling to several -petabytes. It aggregates various storage bricks over TCP/IP interconnect -into one large parallel network filesystem. 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. +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 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 userspace and easily manageable. This package provides support to geo-replication. %endif @@ -520,186 +518,73 @@ is in user space and easily manageable. This package provides the glusterfs legacy gNFS server xlator %endif -%package -n libglusterfs0 -Summary: GlusterFS libglusterfs library -Requires: libgfrpc0%{?_isa} = %{version}-%{release} -Requires: libgfxdr0%{?_isa} = %{version}-%{release} -Obsoletes: %{name}-libs <= %{version}-%{release} -Provides: %{name}-libs = %{version}-%{release} -Obsoletes: libglusterd0 <= %{version}-%{release} -Provides: libglusterd0 = %{version}-%{release} +%package libs +Summary: GlusterFS common libraries -%description -n libglusterfs0 +%description libs GlusterFS is a distributed file-system capable of scaling to several -petabytes. It aggregates various storage bricks over TCP/IP interconnect -into one large parallel network filesystem. 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. +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 base libglusterfs library +This package provides the base GlusterFS libraries -%package -n libglusterfs-devel -Summary: GlusterFS libglusterfs library -Requires: libgfrpc-devel%{?_isa} = %{version}-%{release} -Requires: libgfxdr-devel%{?_isa} = %{version}-%{release} -Obsoletes: %{name}-devel <= %{version}-%{release} -Provides: %{name}-devel = %{version}-%{release} - -%description -n libglusterfs-devel -GlusterFS is a distributed file-system capable of scaling to several -petabytes. It aggregates various storage bricks over TCP/IP interconnect -into one large parallel network filesystem. 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 libglusterfs.so and the gluster C header files. - -%package -n libgfapi0 -Summary: GlusterFS api library -Requires: libglusterfs0%{?_isa} = %{version}-%{release} -Requires: %{name}-client-xlators%{?_isa} = %{version}-%{release} -Obsoletes: %{name}-api <= %{version}-%{release} -Provides: %{name}-api = %{version}-%{release} - -%description -n libgfapi0 -GlusterFS is a distributed file-system capable of scaling to several -petabytes. It aggregates various storage bricks over TCP/IP interconnect -into one large parallel network filesystem. 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 glusterfs libgfapi library. - -%package -n libgfapi-devel -Summary: Development Libraries -Requires: libglusterfs-devel%{?_isa} = %{version}-%{release} -Requires: libacl-devel -Obsoletes: %{name}-api-devel <= %{version}-%{release} -Provides: %{name}-api-devel = %{version}-%{release} - -%description -n libgfapi-devel -GlusterFS is a distributed file-system capable of scaling to several -petabytes. It aggregates various storage bricks over TCP/IP interconnect -into one large parallel network filesystem. 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 libgfapi.so and the api C header files. - -%package -n libgfchangelog0 -Summary: GlusterFS libchangelog library -Requires: libglusterfs0%{?_isa} = %{version}-%{release} -Obsoletes: %{name}-libs <= %{version}-%{release} - -%description -n libgfchangelog0 -GlusterFS is a distributed file-system capable of scaling to several -petabytes. It aggregates various storage bricks over TCP/IP interconnect -into one large parallel network filesystem. 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 libgfchangelog library - -%package -n libgfchangelog-devel -Summary: GlusterFS libchangelog library -Requires: libglusterfs-devel%{?_isa} = %{version}-%{release} -Obsoletes: %{name}-devel <= %{version}-%{release} - -%description -n libgfchangelog-devel -GlusterFS is a distributed file-system capable of scaling to several -petabytes. It aggregates various storage bricks over TCP/IP interconnect -into one large parallel network filesystem. 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 libgfchangelog.so and changelog C header files. - -%package -n libgfrpc0 -Summary: GlusterFS libgfrpc0 library -Requires: libglusterfs0%{?_isa} = %{version}-%{release} -Obsoletes: %{name}-libs <= %{version}-%{release} - -%description -n libgfrpc0 -GlusterFS is a distributed file-system capable of scaling to several -petabytes. It aggregates various storage bricks over TCP/IP interconnect -into one large parallel network filesystem. 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 libgfrpc library - -%package -n libgfrpc-devel -Summary: GlusterFS libgfrpc library -Requires: libglusterfs0%{?_isa} = %{version}-%{release} -Obsoletes: %{name}-devel <= %{version}-%{release} - -%description -n libgfrpc-devel -GlusterFS is a distributed file-system capable of scaling to several -petabytes. It aggregates various storage bricks over TCP/IP interconnect -into one large parallel network filesystem. 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 libgfrpc.so and rpc C header files. - -%package -n libgfxdr0 -Summary: GlusterFS libgfxdr0 library -Requires: libglusterfs0%{?_isa} = %{version}-%{release} -Obsoletes: %{name}-libs <= %{version}-%{release} - -%description -n libgfxdr0 -GlusterFS is a distributed file-system capable of scaling to several -petabytes. It aggregates various storage bricks over TCP/IP interconnect -into one large parallel network filesystem. 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 libgfxdr library - -%package -n libgfxdr-devel -Summary: GlusterFS libgfxdr library -Requires: libglusterfs0%{?_isa} = %{version}-%{release} -Obsoletes: %{name}-devel <= %{version}-%{release} - -%description -n libgfxdr-devel -GlusterFS is a distributed file-system capable of scaling to several -petabytes. It aggregates various storage bricks over TCP/IP interconnect -into one large parallel network filesystem. 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 libgfxdr.so. - -%package -n python%{_pythonver}-gluster +%package -n python-gluster Summary: GlusterFS python library -Requires: python%{_pythonver} -%if ( ! %{_usepython3} ) -%{?python_provide:%python_provide python-gluster} -Provides: python-gluster = %{version}-%{release} -Obsoletes: python-gluster < 3.10 +%if ( ! ( 0%{?rhel} && 0%{?rhel} < 6 || 0%{?sles_version} ) ) +# EL5 does not support noarch sub-packages +BuildArch: noarch %endif -%description -n python%{_pythonver}-gluster -GlusterFS is a distributed file-system capable of scaling to several -petabytes. It aggregates various storage bricks over TCP/IP interconnect -into one large parallel network filesystem. 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 contains the python modules of GlusterFS and own gluster +%global _python_gluster_description \ +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 contains the python modules of GlusterFS and own gluster\ namespace. +%description -n python-gluster %{_python_gluster_description} + +%package -n python2-gluster +Summary: GlusterFS python library +%{?python_provide:%python_provide python2-gluster} +Requires: python2 +Provides: python-gluster = %{version}-%{release} +Obsoletes: python-gluster < 3.10 + +%description -n python2-gluster %{_python_gluster_description} + +%if ( 0%{!?_without_rdma:1} ) +%package rdma +Summary: GlusterFS rdma support for ib-verbs +%if ( 0%{?fedora} && 0%{?fedora} > 26 ) +BuildRequires: rdma-core-devel +%else +BuildRequires: libibverbs-devel +BuildRequires: librdmacm-devel >= 1.0.15 +%endif +Requires: %{name} = %{version}-%{release} + +%description rdma +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 support to ib-verbs library. +%endif + %if ( ! 0%{_for_fedora_koji_builds} ) %package regression-tests Summary: Development Tools @@ -709,7 +594,7 @@ Requires: %{name}-server = %{version}-%{release} ## thin provisioning support Requires: lvm2 >= 2.02.89 Requires: perl(App::Prove) perl(Test::Harness) gcc util-linux-ng -Requires: python%{_pythonver} attr dbench file git libacl-devel net-tools +Requires: python2 attr dbench file git libacl-devel net-tools Requires: nfs-utils xfsprogs yajl psmisc bc %description regression-tests @@ -720,20 +605,24 @@ regression testing of Gluster. %if ( 0%{!?_without_ocf:1} ) %package resource-agents Summary: OCF Resource Agents for GlusterFS -License: GPL-3.0-or-later +License: GPLv3+ +%if ( ! ( 0%{?rhel} && 0%{?rhel} < 6 || 0%{?sles_version} ) ) +# EL5 does not support noarch sub-packages BuildArch: noarch +%endif # for glusterd Requires: %{name}-server = %{version}-%{release} # depending on the distribution, we need pacemaker or resource-agents -Requires: resource-agents +Requires: %{_prefix}/lib/ocf/resource.d %description resource-agents GlusterFS is a distributed file-system capable of scaling to several -petabytes. It aggregates various storage bricks over TCP/IP interconnect -into one large parallel network filesystem. 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. +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 resource agents which plug glusterd into Open Cluster Framework (OCF) compliant cluster resource managers, @@ -744,21 +633,24 @@ like Pacemaker. %package server Summary: Distributed file-system server Requires: %{name} = %{version}-%{release} -Requires: libglusterfs0%{?_isa} = %{version}-%{release} -Requires: libgfchangelog0%{?_isa} = %{version}-%{release} +Requires: %{name}-libs = %{version}-%{release} Requires: %{name}-cli = %{version}-%{release} -%if ( 0%{?fedora} && 0%{?fedora} >= 30 || ( 0%{?rhel} && 0%{?rhel} >= 8 ) ) -# Requires: %%{name}-selinux >= 0.1.0-2 -%endif # 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: libgfapi0%{?_isa} = %{version}-%{release} +Requires: %{name}-api = %{version}-%{release} Requires: %{name}-client-xlators = %{version}-%{release} # lvm2 for snapshot, and nfs-utils and rpcbind/portmap for gnfs server Requires: psmisc Requires: lvm2 +%if ( 0%{?_with_systemd:1} ) %{?systemd_requires} +%else +Requires(post): /sbin/chkconfig +Requires(preun): /sbin/service +Requires(preun): /sbin/chkconfig +Requires(postun): /sbin/service +%endif %if (0%{?_with_firewalld:1}) # we install firewalld rules, so we need to have the directory owned %if ( 0%{!?rhel} ) @@ -772,11 +664,14 @@ Requires: rpcbind %else Requires: portmap %endif +%if ( 0%{?rhel} && 0%{?rhel} < 6 ) +Obsoletes: %{name}-geo-replication = %{version}-%{release} +%endif %if ( 0%{?rhel} && 0%{?rhel} < 7 ) Requires: python-argparse %endif -%if ( 0%{?fedora} && 0%{?fedora} > 27 ) || ( 0%{?rhel} && 0%{?rhel} > 7 ) -Requires: python%{_pythonver}-pyxattr +%if ( 0%{?fedora} && 0%{?fedora} > 27 ) +Requires: python2-pyxattr %else Requires: pyxattr %endif @@ -796,69 +691,37 @@ is in user space and easily manageable. This package provides the glusterfs server daemon. %endif -%package thin-arbiter -Summary: GlusterFS thin-arbiter module -Requires: %{name}%{?_isa} = %{version}-%{release} -Requires: %{name}-server%{?_isa} = %{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 setup. - -This package provides the glusterfs thin-arbiter translator. %prep %setup -q -n %{name}-%{version}%{?prereltag} -%ifarch x86_64 aarch64 -%patch 0001 -p1 -%endif -%patch 0002 -p1 -%patch 0003 -p1 -%if ( ! %{_usepython3} ) -echo "fixing python shebangs..." -for f in api events extras geo-replication libglusterfs tools xlators; do -find $f -type f -exec sed -i 's|/usr/bin/python3|/usr/bin/python2|' {} \; -done -%endif - -# Create a sysusers.d config file -cat >glusterfs.sysusers.conf < VERSION -cat VERSION ./autogen.sh && %configure \ - %{?_with_asan} \ %{?_with_cmocka} \ %{?_with_debug} \ %{?_with_firewalld} \ %{?_with_gnfs} \ %{?_with_tmpfilesdir} \ - %{?_with_tsan} \ %{?_with_valgrind} \ + %{?_without_bd} \ %{?_without_epoll} \ %{?_without_events} \ %{?_without_fusermount} \ %{?_without_georeplication} \ %{?_without_ocf} \ + %{?_without_rdma} \ %{?_without_server} \ + %{?_without_syslog} \ + %{?_without_tiering} \ %{?_with_ipv6default} \ - %{?_without_linux_io_uring} \ - %{?_without_libtirpc} \ - %{?_without_tcmalloc} - -# remove option mold doesn't recognize -for file in $(find . -type f -name Makefile -print); do -sed -i -e 's/-Wl,-dT.*$//' $file -done + %{?_without_libtirpc} # fix hardening and remove rpath in shlibs %if ( 0%{?fedora} ) || ( 0%{?rhel} && 0%{?rhel} > 6 ) @@ -867,28 +730,36 @@ sed -i 's| \\\$compiler_flags |&\\\$LDFLAGS |' libtool sed -i 's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=""|' libtool sed -i 's|^runpath_var=LD_RUN_PATH|runpath_var=DIE_RPATH_DIE|' libtool -%make_build V=1 GCC_COLORS= +make %{?_smp_mflags} V=1 %check -%make_build check +make check %install rm -rf %{buildroot} -%make_install -%if ( 0%{!?_without_server:1} ) +make install DESTDIR=%{buildroot} +# Install include directory +install -p -m 0644 contrib/uuid/*.h \ + %{buildroot}%{_includedir}/glusterfs/ %if ( 0%{_for_fedora_koji_builds} ) -%if ( 0%{!?_without_server:1} ) install -D -p -m 0644 %{SOURCE1} \ %{buildroot}%{_sysconfdir}/sysconfig/glusterd install -D -p -m 0644 %{SOURCE2} \ %{buildroot}%{_sysconfdir}/sysconfig/glusterfsd -%endif %else +%if ( 0%{!?_without_server:1} ) install -D -p -m 0644 extras/glusterd-sysconfig \ %{buildroot}%{_sysconfdir}/sysconfig/glusterd %endif %endif +%if ( 0%{_for_fedora_koji_builds} ) +%if ( 0%{?rhel} && 0%{?rhel} < 6 ) +install -D -p -m 0755 %{SOURCE6} \ + %{buildroot}%{_sysconfdir}/sysconfig/modules/glusterfs-fuse.modules +%endif +%endif + mkdir -p %{buildroot}%{_localstatedir}/log/glusterd mkdir -p %{buildroot}%{_localstatedir}/log/glusterfs mkdir -p %{buildroot}%{_localstatedir}/log/glusterfsd @@ -915,11 +786,17 @@ https://forge.gluster.org/glusterfs-core/glusterfs/commits/v%{version}%{?prerelt EOM # Remove benchmarking and other unpackaged files +%if ( 0%{?rhel} && 0%{?rhel} < 6 ) +rm -rf %{buildroot}/benchmarking +rm -f %{buildroot}/glusterfs-mode.el +rm -f %{buildroot}/glusterfs.vim +%else # make install always puts these in %%{_defaultdocdir}/%%{name} so don't # use %%{_pkgdocdir}; that will be wrong on later Fedora distributions rm -rf %{buildroot}%{_defaultdocdir}/%{name}/benchmarking rm -f %{buildroot}%{_defaultdocdir}/%{name}/glusterfs-mode.el rm -f %{buildroot}%{_defaultdocdir}/%{name}/glusterfs.vim +%endif %if ( 0%{!?_without_server:1} ) # Create working directory @@ -931,24 +808,13 @@ sed -i 's|option working-directory /etc/glusterd|option working-directory %{_sha %endif # Install glusterfsd .service or init.d file -%if ( 0%{!?_without_server:1} ) %if ( 0%{_for_fedora_koji_builds} ) %service_install glusterfsd %{glusterfsd_svcfile} %endif -%endif install -D -p -m 0644 extras/glusterfs-logrotate \ %{buildroot}%{_sysconfdir}/logrotate.d/glusterfs -# ganesha ghosts -%if ( 0%{!?_without_server:1} ) -mkdir -p %{buildroot}%{_sysconfdir}/ganesha -touch %{buildroot}%{_sysconfdir}/ganesha/ganesha-ha.conf -mkdir -p %{buildroot}%{_localstatedir}/run/gluster/shared_storage/nfs-ganesha/ -touch %{buildroot}%{_localstatedir}/run/gluster/shared_storage/nfs-ganesha/ganesha.conf -touch %{buildroot}%{_localstatedir}/run/gluster/shared_storage/nfs-ganesha/ganesha-ha.conf -%endif - %if ( 0%{!?_without_georeplication:1} ) # geo-rep ghosts mkdir -p %{buildroot}%{_sharedstatedir}/glusterd/geo-replication @@ -982,21 +848,17 @@ touch %{buildroot}%{_sharedstatedir}/glusterd/nfs/run/nfs.pid find ./tests ./run-tests.sh -type f | cpio -pd %{buildroot}%{_prefix}/share/glusterfs %endif -# Fix installation paths -mv -v %{buildroot}/sbin/* %{buildroot}%{_sbindir}/ - -%global bashcompdir %(pkg-config --variable=completionsdir bash-completion 2>/dev/null) -%if "%{bashcompdir}" == "" -%global bashcompdir ${sysconfdir}/bash_completion.d +%if ( 0%{!?_without_server:1} ) +## Install bash completion for cli +install -p -m 0755 -D extras/command-completion/gluster.bash \ + %{buildroot}%{_sysconfdir}/bash_completion.d/gluster %endif ##----------------------------------------------------------------------------- -## All package definitions should be placed here in alphabetical order - -install -m0644 -D glusterfs.sysusers.conf %{buildroot}%{_sysusersdir}/glusterfs.conf +## All %%post should be placed here and keep them sorted ## %post -%{?ldconfig} +/sbin/ldconfig %if ( 0%{!?_without_syslog:1} ) %if ( 0%{?fedora} ) || ( 0%{?rhel} ) %systemd_postun_with_restart rsyslog @@ -1004,18 +866,7 @@ install -m0644 -D glusterfs.sysusers.conf %{buildroot}%{_sysusersdir}/glusterfs. %endif exit 0 -# post and postun scriptlets for libs -%ldconfig_scriptlets libglusterfs0 - -%ldconfig_scriptlets libgfchangelog0 - -%ldconfig_scriptlets libgfapi0 - -%ldconfig_scriptlets libgfrpc0 - -%ldconfig_scriptlets libgfxdr0 - -%ldconfig_scriptlets libgfglusterd0 +%post api -p /sbin/ldconfig %if ( 0%{!?_without_events:1} ) %post events @@ -1023,32 +874,23 @@ exit 0 exit 0 %endif -%if ( 0%{!?_without_server:1} ) -%if ( 0%{?fedora} && 0%{?fedora} > 25 || ( 0%{?rhel} && 0%{?rhel} > 6 ) ) -%post ganesha -# first install -if [ $1 -eq 1 ]; then - %selinux_set_booleans ganesha_use_fusefs=1 -fi +%if ( 0%{?rhel} == 5 ) +%post fuse +modprobe fuse exit 0 %endif -%endif %if ( 0%{!?_without_georeplication:1} ) %post geo-replication -%if ( 0%{?rhel} && 0%{?rhel} >= 8 ) -if [ $1 -eq 1 ]; then - %selinux_set_booleans %{selinuxbooleans} -fi -%endif if [ $1 -ge 1 ]; then %systemd_postun_with_restart glusterd fi exit 0 %endif -# post and postun scriptlets for libs -%ldconfig_scriptlets libs +%post libs +/sbin/ldconfig +exit 0 %if ( 0%{!?_without_server:1} ) %post server @@ -1125,11 +967,15 @@ exit 0 %endif ##----------------------------------------------------------------------------- -## All package definitions should be placed here in alphabetical order +## All %%pre should be placed here and keep them sorted ## %pre +getent group gluster > /dev/null || groupadd -r gluster +getent passwd gluster > /dev/null || useradd -r -g gluster -d %{_rundir}/gluster -s /sbin/nologin -c "GlusterFS daemons" gluster +exit 0 + ##----------------------------------------------------------------------------- -## All package definitions should be placed here in alphabetical order +## All %%preun should be placed here and keep them sorted ## %if ( 0%{!?_without_events:1} ) %preun events @@ -1163,19 +1009,11 @@ fi exit 0 %endif -%preun thin-arbiter -if [ $1 -eq 0 ]; then - if [ -f %glusterta_svcfile ]; then - %service_stop gluster-ta-volume - %systemd_preun gluster-ta-volume - fi -fi - ##----------------------------------------------------------------------------- -## All package definitions should be placed here in alphabetical order +## All %%postun should be placed here and keep them sorted ## %postun -%{?ldconfig} +/sbin/ldconfig %if ( 0%{!?_without_syslog:1} ) %if ( 0%{?fedora} ) || ( 0%{?rhel} ) %systemd_postun_with_restart rsyslog @@ -1183,60 +1021,38 @@ fi %endif exit 0 +%postun api +/sbin/ldconfig +exit 0 + +%postun libs +/sbin/ldconfig +exit 0 + %if ( 0%{!?_without_server:1} ) %postun server -%{?ldconfig} +/sbin/ldconfig %if (0%{?_with_firewalld:1}) %firewalld_reload %endif exit 0 %endif -%if ( 0%{!?_without_server:1} ) -%if ( 0%{?fedora} && 0%{?fedora} > 25 || ( 0%{?rhel} && 0%{?rhel} > 6 ) ) -%postun ganesha -if [ $1 -eq 0 ]; then - # use the value of ganesha_use_fusefs from before glusterfs-ganesha was installed - %selinux_unset_booleans ganesha_use_fusefs=1 -fi -exit 0 -%endif -%endif - -%if ( 0%{!?_without_georeplication:1} ) -%postun geo-replication -%if ( 0%{?rhel} && 0%{?rhel} >= 8 ) -if [ $1 -eq 0 ]; then - %selinux_unset_booleans %{selinuxbooleans} -fi -exit 0 -%endif -%endif - ##----------------------------------------------------------------------------- -## All trriggerun should be placed here in alphabetical order -## -%if ( 0%{!?_without_server:1} ) -%if ( 0%{?fedora} && 0%{?fedora} > 25 || ( 0%{?rhel} && 0%{?rhel} > 6 ) ) -# ensure ganesha_use_fusefs is on in case of policy mode switch (eg. mls->targeted) -%triggerun ganesha -- selinux-policy-targeted -semanage boolean -m ganesha_use_fusefs --on -S targeted -exit 0 -%endif -%endif - -##----------------------------------------------------------------------------- -## All package definitions should be placed here in alphabetical order +## All %%files should be placed here and keep them sorted by groups ## %files %{!?_licensedir:%global license %%doc} %license COPYING-GPLV2 COPYING-LGPLV3 -%doc ChangeLog INSTALL README.md THANKS COMMITMENT -%{_mandir}/man8/*gluster*.8* +%doc ChangeLog INSTALL README.md THANKS %if ( 0%{!?_without_server:1} ) -%exclude %{_mandir}/man8/gluster.8* +%{_mandir}/man8/*gluster*.8* %endif +%exclude %{_mandir}/man8/gluster.8* %dir %{_localstatedir}/log/glusterfs +%if ( 0%{!?_without_rdma:1} ) +%exclude %{_libdir}/glusterfs/%{version}%{?prereltag}/rpc-transport/rdma* +%endif %if ( 0%{!?_without_server:1} ) %dir %{_datadir}/glusterfs %dir %{_datadir}/glusterfs/scripts @@ -1258,6 +1074,11 @@ exit 0 %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/debug/io-stats.so %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/debug/sink.so %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/debug/trace.so +%if ( ! ( 0%{?rhel} && 0%{?rhel} < 6 ) ) +# RHEL-5 based distributions have a too old openssl +%dir %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/encryption + %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/encryption/crypt.so +%endif %dir %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/access-control.so %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/barrier.so @@ -1287,22 +1108,30 @@ exit 0 %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/system/posix-acl.so %dir %attr(0775,gluster,gluster) %{_rundir}/gluster %dir %attr(0775,gluster,gluster) %{_rundir}/gluster/metrics -%if 0%{?_tmpfilesdir:1} +%if 0%{?_tmpfilesdir:1} && 0%{!?_without_server:1} %{_tmpfilesdir}/gluster.conf %endif -%if ( 0%{?_without_server:1} ) -#exclude ganesha related files -%exclude %{_sysconfdir}/ganesha/ganesha-ha.conf.sample -%exclude %{_libexecdir}/ganesha/* -%exclude %{_prefix}/lib/ocf/resource.d/heartbeat/* -%endif -%{_sysusersdir}/glusterfs.conf +%files api +%exclude %{_libdir}/*.so +# libgfapi files +%{_libdir}/libgfapi.* +%dir %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/mount + %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/mount/api.so +%files api-devel +%{_libdir}/pkgconfig/glusterfs-api.pc +%{_libdir}/libgfapi.so +%dir %{_includedir}/glusterfs +%dir %{_includedir}/glusterfs/api + %{_includedir}/glusterfs/api/* + +%if ( 0%{!?_without_server:1} ) %files cli %{_sbindir}/gluster %{_mandir}/man8/gluster.8* -%{bash_completions_dir}/gluster.bash +%{_sysconfdir}/bash_completion.d/gluster +%endif %files client-xlators %dir %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/cluster @@ -1310,59 +1139,39 @@ exit 0 %dir %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/protocol %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/protocol/client.so -%files cloudsync-plugins -%dir %{_libdir}/glusterfs/%{version}%{?prereltag}/cloudsync-plugins - %{_libdir}/glusterfs/%{version}%{?prereltag}/cloudsync-plugins/cloudsyncs3.so - %{_libdir}/glusterfs/%{version}%{?prereltag}/cloudsync-plugins/cloudsynccvlt.so -%files -n libglusterfs-devel +%files devel %dir %{_includedir}/glusterfs - %{_includedir}/glusterfs/*.h - %{_includedir}/glusterfs/server/*.h -%{_libdir}/libglusterfs.so - -%files -n libgfapi-devel -%dir %{_includedir}/glusterfs/api - %{_includedir}/glusterfs/api/*.h -%{_libdir}/libgfapi.so -%{_libdir}/pkgconfig/glusterfs-api.pc - - -%files -n libgfchangelog-devel -%dir %{_includedir}/glusterfs/gfchangelog - %{_includedir}/glusterfs/gfchangelog/*.h -%{_libdir}/libgfchangelog.so + %{_includedir}/glusterfs/* +%exclude %{_includedir}/glusterfs/api +%exclude %{_libdir}/libgfapi.so +%{_libdir}/*.so +# Glupy Translator examples +%dir %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features +%dir %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/glupy + %{_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.* %{_libdir}/pkgconfig/libgfchangelog.pc - -%files -n libgfrpc-devel -%dir %{_includedir}/glusterfs/rpc - %{_includedir}/glusterfs/rpc/*.h -%{_libdir}/libgfrpc.so - -%files -n libgfxdr-devel -%{_libdir}/libgfxdr.so - -# Events -%if ( 0%{!?_without_events:1} ) -%files events -%config(noreplace) %{_sysconfdir}/glusterfs/eventsconfig.json -%dir %{_sharedstatedir}/glusterd -%dir %{_sharedstatedir}/glusterd/events -%dir %{_libexecdir}/glusterfs -%dir %{_libexecdir}/glusterfs/gfevents - %{_libexecdir}/glusterfs/gfevents/* - %{_libexecdir}/glusterfs/peer_eventsapi.py* -%{_sbindir}/glustereventsd -%{_sbindir}/gluster-eventsapi -%{_datadir}/glusterfs/scripts/eventsdash.py* -%{_unitdir}/glustereventsd.service +%if ( 0%{!?_without_tiering:1} ) +%{_libdir}/pkgconfig/libgfdb.pc %endif %files extra-xlators +%dir %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/encryption + %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/encryption/rot-13.so %dir %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features + %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/glupy.so %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/quiesce.so -%dir %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/playground - %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/playground/template.so +%dir %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/testing +%dir %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/testing/features + %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/testing/features/template.so +%dir %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/testing/performance + %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/testing/performance/symlink-cache.so +# Glupy Python files +%dir %{python2_sitelib}/gluster +%dir %{python2_sitelib}/gluster/glupy + %{python2_sitelib}/gluster/glupy/* %files fuse # glusterfs is a symlink to glusterfsd, -server depends on -fuse. @@ -1371,10 +1180,12 @@ exit 0 %config(noreplace) %{_sysconfdir}/logrotate.d/glusterfs %dir %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/mount %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/mount/fuse.so -%{_sbindir}/mount.glusterfs +/sbin/mount.glusterfs %if ( 0%{!?_without_fusermount:1} ) %{_bindir}/fusermount-glusterfs %endif +%if ( 0%{_for_fedora_koji_builds} ) +%endif %if ( 0%{?_with_gnfs:1} && 0%{!?_without_server:1} ) %files gnfs @@ -1386,20 +1197,6 @@ exit 0 %ghost %attr(0600,-,-) %{_sharedstatedir}/glusterd/nfs/run/nfs.pid %endif - -%if ( 0%{!?_without_server:1} ) -%files ganesha -%dir %{_libexecdir}/ganesha -%{_sysconfdir}/ganesha/ganesha-ha.conf.sample -%{_libexecdir}/ganesha/* -%{_prefix}/lib/ocf/resource.d/heartbeat/* -%{_sharedstatedir}/glusterd/hooks/1/start/post/S31ganesha-start.sh -%ghost %attr(0644,-,-) %config(noreplace) %{_sysconfdir}/ganesha/ganesha-ha.conf -%ghost %dir %attr(0755,-,-) %{_localstatedir}/run/gluster/shared_storage/nfs-ganesha -%ghost %attr(0644,-,-) %config(noreplace) %{_localstatedir}/run/gluster/shared_storage/nfs-ganesha/ganesha.conf -%ghost %attr(0644,-,-) %config(noreplace) %{_localstatedir}/run/gluster/shared_storage/nfs-ganesha/ganesha-ha.conf -%endif - %if ( 0%{!?_without_georeplication:1} ) %files geo-replication %config(noreplace) %{_sysconfdir}/logrotate.d/glusterfs-georep @@ -1411,13 +1208,6 @@ exit 0 %dir %{_libexecdir}/glusterfs/python/syncdaemon %{_libexecdir}/glusterfs/gsyncd %{_libexecdir}/glusterfs/python/syncdaemon/* -%dir %{_libexecdir}/glusterfs/scripts - %{_libexecdir}/glusterfs/scripts/get-gfid.sh - %{_libexecdir}/glusterfs/scripts/secondary-upgrade.sh - %{_libexecdir}/glusterfs/scripts/gsync-upgrade.sh - %{_libexecdir}/glusterfs/scripts/generate-gfid-file.sh - %{_libexecdir}/glusterfs/scripts/gsync-sync-gfid - %{_libexecdir}/glusterfs/scripts/schedule_georep.py* %{_libexecdir}/glusterfs/gverify.sh %{_libexecdir}/glusterfs/set_geo_rep_pem_keys.sh %{_libexecdir}/glusterfs/peer_gsec_create @@ -1434,37 +1224,37 @@ exit 0 %dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/hooks/1/gsync-create/post %attr(0755,-,-) %{_sharedstatedir}/glusterd/hooks/1/gsync-create/post/S56glusterd-geo-rep-create-post.sh %ghost %dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/hooks/1/gsync-create/pre + +%dir %{_datadir}/glusterfs +%dir %{_datadir}/glusterfs/scripts + %{_datadir}/glusterfs/scripts/get-gfid.sh + %{_datadir}/glusterfs/scripts/slave-upgrade.sh + %{_datadir}/glusterfs/scripts/gsync-upgrade.sh + %{_datadir}/glusterfs/scripts/generate-gfid-file.sh + %{_datadir}/glusterfs/scripts/gsync-sync-gfid + %{_datadir}/glusterfs/scripts/schedule_georep.py* %endif -%files -n libglusterfs0 -%{_libdir}/libglusterfs.so.* +%files libs +%{_libdir}/*.so.* +%exclude %{_libdir}/libgfapi.* +# libgfdb is only needed server-side +%if ( 0%{!?_without_tiering:1} ) +# libgfdb is only needed server-side +%exclude %{_libdir}/libgfdb.* +%endif -%files -n libgfapi0 -%{_libdir}/libgfapi.so.* -%dir %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/mount - %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/mount/api.so - -%files -n libgfchangelog0 -%{_libdir}/libgfchangelog.so.* - -%files -n libgfrpc0 -%{_libdir}/libgfrpc.so.* - -%files -n libgfxdr0 -%{_libdir}/libgfxdr.so.* - -%files -n python%{_pythonver}-gluster +%files -n python2-gluster # introducing glusterfs module in site packages. # so that all other gluster submodules can reside in the same namespace. -%if ( %{_usepython3} ) -%dir %{python3_sitelib}/gluster - %{python3_sitelib}/gluster/__init__.* - %{python3_sitelib}/gluster/__pycache__ - %{python3_sitelib}/gluster/cliutils -%else %dir %{python2_sitelib}/gluster %{python2_sitelib}/gluster/__init__.* %{python2_sitelib}/gluster/cliutils + +%if ( 0%{!?_without_rdma:1} ) +%files rdma +%dir %{_libdir}/glusterfs/%{version}%{?prereltag}/rpc-transport + %{_libdir}/glusterfs/%{version}%{?prereltag}/rpc-transport/rdma* %endif %if ( ! 0%{_for_fedora_koji_builds} ) @@ -1487,7 +1277,6 @@ exit 0 %doc extras/clear_xattrs.sh # sysconf %config(noreplace) %{_sysconfdir}/glusterfs -%exclude %{_sysconfdir}/glusterfs/thin-arbiter.vol %exclude %{_sysconfdir}/glusterfs/eventsconfig.json %exclude %{_sharedstatedir}/glusterd/nfs/nfs-server.vol %exclude %{_sharedstatedir}/glusterd/nfs/run/nfs.pid @@ -1504,11 +1293,13 @@ exit 0 %if ( 0%{_for_fedora_koji_builds} ) %glusterfsd_svcfile %endif +%if ( 0%{?_with_systemd:1} ) %glusterfssharedstorage_svcfile +%endif # binaries %{_sbindir}/glusterd -%{_libexecdir}/glusterfs/glfsheal +%{_sbindir}/glfsheal %{_sbindir}/gf_attach %{_sbindir}/gluster-setgfid2path # {_sbindir}/glusterfsd is the actual binary, but glusterfs (client) is a @@ -1520,15 +1311,19 @@ exit 0 %dir %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/arbiter.so + %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/thin-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/sdfs.so +%if ( 0%{!?_without_tiering:1} ) + %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/changetimerecorder.so + %{_libdir}/libgfdb.so.* +%endif %{_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/features/snapview-server.so %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/marker.so - %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/simple-quota.so %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/quota* %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/selinux.so %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/trash.so @@ -1539,7 +1334,12 @@ exit 0 %dir %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/protocol %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/protocol/server.so %dir %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/storage +%if ( 0%{!?_without_bd:1} ) + %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/storage/bd.so +%endif %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/storage/posix.so +%dir %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/performance + %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/performance/decompounder.so # snap_scheduler %{_sbindir}/snap_scheduler.py @@ -1555,9 +1355,6 @@ exit 0 %attr(0644,-,-) %{_sharedstatedir}/glusterd/groups/metadata-cache %attr(0644,-,-) %{_sharedstatedir}/glusterd/groups/gluster-block %attr(0644,-,-) %{_sharedstatedir}/glusterd/groups/nl-cache - %attr(0644,-,-) %{_sharedstatedir}/glusterd/groups/db-workload - %attr(0644,-,-) %{_sharedstatedir}/glusterd/groups/distributed-virt - %attr(0644,-,-) %{_sharedstatedir}/glusterd/groups/samba %dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/glusterfind %dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/glusterfind/.keys %ghost %dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/glustershd @@ -1566,7 +1363,6 @@ exit 0 %dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/hooks/1/add-brick %dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/hooks/1/add-brick/post %attr(0755,-,-) %{_sharedstatedir}/glusterd/hooks/1/add-brick/post/disabled-quota-root-xattr-heal.sh - %attr(0755,-,-) %{_sharedstatedir}/glusterd/hooks/1/add-brick/post/S10selinux-label-brick.sh %attr(0755,-,-) %{_sharedstatedir}/glusterd/hooks/1/add-brick/post/S13create-subdir-mounts.sh %dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/hooks/1/add-brick/pre %attr(0755,-,-) %{_sharedstatedir}/glusterd/hooks/1/add-brick/pre/S28Quota-enable-root-xattr-heal.sh @@ -1615,9 +1411,11 @@ exit 0 %dir %{_datadir}/glusterfs %dir %{_datadir}/glusterfs/scripts %{_datadir}/glusterfs/scripts/stop-all-gluster-processes.sh +%if ( 0%{?_with_systemd:1} ) %{_libexecdir}/glusterfs/mount-shared-storage.sh %{_datadir}/glusterfs/scripts/control-cpu-load.sh %{_datadir}/glusterfs/scripts/control-mem.sh +%endif # Incrementalapi %dir %{_libexecdir}/glusterfs @@ -1628,358 +1426,43 @@ exit 0 %if ( 0%{?_with_firewalld:1} ) %{_prefix}/lib/firewalld/services/glusterfs.xml %endif - -# end of server files %endif -%files thin-arbiter -%dir %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator -%dir %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features - %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/thin-arbiter.so -%dir %{_datadir}/glusterfs/scripts - %{_datadir}/glusterfs/scripts/setup-thin-arbiter.sh -%config %{_sysconfdir}/glusterfs/thin-arbiter.vol -%{_unitdir}/gluster-ta-volume.service +# Events +%if ( 0%{!?_without_events:1} ) +%files events +%config(noreplace) %{_sysconfdir}/glusterfs/eventsconfig.json +%dir %{_sharedstatedir}/glusterd +%dir %{_sharedstatedir}/glusterd/events +%dir %{_libexecdir}/glusterfs +%dir %{_libexecdir}/glusterfs/events + %{_libexecdir}/glusterfs/events/* + %{_libexecdir}/glusterfs/peer_eventsapi.py* +%{_sbindir}/glustereventsd +%{_sbindir}/gluster-eventsapi +%{_datadir}/glusterfs/scripts/eventsdash.py* +%if ( 0%{?_with_systemd:1} ) +%{_unitdir}/glustereventsd.service +%else +%{_sysconfdir}/init.d/glustereventsd +%endif +%endif %changelog -* Fri Sep 19 2025 Python Maint - 11.2-4 -- Rebuilt for Python 3.14.0rc3 bytecode +* Thu Mar 28 2019 Kaleb S. KEITHLEY - 4.1.8-1 +- 4.1.8 GA -* Fri Aug 15 2025 Python Maint - 11.2-3 -- Rebuilt for Python 3.14.0rc2 bytecode +* Fri Mar 1 2019 Kaleb S. KEITHLEY - 4.1.7-3 +- 4.1.7 s390x, armv7hl no rdma -* Wed Jul 23 2025 Fedora Release Engineering - 11.2-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild +* Thu Jan 17 2019 Kaleb S. KEITHLEY - 4.1.7-2 +- 4.1.7 GA -* Wed Jul 02 2025 Benson Muite - 11.2-1 -- Update to latest release +* Wed Nov 14 2018 Kaleb S. KEITHLEY - 4.1.6-1 +- 4.1.6 GA -* Tue Jun 03 2025 Python Maint - 11.1-10 -- Rebuilt for Python 3.14 - -* Tue Feb 11 2025 Zbigniew Jędrzejewski-Szmek - 11.1-9 -- Add sysusers.d config file to allow rpm to create users/groups automatically - -* Thu Jan 16 2025 Fedora Release Engineering - 11.1-8 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild - -* Sun Jan 12 2025 Zbigniew Jędrzejewski-Szmek - 11.1-7 -- Rebuilt for the bin-sbin merge (2nd attempt) - -* Thu Jul 18 2024 Fedora Release Engineering - 11.1-6 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild - -* Tue Jul 09 2024 Zbigniew Jędrzejewski-Szmek - 11.1-5 -- Rebuilt for the bin-sbin merge - -* Fri Jun 07 2024 Python Maint - 11.1-4 -- Rebuilt for Python 3.13 - -* Wed Jan 24 2024 Fedora Release Engineering - 11.1-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild - -* Fri Jan 19 2024 Kaleb S. KEITHLEY - 11.1-2 -- rebuild with gcc-14 - -* Mon Nov 6 2023 Kaleb S. KEITHLEY - 11.1-1 -- glusterfs 11.1 GA - -* Thu Oct 5 2023 Kaleb S. KEITHLEY - 11.0-6 -- glusterfs 11, build in side tag f40-build-side-74974 - -* Tue Aug 22 2023 Kaleb S. KEITHLEY - 11.0-5 -- glusterfs 11, /usr/lib/ocf/resource-agents.d -> resource-agents - rhbz#2229910 - -* Wed Jul 19 2023 Fedora Release Engineering - 11.0-4 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild - -* Thu Jun 15 2023 Python Maint - 11.0-3 -- Rebuilt for Python 3.12 - -* Thu May 4 2023 Kaleb S. KEITHLEY - 11.0-2 -- glusterfs 11, remove unnecessary BR for ldconfig, i.e. glibc, also - rhbz#1731689 - -* Fri Feb 10 2023 Adam Williamson - 11.0-1 -- Fix a mistake in the libglusterd0 obsolete - -* Tue Feb 7 2023 Kaleb S. KEITHLEY - 11.0-0 -- glusterfs 11 GA - -* Fri Nov 11 2022 Kaleb S. KEITHLEY -- SPDX migration - -* Tue Sep 20 2022 Kaleb S. KEITHLEY - 10.3-1 -- 10.3 GA - -* Thu Jul 21 2022 Fedora Release Engineering - 10.2-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild - -* Mon Jun 13 2022 Python Maint - 10.2-2 -- Rebuilt for Python 3.11 - -* Fri May 13 2022 Kaleb S. KEITHLEY - 10.2-1 -- 10.2 GA - -* Mon Jan 31 2022 Kaleb S. KEITHLEY - 10.1-4 -- 10.1, w/ modern linker, this time for real - -* Wed Jan 26 2022 Kaleb S. KEITHLEY - 10.1-3 -- 10.1, w/ modern linker (mold) - -* Thu Jan 20 2022 Fedora Release Engineering - 10.1-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild - -* Wed Jan 19 2022 Kaleb S. KEITHLEY - 10.1-1 -- 10.1 GA - -* Sat Jan 15 2022 Kaleb S. KEITHLEY - 10.0-2 -- rebuild with gcc-12 - -* Tue Nov 2 2021 Kaleb S. KEITHLEY - 10.0-1 -- 10.0 GA - -* Fri Oct 29 2021 Kaleb S. KEITHLEY - 10.0-0.3rc0 -- 10.0 RC0, without_tcmalloc, rhbz#2018439 - -* Thu Oct 28 2021 Kaleb S. KEITHLEY - 10.0-0.2rc0 -- 10.0 RC0, armv7hl - -* Tue Oct 19 2021 Kaleb S. KEITHLEY - 10.0-0.1rc0 -- 10.0 RC0 - -* Mon Oct 4 2021 Kaleb S. KEITHLEY - 9.4-1 -- 9.4 GA - -* Tue Sep 14 2021 Sahana Prasad - 9.3-3 -- Rebuilt with OpenSSL 3.0.0 - -* Thu Jul 22 2021 Fedora Release Engineering - 9.3-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild - -* Tue Jun 29 2021 Kaleb S. KEITHLEY - 9.3-1 -- 9.3 GA - -* Tue Jun 22 2021 Kaleb S. KEITHLEY - 9.2-5 -- Rebuilt for userspace-rcu-0.13 again - -* Fri Jun 11 2021 Kaleb S. KEITHLEY - 9.2-4 -- https://src.fedoraproject.org/rpms/glusterfs/pull-request/7 - -* Tue Jun 8 2021 Kaleb S. KEITHLEY - 9.2-3 -- Rebuilt for userspace-rcu-0.13 - -* Fri Jun 04 2021 Python Maint - 9.2-2 -- Rebuilt for Python 3.10 - -* Sun May 9 2021 Kaleb S. KEITHLEY - 9.2-1 -- 9.2 GA - -* Wed Apr 14 2021 Richard W.M. Jones - 9.1-2 -- Rebuild for updated liburing. - -* Tue Mar 30 2021 Kaleb S. KEITHLEY - 9.1-1 -- 9.1 GA - -* Tue Mar 02 2021 Zbigniew Jędrzejewski-Szmek - 9.0-4 -- Rebuilt for updated systemd-rpm-macros - See https://pagure.io/fesco/issue/2583. - -* Wed Jan 27 2021 Kaleb S. KEITHLEY - 9.0-3 -- 9.0, w/ liburing - -* Tue Jan 26 2021 Fedora Release Engineering - 9.0-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild - -* Tue Jan 19 2021 Kaleb S. KEITHLEY - 9.0-1 -- 9.0 GA - -* Thu Jan 7 2021 Kaleb S. KEITHLEY - 9.0-0.2 -- 9.0 RC0, fuse3 - -* Wed Jan 6 2021 Kaleb S. KEITHLEY - 9.0-0.1 -- 9.0 RC0 - -* Tue Dec 1 2020 Kaleb S. KEITHLEY - 8.3-1 -- 8.3 GA - -* Thu Nov 5 2020 Kaleb S. KEITHLEY - 8.2-2 -- 8.2, rdma - -* Thu Sep 17 2020 Kaleb S. KEITHLEY - 8.2-1 -- 8.2 GA - -* Tue Aug 25 2020 Kaleb S. KEITHLEY - 8.1-1 -- 8.1 GA - -* Mon Jul 27 2020 Fedora Release Engineering - 8.0-6 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild - -* Wed Jul 22 2020 Kaleb S. KEITHLEY - 8.0-5 -- eliminate contrib/sunrpc/xdr_sizeof.c - -* Mon Jul 20 2020 Kaleb S. KEITHLEY - 8.0-4 -- use %make_install macro - -* Wed Jul 8 2020 Kaleb S. KEITHLEY - 8.0-3 -- thin-arbiter, w/o libglusterfs0 - -* Tue Jul 7 2020 Kaleb S. KEITHLEY - 8.0-2 -- 8.0, thin-arbiter - -* Mon Jul 6 2020 Kaleb S. KEITHLEY - 8.0-1 -- 8.0 GA - -* Sat Jul 4 2020 Kaleb S. KEITHLEY - 8.0-0.3rc0 -- 8.0 fix symbol versions, enable LTO - -* Wed Jul 1 2020 Jeff Law - 8.0-0.2rc0 -- Disable LTO - -* Mon Jun 1 2020 Kaleb S. KEITHLEY - 8.0-0.1rc0 -- 8.0 RC0 - -* Tue May 26 2020 Miro Hrončok - 7.6-2 -- Rebuilt for Python 3.9 - -* Mon May 18 2020 Kaleb S. KEITHLEY - 7.6-1 -- 7.6 GA - -* Thu Apr 16 2020 Kaleb S. KEITHLEY - 7.5-1 -- 7.5 GA - -* Wed Mar 18 2020 Kaleb S. KEITHLEY - 7.4-1 -- 7.4 GA - -* Mon Feb 17 2020 Kaleb S. KEITHLEY - 7.3-1 -- 7.3 GA - -* Tue Jan 28 2020 Fedora Release Engineering - 7.2-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild - -* Wed Jan 22 2020 Kaleb S. KEITHLEY - 7.2-2 -- 7.2, gcc-10 fix - -* Wed Jan 15 2020 Kaleb S. KEITHLEY - 7.2-1 -- 7.2 GA - -* Mon Dec 23 2019 Kaleb S. KEITHLEY - 7.1-1 -- 7.1 GA - -* Tue Oct 15 2019 Kaleb S. KEITHLEY - 7.0-1 -- 7.0 GA - -* Wed Oct 9 2019 Kaleb S. KEITHLEY -- bd xlator was removed in glusterfs-6 - -* Tue Oct 1 2019 Kaleb S. KEITHLEY - 7.0-0.5rc3 -- 7.0 RC3 (note, rc2 was tagged but not released) - -* Mon Sep 16 2019 Kaleb S. KEITHLEY - 7.0-0.4rc1 -- disable gnfs by default - -* Mon Sep 16 2019 Kaleb S. KEITHLEY - 7.0-0.3rc1 -- 7.0 RC1 - -* Wed Aug 28 2019 Kaleb S. KEITHLEY - 7.0-0.2rc0 -- python3-requests, el-8 - -* Thu Aug 22 2019 Kaleb S. KEITHLEY - 7.0-0.1rc0 -- 7.0 RC0 - -* Mon Aug 19 2019 Kaleb S. KEITHLEY - 6.5-2 -- Rebuilt for Python 3.8, again - -* Mon Aug 19 2019 Miro Hrončok - 6.5-1.1 -- Rebuilt for Python 3.8 - -* Wed Aug 7 2019 Kaleb S. KEITHLEY - 6.5-1 -- 6.5 GA - -* Thu Aug 1 2019 Kaleb S. KEITHLEY - 6.4-3 -- restore i686 - -* Thu Aug 1 2019 Kaleb S. KEITHLEY - 6.4-2 -- temporarily exclude i686 pending firewalld resolution - -* Thu Jul 25 2019 Fedora Release Engineering - 6.4-1.1 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild - -* Wed Jul 17 2019 Kaleb S. KEITHLEY - 6.4-1 -- 6.4 GA - -* Wed Jul 17 2019 Kaleb S. KEITHLEY - 6.4-1 -- 6.4 GA - -* Tue Jun 11 2019 Kaleb S. KEITHLEY - 6.3-1 -- 6.3 GA - -* Fri May 24 2019 Kaleb S. KEITHLEY - 6.2-1 -- 6.2 GA - -* Mon Apr 22 2019 Kaleb S. KEITHLEY - 6.1-2 -- 6.1 GA, glusterfs-thin-arbiter Requires: glusterfs-libs - -* Wed Apr 17 2019 Kaleb S. KEITHLEY - 6.1-1 -- 6.1 GA - -* Wed Mar 20 2019 Kaleb S. KEITHLEY - 6.0-1 -- 6.0 GA - -* Wed Mar 13 2019 Kaleb S. KEITHLEY - 6.0rc1-0.4 -- 6.0 RC1 - -* Wed Mar 6 2019 Kaleb S. KEITHLEY - 6.0rc0-0.3 -- 6.0 RC0 -- restore s390x rdma -- remove obsolete scripts from -- https://src.fedoraproject.org/rpms/glusterfs/pull-request/5 - -* Fri Mar 1 2019 Kaleb S. KEITHLEY - 6.0rc0-0.2 -- 6.0 RC0, s390x, armv7hl no rdma - -* Fri Feb 22 2019 Kaleb S. KEITHLEY - 6.0rc0-0.1 -- 6.0 RC0 - -* Wed Feb 20 2019 Kaleb S. KEITHLEY - 5.3-2 -- re-rebuild for f31/rawhide - -* Wed Feb 20 2019 Kaleb S. KEITHLEY - 5.3-1 -- rebuild for f31/rawhide - -* Sun Feb 17 2019 Igor Gnatenko - 5.3-2.1 -- Rebuild for readline 8.0 - -* Thu Feb 14 2019 Kaleb S. KEITHLEY - 5.3-2 -- Re-rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild - -* Thu Jan 31 2019 Fedora Release Engineering - 5.3-1.1 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild - -* Thu Jan 17 2019 Kaleb S. KEITHLEY - 5.3-1 -- 5.3 GA - -* Thu Dec 13 2018 Kaleb S. KEITHLEY - 5.2-1 -- 5.2 GA - -* Wed Nov 14 2018 Kaleb S. KEITHLEY - 5.1-1 -- 5.1 GA - -* Thu Oct 18 2018 Kaleb S. KEITHLEY - 5.0-1 -- 5.0 GA - -* Fri Oct 5 2018 Kaleb S. KEITHLEY - 5.0-0.5.rc1 -- 5.0 RC1 - -* Mon Sep 24 2018 Kaleb S. KEITHLEY - 5.0-0.3.rc0 -- 5.0 RC0, unbork python shebangs - -* Thu Sep 20 2018 Kaleb S. KEITHLEY - 5.0-0.2.rc0 -- 5.0 RC0 - -* Tue Sep 18 2018 Kaleb S. KEITHLEY - 5.0-0.1.rc0 -- 5.0 RC0 +* Fri Sep 21 2018 Kaleb S. KEITHLEY - 4.1.5-1 +- 4.1.5 GA * Thu Sep 6 2018 Kaleb S. KEITHLEY - 4.1.4-1 - 4.1.4 GA @@ -1993,14 +1476,11 @@ exit 0 * Mon Aug 27 2018 Kaleb S. KEITHLEY - 4.1.3-1 - 4.1.3 GA -* Wed Jul 25 2018 Kaleb S. KEITHLEY - 4.1.2-3 +* Wed Jul 25 2018 Kaleb S. KEITHLEY - 4.1.2-2 - 4.1.2, again -* Tue Jul 24 2018 Kaleb S. KEITHLEY - 4.1.2-2 -- 4.1.2, gsyncd.conf /usr/local/sbin - * Tue Jul 24 2018 Kaleb S. KEITHLEY - 4.1.2-1 -- 4.1.2 GA +- 4.1.2 GA (includes gsyncd.conf) * Fri Jul 13 2018 Fedora Release Engineering - 4.1.1-2.1 - Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild diff --git a/python.patch b/python.patch new file mode 100644 index 0000000..b8d8730 --- /dev/null +++ b/python.patch @@ -0,0 +1,32 @@ +--- glusterfs-4.1.1/xlators/features/utime/src/utime-gen-fops-c.py.orig 2018-07-11 09:40:35.166390285 -0400 ++++ glusterfs-4.1.1/xlators/features/utime/src/utime-gen-fops-c.py 2018-07-11 09:41:00.743390285 -0400 +@@ -1,4 +1,4 @@ +-#!/usr/bin/python ++#!/usr/bin/python2 + + import os + import sys +--- glusterfs-4.1.1/xlators/features/utime/src/utime-gen-fops-h.py.orig 2018-07-11 09:40:49.035390285 -0400 ++++ glusterfs-4.1.1/xlators/features/utime/src/utime-gen-fops-h.py 2018-07-11 09:41:06.015390285 -0400 +@@ -1,4 +1,4 @@ +-#!/usr/bin/python ++#!/usr/bin/python2 + + import os + import sys +--- glusterfs-4.1.1/xlators/features/cloudsync/src/cloudsync-fops-c.py.orig 2018-07-11 09:41:30.646390285 -0400 ++++ glusterfs-4.1.1/xlators/features/cloudsync/src/cloudsync-fops-c.py 2018-07-11 09:41:53.033390285 -0400 +@@ -1,4 +1,4 @@ +-#!/usr/bin/python ++#!/usr/bin/python2 + + from __future__ import print_function + import os +--- glusterfs-4.1.1/xlators/features/cloudsync/src/cloudsync-fops-h.py.orig 2018-07-11 09:41:38.198390285 -0400 ++++ glusterfs-4.1.1/xlators/features/cloudsync/src/cloudsync-fops-h.py 2018-07-11 09:41:55.423390285 -0400 +@@ -1,4 +1,4 @@ +-#!/usr/bin/python ++#!/usr/bin/python2 + + from __future__ import print_function + import os diff --git a/rhel5-load-fuse-modules b/rhel5-load-fuse-modules new file mode 100755 index 0000000..ee194db --- /dev/null +++ b/rhel5-load-fuse-modules @@ -0,0 +1,7 @@ +#!/bin/sh +# +# fusermount-glusterfs requires the /dev/fuse character device. The fuse module +# provides this and is loaded on demand in newer Linux distributions. +# + +[ -c /dev/fuse ] || /sbin/modprobe fuse diff --git a/sources b/sources index 167f189..0e79e2f 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (glusterfs-11.2.tar.gz) = 6ac463047c5b1fee1d00ca9d6c16169762ed31c7d3b8dfb341bb8a90b83c15fdd9d48ebbe6cf79eee885f764cfa5391f4107837764c0a182eff1b51bede63d48 +SHA512 (glusterfs-4.1.8.tar.gz) = 950cd2fd774e3eb00f1ec06d54566736b6fbe8d1aed54477a19d9b2727eff8a70ef7ac32815cc7e01d45b5d357fc01af786e16c451f6ad314d472e61ba04ce85