From 936923d48c77158efba3801188fdd2bed4fce8ad6996c1ac6d0b1e20d95c00d3 Mon Sep 17 00:00:00 2001 From: Jan Kara Date: Wed, 9 May 2018 16:22:52 +0000 Subject: [PATCH] Accepting request 605498 from home:mcgrof:branches:filesystems - Fix OpenSUSE Tumbleweed package build (bsc#1091300) due to the libhandle1 library shared object (so) name expectations, this is documented here: https://en.opensuse.org/openSUSE:Shared_library_packaging_policy - Move systemd check to use a macro, to make it clear when the check is used and for what purpose exactly. Perhaps this should be moved later into a generic OpenSUSE/SUSE macro as a generic check as I suspect tons of other rpms will likely need the same. - Address -Werror errors on old compilers, for the life of me I can't see how xfsprogs is at fault, so just disable -Werror on older compilers for now. In the future we can consider adding a work around for the compiler instead of disabling -Werror entirely, but for now this is the best I can come up with. - Drop make_xfs_scrub_interp_explicit.patch, this is now upstream - Update to v4.16.1 (using verbiage from xfsprogs/doc/CHANGES now): * fsck.xfs: remove bashism which may interfere with boot (Eric Sandeen) * platforms: warn of impending deprecation of irix, freebsd, darwin * mkfs.xfs : enable sparse inodes by default (Darrick Wong) * fsck.xfs: allow forced boot-time repairs using xfs_repair (Jan Tulak) * xfs_repair: new -e flag alters exit code for fixed errors (Jan Tulak) * xfs_repair: fix to allow zeroing of corrupt log (Xiao Yang) * xfs_repair: remove old dead code (Eric Sandeen) * xfs_io: fix operation time reporting (Dave Chinner) * xfs_io: add RWF_DSYNC support to pwrite (Dave Chinner) * xfs_io: support a basic extent swap command (Brian Foster) * xfs_scrub: Many updates, still experimental (Darrick Wong) * xfs_db: print transaction reservation type information * libxfs: framework to detect memory leaks (Eric Sandeen) * misc: Fix up new warnings from gcc 7.3 (Darrick Wong) * misc: enable link time optimization, if requested (Darrick Wong) * misc: enable retpolines across all xfsprogs utilities (Darrick Wong) OBS-URL: https://build.opensuse.org/request/show/605498 OBS-URL: https://build.opensuse.org/package/show/filesystems/xfsprogs?expand=0&rev=68 --- make_xfs_scrub_interp_explicit.patch | 10 -- xfsprogs-4.15.1.tar.sign | 17 ---- xfsprogs-4.15.1.tar.xz | 3 - xfsprogs-4.16.1.tar.sign | 17 ++++ xfsprogs-4.16.1.tar.xz | 3 + xfsprogs.changes | 34 +++++++ xfsprogs.spec | 141 ++++++++++++++++++++++++--- 7 files changed, 182 insertions(+), 43 deletions(-) delete mode 100644 make_xfs_scrub_interp_explicit.patch delete mode 100644 xfsprogs-4.15.1.tar.sign delete mode 100644 xfsprogs-4.15.1.tar.xz create mode 100644 xfsprogs-4.16.1.tar.sign create mode 100644 xfsprogs-4.16.1.tar.xz diff --git a/make_xfs_scrub_interp_explicit.patch b/make_xfs_scrub_interp_explicit.patch deleted file mode 100644 index 6784840..0000000 --- a/make_xfs_scrub_interp_explicit.patch +++ /dev/null @@ -1,10 +0,0 @@ -diff --git a/scrub/xfs_scrub_all.in b/scrub/xfs_scrub_all.in -index fff05da3ea7a..80f07d5c8b02 100644 ---- a/scrub/xfs_scrub_all.in -+++ b/scrub/xfs_scrub_all.in -@@ -1,4 +1,4 @@ --#!/usr/bin/env python3 -+#!/usr/bin/python3 - - # Run online scrubbers in parallel, but avoid thrashing. - # diff --git a/xfsprogs-4.15.1.tar.sign b/xfsprogs-4.15.1.tar.sign deleted file mode 100644 index ab2223e..0000000 --- a/xfsprogs-4.15.1.tar.sign +++ /dev/null @@ -1,17 +0,0 @@ ------BEGIN PGP SIGNATURE----- -Version: GnuPG v2.0.14 (GNU/Linux) - -iQIcBAABAgAGBQJalL8QAAoJECCuFpLhPd7gjgwQAJ7yXVQ3M/ZAIQ+Qi1y4qc1s -mNz8qjxrrWLqkWa1Pl3bcpGv/VuULoTT7XUF66AL7S2O44xioQ2KrJ/NCLWQ/9Ai -hI+kw0EIGzwZh1Crj86vUA9TeAV59qme8wWL3saqtvjnLfcVdwlPkXAviOwaEx+Z -qYYkhyFUGQFqxgQxnK5iAqeNDDWb8Xuy0NVahTcWOQGKaHXnyUvRmyEcHlHzjN/b -Sn0GCySSwtzu2rk0j0Wg3xqUcLUDPyt4kQ+6/temgJmiqkHVqkiku2YfLFJCTuKC -QrnhPqSRTqkTLRnCyrjoFENdnSfEFE9AO4tUQwc5DJoTMsXk9X9cVHdRO4D7F7Tj -55ENcm39DnH3g7xogsIE/pQD4VHgs68Ye65szERZ15JelOuGFTJj/mfayJz2b5Gb -vXVa5EvQ8GVanDIo/Yz5adqG605cNJw0SH3Q/vPBPQ47tM3Xqx4QwLHVVnIybjJr -du8Rm5GL+kiI9jel+INP2orlc3VnuWA81vQmkgr0OkcWuHTRfBYr6EA9GsYpkJ8q -EbDu+kGW5nOANljXwdQ8cJI7fo5MhJkUf8+7XaFJMYpN99ny7TnmFbBUGGfeHGnH -UWmGwOxIsnB+IAuUktnD40v8YdQtI6cWMO69dIjAH3ACj74gFOS91tzyOLng9IVZ -9/TrDZb8EeVD6JROortO -=LHS8 ------END PGP SIGNATURE----- diff --git a/xfsprogs-4.15.1.tar.xz b/xfsprogs-4.15.1.tar.xz deleted file mode 100644 index a7a082d..0000000 --- a/xfsprogs-4.15.1.tar.xz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:27c36de9346a274143ad06c65b2fdbafd2806f3f37fa2c1235a08ed920d2bf3c -size 1188964 diff --git a/xfsprogs-4.16.1.tar.sign b/xfsprogs-4.16.1.tar.sign new file mode 100644 index 0000000..2615e8d --- /dev/null +++ b/xfsprogs-4.16.1.tar.sign @@ -0,0 +1,17 @@ +-----BEGIN PGP SIGNATURE----- +Version: GnuPG v2.0.14 (GNU/Linux) + +iQIcBAABAgAGBQJa59q/AAoJECCuFpLhPd7gcwIQAJrN1TcTAHck+u/6z/CpaO/0 +bXqUn0CZqMCuZPBWiovIJyLeS6qBkDJ55VWFcc8zxNCjdzrNWV2xr34fYyF0vBXQ +rGbuedzTiQDs+T3OQNKDVZyQWh0S9SbKZAeCxMIA4deGWckji8N75TMruYGagjuv +YeesetmGal4xxaCieKjWbkRwQYATRszSXWGtKWnW4Q0iSESuZzIggfKbrFrUJUmu +DMQwSj+R5ybRkj7b20tosztHl0nVoKsTF+pqp1fLDEYjZ0QX9bjKPpQpgvk5u7k/ +rfeZeToSoYXUl4qmGdeOQgpZeMLRKGdPXu7HY/gJpieqI5RN29wMVsC1iC13ojHl +4jorpRBwVHAZYOlDHD21n1W5A5oohMXChy3LVwRzXx4NrALIV69mbpe9W9x/e4Px +lpOrNxoqmCpge4uU67c8OcWHPXidur2l/kYkatWZ+6S1ICYR+rJNEyKkKAJDvRQh +7JBdpmJceCMio2+2RI+/UHkRlkCaiZww8FQVMQWUrVxroN1nkoEX+rZwcttJ/zzj +sN3LFE/GyAxxcBux4XhVgK9Z+BMou1RXCir4utoISnmg6d5dT3fwASAPZgdc7qIv +TXOHNTM6UZlYQOvOsj+z6cBMdwPfBDHhpT9qHvIUQ2XFEAh6OmBFIgb1nPX+cJTl +GSuqaPvYTsM9D785VAyg +=sxJN +-----END PGP SIGNATURE----- diff --git a/xfsprogs-4.16.1.tar.xz b/xfsprogs-4.16.1.tar.xz new file mode 100644 index 0000000..8f8518e --- /dev/null +++ b/xfsprogs-4.16.1.tar.xz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3d5c2da46112b86cbd967fee43cea731d38a1b2aaf601b57674ed34e808652df +size 1199632 diff --git a/xfsprogs.changes b/xfsprogs.changes index 86fe54c..eed92dc 100644 --- a/xfsprogs.changes +++ b/xfsprogs.changes @@ -1,3 +1,37 @@ +------------------------------------------------------------------- +Tue May 8 22:35:08 UTC 2018 - lurodriguez@suse.com + +- Fix OpenSUSE Tumbleweed package build (bsc#1091300) due to the libhandle1 + library shared object (so) name expectations, this is documented here: + https://en.opensuse.org/openSUSE:Shared_library_packaging_policy +- Move systemd check to use a macro, to make it clear when the check is + used and for what purpose exactly. Perhaps this should be moved later + into a generic OpenSUSE/SUSE macro as a generic check as I suspect tons + of other rpms will likely need the same. +- Address -Werror errors on old compilers, for the life of me I can't see + how xfsprogs is at fault, so just disable -Werror on older compilers for + now. In the future we can consider adding a work around for the compiler + instead of disabling -Werror entirely, but for now this is the best I can + come up with. +- Drop make_xfs_scrub_interp_explicit.patch, this is now upstream +- Update to v4.16.1 (using verbiage from xfsprogs/doc/CHANGES now): + * fsck.xfs: remove bashism which may interfere with boot (Eric Sandeen) + * platforms: warn of impending deprecation of irix, freebsd, darwin + * mkfs.xfs : enable sparse inodes by default (Darrick Wong) + * fsck.xfs: allow forced boot-time repairs using xfs_repair (Jan Tulak) + * xfs_repair: new -e flag alters exit code for fixed errors (Jan Tulak) + * xfs_repair: fix to allow zeroing of corrupt log (Xiao Yang) + * xfs_repair: remove old dead code (Eric Sandeen) + * xfs_io: fix operation time reporting (Dave Chinner) + * xfs_io: add RWF_DSYNC support to pwrite (Dave Chinner) + * xfs_io: support a basic extent swap command (Brian Foster) + * xfs_scrub: Many updates, still experimental (Darrick Wong) + * xfs_db: print transaction reservation type information + * libxfs: framework to detect memory leaks (Eric Sandeen) + * misc: Fix up new warnings from gcc 7.3 (Darrick Wong) + * misc: enable link time optimization, if requested (Darrick Wong) + * misc: enable retpolines across all xfsprogs utilities (Darrick Wong) + ------------------------------------------------------------------- Thu Apr 19 20:46:25 UTC 2018 - lurodriguez@suse.com diff --git a/xfsprogs.spec b/xfsprogs.spec index 1ef9aae..ccb42cb 100644 --- a/xfsprogs.spec +++ b/xfsprogs.spec @@ -18,12 +18,37 @@ %define _dracutmodulesdir %{_libexecdir}/dracut/modules.d +# Note: requiring split_so_package does imply xfs_use_systemd, however, +# needing xfs_use_systemd does not imply requiring split_so_package. These +# need to be kept split for now. + +# We're strict now about packages with shared objects, they must be in their +# own package. This is not a requirement for older releases so do not do the +# split there. For details see: +# https://en.opensuse.org/openSUSE:Shared_library_packaging_policy +%if 0%{?suse_version} >= 1315 +%define split_so_package 1 +%else +%define split_so_package 0 +%endif + +# Starting with OpenSUSE Leap 42.1 and SLE12-SP1 we get systemd +%if 0%{?sle_version} >= 120100 +%define xfs_use_systemd 1 +%else +%define xfs_use_systemd 0 +%endif + Name: xfsprogs -Version: 4.15.1 +Version: 4.16.1 Release: 0 + Summary: Utilities for managing the XFS file system License: GPL-2.0-or-later Group: System/Filesystems +%if 0%{?suse_version} > 1310 +%else +%endif Url: http://xfs.org Source0: https://www.kernel.org/pub/linux/utils/fs/xfs/xfsprogs/xfsprogs-%{version}.tar.xz Source1: https://www.kernel.org/pub/linux/utils/fs/xfs/xfsprogs/xfsprogs-%{version}.tar.sign @@ -31,7 +56,6 @@ Source2: %{name}.keyring Source3: module-setup.sh.in Source4: dracut-fsck-help.txt Patch0: xfsprogs-docdir.diff -Patch1: make_xfs_scrub_interp_explicit.patch BuildRequires: autoconf BuildRequires: automake BuildRequires: libblkid-devel @@ -48,8 +72,7 @@ BuildRequires: suse-module-tools %endif BuildRequires: xz Requires(post): coreutils -# Starting with OpenSUSE Leap 42.1 and SLE12-SP1 we get systemd -%if 0%{?sle_version} >= 120100 +%if 0%{?xfs_use_systemd} == 1 BuildRequires: pkgconfig BuildRequires: pkgconfig(systemd) %endif @@ -67,6 +90,20 @@ Refer to the documentation at http://oss.sgi.com/projects/xfs/ for complete details. This implementation is on-disk compatible with the IRIX version of XFS. +%if 0%{?split_so_package} == 1 + +%package -n libhandle1 +Summary: XFS Filesystem-specific Shared library +Group: Development/Libraries/C and C++ + +%description -n libhandle1 +libhandle1 contains the shared libraries needed by xfsprogs +to run xfsprogs programs. + +libhandle1 is always needed by xfsprogs. If you want to use this +library for your own new xfs tools install xfsprogs-devel. +%endif + %package devel Summary: XFS Filesystem-specific Static Libraries and Headers Group: Development/Libraries/C and C++ @@ -85,7 +122,6 @@ want to install xfsprogs. %setup -q %if 0%{?suse_version} %patch0 -p1 -%patch1 -p1 %endif %build @@ -95,9 +131,20 @@ autoconf export OPTIMIZER="-fPIC" export DEBUG=-DNDEBUG export LIBUUID=%{_libdir}/libuuid.a -%if 0%{?sle_version} >= 120100 +%if 0%{?xfs_use_systemd} == 1 export USE_SYSTEMD="--with-systemd-unit-dir=%{_unitdir}" %endif + +# Some paranoid compiler errors appear with read() which *do not* appear +# on newer compilers. With -Werror we'd fail building the packages so +# we need to work around these compilers for now. I tried fixing +# these concerns but in no way saw any issues with the warning issued, +# as such I don't think this is a real code issue, but more a compiler +# issue. +%if 0%{?sle_version} < 150000 +export CFLAGS="$CFLAGS -Wno-error" +%endif + %configure --enable-readline=yes $USE_SYSTEMD make %{?_smp_mflags} V=1 @@ -118,6 +165,56 @@ install -m 0755 -d %{buildroot}/%{_dracutmodulesdir}/95suse-xfs/ install -m 0755 module-setup.sh %{buildroot}/%{_dracutmodulesdir}/95suse-xfs/ install -m 0644 %{SOURCE4} %{buildroot}/%{_dracutmodulesdir}/95suse-xfs/ +# This seems more complex than it looks but deserves some notes otherwise +# anyone trying to undertand this will really scratch their heads. First the +# split_so_package implies that instead of doing the ldconfig's for the main +# xfsprogs package we'd be doing it now for the libhandle1 package. But if a +# system has systemd, the main xfsprogs package requires its own set of +# pre/post/prerun/postrun hooks for the main xfsprogs for the service files. +# For the systems that lack the requirement for libhandle1, we can expect them +# to also not require systemd, and as such the only package in those system +# requiring hooks is the main xfsprogs package which provides the libhandle so +# file. +%if 0%{?split_so_package} == 1 + +%if 0%{?suse_version} >= 1310 + +%if 0%{?xfs_use_systemd} == 1 +%pre +%service_add_pre xfs_scrub@.service xfs_scrub_all.service xfs_scrub_all.timer xfs_scrub_fail@.service + +%post +%service_add_post xfs_scrub@.service xfs_scrub_all.service xfs_scrub_all.timer xfs_scrub_fail@.service + +%preun +%service_del_preun xfs_scrub@.service xfs_scrub_all.service xfs_scrub_all.timer xfs_scrub_fail@.service + +%postun +%service_del_postun xfs_scrub@.service xfs_scrub_all.service xfs_scrub_all.timer xfs_scrub_fail@.service +%endif + +%post -n libhandle1 +%{?regenerate_initrd_post} +/sbin/ldconfig + +%postun -n libhandle1 +%{?regenerate_initrd_post} +/sbin/ldconfig + +%posttrans -n libhandle1 +%{?regenerate_initrd_posttrans} + +%else + +%postun -n libhandle1 +%post -p /sbin/ldconfig + +%endif + +%else +# Below are systems that do not require the libhandle1 package. For these, +# its as we had things before, and xfsprogs provides the so library. + %if 0%{?suse_version} >= 1310 %post %{?regenerate_initrd_post} @@ -129,10 +226,12 @@ install -m 0644 %{SOURCE4} %{buildroot}/%{_dracutmodulesdir}/95suse-xfs/ %posttrans %{?regenerate_initrd_posttrans} -%else -%post -p /sbin/ldconfig -%postun -p /sbin/ldconfig +%else +%postun +%post -p /sbin/ldconfig +%endif + %endif %files -f %{name}.lang @@ -141,11 +240,12 @@ install -m 0644 %{SOURCE4} %{buildroot}/%{_dracutmodulesdir}/95suse-xfs/ /sbin/* #EndUsrMerge %{_sbindir}/* -# this is only used by xfs cmds, therefore no urgent need for a shlib package +%if 0%{?split_so_package} != 1 %{_libdir}/libhandle.so.* +%endif %dir %{_libdir}/xfsprogs/ %{_libdir}/xfsprogs/xfs_scrub_all.cron -%if 0%{?sle_version} >= 120100 +%if 0%{?xfs_use_systemd} == 1 %{_libdir}/xfsprogs/xfs_scrub_fail %{_unitdir}/xfs_scrub@.service %{_unitdir}/xfs_scrub_all.service @@ -160,12 +260,27 @@ install -m 0644 %{SOURCE4} %{buildroot}/%{_dracutmodulesdir}/95suse-xfs/ %{_dracutmodulesdir}/95suse-xfs/dracut-fsck-help.txt %{_dracutmodulesdir}/95suse-xfs/module-setup.sh -%files devel +%if 0%{?split_so_package} == 1 +%files -n libhandle1 +%{_libdir}/libhandle.so.1.0.3 +# The .1 symlink belongs to the main library package as per the +# documentation here: +# https://en.opensuse.org/openSUSE:Shared_library_packaging_policy +%{_libdir}/libhandle.so.1 +%endif + +%files -n xfsprogs-devel %defattr(-,root,root,755) %{_includedir}/xfs -%{_libdir}/*.so +# The symlink single so file belongs in devel packages as per rpm lint +# and documentation here: +# https://en.opensuse.org/openSUSE:Shared_library_packaging_policy +%{_libdir}/libhandle.so +# Archives for static builds %{_libdir}/*.a +# Description of the libraries for libtool %{_libdir}/*.la + %{_mandir}/man3/* %changelog