xfsprogs/xfsprogs.spec

286 lines
8.6 KiB
RPMSpec

#
# spec file for package xfsprogs
#
# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
#
# 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 http://bugs.opensuse.org/
#
%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.16.1
Release: 0
Summary: Utilities for managing the XFS file system
License: GPL-2.0-or-later
Group: System/Filesystems
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
Source2: %{name}.keyring
Source3: module-setup.sh.in
Source4: dracut-fsck-help.txt
Patch0: xfsprogs-docdir.diff
BuildRequires: autoconf
BuildRequires: automake
BuildRequires: libblkid-devel
BuildRequires: pkg-config
BuildRequires: readline-devel
BuildRoot: %{_tmppath}/%{name}-%{version}-build
BuildRequires: libuuid-devel
%if 0%{?suse_version} >= 1010
# hint for ZYPP
Supplements: filesystem(xfs)
%endif
%if 0%{?suse_version} >= 1310
BuildRequires: suse-module-tools
%endif
BuildRequires: xz
Requires(post): coreutils
%if 0%{?xfs_use_systemd} == 1
BuildRequires: pkgconfig
BuildRequires: pkgconfig(systemd)
%endif
%description
A set of commands to use the XFS file system, including mkfs.xfs.
XFS is a high performance journaling file system which originated on
the SGI IRIX platform. It is completely multithreaded. It can support
large files and large file systems, extended attributes, and variable
block sizes. It is extent based and makes extensive use of Btrees
(directories, extents, and free space) to aid both performance and
scalability.
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++
Requires: xfsprogs = %{version}
Requires: pkgconfig(uuid)
%description devel
xfsprogs-devel contains the libraries and header files needed to
develop XFS file system-specific programs.
You should install xfsprogs-devel if you want to develop XFS file
system-specific programs. If you install xfsprogs-devel, you will also
want to install xfsprogs.
%prep
%setup -q
%if 0%{?suse_version}
%patch0 -p1
%endif
%build
aclocal -I m4
autoconf
export OPTIMIZER="-fPIC"
export DEBUG=-DNDEBUG
export LIBUUID=%{_libdir}/libuuid.a
%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
PATH_TO_HELP="%{_dracutmodulesdir}/95suse-xfs/dracut-fsck-help.txt"
sed -e "s|@@PATH_TO_HELP@@|$PATH_TO_HELP|" %{SOURCE3} > module-setup.sh
%install
export DIST_ROOT=%{buildroot}
make install
make install-dev
rm %{buildroot}%{_defaultdocdir}/%{name}/COPYING
# Move libhandle to usr, libhandle.{a,la} are symlinks to usr/lib* already so
# remove them first.
rm %{buildroot}/%{_lib}/libhandle.a
rm %{buildroot}/%{_lib}/libhandle.la
mv %{buildroot}/%{_lib}/* %{buildroot}%{_libdir}
%find_lang %{name}
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}
/sbin/ldconfig
%postun
%{?regenerate_initrd_post}
/sbin/ldconfig
%posttrans
%{?regenerate_initrd_posttrans}
%else
%postun
%post -p /sbin/ldconfig
%endif
%endif
%files -f %{name}.lang
%defattr(-,root,root,755)
#UsrMerge
/sbin/*
#EndUsrMerge
%{_sbindir}/*
%if 0%{?split_so_package} != 1
%{_libdir}/libhandle.so.*
%endif
%dir %{_libdir}/xfsprogs/
%{_libdir}/xfsprogs/xfs_scrub_all.cron
%if 0%{?xfs_use_systemd} == 1
%{_libdir}/xfsprogs/xfs_scrub_fail
%{_unitdir}/xfs_scrub@.service
%{_unitdir}/xfs_scrub_all.service
%{_unitdir}/xfs_scrub_all.timer
%{_unitdir}/xfs_scrub_fail@.service
%endif
%doc %{_mandir}/man[258]/*
%doc %{_defaultdocdir}/%{name}
%license doc/COPYING
%dir %{_libexecdir}/dracut
%dir %{_libexecdir}/dracut/modules.d
%dir %{_dracutmodulesdir}/95suse-xfs/
%{_dracutmodulesdir}/95suse-xfs/dracut-fsck-help.txt
%{_dracutmodulesdir}/95suse-xfs/module-setup.sh
%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
# 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