diff --git a/0001-configure.ac.patch b/0001-configure.ac.patch new file mode 100644 index 0000000..67b2e73 --- /dev/null +++ b/0001-configure.ac.patch @@ -0,0 +1,11 @@ +--- 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 new file mode 100644 index 0000000..0772c87 --- /dev/null +++ b/0002-contrib-aclocal-python.m4.patch @@ -0,0 +1,212 @@ +--- 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 new file mode 100644 index 0000000..ae2e543 --- /dev/null +++ b/0003-makefile-am-subdirs.patch @@ -0,0 +1,126 @@ +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 deleted file mode 100644 index fecb77d..0000000 --- a/glusterd.init +++ /dev/null @@ -1,109 +0,0 @@ -#!/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 55751fc..c125810 100644 --- a/glusterfs.spec +++ b/glusterfs.spec @@ -56,14 +56,9 @@ # linux-io_uring # If you wish to compile an rpm without linux-io_uring support... -# rpmbuild -ta @PACKAGE_NAME@-@PACKAGE_VERSION@.tar.gz --disable-linux-io_uring +# 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} -# Disable linux-io_uring on unsupported distros. -%if ( 0%{?fedora} && 0%{?fedora} <= 32 ) || ( 0%{?rhel} && 0%{?rhel} <= 7 ) -%global _without_linux_io_uring --disable-linux-io_uring -%endif - # 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 @@ -75,6 +70,15 @@ %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 @@ -191,17 +195,17 @@ Summary: Distributed File System %if ( 0%{_for_fedora_koji_builds} ) Name: glusterfs -Version: 9.4 -Release: 1%{?prereltag:%{prereltag}}%{?dist} +Version: 11.2 +Release: 4%{?prereltag:%{prereltag}}%{?dist} %else Name: @PACKAGE_NAME@ Version: @PACKAGE_VERSION@ -Release: 0.@PACKAGE_RELEASE@%{?dist}.10 +Release: 0.@PACKAGE_RELEASE@%{?dist}.26 %endif -License: GPLv2 or LGPLv3+ +License: GPL-2.0-only OR LGPL-3.0-or-later URL: http://docs.gluster.org/ %if ( 0%{_for_fedora_koji_builds} ) -Source0: http://bits.gluster.org/pub/gluster/glusterfs/src/glusterfs-%{version}%{?prereltag}.tar.gz +Source0: http://github.com/gluster/glusterfs/archive/v%{version}%{?prereltag}/glusterfs-%{version}%{?prereltag}.tar.gz Source1: glusterd.sysconfig Source2: glusterfsd.sysconfig Source7: glusterfsd.service @@ -209,16 +213,20 @@ 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 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} %{?systemd_requires} -Requires(post): /sbin/ldconfig -Requires(postun): /sbin/ldconfig %if 0%{?_with_asan:1} && !( 0%{?rhel} && 0%{?rhel} < 7 ) BuildRequires: libasan %endif @@ -227,10 +235,16 @@ 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 +BuildRequires: libxml2-devel openssl-devel openssl BuildRequires: libaio-devel libacl-devel BuildRequires: python%{_pythonver}-devel +%if 0%{!?_without_tcmalloc:1} +BuildRequires: gperftools-devel +%endif %if ( 0%{?rhel} && 0%{?rhel} < 8 ) BuildRequires: python-ctypes %endif @@ -289,8 +303,21 @@ and client framework. %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} -Requires: libglusterd0%{?_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 %description cli GlusterFS is a distributed file-system capable of scaling to several @@ -453,9 +480,7 @@ Requires: python%{_pythonver}-gluster = %{version}-%{release} Requires: rsync Requires: util-linux -%if ( 0%{?rhel} && ( ( 0%{?rhel} == 8 && 0%{?rhel_minor_version} >= 3 ) || 0%{?rhel} >= 9 ) ) Requires: tar -%endif # required for setting selinux bools %if ( 0%{?rhel} && 0%{?rhel} >= 8 ) Requires(post): policycoreutils-python-utils @@ -497,12 +522,12 @@ This package provides the glusterfs legacy gNFS server xlator %package -n libglusterfs0 Summary: GlusterFS libglusterfs library -Requires(post): /sbin/ldconfig -Requires(postun): /sbin/ldconfig 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} %description -n libglusterfs0 GlusterFS is a distributed file-system capable of scaling to several @@ -655,21 +680,6 @@ Much of the code in GlusterFS is in user space and easily manageable. This package provides libgfxdr.so. -%package -n libglusterd0 -Summary: GlusterFS libglusterd library -Requires: libglusterfs0%{?_isa} = %{version}-%{release} -Obsoletes: %{name}-libs <= %{version}-%{release} - -%description -n libglusterd0 -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 libglusterd library - %package -n python%{_pythonver}-gluster Summary: GlusterFS python library Requires: python%{_pythonver} @@ -710,12 +720,12 @@ regression testing of Gluster. %if ( 0%{!?_without_ocf:1} ) %package resource-agents Summary: OCF Resource Agents for GlusterFS -License: GPLv3+ +License: GPL-3.0-or-later BuildArch: noarch # for glusterd Requires: %{name}-server = %{version}-%{release} # depending on the distribution, we need pacemaker or resource-agents -Requires: %{_prefix}/lib/ocf/resource.d +Requires: resource-agents %description resource-agents GlusterFS is a distributed file-system capable of scaling to several @@ -749,8 +759,6 @@ Requires: %{name}-client-xlators = %{version}-%{release} Requires: psmisc Requires: lvm2 %{?systemd_requires} -Requires(post): /sbin/ldconfig -Requires(postun): /sbin/ldconfig %if (0%{?_with_firewalld:1}) # we install firewalld rules, so we need to have the directory owned %if ( 0%{!?rhel} ) @@ -802,6 +810,11 @@ 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 @@ -809,8 +822,19 @@ 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} \ @@ -826,10 +850,15 @@ sed -i -e 's/--quiet//' configure.ac %{?_without_georeplication} \ %{?_without_ocf} \ %{?_without_server} \ - %{?_without_syslog} \ %{?_with_ipv6default} \ %{?_without_linux_io_uring} \ - %{?_without_libtirpc} + %{?_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 # fix hardening and remove rpath in shlibs %if ( 0%{?fedora} ) || ( 0%{?rhel} && 0%{?rhel} > 6 ) @@ -838,7 +867,6 @@ 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 -gcc -v %make_build V=1 GCC_COLORS= %check @@ -954,12 +982,18 @@ touch %{buildroot}%{_sharedstatedir}/glusterd/nfs/run/nfs.pid find ./tests ./run-tests.sh -type f | cpio -pd %{buildroot}%{_prefix}/share/glusterfs %endif -## Install bash completion for cli -install -p -m 0755 -D extras/command-completion/gluster.bash \ - %{buildroot}%{_sysconfdir}/bash_completion.d/gluster +# 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 +%endif ##----------------------------------------------------------------------------- ## All package definitions should be placed here in alphabetical order + +install -m0644 -D glusterfs.sysusers.conf %{buildroot}%{_sysusersdir}/glusterfs.conf ## %post %{?ldconfig} @@ -992,7 +1026,10 @@ exit 0 %if ( 0%{!?_without_server:1} ) %if ( 0%{?fedora} && 0%{?fedora} > 25 || ( 0%{?rhel} && 0%{?rhel} > 6 ) ) %post ganesha -semanage boolean -m ganesha_use_fusefs --on +# first install +if [ $1 -eq 1 ]; then + %selinux_set_booleans ganesha_use_fusefs=1 +fi exit 0 %endif %endif @@ -1000,7 +1037,9 @@ exit 0 %if ( 0%{!?_without_georeplication:1} ) %post geo-replication %if ( 0%{?rhel} && 0%{?rhel} >= 8 ) -%selinux_set_booleans %{selinuxbooleans} +if [ $1 -eq 1 ]; then + %selinux_set_booleans %{selinuxbooleans} +fi %endif if [ $1 -ge 1 ]; then %systemd_postun_with_restart glusterd @@ -1089,10 +1128,6 @@ exit 0 ## All package definitions should be placed here in alphabetical order ## %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 ## @@ -1160,29 +1195,32 @@ exit 0 %if ( 0%{!?_without_server:1} ) %if ( 0%{?fedora} && 0%{?fedora} > 25 || ( 0%{?rhel} && 0%{?rhel} > 6 ) ) %postun ganesha -semanage boolean -m ganesha_use_fusefs --off +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 package definitions should be placed here in alphabetical order -## -%if ( 0%{!?_without_server:1} ) -%if ( 0%{?fedora} && 0%{?fedora} > 25 || ( 0%{?rhel} && 0%{?rhel} > 6 ) ) -%trigger ganesha -- selinux-policy-targeted -semanage boolean -m ganesha_use_fusefs --on -exit 0 -%endif -%endif - -##----------------------------------------------------------------------------- -## All package definitions should be placed here in alphabetical order +## 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 --off +semanage boolean -m ganesha_use_fusefs --on -S targeted exit 0 %endif %endif @@ -1249,7 +1287,7 @@ 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} && 0%{!?_without_server:1} +%if 0%{?_tmpfilesdir:1} %{_tmpfilesdir}/gluster.conf %endif @@ -1259,11 +1297,12 @@ exit 0 %exclude %{_libexecdir}/ganesha/* %exclude %{_prefix}/lib/ocf/resource.d/heartbeat/* %endif +%{_sysusersdir}/glusterfs.conf %files cli %{_sbindir}/gluster %{_mandir}/man8/gluster.8* -%{_sysconfdir}/bash_completion.d/gluster +%{bash_completions_dir}/gluster.bash %files client-xlators %dir %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/cluster @@ -1332,7 +1371,7 @@ exit 0 %config(noreplace) %{_sysconfdir}/logrotate.d/glusterfs %dir %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/mount %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/mount/fuse.so -/sbin/mount.glusterfs +%{_sbindir}/mount.glusterfs %if ( 0%{!?_without_fusermount:1} ) %{_bindir}/fusermount-glusterfs %endif @@ -1374,7 +1413,7 @@ exit 0 %{_libexecdir}/glusterfs/python/syncdaemon/* %dir %{_libexecdir}/glusterfs/scripts %{_libexecdir}/glusterfs/scripts/get-gfid.sh - %{_libexecdir}/glusterfs/scripts/slave-upgrade.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 @@ -1414,10 +1453,6 @@ exit 0 %files -n libgfxdr0 %{_libdir}/libgfxdr.so.* -%files -n libglusterd0 -%{_libdir}/libglusterd.so.* -%exclude %{_libdir}/libglusterd.so - %files -n python%{_pythonver}-gluster # introducing glusterfs module in site packages. # so that all other gluster submodules can reside in the same namespace. @@ -1493,6 +1528,7 @@ exit 0 %{_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 @@ -1606,6 +1642,113 @@ exit 0 %{_unitdir}/gluster-ta-volume.service %changelog +* Fri Sep 19 2025 Python Maint - 11.2-4 +- Rebuilt for Python 3.14.0rc3 bytecode + +* Fri Aug 15 2025 Python Maint - 11.2-3 +- Rebuilt for Python 3.14.0rc2 bytecode + +* Wed Jul 23 2025 Fedora Release Engineering - 11.2-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild + +* Wed Jul 02 2025 Benson Muite - 11.2-1 +- Update to latest release + +* 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 diff --git a/sources b/sources index 012c0b1..167f189 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (glusterfs-9.4.tar.gz) = 2a17197bd2b425117e34af004a6177b7c5012807cd99b9c6d37a1081e0ab9def6b013bedd0ba4122d149969755e0e2985bef8aed9cf612a27a6452b8719a33bf +SHA512 (glusterfs-11.2.tar.gz) = 6ac463047c5b1fee1d00ca9d6c16169762ed31c7d3b8dfb341bb8a90b83c15fdd9d48ebbe6cf79eee885f764cfa5391f4107837764c0a182eff1b51bede63d48