From 188860a17f3da9f7eac6744008c9d214d48302f0 Mon Sep 17 00:00:00 2001 From: "Kaleb S. KEITHLEY" Date: Fri, 22 Feb 2019 11:38:52 -0500 Subject: [PATCH] 6.0 RC0 Signed-off-by: Kaleb S. KEITHLEY --- ...d-revert-shebangs-to-usr-bin-python3.patch | 78 +++++++++++ ...uster-__init__.-files-for-python-pac.patch | 102 ++++++++++++++ glusterfs.spec | 125 +++++++----------- sources | 2 +- 4 files changed, 227 insertions(+), 80 deletions(-) create mode 100644 0001-glusterfind-revert-shebangs-to-usr-bin-python3.patch create mode 100644 0002-build-include-gluster-__init__.-files-for-python-pac.patch diff --git a/0001-glusterfind-revert-shebangs-to-usr-bin-python3.patch b/0001-glusterfind-revert-shebangs-to-usr-bin-python3.patch new file mode 100644 index 0000000..3398d49 --- /dev/null +++ b/0001-glusterfind-revert-shebangs-to-usr-bin-python3.patch @@ -0,0 +1,78 @@ +From 5711508032b5f280c56eb983392b58ca66de6124 Mon Sep 17 00:00:00 2001 +From: "Kaleb S. KEITHLEY" +Date: Fri, 22 Feb 2019 09:25:26 -0500 +Subject: [PATCH] glusterfind: revert shebangs to #!/usr/bin/python3 + +Using #!/usr/bin/env python is illegal in Fedora and RHEL packaging. +(Debian and SUSE packaging will complain about it too but don't +enforce it like Fedora packaging does. Yet.) + +We went through a giant exercise fixing these once already. + +The python needs to be python2/python3 clean. There is a build +scriptlet that converts the shebangs back to /usr/bin/python on rhel7. + +Change-Id: If208a2557f7e5d727cda98c27905e249cf485d5b +updates: bz#1193929 +Signed-off-by: Kaleb S. KEITHLEY +--- + tools/glusterfind/glusterfind.in | 2 +- + tools/glusterfind/src/brickfind.py | 2 +- + tools/glusterfind/src/changelog.py | 2 +- + tools/glusterfind/src/main.py | 2 +- + tools/glusterfind/src/nodeagent.py | 2 +- + 5 files changed, 5 insertions(+), 5 deletions(-) + +diff --git a/tools/glusterfind/glusterfind.in b/tools/glusterfind/glusterfind.in +index 569bf4121..ca154b625 100644 +--- a/tools/glusterfind/glusterfind.in ++++ b/tools/glusterfind/glusterfind.in +@@ -1,4 +1,4 @@ +-#!/usr/bin/env python ++#!/usr/bin/python3 + + # Copyright (c) 2015 Red Hat, Inc. + # This file is part of GlusterFS. +diff --git a/tools/glusterfind/src/brickfind.py b/tools/glusterfind/src/brickfind.py +index 1e72c00e5..73b635018 100644 +--- a/tools/glusterfind/src/brickfind.py ++++ b/tools/glusterfind/src/brickfind.py +@@ -1,4 +1,4 @@ +-#!/usr/bin/env python ++#!/usr/bin/python3 + # -*- coding: utf-8 -*- + + # Copyright (c) 2015 Red Hat, Inc. +diff --git a/tools/glusterfind/src/changelog.py b/tools/glusterfind/src/changelog.py +index 62669e950..40c381b59 100644 +--- a/tools/glusterfind/src/changelog.py ++++ b/tools/glusterfind/src/changelog.py +@@ -1,4 +1,4 @@ +-#!/usr/bin/env python ++#!/usr/bin/python3 + # -*- coding: utf-8 -*- + + # Copyright (c) 2015 Red Hat, Inc. +diff --git a/tools/glusterfind/src/main.py b/tools/glusterfind/src/main.py +index 1145fc1e2..cc5a86f27 100644 +--- a/tools/glusterfind/src/main.py ++++ b/tools/glusterfind/src/main.py +@@ -1,4 +1,4 @@ +-#!/usr/bin/env python ++#!/usr/bin/python3 + # -*- coding: utf-8 -*- + + # Copyright (c) 2015 Red Hat, Inc. +diff --git a/tools/glusterfind/src/nodeagent.py b/tools/glusterfind/src/nodeagent.py +index 2ddc77aff..679daa6fa 100644 +--- a/tools/glusterfind/src/nodeagent.py ++++ b/tools/glusterfind/src/nodeagent.py +@@ -1,4 +1,4 @@ +-#!/usr/bin/env python ++#!/usr/bin/python3 + # -*- coding: utf-8 -*- + + # Copyright (c) 2015 Red Hat, Inc. +-- +2.20.1 + diff --git a/0002-build-include-gluster-__init__.-files-for-python-pac.patch b/0002-build-include-gluster-__init__.-files-for-python-pac.patch new file mode 100644 index 0000000..35c5c52 --- /dev/null +++ b/0002-build-include-gluster-__init__.-files-for-python-pac.patch @@ -0,0 +1,102 @@ +From b235a56394c09bb1d7308a620053dbe098d15967 Mon Sep 17 00:00:00 2001 +From: Niels de Vos +Date: Fri, 22 Feb 2019 15:17:48 +0100 +Subject: [PATCH] build: include gluster/__init__.* files for python packaging + +The gluster/__init__.py file was originaly part of the glupy +installation. This file is required to have the python-gluster package +function correctly, it is expected to provide the 'gluster' namespace +for other python packages (like from the libgfapi-python project). + +Because glupy does not exist anymore, this file is now added to in a new +extras/python directory. + +Change-Id: I14fe959778ee3344d7d54ba342c7928a4d8080a2 +Fixes: c3fcff9ccbfcec1be242fd5cf210c9995586b078 +Fixes: 8293d21280fd6ddfc9bb54068cf87794fc6be207 +Updates: bz#1642810 +Signed-off-by: Niels de Vos +--- + configure.ac | 2 ++ + extras/Makefile.am | 2 +- + extras/python/Makefile.am | 7 +++++++ + extras/python/__init__.py | 2 ++ + glusterfs.spec.in | 3 +++ + 5 files changed, 15 insertions(+), 1 deletion(-) + create mode 100644 extras/python/Makefile.am + create mode 100644 extras/python/__init__.py + +diff --git a/configure.ac b/configure.ac +index 3aa7f4e77..e055e8c8f 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -226,6 +226,7 @@ AC_CONFIG_FILES([Makefile + extras/hook-scripts/reset/Makefile + extras/hook-scripts/reset/post/Makefile + extras/hook-scripts/reset/pre/Makefile ++ extras/python/Makefile + extras/snap_scheduler/Makefile + events/Makefile + events/src/Makefile +@@ -630,6 +631,7 @@ AM_PATH_PYTHON([2.6],,[:]) + if test -n "${PYTHON}"; then + have_python=yes + fi ++AM_CONDITIONAL(HAVE_PYTHON, test "x$have_python" = "xyes") + + dnl Use pkg-config to get runtime search path missing from ${PYTHON}-config + dnl Just do "true" on failure so that configure does not bail out +diff --git a/extras/Makefile.am b/extras/Makefile.am +index cf4e9264b..de062f37e 100644 +--- a/extras/Makefile.am ++++ b/extras/Makefile.am +@@ -11,7 +11,7 @@ EditorModedir = $(docdir) + EditorMode_DATA = glusterfs-mode.el glusterfs.vim + + SUBDIRS = init.d systemd benchmarking hook-scripts $(OCF_SUBDIR) LinuxRPM \ +- $(GEOREP_EXTRAS_SUBDIR) snap_scheduler firewalld cliutils ++ $(GEOREP_EXTRAS_SUBDIR) snap_scheduler firewalld cliutils python + + confdir = $(sysconfdir)/glusterfs + if WITH_SERVER +diff --git a/extras/python/Makefile.am b/extras/python/Makefile.am +new file mode 100644 +index 000000000..7d81fa031 +--- /dev/null ++++ b/extras/python/Makefile.am +@@ -0,0 +1,7 @@ ++if HAVE_PYTHON ++# Install __init__.py into the Python site-packages area ++pypkgdir = @BUILD_PYTHON_SITE_PACKAGES@/gluster ++pypkg_PYTHON = __init__.py ++endif ++ ++EXTRA_DIST = __init__.py +diff --git a/extras/python/__init__.py b/extras/python/__init__.py +new file mode 100644 +index 000000000..3ad9513f4 +--- /dev/null ++++ b/extras/python/__init__.py +@@ -0,0 +1,2 @@ ++from pkgutil import extend_path ++__path__ = extend_path(__path__, __name__) +diff --git a/glusterfs.spec.in b/glusterfs.spec.in +index 45b671e33..205b51d4b 100644 +--- a/glusterfs.spec.in ++++ b/glusterfs.spec.in +@@ -1186,9 +1186,12 @@ exit 0 + # 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 + %endif + +-- +2.20.1 + diff --git a/glusterfs.spec b/glusterfs.spec index f9c599a..062b85c 100644 --- a/glusterfs.spec +++ b/glusterfs.spec @@ -7,7 +7,7 @@ %global _for_fedora_koji_builds 1 # uncomment and add '%' to use the prereltag for pre-releases -# %%global prereltag rc1 +%global prereltag rc0 ##----------------------------------------------------------------------------- ## All argument definitions should be placed here and keep them sorted @@ -115,6 +115,15 @@ %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} +%endif + # valgrind # if you wish to compile an rpm to run all processes under valgrind... # rpmbuild -ta @PACKAGE_NAME@-@PACKAGE_VERSION@.tar.gz --with valgrind @@ -143,11 +152,10 @@ %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%{?fedora} > 26 ) || ( 0%{?rhel} && 0%{?rhel} > 7 ) +%if ( 0%{?fedora} ) || ( 0%{?rhel} && 0%{?rhel} > 7 ) %global _usepython3 1 %global _pythonver 3 %else @@ -218,8 +226,8 @@ Summary: Distributed File System %if ( 0%{_for_fedora_koji_builds} ) Name: glusterfs -Version: 5.3 -Release: %{?prereltag:0.}2%{?prereltag:.%{prereltag}}%{?dist} +Version: 6.0 +Release: %{?prereltag:0.}1%{?prereltag:.%{prereltag}}%{?dist} %else Name: @PACKAGE_NAME@ Version: @PACKAGE_VERSION@ @@ -236,7 +244,8 @@ Source8: glusterfsd.init %else Source0: @PACKAGE_NAME@-@PACKAGE_VERSION@.tar.gz %endif - +Patch0001: 0001-glusterfind-revert-shebangs-to-usr-bin-python3.patch +Patch0002: 0002-build-include-gluster-__init__.-files-for-python-pac.patch Requires(pre): shadow-utils %if ( 0%{?_with_systemd:1} ) @@ -250,6 +259,9 @@ Requires: %{name}-libs = %{version}-%{release} %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 BuildRequires: ncurses-devel readline-devel @@ -273,9 +285,6 @@ BuildRequires: libuuid-devel %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 @@ -375,6 +384,21 @@ 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 + +%description cloudsync-plugins +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 cloudsync plugins for archival feature. + %package devel Summary: Development Libraries Requires: %{name} = %{version}-%{release} @@ -467,21 +491,6 @@ is in user space and easily manageable. This package provides support to FUSE based clients and includes the glusterfsd and glusterfs binaries. -%package cloudsync-plugins -Summary: Cloudsync Plugins -BuildRequires: libcurl-devel - -%description cloudsync-plugins -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 cloudsync plugins for archival feature. - %if ( 0%{!?_without_georeplication:1} ) %package geo-replication Summary: GlusterFS Geo-replication @@ -684,6 +693,8 @@ This package provides the glusterfs server daemon. %prep %setup -q -n %{name}-%{version}%{?prereltag} +%patch0001 -p1 +%patch0002 -p1 %if ( ! %{_usepython3} ) echo "fixing python shebangs..." for f in api events extras geo-replication libglusterfs tools xlators; do @@ -701,6 +712,7 @@ sed -i -e 's/--quiet//' configure.ac %{?_with_firewalld} \ %{?_with_gnfs} \ %{?_with_tmpfilesdir} \ + %{?_with_tsan} \ %{?_with_valgrind} \ %{?_without_bd} \ %{?_without_epoll} \ @@ -711,7 +723,6 @@ sed -i -e 's/--quiet//' configure.ac %{?_without_rdma} \ %{?_without_server} \ %{?_without_syslog} \ - %{?_without_tiering} \ %{?_with_ipv6default} \ %{?_without_libtirpc} @@ -855,12 +866,6 @@ exit 0 exit 0 %endif -%if ( 0%{?rhel} == 5 ) -%post fuse -modprobe fuse -exit 0 -%endif - %if ( 0%{!?_without_georeplication:1} ) %post geo-replication if [ $1 -ge 1 ]; then @@ -1055,8 +1060,6 @@ 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 -%dir %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/encryption - %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/encryption/crypt.so %dir %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/access-control.so %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/barrier.so @@ -1117,50 +1120,23 @@ 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 + %files devel %dir %{_includedir}/glusterfs %{_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 -%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 -%if ( %{_usepython3} ) -%dir %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/glupy/__pycache__ - %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/glupy/__pycache__/* -%endif %{_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/performance - %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/testing/performance/symlink-cache.so -# Glupy Python files -%if ( %{_usepython3} ) -%dir %{python3_sitelib}/gluster -%dir %{python3_sitelib}/gluster/__pycache__ - %{python3_sitelib}/gluster/__pycache__/* -%dir %{python3_sitelib}/gluster/glupy - %{python3_sitelib}/gluster/glupy/* -%else -%dir %{python2_sitelib}/gluster -%dir %{python2_sitelib}/gluster/glupy - %{python2_sitelib}/gluster/glupy/* -%endif %files fuse # glusterfs is a symlink to glusterfsd, -server depends on -fuse. @@ -1174,10 +1150,6 @@ exit 0 %{_bindir}/fusermount-glusterfs %endif -%files cloudsync-plugins -%dir %{_libdir}/glusterfs/%{version}%{?prereltag}/cloudsync-plugins - %{_libdir}/glusterfs/%{version}%{?prereltag}/cloudsync-plugins/cloudsyncs3.so - %if ( 0%{?_with_gnfs:1} && 0%{!?_without_server:1} ) %files gnfs %dir %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/nfs @@ -1230,10 +1202,6 @@ exit 0 %{_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 python%{_pythonver}-gluster # introducing glusterfs module in site packages. @@ -1241,6 +1209,7 @@ exit 0 %if ( %{_usepython3} ) %dir %{python3_sitelib}/gluster %{python3_sitelib}/gluster/__init__.* + %{python3_sitelib}/gluster/__pycache__ %{python3_sitelib}/gluster/cliutils %else %dir %{python2_sitelib}/gluster @@ -1312,10 +1281,6 @@ exit 0 %{_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* @@ -1331,9 +1296,6 @@ 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 @@ -1353,6 +1315,8 @@ exit 0 %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 @@ -1449,6 +1413,9 @@ exit 0 %endif %changelog +* 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 diff --git a/sources b/sources index db028a9..a03c843 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (glusterfs-5.3.tar.gz) = 8b5405dbbfcc57ece25ac5934c1d63e9a1f8936bcf6d53ebfdca5c144e963550d99bdee667b7ed7b06c608ddfbf40b5738e9c15b17a11362c8478b02a7e0e15f +SHA512 (glusterfs-6.0rc0.tar.gz) = 637a73c59ecbad4c4ab2db5af10f1e2dd6ed4a566ab58a6f5641c50a85962a411b46b73e45e0d59cb2c4136e9b3c86e92ff0119991ed9fadbb2789dde3e21ce2