forked from pool/coreutils
0954d8e70f
** Bug fixes * dd supports more robust SIGINFO/SIGUSR1 handling for outputting statistics. Previously those signals may have inadvertently terminated the process. * df --local no longer hangs with inaccessible remote mounts. [bug introduced in coreutils-8.21] * du now silently ignores all directory cycles due to bind mounts. Previously it would issue a warning and exit with a failure status. [bug introduced in coreutils-8.1 and partially fixed in coreutils-8.23] * chroot again calls chroot(DIR) and chdir("/"), even if DIR is "/". This handles separate bind mounted "/" trees, and environments depending on the implicit chdir("/"). [bugs introduced in coreutils-8.23] * cp no longer issues an incorrect warning about directory hardlinks when a source directory is specified multiple times. Now, consistent with other file types, a warning is issued for source directories with duplicate names, or with -H the directory is copied again using the symlink name. * factor avoids writing partial lines, thus supporting parallel operation. [the bug dates back to the initial implementation] * head, od, split, tac, tail, and wc no longer mishandle input from files in /proc and /sys file systems that report somewhat-incorrect file sizes. * mkdir --parents -Z now correctly sets the context for the last component, even if the parent directory exists and has a different default context. [bug introduced with the -Z restorecon functionality in coreutils-8.22] * numfmt no longer outputs incorrect overflowed values seen with certain large numbers, or with numbers with increased precision. [bug introduced when numfmt was added in coreutils-8.21] * numfmt now handles leading zeros correctly, not counting them when settings processing limits, and making them optional with floating point. [bug introduced when numfmt was added in coreutils-8.21] * paste no longer truncates output for large input files. This would happen for example with files larger than 4GiB on 32 bit systems with a '\n' character at the 4GiB position. [the bug dates back to the initial implementation] * rm indicates the correct number of arguments in its confirmation prompt, on all platforms. [bug introduced in coreutils-8.22] * shuf -i with a single redundant operand, would crash instead of issuing a diagnostic. [bug introduced in coreutils-8.22] * tail releases inotify resources when unused. Previously it could exhaust resources with many files, or with -F if files were replaced many times. [bug introduced in coreutils-7.5] * tail -f again follows changes to a file after it's renamed. [bug introduced in coreutils-7.5] * tail --follow no longer misses changes to files if those files were replaced before inotify watches were created. [bug introduced in coreutils-7.5] * tail --follow consistently outputs all data for a truncated file. [bug introduced in the beginning] * tail --follow=name correctly outputs headers for multiple files when those files are being created or renamed. [bug introduced in coreutils-7.5] ** New features * chroot accepts the new --skip-chdir option to not change the working directory to "/" after changing into the chroot(2) jail, thus retaining the current wor- king directory. The new option is only permitted if the new root directory is the old "/", and therefore is useful with the --group and --userspec options. * dd accepts a new status=progress level to print data transfer statistics on stderr approximately every second. * numfmt can now process multiple fields with field range specifications similar to cut, and supports setting the output precision with the --format option. * split accepts a new --separator option to select a record separator character other than the default newline character. * stty allows setting the "extproc" option where supported, which is a useful setting with high latency links. * sync no longer ignores arguments, and syncs each specified file, or with the --file-system option, the file systems associated with each specified file. * tee accepts a new --output-error option to control operation with pipes and output errors in general. ** Changes in behavior * df no longer suppresses separate exports of the same remote device, as these are generally explicitly mounted. The --total option does still suppress duplicate remote file systems. [suppression was introduced in coreutils-8.21] * mv no longer supports moving a file to a hardlink, instead issuing an error. The implementation was susceptible to races in the presence of multiple mv instances, which could result in both hardlinks being deleted. Also on case insensitive file systems like HFS, mv would just remove a hardlinked 'file' if called like `mv file File`. The feature was added in coreutils-5.0.1. * numfmt --from-unit and --to-unit options now interpret suffixes as SI units, and IEC (power of 2) units are now specified by appending 'i'. * tee will exit early if there are no more writable outputs. * tee does not treat the file operand '-' as meaning standard output any longer, for better conformance to POSIX. This feature was added in coreutils-5.3.0. * timeout --foreground no longer sends SIGCONT to the monitored process, which was seen to cause intermittent issues with GDB for example. ** Improvements * cp,install,mv will convert smaller runs of NULs in the input to holes, and cp --sparse=always avoids speculative preallocation on XFS for example. * cp will read sparse files more efficiently when the destination is a non regular file. For example when copying a disk image to a device node. * mv will try a reflink before falling back to a standard copy, which is more efficient when moving files across BTRFS subvolume boundaries. * stat and tail now know about IBRIX. stat -f --format=%T now reports the file system type, and tail -f uses polling for files on IBRIX file systems. * wc -l processes short lines much more efficiently. * References from --help and the man pages of utilities have been corrected in various cases, and more direct links to the corresponding online documentation are provided. - Patches adapted because of changed sources: coreutils-disable_tests.patch coreutils-i18n.patch coreutils-misc.patch coreutils-ocfs2_reflinks.patch coreutils-remove_hostname_documentation.patch coreutils-remove_kill_documentation.patch coreutils-skip-gnulib-test-tls.patch coreutils-tests-shorten-extreme-factor-tests.patch sort-keycompare-mb.patch - Patches removed because they're included in 8.24: coreutils-chroot-perform-chdir-unless-skip-chdir.patch coreutils-df-doc-df-a-includes-duplicate-file-systems.patch coreutils-df-improve-mount-point-selection.patch coreutils-df-show-all-remote-file-systems.patch coreutils-df-total-suppress-separate-remotes.patch coreutils-doc-adjust-reference-to-info-nodes-in-man-pages.patch coreutils-fix_false_du_failure_on_newer_xfs.patch coreutils-fix-man-deps.patch coreutils-tests-aarch64-env.patch coreutils-tests-make-inotify-rotate-more-robust-and-efficient.patch coreutils-tests-rm-ext3-perf-increase-timeout.patch OBS-URL: https://build.opensuse.org/package/show/Base:System/coreutils?expand=0&rev=262
279 lines
8.2 KiB
RPMSpec
279 lines
8.2 KiB
RPMSpec
#
|
|
# spec file for package coreutils
|
|
#
|
|
# Copyright (c) 2015 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/
|
|
#
|
|
|
|
|
|
Name: coreutils
|
|
Summary: GNU Core Utilities
|
|
License: GPL-3.0+
|
|
Group: System/Base
|
|
Url: http://www.gnu.org/software/coreutils/
|
|
Version: 8.24
|
|
Release: 0
|
|
|
|
#################################################################
|
|
#################################################################
|
|
### ! ! ! R E M I N D E R ! ! ! ###
|
|
#################################################################
|
|
### Please call "./pre_checkin.sh" prior to submitting. ###
|
|
### (This will regenerate coreutils-testsuite.spec) ###
|
|
#################################################################
|
|
#################################################################
|
|
|
|
BuildRequires: automake
|
|
BuildRequires: gmp-devel
|
|
BuildRequires: libacl-devel
|
|
BuildRequires: libattr-devel
|
|
BuildRequires: libcap-devel
|
|
BuildRequires: libselinux-devel
|
|
BuildRequires: makeinfo
|
|
BuildRequires: perl
|
|
BuildRequires: suse-module-tools
|
|
BuildRequires: xz
|
|
%if %{suse_version} > 1320
|
|
BuildRequires: gcc-PIE
|
|
%endif
|
|
%if "%{name}" == "coreutils-testsuite"
|
|
BuildRequires: acl
|
|
BuildRequires: gdb
|
|
BuildRequires: perl-Expect
|
|
BuildRequires: python-pyinotify
|
|
BuildRequires: strace
|
|
%ifarch %ix86 x86_64 ppc ppc64 s390x armv7l armv7hl
|
|
BuildRequires: valgrind
|
|
%endif
|
|
%endif
|
|
|
|
%if "%{name}" == "coreutils"
|
|
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
|
|
|
|
# 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
|
|
|
|
#Git-Web: http://git.savannah.gnu.org/gitweb/?p=coreutils.git
|
|
#Git-Clone: git://git.sv.gnu.org/coreutils
|
|
%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.
|
|
Source0: https://ftp.gnu.org/gnu/%{name}/%{name}-%{version}.tar.xz
|
|
Source1: https://ftp.gnu.org/gnu/%{name}/%{name}-%{version}.tar.xz.sig
|
|
Source2: https://savannah.gnu.org/project/memberlist-gpgkeys.php?group=%{name}&download=1&file=./%{name}.keyring
|
|
%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.
|
|
Source0: coreutils-%{version}.tar.xz
|
|
Source1: coreutils-%{version}.tar.xz.sig
|
|
Source2: coreutils.keyring
|
|
%endif
|
|
|
|
Source3: baselibs.conf
|
|
|
|
Patch1: coreutils-remove_hostname_documentation.patch
|
|
Patch3: coreutils-remove_kill_documentation.patch
|
|
Patch4: coreutils-i18n.patch
|
|
Patch5: sort-keycompare-mb.patch
|
|
Patch8: coreutils-sysinfo.patch
|
|
Patch16: coreutils-invalid-ids.patch
|
|
|
|
# OBS / RPMLINT require /usr/bin/timeout to be built with the -fpie option.
|
|
Patch100: coreutils-build-timeout-as-pie.patch
|
|
|
|
# At least a bit of reflink support
|
|
Patch111: coreutils-ocfs2_reflinks.patch
|
|
|
|
# There is no network in the build root so make the test succeed
|
|
Patch112: coreutils-getaddrinfo.patch
|
|
|
|
# Assorted fixes
|
|
Patch113: coreutils-misc.patch
|
|
|
|
# Skip 2 valgrind'ed sort tests on ppc/ppc64 which would fail due to
|
|
# a glibc issue in mkstemp.
|
|
Patch300: coreutils-skip-some-sort-tests-on-ppc.patch
|
|
|
|
%ifarch %ix86 x86_64 ppc ppc64
|
|
Patch301: coreutils-skip-gnulib-test-tls.patch
|
|
%endif
|
|
|
|
# tests: shorten extreme-expensive factor tests
|
|
Patch303: coreutils-tests-shorten-extreme-factor-tests.patch
|
|
|
|
Patch500: coreutils-disable_tests.patch
|
|
Patch501: coreutils-test_without_valgrind.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
|
|
|
|
# ================================================
|
|
%lang_package
|
|
%prep
|
|
%setup -q -n coreutils-%{version}
|
|
%patch4
|
|
%patch5
|
|
%patch1
|
|
%patch3
|
|
%patch8
|
|
%patch16
|
|
#
|
|
%if %{suse_version} <= 1320
|
|
%patch100
|
|
%endif
|
|
%patch111
|
|
%patch112
|
|
%patch113
|
|
|
|
%patch300
|
|
|
|
%ifarch %ix86 x86_64 ppc ppc64
|
|
%patch301
|
|
%endif
|
|
|
|
%patch303
|
|
%patch500
|
|
%patch501
|
|
|
|
#???## 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"
|
|
make install DESTDIR="%buildroot" pkglibexecdir=%{_libdir}/%{name}
|
|
|
|
# remove kill
|
|
rm -v %{buildroot}%{_bindir}/kill
|
|
rm -v %{buildroot}/%{_mandir}/man1/kill.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
|
|
%{?regenerate_initrd_post}
|
|
%endif
|
|
|
|
# ================================================
|
|
%posttrans
|
|
%if "%{name}" == "coreutils"
|
|
%{?regenerate_initrd_posttrans}
|
|
%endif
|
|
|
|
# ================================================
|
|
%postun
|
|
%if "%{name}" == "coreutils"
|
|
%install_info_delete --info-dir=%{_infodir} %{_infodir}/coreutils.info.gz
|
|
%endif
|
|
|
|
# ================================================
|
|
%files
|
|
%if "%{name}" == "coreutils"
|
|
|
|
%defattr(-,root,root)
|
|
%doc COPYING NEWS README THANKS
|
|
%{_bindir}/*
|
|
#UsrMerge
|
|
/bin/*
|
|
#EndUsrMerge
|
|
%{_libdir}/%{name}
|
|
%doc %{_infodir}/coreutils.info*.gz
|
|
%doc %{_mandir}/man1/*.1.gz
|
|
%dir %{_datadir}/locale/*/LC_TIME
|
|
|
|
%files lang -f coreutils.lang
|
|
%defattr(-,root,root)
|
|
|
|
%else
|
|
|
|
# test-suite
|
|
%dir %{_docdir}/%{name}
|
|
%doc %{_docdir}/%{name}/test-suite.log.xz
|
|
|
|
%endif
|
|
|
|
# ================================================
|
|
|
|
%changelog
|