- Update to 9.5:
Bug fixes:
* chmod -R now avoids a race where an attacker may replace a traversed file
with a symlink, causing chmod to operate on an unintended file.
[This bug was present in "the beginning".]
* cp, mv, and install no longer issue spurious diagnostics like "failed
to preserve ownership" when copying to GNU/Linux CIFS file systems.
They do this by working around some Linux CIFS bugs.
* cp --no-preserve=mode will correctly maintain set-group-ID bits
for created directories. Previously on systems that didn't support ACLs,
cp would have reset the set-group-ID bit on created directories.
[bug introduced in coreutils-8.20]
* join and uniq now support multi-byte characters better.
For example, 'join -tX' now works even if X is a multi-byte character,
and both programs now treat multi-byte characters like U+3000
IDEOGRAPHIC SPACE as blanks if the current locale treats them so.
* numfmt options like --suffix no longer have an arbitrary 127-byte limit.
[bug introduced with numfmt in coreutils-8.21]
* mktemp with --suffix now better diagnoses templates with too few X's.
Previously it conflated the insignificant --suffix in the error.
[bug introduced in coreutils-8.1]
* sort again handles thousands grouping characters in single-byte locales
where the grouping character is greater than CHAR_MAX. For e.g. signed
character platforms with a 0xA0 (aka  ) grouping character.
[bug introduced in coreutils-9.1]
* split --line-bytes with a mixture of very long and short lines
no longer overwrites the heap (CVE-2024-0684).
[bug introduced in coreutils-9.2]
* tail no longer mishandles input from files in /proc and /sys file systems,
on systems with a page size larger than the stdio BUFSIZ.
[This bug was present in "the beginning".]
* timeout avoids a narrow race condition, where it might kill arbitrary
processes after a failed process fork.
[bug introduced with timeout in coreutils-7.0]
* timeout avoids a narrow race condition, where it might fail to
kill monitored processes immediately after forking them.
[bug introduced with timeout in coreutils-7.0]
* wc no longer fails to count unprintable characters as parts of words.
[bug introduced in textutils-2.1]
Changes in behavior:
* base32 and base64 no longer require padding when decoding.
Previously an error was given for non padded encoded data.
* base32 and base64 have improved detection of corrupted encodings.
Previously encodings with non zero padding bits were accepted.
* basenc --base16 -d now supports lower case hexadecimal characters.
Previously an error was given for lower case hex digits.
* cp --no-clobber, and mv -n no longer exit with failure status if
existing files are encountered in the destination. Instead they revert
to the behavior from before v9.2, silently skipping existing files.
* ls --dired now implies long format output without hyperlinks enabled,
and will take precedence over previously specified formats or hyperlink
mode.
* numfmt will accept lowercase 'k' to indicate Kilo or Kibi units on input,
and uses lowercase 'k' when outputting such units in '--to=si' mode.
* pinky no longer tries to canonicalize the user's login location by default,
rather requiring the new --lookup option to enable this often slow feature.
* wc no longer ignores encoding errors when counting words.
Instead, it treats them as non white space.
New features:
* chgrp now accepts the --from=OWNER:GROUP option to restrict changes to files
with matching current OWNER and/or GROUP, as already supported by chown(1).
* chmod adds support for -h, -H,-L,-P, and --dereference options, providing
more control over symlink handling. This supports more secure handling of
CLI arguments, and is more consistent with chown, and chmod on other
systems.
* cp now accepts the --keep-directory-symlink option (like tar), to preserve
and follow existing symlinks to directories in the destination.
* cp and mv now accept the --update=none-fail option, which is similar
to the --no-clobber option, except that existing files are diagnosed,
and the command exits with failure status if existing files.
The -n,--no-clobber option is best avoided due to platform differences.
* env now accepts the -a,--argv0 option to override the zeroth argument
of the command being executed.
* mv now accepts an --exchange option, which causes the source and
destination to be exchanged. It should be combined with
--no-target-directory (-T) if the destination is a directory.
The exchange is atomic if source and destination are on a single
file system that supports atomic exchange; --exchange is not yet
supported in other situations.
* od now supports printing IEEE half precision floating point with -t fH,
or brain 16 bit floating point with -t fB, where supported by the compiler.
* tail now supports following multiple processes, with repeated --pid options.
Improvements:
* cp,mv,install,cat,split now read and write a minimum of 256KiB at a time.
This was previously 128KiB and increasing to 256KiB was seen to increase
throughput by 10-20% when reading cached files on modern systems.
* env,kill,timeout now support unnamed signals. kill(1) for example now
supports sending such signals, and env(1) will list them appropriately.
* SELinux operations in file copy operations are now more efficient,
avoiding unneeded MCS/MLS label translation.
* sort no longer dynamically links to libcrypto unless -R is used.
This decreases startup overhead in the typical case.
* wc is now much faster in single-byte locales and somewhat faster in
multi-byte locales.
- coreutils-9.4.split-CVE-2024-0684.patch: Remove now-upstream patch.
- gnulib-readutmp-under-gdm.patch: Likewise.
- gnulib-readutmp.patch: Likewise.
- coreutils-i18n.patch: Remove multi-byte patches for join and uniq, as the
upstream version now handles those tests.
Pull in gnulib module mbchar manually, as it is a dependency of mbfile,
but dropped out of the upstream dependency chain.
- coreutils-misc.patch: Remove change for gnulib-tests/test-isnanl.h.
- coreutils-fix-gnulib-time_r-tests.patch: Add upstream gnulib patch to skip
French test if TZ='Europe/Paris' does not work.
OBS-URL: https://build.opensuse.org/request/show/1163997
OBS-URL: https://build.opensuse.org/package/show/Base:System/coreutils?expand=0&rev=362
- update to 9.3:
Bug fixes:
* cp --reflink=auto (the default), mv, and install
will again fall back to a standard copy in more cases.
Previously copies could fail with permission errors on
more restricted systems like android or containers etc.
[bug introduced in coreutils-9.2]
* cp --recursive --backup will again operate correctly.
Previousy it may have issued "File exists" errors when
it failed to appropriately rename files being replaced.
[bug introduced in coreutils-9.2]
* date --file and dircolors will now diagnose a failure to read a file.
Previously they would have silently ignored the failure.
[This bug was present in "the beginning".]
* md5sum --check again correctly prints the status of each file checked.
Previously the status for files was printed as 'OK' once any file had passed.
This also applies to cksum, sha*sum, and b2sum.
[bug introduced in coreutils-9.2]
* wc will now diagnose if any total counts have overflowed.
[This bug was present in "the beginning".]
* `wc -c` will again correctly update the read offset of inputs.
Previously it deduced the size of inputs while leaving the offset unchanged.
[bug introduced in coreutils-8.27]
* Coreutils programs no longer fail for timestamps past the year 2038
on obsolete configurations with 32-bit signed time_t, because the
build procedure now rejects these configurations.
[This bug was present in "the beginning".]
Changes in behavior:
* 'cp -n' and 'mv -n' now issue an error diagnostic if skipping a file,
to correspond with -n inducing a nonzero exit status as of coreutils 9.2.
Similarly 'cp -v' and 'mv -v' will output a message for each file skipped
due to -n, -i, or -u.
New features:
* cp and mv now support --update=none to always skip existing files
in the destination, while not affecting the exit status.
This is equivalent to the --no-clobber behavior from before v9.2.
- drop fix-reflink-fallback.patch (upstream).
- add coreutils-tests-skip-cpuinfo-replaced.patch: avoid FP test failure.
OBS-URL: https://build.opensuse.org/request/show/1080971
OBS-URL: https://build.opensuse.org/package/show/Base:System/coreutils?expand=0&rev=350
* 'comm --output-delimiter="" --total' now delimits columns
in the total line with the NUL character, consistent with
NUL column delimiters in the rest of the output.
Previously no delimiters were used for the total line in
this case.
* 'cp -p' no longer has a security hole when cloning into a
dangling symbolic link on macOS 10.12 and later.
- drop gnulib-simple-backup-fix.patch (upstream)
- drop coreutils-tests-workaround-make-fdleak.patch (obsolete)
OBS-URL: https://build.opensuse.org/package/show/Base:System/coreutils?expand=0&rev=344
- Update to 8.32 (see NEWS).
- Remove patches which are included in the new upstream version now:
* coreutils-gnulib-disable-test-float.patch
* coreutils-ls-restore-8.31-behavior-on-removed-dirs.patch
* coreutils-tests-fix-FP-in-ls-stat-free-color.patch
* gnulib-test-avoid-FP-perror-strerror.patch
- coreutils-i18n.patch: Refresh patch. Also patch 'tests/Coreutils.pm' used
by perl-based tests to allow longer test names ... which the i18n tests with
their "-mb" suffix have.
- coreutils-chmod-fix-exit-status-ign-symlinks.patch: Add upstream patch to
fix a regression with the exit code of chmod introduced in 9.0.
- coreutils-skip-tests-rm-ext3-perf.patch: Add patch to skip the test
'tests/rm/ext3-perf.sh' temporarily as it hangs on OBS.
- coreutils.spec:
* Version: bump version.
* Remove the above removed patches.
* Reference the above new patches.
OBS-URL: https://build.opensuse.org/request/show/922533
OBS-URL: https://build.opensuse.org/package/show/Base:System/coreutils?expand=0&rev=322
- Update to 8.32:
* Noteworthy changes in release 8.32 (2020-03-05) [stable]
** Bug fixes
cp now copies /dev/fd/N correctly on platforms like Solaris where
it is a character-special file whose minor device number is N.
[bug introduced in fileutils-4.1.6]
dd conv=fdatasync no longer reports a "Bad file descriptor" error
when fdatasync is interrupted, and dd now retries interrupted calls
to close, fdatasync, fstat and fsync instead of incorrectly
reporting an "Interrupted system call" error.
[bugs introduced in coreutils-6.0]
df now correctly parses the /proc/self/mountinfo file for unusual entries
like ones with '\r' in a field value ("mount -t tmpfs tmpfs /foo$'\r'bar"),
when the source field is empty ('mount -t tmpfs "" /mnt'), and when the
filesystem type contains characters like a blank which need escaping.
[bugs introduced in coreutils-8.24 with the introduction of reading
the /proc/self/mountinfo file]
factor again outputs immediately when stdout is a tty but stdin is not.
[bug introduced in coreutils-8.24]
ln works again on old systems without O_DIRECTORY support (like Solaris 10),
and on systems where symlink ("x", ".") fails with errno == EINVAL
(like Solaris 10 and Solaris 11).
[bug introduced in coreutils-8.31]
rmdir --ignore-fail-on-non-empty now works correctly for directories
that fail to be removed due to permission issues. Previously the exit status
was reversed, failing for non empty and succeeding for empty directories.
[bug introduced in coreutils-6.11]
'shuf -r -n 0 file' no longer mistakenly reads from standard input.
[bug introduced with the --repeat feature in coreutils-8.22]
split no longer reports a "output file suffixes exhausted" error
when the specified number of files is evenly divisible by 10, 16, 26,
for --numeric, --hex, or default alphabetic suffixes respectively.
[bug introduced in coreutils-8.24]
seq no longer prints an extra line under certain circumstances (such as
'seq -f "%g " 1000000 1000000').
[bug introduced in coreutils-6.10]
** Changes in behavior
Several programs now check that numbers end properly. For example,
'du -d 1x' now reports an error instead of silently ignoring the 'x'.
Affected programs and options include du -d, expr's numeric operands
on non-GMP builds, install -g and -o, ls's TABSIZE environment
variable, mknod b and c, ptx -g and -w, shuf -n, and sort --batch-size
and --parallel.
date now parses military time zones in accordance with common usage:
"A" to "M" are equivalent to UTC+1 to UTC+12
"N" to "Y" are equivalent to UTC-1 to UTC-12
"Z" is "zulu" time (UTC).
For example, 'date -d "09:00B" is now equivalent to 9am in UTC+2 time zone.
Previously, military time zones were parsed according to the obsolete
rfc822, with their value negated (e.g., "B" was equivalent to UTC-2).
[The old behavior was introduced in sh-utils 2.0.15 ca. 1999, predating
coreutils package.]
ls issues an error message on a removed directory, on GNU/Linux systems.
Previously no error and no entries were output, and so indistinguishable
from an empty directory, with default ls options.
uniq no longer uses strcoll() to determine string equivalence,
and so will operate more efficiently and consistently.
** New Features
ls now supports the --time=birth option to display and sort by
file creation time, where available.
od --skip-bytes now can use lseek even if the input is not a regular
file, greatly improving performance in some cases.
stat(1) supports a new --cached= option, used on systems with statx(2)
to control cache coherency of file system attributes,
useful on network file systems.
** Improvements
stat and ls now use the statx() system call where available, which can
operate more efficiently by only retrieving requested attributes.
stat and tail now know about the "binderfs", "dma-buf-fs", "erofs",
"ppc-cmm-fs", and "z3fold" file systems.
stat -f -c%T now reports the file system type, and tail -f uses inotify.
** Build-related
gzip-compressed tarballs are distributed once again
- Refresh patches:
* coreutils-disable_tests.patch
* coreutils-getaddrinfo.patch
* coreutils-i18n.patch
* coreutils-invalid-ids.patch
* coreutils-remove_hostname_documentation.patch
* coreutils-remove_kill_documentation.patch
* coreutils-skip-gnulib-test-tls.patch
* coreutils-tests-shorten-extreme-factor-tests.patch
- coreutils-i18n.patch:
* uniq: remove collation handling as required by newer POSIX; see
- https://git.savannah.gnu.org/cgit/coreutils.git/commit/?id=8e81d44b5
- https://www.austingroupbugs.net/view.php?id=963
- coreutils-ls-restore-8.31-behavior-on-removed-dirs.patch:
* Add patch for 'ls' to restore 8.31 behavior on removed directories.
- coreutils.spec:
* Version: bump version.
* %check: re-enable regular 'make check' for non-multibuild package.
* reference the above new patch.
- coreutils.keyring:
* Update from upstream (Savannah).
OBS-URL: https://build.opensuse.org/request/show/783998
OBS-URL: https://build.opensuse.org/package/show/Base:System/coreutils?expand=0&rev=305
- Update to 8.30
- Refresh patches (line number changes only)
- coreutils.spec:
* (License): osc changed the value from "GPL-3.0+" to "GPL-3.0-or-later".
* (build): Make sure that parse-datetime.{c,y} ends up in debuginfo (rh#1555079).
- coreutils-i18n.patch:
* src/exand.c,src/unexpand.c: Avoid -Wcomment warning.
* src/cut.c (cut_characters_or_cut_bytes_no_split): Change idx from size_t
to uintmax_t type to avoid a regression on i586, armv7l and ppc.
Compare upstream, non-MB commit:
https://git.sv.gnu.org/cgit/coreutils.git/commit/?id=d1a754c8272
(cut_fields_mb): Likewise for field_idx.
* tests/misc/cut.pl: Remove downstream tweaks as upstream MB tests are
working since a while.
- coreutils.keyring: Update Assaf Gordon's GPG public key.
OBS-URL: https://build.opensuse.org/request/show/620563
OBS-URL: https://build.opensuse.org/package/show/Base:System/coreutils?expand=0&rev=293
- Update to 8.26
(for details see included NEWS file)
- coreutils.spec (%description): Add b2sum, a new utility.
(BuildRequires): Add timezone to enable new 'date-debug.sh' test.
- coreutils-i18n.patch: Sync I18N patch from Fedora, as the diff
for the old i18n implementation of expand/unexpand has become
unmaintainable:
git://pkgs.fedoraproject.org/coreutils.git
- Remove now-upstream patches:
* coreutils-df-hash-in-filter.patch
* coreutils-diagnose-fts-readdir-failure.patch
* coreutils-m5sum-sha-sum-fix-ignore-missing-with-00-checksums.patch
* coreutils-maint-fix-dependency-of-man-arch.1.patch
- Refresh/merge all other patches:
* coreutils-invalid-ids.patch
* coreutils-ocfs2_reflinks.patch
* coreutils-remove_hostname_documentation.patch
* coreutils-remove_kill_documentation.patch
* coreutils-skip-gnulib-test-tls.patch
* coreutils-sysinfo.patch
* coreutils-tests-shorten-extreme-factor-tests.patch
OBS-URL: https://build.opensuse.org/request/show/443228
OBS-URL: https://build.opensuse.org/package/show/Base:System/coreutils?expand=0&rev=278
** 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
- Add upstream patch (coreutils-copy-fix-selinux-existing-dirs.patch):
cp -a: set the correct SELinux context on already existing
destination directories (rh#1045122).
- Merge I18n fixes from Fedora (coreutils-i18n.patch):
* sort: fix sorting by non-first field (rh#1003544)
* cut: avoid using slower multi-byte code in non-UTF-8 locales
(rh#1021403, rh#499220).
- Testsuite: skip some tests:
* coreutils-skip-some-sort-tests-on-ppc.patch: Add patch to
skip 2 valgrind'ed sort tests on ppc/ppc64.
* coreutils-skip-gnulib-test-tls.patch: Add patch to skip
the gnulib test 'test-tls' on i586, x86_64, ppc and ppc64.
* coreutils-tests-avoid-FP-cp-cpuinfo.patch: Add patch to skip a
test when cp fails for /proc/cpuinfo which happens on aarch64.
* coreutils-tests-shorten-extreme-factor-tests.patch: Add patch
to skip most of the extreme-expensive factor tests.
OBS-URL: https://build.opensuse.org/request/show/213254
OBS-URL: https://build.opensuse.org/package/show/Base:System/coreutils?expand=0&rev=221