Hello community, here is the log from the commit of package coreutils for openSUSE:Factory checked in at 2020-03-25 23:41:44 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/coreutils (Old) and /work/SRC/openSUSE:Factory/.coreutils.new.3160 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "coreutils" Wed Mar 25 23:41:44 2020 rev:132 rq:786157 version:8.32 Changes: -------- --- /work/SRC/openSUSE:Factory/coreutils/coreutils.changes 2020-02-13 10:10:48.500315366 +0100 +++ /work/SRC/openSUSE:Factory/.coreutils.new.3160/coreutils.changes 2020-03-25 23:41:48.415964369 +0100 @@ -1,0 +2,127 @@ +Mon Mar 9 07:17:46 UTC 2020 - Bernhard Voelker <[email protected]> + +- 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). + +------------------------------------------------------------------- Old: ---- coreutils-8.31.tar.xz coreutils-8.31.tar.xz.sig New: ---- coreutils-8.32.tar.xz coreutils-8.32.tar.xz.sig coreutils-ls-restore-8.31-behavior-on-removed-dirs.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ coreutils.spec ++++++ --- /var/tmp/diff_new_pack.QaqUOF/_old 2020-03-25 23:41:49.375964683 +0100 +++ /var/tmp/diff_new_pack.QaqUOF/_new 2020-03-25 23:41:49.379964684 +0100 @@ -34,7 +34,7 @@ License: GPL-3.0-or-later Group: System/Base URL: https://www.gnu.org/software/coreutils/ -Version: 8.31 +Version: 8.32 Release: 0 BuildRequires: automake @@ -138,6 +138,12 @@ Patch500: coreutils-disable_tests.patch Patch501: coreutils-test_without_valgrind.patch +# Upstream commits (squashed) after the release of coreutils-8.32: +# [PATCH 1/2] ls: restore 8.31 behavior on removed directories +# [PATCH 2/2] ls: improve removed-directory test +# Remove this patch with the next coreutils release. +Patch800: coreutils-ls-restore-8.31-behavior-on-removed-dirs.patch + # ================================================ %description These are the GNU core utilities. This package is the union of @@ -190,8 +196,7 @@ %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 +%patch800 # ================================================ %build @@ -231,6 +236,9 @@ && install -d -m 755 %{buildroot}%{_docdir}/%{name} \ && xz -c tests/test-suite.log \ > %{buildroot}%{_docdir}/%{name}/test-suite.log.xz +%else + # Run the shorter check otherwise. + make check %endif # ================================================ ++++++ coreutils-8.31.tar.xz -> coreutils-8.32.tar.xz ++++++ ++++ 332631 lines of diff (skipped) ++++++ coreutils-disable_tests.patch ++++++ --- /var/tmp/diff_new_pack.QaqUOF/_old 2020-03-25 23:41:51.535965390 +0100 +++ /var/tmp/diff_new_pack.QaqUOF/_new 2020-03-25 23:41:51.535965390 +0100 @@ -6,7 +6,7 @@ =================================================================== --- gnulib-tests/gnulib.mk.orig +++ gnulib-tests/gnulib.mk -@@ -939,10 +939,10 @@ EXTRA_DIST += test-getloadavg.c signatur +@@ -951,10 +951,10 @@ EXTRA_DIST += test-getloadavg.c signatur ## begin gnulib module getlogin-tests ++++++ coreutils-getaddrinfo.patch ++++++ --- /var/tmp/diff_new_pack.QaqUOF/_old 2020-03-25 23:41:51.543965392 +0100 +++ /var/tmp/diff_new_pack.QaqUOF/_new 2020-03-25 23:41:51.543965392 +0100 @@ -6,7 +6,7 @@ =================================================================== --- gnulib-tests/test-getaddrinfo.c.orig +++ gnulib-tests/test-getaddrinfo.c -@@ -91,11 +91,7 @@ simple (char const *host, char const *se +@@ -93,11 +93,7 @@ simple (char const *host, char const *se the test merely because someone is down the country on their in-law's farm. */ if (res == EAI_AGAIN) ++++++ coreutils-i18n.patch ++++++ ++++ 968 lines (skipped) ++++ between /work/SRC/openSUSE:Factory/coreutils/coreutils-i18n.patch ++++ and /work/SRC/openSUSE:Factory/.coreutils.new.3160/coreutils-i18n.patch ++++++ coreutils-invalid-ids.patch ++++++ --- /var/tmp/diff_new_pack.QaqUOF/_old 2020-03-25 23:41:51.559965398 +0100 +++ /var/tmp/diff_new_pack.QaqUOF/_new 2020-03-25 23:41:51.559965398 +0100 @@ -21,8 +21,8 @@ +++ src/chgrp.c @@ -89,7 +89,7 @@ parse_group (const char *name) { - unsigned long int tmp; - if (! (xstrtoul (name, NULL, 10, &tmp, "") == LONGINT_OK + uintmax_t tmp; + if (! (xstrtoumax (name, NULL, 10, &tmp, "") == LONGINT_OK - && tmp <= GID_T_MAX)) + && tmp <= GID_T_MAX && (gid_t) tmp != (gid_t) -1)) die (EXIT_FAILURE, 0, _("invalid group: %s"), ++++++ coreutils-ls-restore-8.31-behavior-on-removed-dirs.patch ++++++ Upstream commits (squashed) after the release of coreutils-8.32: [PATCH 1/2] ls: restore 8.31 behavior on removed directories [PATCH 2/2] ls: improve removed-directory test Remove this patch with the next coreutils release. Discussed at: https://lists.gnu.org/archive/html/bug-coreutils/2020-03/msg00008.html Upstream commits: https://git.savannah.gnu.org/cgit/coreutils.git/commit/?id=10fcb97 https://git.savannah.gnu.org/cgit/coreutils.git/commit/?id=672819c commit 672819c73f2e94e61386dc0584bddf9da860cc26 (HEAD -> master, origin/master, origin/HEAD) Author: Paul Eggert <[email protected]> Date: Sat Mar 7 10:29:51 2020 -0800 ls: improve removed-directory test * tests/ls/removed-directory.sh: Remove host_triplet test. Skip this test if one cannot remove the working directory. From a suggestion by Bernhard Voelker (Bug#39929). commit 10fcb97bd728f09d4a027eddf8ad2900f0819b0a Author: Paul Eggert <[email protected]> Date: Thu Mar 5 17:25:29 2020 -0800 ls: restore 8.31 behavior on removed directories * NEWS: Mention this. * src/ls.c: Do not include <sys/sycall.h> (print_dir): Don't worry about whether the directory is removed. * tests/ls/removed-directory.sh: Adjust to match new (i.e., old) behavior. --- NEWS | 9 +++++++++ src/ls.c | 22 ---------------------- tests/ls/removed-directory.sh | 23 ++++++----------------- 3 files changed, 15 insertions(+), 39 deletions(-) Index: NEWS =================================================================== --- NEWS.orig +++ NEWS @@ -1,5 +1,14 @@ GNU coreutils NEWS -*- outline -*- +* Noteworthy downstream changes (on top of upstream coreutils-8.32) + +** Changes in behavior + + On GNU/Linux systems, ls no longer issues an error message on + directory merely because it was removed. This reverts a change + that was made in release 8.32. + + * Noteworthy changes in release 8.32 (2020-03-05) [stable] ** Bug fixes Index: src/ls.c =================================================================== --- src/ls.c.orig +++ src/ls.c @@ -49,10 +49,6 @@ # include <sys/ptem.h> #endif -#ifdef __linux__ -# include <sys/syscall.h> -#endif - #include <stdio.h> #include <assert.h> #include <setjmp.h> @@ -2896,7 +2892,6 @@ print_dir (char const *name, char const struct dirent *next; uintmax_t total_blocks = 0; static bool first = true; - bool found_any_entries = false; errno = 0; dirp = opendir (name); @@ -2972,7 +2967,6 @@ print_dir (char const *name, char const next = readdir (dirp); if (next) { - found_any_entries = true; if (! file_ignored (next->d_name)) { enum filetype type = unknown; @@ -3018,22 +3012,6 @@ print_dir (char const *name, char const if (errno != EOVERFLOW) break; } -#ifdef __linux__ - else if (! found_any_entries) - { - /* If readdir finds no directory entries at all, not even "." or - "..", then double check that the directory exists. */ - if (syscall (SYS_getdents, dirfd (dirp), NULL, 0) == -1 - && errno != EINVAL) - { - /* We exclude EINVAL as that pertains to buffer handling, - and we've passed NULL as the buffer for simplicity. - ENOENT is returned if appropriate before buffer handling. */ - file_failure (command_line_arg, _("reading directory %s"), name); - } - break; - } -#endif else break; Index: tests/ls/removed-directory.sh =================================================================== --- tests/ls/removed-directory.sh.orig +++ tests/ls/removed-directory.sh @@ -1,7 +1,7 @@ #!/bin/sh -# If ls is asked to list a removed directory (e.g. the parent process's -# current working directory that has been removed by another process), it -# emits an error message. +# If ls is asked to list a removed directory (e.g., the parent process's +# current working directory has been removed by another process), it +# should not emit an error message merely because the directory is removed. # Copyright (C) 2020 Free Software Foundation, Inc. @@ -21,25 +21,14 @@ . "${srcdir=.}/tests/init.sh"; path_prepend_ ./src print_ver_ ls -case $host_triplet in - *linux*) ;; - *) skip_ 'non linux kernel' ;; -esac - -LS_FAILURE=2 - -cat <<\EOF >exp-err || framework_failure_ -ls: reading directory '.': No such file or directory -EOF - cwd=$(pwd) mkdir d || framework_failure_ cd d || framework_failure_ -rmdir ../d || framework_failure_ +rmdir ../d || skip_ "can't remove working directory on this platform" -returns_ $LS_FAILURE ls >../out 2>../err || fail=1 +ls >../out 2>../err || fail=1 cd "$cwd" || framework_failure_ compare /dev/null out || fail=1 -compare exp-err err || fail=1 +compare /dev/null err || fail=1 Exit $fail ++++++ coreutils-remove_hostname_documentation.patch ++++++ --- /var/tmp/diff_new_pack.QaqUOF/_old 2020-03-25 23:41:51.571965401 +0100 +++ /var/tmp/diff_new_pack.QaqUOF/_new 2020-03-25 23:41:51.571965401 +0100 @@ -31,7 +31,7 @@ * hostid invocation:: Print numeric host identifier * uptime invocation:: Print system uptime and load -@@ -15726,7 +15724,6 @@ information. +@@ -15761,7 +15759,6 @@ information. * arch invocation:: Print machine hardware name. * nproc invocation:: Print the number of processors. * uname invocation:: Print system information. @@ -39,7 +39,7 @@ * hostid invocation:: Print numeric host identifier. * uptime invocation:: Print system uptime and load. @end menu -@@ -16588,15 +16585,6 @@ Note this is non-portable (even across G +@@ -16623,15 +16620,6 @@ Note this is non-portable (even across G Print the machine hardware name (sometimes called the hardware class or hardware type). @@ -55,7 +55,7 @@ @item -p @itemx --processor @opindex -p -@@ -16650,34 +16638,6 @@ Print the kernel version. +@@ -16685,34 +16673,6 @@ Print the kernel version. @exitstatus ++++++ coreutils-remove_kill_documentation.patch ++++++ --- /var/tmp/diff_new_pack.QaqUOF/_old 2020-03-25 23:41:51.575965403 +0100 +++ /var/tmp/diff_new_pack.QaqUOF/_new 2020-03-25 23:41:51.579965404 +0100 @@ -33,7 +33,7 @@ Delaying * sleep invocation:: Delay for a specified time -@@ -18054,90 +18048,6 @@ the exit status of @var{command} otherwi +@@ -18089,90 +18083,6 @@ the exit status of @var{command} otherwi @end display ++++++ coreutils-skip-gnulib-test-tls.patch ++++++ --- /var/tmp/diff_new_pack.QaqUOF/_old 2020-03-25 23:41:51.583965405 +0100 +++ /var/tmp/diff_new_pack.QaqUOF/_new 2020-03-25 23:41:51.583965405 +0100 @@ -21,7 +21,7 @@ =================================================================== --- gnulib-tests/gnulib.mk.orig +++ gnulib-tests/gnulib.mk -@@ -2360,9 +2360,10 @@ EXTRA_DIST += test-timespec.c macros.h +@@ -2485,9 +2485,10 @@ EXTRA_DIST += test-timespec.c macros.h ## begin gnulib module tls-tests ++++++ coreutils-tests-shorten-extreme-factor-tests.patch ++++++ --- /var/tmp/diff_new_pack.QaqUOF/_old 2020-03-25 23:41:51.595965409 +0100 +++ /var/tmp/diff_new_pack.QaqUOF/_new 2020-03-25 23:41:51.595965409 +0100 @@ -16,7 +16,7 @@ =================================================================== --- tests/local.mk.orig +++ tests/local.mk -@@ -718,14 +718,9 @@ all_tests = \ +@@ -723,14 +723,9 @@ all_tests = \ # See tests/factor/create-test.sh. tf = tests/factor factor_tests = \ ++++++ coreutils.keyring ++++++ --- /var/tmp/diff_new_pack.QaqUOF/_old 2020-03-25 23:41:51.615965416 +0100 +++ /var/tmp/diff_new_pack.QaqUOF/_new 2020-03-25 23:41:51.615965416 +0100 @@ -372,7 +372,6 @@ -----END PGP PUBLIC KEY BLOCK----- GPG keys of Bob Proulx <rwp> -----BEGIN PGP PUBLIC KEY BLOCK----- -Version: GnuPG v1 mQINBFdggy0BEADFA8M0PxYhQdI9LlkkP3jfkDDsKmyofklaJouGHc3h+IjoXkdJ A1C/UaEjaVLxb4aBm7znZrk44Je88MxidwCTeZwgJje2R397IKW3WtRtIfUz5sH3 @@ -385,43 +384,165 @@ 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 -W1qcD8s= -=eykL +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 +=lMPX -----END PGP PUBLIC KEY BLOCK----- GPG keys of Paul Eggert <eggert>
