forked from pool/coreutils
4da1e6fb2e
- Provides: /bin/{kill,su} * for compatibility with programs requiring these (like lsb) until these will be provided by util-linux OBS-URL: https://build.opensuse.org/request/show/175738 OBS-URL: https://build.opensuse.org/package/show/Base:System/coreutils?expand=0&rev=185
289 lines
8.9 KiB
RPMSpec
289 lines
8.9 KiB
RPMSpec
#
|
|
# spec file for package coreutils
|
|
#
|
|
# Copyright (c) 2013 SUSE LINUX Products 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/
|
|
#
|
|
|
|
|
|
Name: coreutils
|
|
Summary: GNU Core Utilities
|
|
License: GPL-3.0+
|
|
Group: System/Base
|
|
Url: http://www.gnu.org/software/coreutils/
|
|
Version: 8.21
|
|
Release: 0
|
|
|
|
BuildRequires: automake
|
|
BuildRequires: gmp-devel
|
|
BuildRequires: help2man
|
|
BuildRequires: libacl-devel
|
|
BuildRequires: libcap-devel
|
|
BuildRequires: libselinux-devel
|
|
BuildRequires: makeinfo
|
|
BuildRequires: perl
|
|
BuildRequires: xz
|
|
%if "%{name}" == "coreutils-testsuite"
|
|
BuildRequires: acl
|
|
BuildRequires: gdb
|
|
BuildRequires: perl-Expect
|
|
BuildRequires: python-pyinotify
|
|
BuildRequires: strace
|
|
BuildRequires: valgrind
|
|
%endif
|
|
|
|
Provides: %{name} = %{version}
|
|
%if "%{name}" == "coreutils"
|
|
Provides: /bin/kill
|
|
Provides: /bin/su
|
|
Provides: fileutils = %{version}
|
|
Provides: mktemp = %{version}
|
|
Provides: sh-utils = %{version}
|
|
Provides: stat = %{version}
|
|
Provides: textutils = %{version}
|
|
%endif
|
|
|
|
%if "%{name}" == "coreutils"
|
|
Recommends: %{name}-lang = %version
|
|
%endif
|
|
|
|
# Needed for su.
|
|
BuildRequires: pam-devel
|
|
Requires: pam >= 1.1.1.90
|
|
|
|
# this will create a cycle, broken up randomly - coreutils is just
|
|
# too core to have other prerequisites.
|
|
#PreReq: permissions
|
|
PreReq: %{install_info_prereq}
|
|
|
|
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
|
|
|
%if "%{name}" == "coreutils"
|
|
# For upgrading you now just need to increase the version, remove the old
|
|
# tarballs, then run osc service localrun download_files, osc addremove,
|
|
# osc vc and osc ci and you are done.
|
|
Source: http://ftp.gnu.org/gnu/%{name}/%{name}-%{version}.tar.xz
|
|
%else
|
|
# In "coreutils-testsuite", we use the version controlled file from "coreutils".
|
|
# otherwise that file would be downloaded twice during the above mentioned
|
|
# upgrade procedure.
|
|
Source: coreutils-%{version}.tar.xz
|
|
%endif
|
|
|
|
Source1: su.pamd
|
|
Source2: su.default
|
|
Source3: baselibs.conf
|
|
Source4: coreutils-%{version}.de.po.xz
|
|
|
|
Patch1: coreutils-remove_hostname_documentation.patch
|
|
#Patch2: coreutils-gl_printf_safe.patch
|
|
Patch4: coreutils-i18n.patch
|
|
Patch8: coreutils-sysinfo.patch
|
|
Patch16: coreutils-invalid-ids.patch
|
|
#
|
|
#Patch33: coreutils-8.9-singlethreaded-sort.patch
|
|
|
|
# OBS / RPMLINT require /usr/bin/timeout to be built with the -fpie option.
|
|
Patch100: coreutils-build-timeout-as-pie.patch
|
|
Patch101: coreutils-su.patch
|
|
|
|
# ================================================
|
|
%description
|
|
These are the GNU core utilities. This package is the union of
|
|
the GNU fileutils, sh-utils, and textutils packages.
|
|
|
|
[ arch base64 basename cat chcon chgrp chmod chown chroot cksum comm cp
|
|
csplit cut date dd df dir dircolors dirname du echo env expand expr
|
|
factor false fmt fold groups head hostid id install join
|
|
link ln logname ls md5sum mkdir mkfifo mknod mktemp mv nice nl nohup
|
|
nproc numfmt od paste pathchk pinky pr printenv printf ptx pwd readlink
|
|
realpath rm rmdir runcon seq sha1sum sha224sum sha256sum sha384sum sha512sum
|
|
shred shuf sleep sort split stat stdbuf stty sum sync tac tail tee test
|
|
timeout touch tr true truncate tsort tty uname unexpand uniq unlink
|
|
uptime users vdir wc who whoami yes
|
|
|
|
As su(1) and kill(1) have been moved from coreutils to util-linux upstreams,
|
|
this package provides compatibility symlinks to the old coreutils versions
|
|
of both programs. This is needed until there's a newer version of the
|
|
receiving util-linux package available which comes with the new binaries.
|
|
|
|
# ================================================
|
|
%lang_package
|
|
%prep
|
|
%setup -q -n coreutils-%{version}
|
|
%patch4
|
|
%patch1
|
|
#%%if 0%%{suse_version} > 1200
|
|
#%%patch2
|
|
#%%endif
|
|
%patch8
|
|
%patch16
|
|
#
|
|
#%%patch33
|
|
%patch100
|
|
%patch101
|
|
|
|
xz -dc %{S:4} >po/de.po
|
|
|
|
#???## We need to statically link to gmp, otherwise we have a build loop
|
|
#???#sed -i s,'$(LIB_GMP)',%%{_libdir}/libgmp.a,g Makefile.in
|
|
|
|
# ================================================
|
|
%build
|
|
%if 0%{suse_version} >= 1200
|
|
AUTOPOINT=true autoreconf -fi
|
|
%endif
|
|
export CFLAGS="%optflags"
|
|
%configure --libexecdir=%{_libdir} \
|
|
--enable-install-program=arch \
|
|
DEFAULT_POSIX2_VERSION=200112 \
|
|
alternative=199209
|
|
|
|
make -C po update-po
|
|
|
|
# Regenerate manpages
|
|
touch man/*.x
|
|
|
|
make all %{?_smp_mflags} V=1
|
|
|
|
# ================================================
|
|
%check
|
|
%if "%{name}" == "coreutils-testsuite"
|
|
# Make our multi-byte test for sort executable
|
|
chmod a+x tests/misc/sort-mb-tests.sh
|
|
|
|
# Avoid parallel make, because otherwise some timeout based tests like
|
|
# rm/ext3-perf may fail due to high CPU or IO load.
|
|
make check-very-expensive \
|
|
&& install -d -m 755 %{buildroot}%{_docdir}/%{name} \
|
|
&& xz -c tests/test-suite.log \
|
|
> %{buildroot}%{_docdir}/%{name}/test-suite.log.xz
|
|
%endif
|
|
|
|
# ================================================
|
|
%install
|
|
%if "%{name}" == "coreutils"
|
|
%makeinstall pkglibexecdir=%{_libdir}/%{name}
|
|
|
|
# === TRICKERY - PART 1/3 ===
|
|
# trickery to make the move of su and kill to util-linux as easy as possible
|
|
# this all needs to go when util-linux 2.22 has been checked in and
|
|
# everything has settled. 15.10.2012 pth@suse.de
|
|
# Install su and kill with a ".core" suffix.
|
|
|
|
install -d -m 755 %{buildroot}/etc/pam.d
|
|
install -m 644 %{S:1} %{buildroot}/etc/pam.d/su.core
|
|
install -m 644 %{S:1} %{buildroot}/etc/pam.d/su-l.core
|
|
|
|
install -d -m 755 %{buildroot}/etc/default
|
|
install -m 644 %{S:2} %{buildroot}/etc/default/su.core
|
|
|
|
install -s -m 755 src/su %{buildroot}%{_bindir}/su.core
|
|
install -m 644 man/su.1 %{buildroot}%{_mandir}/man1/su.core.1
|
|
rm -f %{buildroot}%{_mandir}/man1/su.1
|
|
|
|
# kill is still part of coreutils, so rename it (stripped).
|
|
install -s -m 755 %{buildroot}%{_bindir}/kill %{buildroot}%{_bindir}/kill.core
|
|
rm -f %{buildroot}%{_bindir}/kill
|
|
mv -v %{buildroot}%{_mandir}/man1/kill.1 %{buildroot}%{_mandir}/man1/kill.core.1
|
|
|
|
#UsrMerge
|
|
install -d %{buildroot}/bin
|
|
for i in arch basename cat chgrp chmod chown cp date dd df echo \
|
|
false ln ls mkdir mknod mktemp mv pwd rm rmdir sleep sort stat \
|
|
stty sync touch true uname readlink md5sum
|
|
do
|
|
ln -sf %{_bindir}/$i %{buildroot}/bin/$i
|
|
done
|
|
#EndUsrMerge
|
|
echo '.so man1/test.1' > %{buildroot}/%{_mandir}/man1/\[.1
|
|
%find_lang coreutils
|
|
%endif
|
|
|
|
# ================================================
|
|
%post
|
|
%if "%{name}" == "coreutils"
|
|
%install_info --info-dir=%{_infodir} %{_infodir}/coreutils.info.gz
|
|
|
|
# may fail if permissions is not there, but there is no way around that
|
|
%set_permissions %{_bindir}/su.core
|
|
%endif
|
|
|
|
# ================================================
|
|
%posttrans
|
|
%if "%{name}" == "coreutils"
|
|
# === TRICKERY - PART 2/3 ===
|
|
# If the files are missing after installation, then create links to the
|
|
# saved ones (with suffix .core).
|
|
if [ ! -r %{_bindir}/su -a -e %{_bindir}/su.core ]; then
|
|
echo "%{_bindir}/su does not exist, setting compat symlink to %{_bindir}/su.core"
|
|
ln -svf %{_bindir}/su.core %{_bindir}/su
|
|
ln -svf %{_bindir}/kill.core %{_bindir}/kill
|
|
ln -svf %{_bindir}/su.core /bin/su
|
|
ln -svf %{_bindir}/kill.core /bin/kill
|
|
ln -svf /etc/pam.d/su.core /etc/pam.d/su
|
|
ln -svf /etc/pam.d/su-l.core /etc/pam.d/su-l
|
|
ln -svf /etc/default/su.core /etc/default/su
|
|
# man pages are already zipped at that point.
|
|
mv -vf %{_mandir}/man1/kill.core.1.gz %{_mandir}/man1/kill.1.gz
|
|
mv -vf %{_mandir}/man1/su.core.1.gz %{_mandir}/man1/su.1.gz
|
|
fi
|
|
%endif
|
|
|
|
# ================================================
|
|
%postun
|
|
%if "%{name}" == "coreutils"
|
|
%install_info_delete --info-dir=%{_infodir} %{_infodir}/coreutils.info.gz
|
|
%endif
|
|
|
|
# ================================================
|
|
%verifyscript
|
|
%if "%{name}" == "coreutils"
|
|
%verify_permissions -e %{_bindir}/su.core
|
|
%endif
|
|
|
|
# ================================================
|
|
%files
|
|
%if "%{name}" == "coreutils"
|
|
|
|
%defattr(-,root,root)
|
|
%doc COPYING NEWS README THANKS
|
|
%attr(4755,root,root) %{_bindir}/su.core
|
|
%{_bindir}/*
|
|
#UsrMerge
|
|
/bin/*
|
|
#EndUsrMerge
|
|
%{_libdir}/%{name}
|
|
%doc %{_infodir}/coreutils.info*.gz
|
|
%doc %{_mandir}/man1/*.1.gz
|
|
%dir %{_datadir}/locale/*/LC_TIME
|
|
# === TRICKERY - PART 3/3 ===
|
|
%config /etc/default/su.core
|
|
%config /etc/pam.d/su-l.core
|
|
%config /etc/pam.d/su.core
|
|
|
|
%files lang -f coreutils.lang
|
|
%defattr(-,root,root)
|
|
|
|
%else
|
|
|
|
# test-suite
|
|
%dir %{_docdir}/%{name}
|
|
%doc %{_docdir}/%{name}/test-suite.log.xz
|
|
|
|
%endif
|
|
|
|
# ================================================
|
|
|
|
%changelog
|