commit c2f3614c25404ace23b9bd6f3f047cdd8e169977a7290c5727c6d9fb0560f8ba Author: Jan Engelhardt Date: Thu Aug 29 13:28:45 2024 +0000 - remove dependency on /usr/bin/python3 using %python3_fix_shebang{,_path} macros, [bsc#1212476] OBS-URL: https://build.opensuse.org/package/show/filesystems/glusterfs?expand=0&rev=100 diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..9b03811 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,23 @@ +## Default LFS +*.7z filter=lfs diff=lfs merge=lfs -text +*.bsp filter=lfs diff=lfs merge=lfs -text +*.bz2 filter=lfs diff=lfs merge=lfs -text +*.gem filter=lfs diff=lfs merge=lfs -text +*.gz filter=lfs diff=lfs merge=lfs -text +*.jar filter=lfs diff=lfs merge=lfs -text +*.lz filter=lfs diff=lfs merge=lfs -text +*.lzma filter=lfs diff=lfs merge=lfs -text +*.obscpio filter=lfs diff=lfs merge=lfs -text +*.oxt filter=lfs diff=lfs merge=lfs -text +*.pdf filter=lfs diff=lfs merge=lfs -text +*.png filter=lfs diff=lfs merge=lfs -text +*.rpm filter=lfs diff=lfs merge=lfs -text +*.tbz filter=lfs diff=lfs merge=lfs -text +*.tbz2 filter=lfs diff=lfs merge=lfs -text +*.tgz filter=lfs diff=lfs merge=lfs -text +*.ttf filter=lfs diff=lfs merge=lfs -text +*.txz filter=lfs diff=lfs merge=lfs -text +*.whl filter=lfs diff=lfs merge=lfs -text +*.xz filter=lfs diff=lfs merge=lfs -text +*.zip filter=lfs diff=lfs merge=lfs -text +*.zst filter=lfs diff=lfs merge=lfs -text diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..57affb6 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.osc diff --git a/0001-glusterfs-fix-heap-buffer-overflow-on-startup.patch b/0001-glusterfs-fix-heap-buffer-overflow-on-startup.patch new file mode 100644 index 0000000..c204d6c --- /dev/null +++ b/0001-glusterfs-fix-heap-buffer-overflow-on-startup.patch @@ -0,0 +1,44 @@ +From 5d0533d0858194ed6d365f1080db7ab10d0e3d11 Mon Sep 17 00:00:00 2001 +From: Jan Engelhardt +Date: Wed, 5 Jul 2023 18:15:22 +0900 +Subject: [PATCH] glusterfs: fix heap-buffer-overflow on startup +References: https://github.com/gluster/glusterfs/issues/4192 + +==4418==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x613000000190 +at pc 0x7f028cd2341c bp 0x7ffd9c5ba7e0 sp 0x7ffd9c5ba7d8 +WRITE of size 8 at 0x613000000190 thread T0 + f0 in mem_get_pool_list ~/libglusterfs/src/mem-pool.c:786 + +0x613000000190 is located 0 bytes after 336-byte region [0x613000000040,0x613000000190) +allocated by thread T0 here: + f0 in malloc (/usr/lib64/libasan.so.8+0xdc04f) (BuildId: 44194dcf14c212b57346030492309d59d5379ae1) + f1 in __gf_default_malloc glusterfs/mem-pool.h:112 + f2 in mem_get_pool_list ~/libglusterfs/src/mem-pool.c:778 + +``NPOOLS-1`` is just wrong. ``per_thread_pool_list_t`` does not include one free +``per_thread_pool_t``. + +Fixes: https://github.com/gluster/glusterfs/issues/4192 +Fixes: v11dev-211-g1cfff6e6ec ("Use flexible array members (#3411)") +Signed-off-by: Jan Engelhardt +--- + libglusterfs/src/mem-pool.c | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +diff --git a/libglusterfs/src/mem-pool.c b/libglusterfs/src/mem-pool.c +index f053fdceae..e258758158 100644 +--- a/libglusterfs/src/mem-pool.c ++++ b/libglusterfs/src/mem-pool.c +@@ -589,8 +589,7 @@ mem_pools_preinit(void) + } + + pool_list_size = sizeof(per_thread_pool_list_t) + +- sizeof(per_thread_pool_t) * (NPOOLS - 1); +- ++ sizeof(per_thread_pool_t) * NPOOLS; + init_done = GF_MEMPOOL_INIT_EARLY; + } + +-- +2.41.0 + diff --git a/glusterfs-11.1.tar.gz b/glusterfs-11.1.tar.gz new file mode 100644 index 0000000..a6896fe --- /dev/null +++ b/glusterfs-11.1.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6a31b8450d02cd12f47f4571c031e9d6b8705279a0e8970ae9a05e1c87dffb76 +size 8365581 diff --git a/glusterfs.changes b/glusterfs.changes new file mode 100644 index 0000000..2edc9e5 --- /dev/null +++ b/glusterfs.changes @@ -0,0 +1,453 @@ +------------------------------------------------------------------- +Thu Aug 22 18:11:49 UTC 2024 - pgajdos@suse.com + +- remove dependency on /usr/bin/python3 using + %python3_fix_shebang{,_path} macros, [bsc#1212476] + +------------------------------------------------------------------- +Fri Dec 15 08:56:08 UTC 2023 - Jan Engelhardt + +- Update to release 11.1 + * Fix upgrade issue by reverting posix change related to + storage.reserve value + * Fix possible data loss during rebalance if there is any + linkfile on the system +- Delete 0001-socket-only-issue-IPPROTO_IPV6-setsockopt-calls-on-A.patch + (merged), + +------------------------------------------------------------------- +Wed Jul 5 09:28:08 UTC 2023 - Jan Engelhardt + +- Add 0001-glusterfs-fix-heap-buffer-overflow-on-startup.patch + +------------------------------------------------------------------- +Sat Jun 10 13:29:09 UTC 2023 - Jan Engelhardt + +- Disable IO_uring for now [boo#1210894] + +------------------------------------------------------------------- +Tue May 23 23:25:48 UTC 2023 - Jan Engelhardt + +- Add 0001-socket-only-issue-IPPROTO_IPV6-setsockopt-calls-on-A.patch + [boo#1210894] + +------------------------------------------------------------------- +Tue Feb 21 10:20:10 UTC 2023 - Jan Engelhardt + +- Update to release 11 [boo#1208517] [boo#1208519] + * Major performance impovement of ~36% with rmdir operations + * Extension of ZFS support for snapshots + * Qouta implimentation based on namespace + * Major cleanups and readdir/readdirp improvements + +------------------------------------------------------------------- +Thu Jul 14 11:13:34 UTC 2022 - Johannes Kastl + +- add explicit Requires for the dependencies, so we make sure + the dependencies are installed in the same version + +------------------------------------------------------------------- +Fri May 20 08:37:19 UTC 2022 - Jan Engelhardt + +- Update to release 10.2 + * Some 165 bugfixes with none particularly sticking out + +------------------------------------------------------------------- +Wed Jan 19 00:00:00 CET 2022 - dsterba@suse.cz + +- add python-rpm-macros as dependency, fix build on on Leap 15.x + +------------------------------------------------------------------- +Tue Sep 28 14:31:30 UTC 2021 - Jan Engelhardt + +- Update to release 9.3 + * New reset-brick command + * Ability to get node level status of a cluster + * Multi-threaded self-heal for Disperse volumes + * Lock revocation feature + * On-demand scrubbing for bitrot detection + * Real time Cluster notifications using Events APIs +- Move mount helper to /usr/sbin [boo#1191062] + +------------------------------------------------------------------- +Thu Apr 29 10:29:59 UTC 2021 - Jan Engelhardt + +- Update to release 9.1 + * Implemented seek file operation for open-behind + * Added io_uring support for Gluster + * Added Support for 5K volumes + * Enabled granular-entry-heal by default + * Added support for monitoring the epoll/rpc layer + * Improve rebalance of sparse files +- Drop nocommon.patch (merged) + +------------------------------------------------------------------- +Thu Jun 4 11:44:27 UTC 2020 - Callum Farmer + +- Fixes for %_libexecdir changing to /usr/libexec + +------------------------------------------------------------------- +Thu Jan 9 15:30:24 UTC 2020 - Jan Engelhardt + +- Update to release 7.1 + * Fix rebalance causing IO Error - File descriptor in bad state + * Fix geo-replication sessions going faulty + * Fix memory leak in glusterfsd process + * Fix GlusterFS brick process crash +- Add nocommon.patch [boo#1160392] + +------------------------------------------------------------------- +Thu Dec 26 08:22:55 UTC 2019 - Neal Gompa + +- Fix the name of the Python bindings subpackage +- Properly mark Python bindings subpackage as noarch + +------------------------------------------------------------------- +Fri Dec 13 16:13:06 UTC 2019 - Jan Engelhardt + +- Update to release 7.0 + * Latency based read child to improve read workload latency in + a cluster, especially in a cloud setup. Also provides a load + balancing with the outstanding pending request. + * Thin-arbiter integration with GD1. + * If a client older than glusterfs-4.x (i.e. 3.x clients) + accesses a volume which has the `fips-mode-rchecksum` volume + option enabled, it can cause erroneous checksum computation/ + unwanted behaviour during afr self-heal. + +------------------------------------------------------------------- +Wed Apr 24 08:59:02 UTC 2019 - Martin Liška + +- Move definition of _lto_cflags into %build. + +------------------------------------------------------------------- +Tue Apr 23 11:33:06 UTC 2019 - Martin Liška + +- Disable LTO (boo#1133088). + +------------------------------------------------------------------- +Sun Mar 17 06:01:34 UTC 2019 - seanlew@opensuse.org + +- Update to new upstream version 5.5 + * No changelog yet available in release notes + +------------------------------------------------------------------- +Sat Mar 02 14:53:04 UTC 2019 - seanlew@opensuse.org + +- Update to new upstream version 5.4 + * FUSE Client memory leak fixed (#1623107) + * fail to sync non-ascii utf8 file and dir names (#1648642) + * Tracker bug for all leases related issues (#1651323) + * gluster-blockd segfaults because of a null-deref (#1659563) + * Memory leak: dict_t leak in rda_opendir (#1659676) + * dht_revalidate may not heal attrs on the brick root (#1660736) + * Fix tests/bugs/shard/zero-flag.t (#1660932) + * NL cache: fix typos (#1662200) + +------------------------------------------------------------------- +Sat Jan 19 06:52:11 UTC 2019 - seanlew@opensuse.org + +- Update to new upstream version 5.3 (4.0 is EOL) + * 5.3 brings hundreds of improvements, see complete relnote at + https://docs.gluster.org/en/latest/release-notes/5.0/ + * Fixed a number of bugs: + CVE-2018-1088, CVE-2018-1112 [boo#1090084], + CVE-2018-10904 [boo#1107018], CVE-2018-10907 [boo#1107019], + CVE-2018-10911 [boo#1107020], CVE-2018-10913 [boo#1107021], + CVE-2018-10914 [boo#1107022], CVE-2018-10923 [boo#1107023], + CVE-2018-10924 [boo#1107024], CVE-2018-10926 [boo#1107025], + CVE-2018-10927 [boo#1107026], CVE-2018-10928 [boo#1107027], + CVE-2018-10928 [boo#1107027], CVE-2018-10929 [boo#1107028], + CVE-2018-10930 [boo#1107029], boo#1105776 . +- Remove patches no longer needed in 5.x: + * 0001-build-restore-ability-to-control-verbosity-settings.patch + * glusterfs-tirpc.diff + +------------------------------------------------------------------- +Thu May 3 11:50:05 UTC 2018 - jengelh@inai.de + +- Update to new upstream release 4.0.2 + * GlusterD2 (GD2) is a new management daemon for Gluster-4.0, + glustercli is the command-line interface for it. + It is a preview release. GD2 is not backwards compatible with + the older GlusterD. Heterogeneous clusters running both GD2 + and GlusterD are not possible. + * Not all commands from GlusterD have been implemented for GD2. + * GD2 does not (yet) work well in 2-node clusters. + * Self Heal feature integrated for the new Volumes created + using Glusterd2. + +------------------------------------------------------------------- +Thu Dec 14 18:47:07 UTC 2017 - jengelh@inai.de + +- Add 0001-build-restore-ability-to-control-verbosity-settings.patch +- Replace xdr_sizeof.c with an empty file + +------------------------------------------------------------------- +Mon Dec 4 14:03:38 UTC 2017 - jengelh@inai.de + +- Update to new release 3.12.3 + * -- Features introduced in 3.10 + * Brick multiplexing + * Support to display op-version information from clients + * Support for rebalance time to completion estimation + * Separation of tier as its own service + * Statedump support for gfapi based applications + * Disabled creation of trash directory by default + * Implemented parallel readdirp with distribute xlator + * -- Features introduced in 3.12: + * Ability to mount sub-directories using the Gluster + FUSE protocol + * GFID to path conversion is enabled by default + * Provided an option to set a limit on number of bricks + multiplexed in a processes + * Enhanced the option to export statfs data for bricks + sharing the same backend filesystem + * Provided a means to resolve GFID split-brain using + the gluster CLI + * Introduction of new api glfs_fd_set_lkowner() to set lock owner +- Remove glusterfs-date.diff (no longer applies) + +------------------------------------------------------------------- +Mon Nov 13 07:49:33 CET 2017 - kukuk@suse.de + +- glusterfs-tirpc.diff: fallback to libtirpc if there is no sunrpc + support in glibc + +------------------------------------------------------------------- +Fri Nov 3 10:10:48 UTC 2017 - mpluskal@suse.com + +- Explicitly require python2 as python3 is not yet supported + +------------------------------------------------------------------- +Wed Oct 18 11:28:29 UTC 2017 - vcizek@suse.com + +- Add missing Requires: libacl-devel to the devel subpackage + * glfs.h #includes + +------------------------------------------------------------------- +Wed Aug 23 15:58:34 UTC 2017 - vcizek@suse.com + +- Update to version 3.8.15 + * fixes build with OpenSSL 1.1 (bsc#1055466) + * Mandatory lock support for Multiprotocol environment + * Gluster/NFS disabled by default + * Geo-replication for Sharded Volumes + * Tiering aware Geo-replication + * Enhance Quota enable/disable in glusterd + * Automagic unsplit-brain by [ctime|mtime|size|majority] for AFR + * Granular Entry self-heal for AFR + * Tons of bugfixes + * for more details see the NEWS file +- spec cleanup +- Install License files/docu + +------------------------------------------------------------------- +Tue Oct 27 20:38:50 UTC 2015 - scorot@free.fr + +- Update to version 3.6.6 + * No ChangeLog available + +------------------------------------------------------------------- +Tue Aug 4 19:07:46 UTC 2015 - scorot@free.fr + +- Update to version 3.6.4 + * No ChangeLog available +- Fix Url + +------------------------------------------------------------------- +Thu Apr 9 16:39:09 UTC 2015 - afaerber@suse.de + +- Update to version 3.6.2 +* glusterfs-api.pc had version 0.0.0 in v3.6.1, now 4.3.6.2 + This is still a backwards jump from v3.6.0 (7.0.0) and v3.5.3 (6). +* Package glfsheal again + +------------------------------------------------------------------- +Thu Jan 15 15:03:38 UTC 2015 - p.drouand@gmail.com + +- Update to version 3.6.1 + * api: versioned symbols in libgfapi.so for compatibility + * Use versioned symbols to keep libgfapi at libgfapi.so.0.0.0 + * Some nits uncovered: + - there are a couple functions declared that do not have an + associated definition, e.g. glfs_truncate(), glfs_caller_specific_init() + - there are seven private/internal functions used by heal/src/glfsheal + and the gfapi master xlator (glfs-master.c): glfs_loc_touchup(), + glfs_active_subvol(), and glfs_subvol_done(), glfs_init_done(), + glfs_resolve_at(), glfs_free_from_ctx(), and glfs_new_from_ctx(); + which are not declared in glfs.h; + - for this initial pass at versioned symbols, we use the earliest version + of all public symbols, i.e. those for which there are declarations in + glfs.h or glfs-handles.h. + Further investigation as we do backports to 3.6, 3.4, and 3.4 + will be required to determine if older implementations need to + be preserved (forward ported) and their associated alias(es) and + symbol version(s) defined. + +------------------------------------------------------------------- +Mon Aug 4 21:27:22 UTC 2014 - scorot@free.fr + +- Update to new upstream release 3.5.2 + * NFS server crashes in _socket_read_vectored_request + * Can't write to quota enable folder + * nfs: reset command does not alter the result for nfs options + earlier set + * features/gfid-access: stat on .gfid virtual directory return + EINVAL + * creating symlinks generates errors on stripe volume + * Self-heal errors with "afr crawl failed for child 0 with ret -1" + while performing rolling upgrade. + * [AFR] I/O fails when one of the replica nodes go down + * Fix inode leaks in gfid-access xlator + * NFS subdir authentication doesn't correctly handle + multi-(homed,protocol,etc) network addresses + * nfs-utils should be installed as dependency while installing + glusterfs-server + * Excessive logging in quotad.log of the kind 'null client' + * client_t clienttable cliententries are never expanded when all + entries are used + * AFR : self-heal of few files not happening when a AWS EC2 Instance + is back online after a restart + * Dist-geo-rep : deletion of files on master, geo-rep fails to + propagate to slaves. + * Allow the usage of the wildcard character '*' to the options + "nfs.rpc-auth-allow" and "nfs.rpc-auth-reject" + * glfsheal: Improve the way in which we check the presence of + replica volumes + * Resource cleanup doesn't happen for clients on servers after + disconnect + * mounting a volume over NFS (TCP) with MOUNT over UDP fails + * backport 'gluster volume status --xml' issues + * Glustershd memory usage too high + +------------------------------------------------------------------- +Tue Jul 29 19:48:39 UTC 2014 - scorot@free.fr + +- Update to new upstream release 3.5.1 + * A new volume option server.manage-gids has been added. + This option should be used when users of a volume are in more + than approximately 93 groups (Bug 1096425). + * Duplicate Request Cache for NFS has now been disabled by + default, this may reduce performance for certain workloads, + but improves the overall stability and memory footprint for + most users. + * Others changes are mostly bug fixes. +- disable systemd pre an post scripts for old product and then fix + build on SLE 11 + +------------------------------------------------------------------- +Mon May 5 22:40:02 UTC 2014 - jengelh@inai.de + +- Update to new upstream release 3.5.0 +* AFR_CLI_enhancements: Improved logging with more clarity and + statistical information. It allows visibility into why a + self-heal process was initiated and which files are affected, for + example. Prior to this enhancement, clearly identifying + split-brain issues from the logs was often difficult, and there + was no facility to identify which files were affected by a split + brain issue automatically. Remediating split brain without quorum + will still require some manual effort, but with the tools + provided, this will become much simpler. +* Exposing Volume Capabilities: Provides client-side insight into + whether a volume is using the BD translator and, if so, which + capabilities are being utilized. +* File Snapshot: Provides a mechanism for snapshotting individual + files. The most prevalent use case for this feature will be to + snapshot running VMs, allowing for point-in-time capture. This + also allows a mechanism to revert VMs to a previous state + directly from Gluster, without needing to use external tools. +* GFID Access: A new method for accessing data directly by GFID. + With this method, the data can be directly consumed in changelog + translator, which is logging ‘gfid’ internally, very efficiently. +* On-Wire Compression + Decompression: Use of this feature reduces + the overall network overhead for Gluster operations from a + client. +* Prevent NFS restart on Volume change (Part 1): Previously, any + volume change (volume option, volume start, volume stop, volume + delete, brick add, etc.) would restart the NFS server, which led + to service disruptions. This feature allow modifying certain + NFS-based volume options without such interruptions occurring. + Part 1 is anything not requiring a graph change. +* Quota Scalability: Massively increase the amount of quota + configurations from a few hundred to 65536 per volume. +* readdir_ahead: Gluster now provides read-ahead support for + directories to improve sequential directory read performance. +* zerofill: Enhancement to allow zeroing out of VM disk images, + which is useful in first time provisioning or for overwriting an + existing disk. +* Brick Failure Detection: Detecting failures on the filesystem + that a brick uses makes it possible to handle errors that are + caused from outside of the Gluster environment. +* Disk encryption: Implement the previous work done in HekaFS into + Gluster. This allows a volume (or per-tenant part of a volume) to + be encrypted “at rest” on the server using keys only available on + the client. [Note: Only content of regular files is encrypted. + File names are not encrypted! Also, encryption does not work in + NFS mounts.] +* Geo-Replication Enhancement: Previously, the geo-replication + process, gsyncd, was a single point of failure as it only ran on + one node in the cluster. If the node running gsyncd failed, the + entire geo-replication process was offline until the issue was + addressed. In this latest incarnation, the improvement is + extended even further by foregoing use of xattrs to identify + change candidates and directly consuming from the volume + changelog, which will improve performance twofold: one, by + keeping a running list of only those files that may need to be + synced; and two, the changelog is maintained in memory, which + will allow near instant access to which data needs to be changed + and where by the gsync daemon. + +------------------------------------------------------------------- +Thu Feb 28 21:58:02 UTC 2013 - jengelh@inai.de + +- Update to new upstream release 3.4.0alpha (rpm: 3.4.0~qa9) +* automake-1.13 support +- Enable AIO support + +------------------------------------------------------------------- +Tue Nov 27 11:28:36 UTC 2012 - jengelh@inai.de + +- Use `glusterd -N` in glusterd.service to run in foreground + as required + +------------------------------------------------------------------- +Tue Nov 27 10:59:15 UTC 2012 - cfarrell@suse.com + +- license update: GPL-2.0 or LGPL-3.0+ + +------------------------------------------------------------------- +Fri Nov 9 21:47:11 UTC 2012 - jengelh@inai.de + +- Update to new upstream release 3.4.0qa2 +* No changelog provided by upstream +- Remove glusterfs-init.diff, merged upstream +- Provide systemd service file + +------------------------------------------------------------------- +Wed Oct 31 12:19:47 UTC 2012 - jengelh@inai.de + +- Update to new upstream release 3.3.1 +* mount.glusterfs: Add support for {attribute,entry}-timeout options +* cli: Proper xml output for "gluster peer status" +* self-heald: Fix inode leak +* storage/posix: implement native linux AIO support + +------------------------------------------------------------------- +Mon Sep 24 03:45:09 UTC 2012 - jengelh@inai.de + +- Update to new upstream release 3.3.0 +* New: Unified File & Object access +* New: Hadoop hooks - HDFS compatibility layer +* New volume type: Repstr - replicated + striped (+ distributed) + volumes + +------------------------------------------------------------------- +Fri Dec 2 15:43:43 UTC 2011 - coolo@suse.com + +- add automake as buildrequire to avoid implicit dependency + +------------------------------------------------------------------- +Wed Oct 5 22:17:35 UTC 2011 - jengelh@medozas.de + +- Initial package for build.opensuse.org diff --git a/glusterfs.spec b/glusterfs.spec new file mode 100644 index 0000000..e73728b --- /dev/null +++ b/glusterfs.spec @@ -0,0 +1,272 @@ +# +# spec file for package glusterfs +# +# Copyright (c) 2024 SUSE LLC +# +# All modifications and additions to the file contributed by third parties +# remain the property of their copyright owners, unless otherwise agreed +# upon. The license for this file, and modifications and additions to the +# file, is the same license as for the pristine package itself (unless the +# license for the pristine package is not an Open Source License, in which +# case the license is the MIT License). An "Open Source License" is a +# license that conforms to the Open Source Definition (Version 1.9) +# published by the Open Source Initiative. + +# Please submit bugfixes or comments via https://bugs.opensuse.org/ +# + + +Name: glusterfs +Version: 11.1 +Release: 0 +Summary: Aggregating distributed file system +License: GPL-2.0-only OR LGPL-3.0-or-later +Group: System/Filesystems +URL: https://www.gluster.org/ + +#Git-Clone: https://github.com/gluster/glusterfs +#Git-Clone: https://github.com/fvzwieten/lsgvt +#Changelog: https://docs.gluster.org/en/latest/release-notes/ +Source: https://download.gluster.org/pub/gluster/glusterfs/11/%version/glusterfs-%version.tar.gz +Patch2: 0001-glusterfs-fix-heap-buffer-overflow-on-startup.patch +BuildRequires: acl-devel +BuildRequires: autoconf +BuildRequires: automake +BuildRequires: bison +BuildRequires: fdupes +BuildRequires: flex +BuildRequires: libaio-devel +BuildRequires: libtool +BuildRequires: pkgconfig +BuildRequires: python-rpm-macros +BuildRequires: python3 +BuildRequires: readline-devel +BuildRequires: rpcgen +BuildRequires: systemd-rpm-macros +BuildRequires: pkgconfig(fuse) >= 2.6.5 +BuildRequires: pkgconfig(libcrypto) +BuildRequires: pkgconfig(libtirpc) +BuildRequires: pkgconfig(liburcu) +%if 0%{?suse_version} >= 1550 +BuildRequires: pkgconfig(liburing) >= 0.3 +%endif +BuildRequires: pkgconfig(libxml-2.0) +BuildRequires: pkgconfig(python3) +BuildRequires: pkgconfig(sqlite3) +BuildRequires: pkgconfig(uuid) +Requires: libgfapi0 = %version +Requires: libgfchangelog0 = %version +Requires: libgfrpc0 = %version +Requires: libgfxdr0 = %version +Requires: libglusterfs0 = %version +%{?systemd_ordering} + +%description +GlusterFS is a clustered file-system capable of scaling to several +petabytes. It aggregates various storage bricks over Infiniband RDMA +or TCP/IP interconnect into one large parallel network file system. +GlusterFS is one of the most sophisticated file systems in terms of +features and extensibility. It borrows a powerful concept called +Translators from GNU Hurd kernel. Much of the code in GlusterFS is in +user space and easily manageable. + +%package -n libgfapi0 +Summary: GlusterFS API library +Group: System/Libraries + +%description -n libgfapi0 +GlusterFS is a clustered file-system capable of scaling to several +petabytes. + +%package -n libgfchangelog0 +Summary: GlusterFS volume changelog translator library +Group: System/Libraries + +%description -n libgfchangelog0 +GlusterFS is a clustered file-system capable of scaling to several +petabytes. + +The goal of this volume translator is to capture changes performed on +a GlusterFS volume. The translator needs to be loaded on the server +(bricks) and captures changes in a plain text file inside a +configured directory path (controlled by the "changelog-dir" +directive). + +%package -n libgfrpc0 +Summary: GlusterFS Remote Procedure Call library +Group: System/Libraries + +%description -n libgfrpc0 +GlusterFS is a clustered file-system capable of scaling to several +petabytes. + +%package -n libgfxdr0 +Summary: GlusterFS's External Data Representation library +Group: System/Libraries + +%description -n libgfxdr0 +GlusterFS is a clustered file-system capable of scaling to several +petabytes. + +%package -n libglusterfs0 +Summary: GlusterFS's core library +Group: System/Libraries + +%description -n libglusterfs0 +GlusterFS is a clustered file-system capable of scaling to several +petabytes. + +%package -n python3-gluster +Summary: Python bindings for GlusterFS +Group: Development/Languages/Python +BuildArch: noarch +# Legacy Python 2 bindings are no longer available... +Obsoletes: python-gluster < 7.0 + +%description -n python3-gluster +GlusterFS is a clustered file-system capable of scaling to several +petabytes. + +%package devel +Summary: Development files for glusterfs +Group: Development/Libraries/C and C++ +Requires: %name = %version +Requires: libacl-devel +Requires: libgfapi0 = %version +Requires: libgfchangelog0 = %version +Requires: libgfrpc0 = %version +Requires: libgfxdr0 = %version +Requires: libglusterfs0 = %version + +%description devel +GlusterFS is a clustered file-system capable of scaling to several +petabytes. + +This package provides development files such as headers and library +links. + +%prep +%autosetup -p1 + +%build +%define _lto_cflags %nil +./autogen.sh +%configure \ + --without-tcmalloc \ + --disable-linux-io_uring \ +%if 0%{?suse_version} >= 1550 + --with-mountutildir="%_sbindir" \ +%endif + --disable-static --with-ipv6-default +%make_build + +%install +b="%buildroot" +%make_install docdir="%_docdir/%name" +find "$b" -type f -name "*.la" -delete -print +mkdir -pv "$b/%_localstatedir/log"/{glusterd,glusterfs,glusterfsd} +cp -av ChangeLog NEWS README.md "$b/%_docdir/%name/" + +chmod -v u-s "%buildroot/%_bindir/fusermount-glusterfs" +rm -fv "%buildroot/%_sbindir/conf.py" +rm -f "%buildroot/etc/bash_completion.d/gluster.bash" +%fdupes %buildroot/%_prefix +%python3_fix_shebang +%if %{suse_version} >= 1600 +%python3_fix_shebang_path %{buildroot}%{_libexecdir}/ganesha/* +%python3_fix_shebang_path %{buildroot}%{_libexecdir}/glusterfs/* +%python3_fix_shebang_path %{buildroot}%{_libexecdir}/glusterfs/gfevents/* +%python3_fix_shebang_path %{buildroot}%{_libexecdir}/glusterfs/glusterfind/* +%python3_fix_shebang_path %{buildroot}%{_libexecdir}/glusterfs/python/syncdaemon/* +%python3_fix_shebang_path %{buildroot}%{_libexecdir}/glusterfs/gfind_missing_files/* +%python3_fix_shebang_path %{buildroot}%{_libexecdir}/glusterfs/scripts/* +%python3_fix_shebang_path %{buildroot}%{_datadir}/glusterfs/scripts/* +%endif + +%pre +%service_add_pre glusterd.service glustereventsd.service glusterfssharedstorage.service gluster-ta-volume.service + +%post +%service_add_post glusterd.service glustereventsd.service glusterfssharedstorage.service gluster-ta-volume.service + +%preun +%service_del_preun glusterd.service glustereventsd.service glusterfssharedstorage.service gluster-ta-volume.service + +%postun +%service_del_postun glusterd.service glustereventsd.service glusterfssharedstorage.service gluster-ta-volume.service + +%post -n libgfapi0 -p /sbin/ldconfig +%postun -n libgfapi0 -p /sbin/ldconfig +%post -n libgfchangelog0 -p /sbin/ldconfig +%postun -n libgfchangelog0 -p /sbin/ldconfig +%post -n libgfrpc0 -p /sbin/ldconfig +%postun -n libgfrpc0 -p /sbin/ldconfig +%post -n libgfxdr0 -p /sbin/ldconfig +%postun -n libgfxdr0 -p /sbin/ldconfig +%post -n libglusterfs0 -p /sbin/ldconfig +%postun -n libglusterfs0 -p /sbin/ldconfig + +%files +%license COPYING* +%dir %_sysconfdir/ganesha +%dir %_sysconfdir/%name +%_sysconfdir/ganesha/*.sample +%config(noreplace) %_sysconfdir/%name/eventsconfig.json +%config(noreplace) %_sysconfdir/%name/g*lusterd.vol +%config(noreplace) %_sysconfdir/%name/glusterfs-logrotate +%config %_sysconfdir/%name/gluster-rsyslog* +%config %_sysconfdir/%name/glusterfs-georep* +%config %_sysconfdir/%name/group-* +%config %_sysconfdir/%name/gsync* +%config %_sysconfdir/%name/logger* +%config %_sysconfdir/%name/thin* +%_bindir/fusermount-glusterfs +%_bindir/glusterfind +%_libexecdir/ganesha/ +%_libexecdir/%name/ +%_libdir/%name/ +%_sbindir/gluster* +%_sbindir/gcron.py +%_sbindir/gf_attach +%_sbindir/gfind_missing_files +%if 0%{?suse_version} >= 1550 +%_sbindir/mount.%name +%else +/sbin/mount.%name +%endif +%_sbindir/snap_scheduler.py +%_datadir/glusterfs/ +%_mandir/man*/* +%_docdir/%name +%_localstatedir/lib/glusterd +%_localstatedir/log/%name +%_unitdir/glusterd.service +%_unitdir/glustereventsd.service +%_unitdir/glusterfssharedstorage.service +%_unitdir/gluster-ta-volume.service +/usr/lib/ocf + +%files -n libgfapi0 +%_libdir/libgfapi.so.0* + +%files -n libgfchangelog0 +%_libdir/libgfchangelog.so.0* + +%files -n libgfrpc0 +%_libdir/libgfrpc.so.0* + +%files -n libgfxdr0 +%_libdir/libgfxdr.so.0* + +%files -n libglusterfs0 +%_libdir/libglusterfs.so.0* + +%files -n python3-gluster +%python3_sitelib/gluster/ + +%files devel +%_includedir/%name/ +%_libdir/*.so +%_libdir/pkgconfig/*.pc + +%changelog