From 644a1b81b83fd46e138a88b97a3f74d77f5fb383 Mon Sep 17 00:00:00 2001 From: kth5 Date: Thu, 26 Oct 2023 07:09:04 +0200 Subject: [PATCH] * update coreutils to 9.4-2 --- coreutils/01-fix-fs72253.patch | 92 ------------ coreutils/PKGBUILD | 9 +- .../copy-fix-reflink-auto-fallback.patch | 136 ------------------ coreutils/coreutils-backup-62607.patch | 39 ----- coreutils/gnulib-backupfile-62607.patch | 43 ------ ...37DC12121A5006BC1DB804DF6FD971306037D9.asc | 75 ++++++++++ 6 files changed, 80 insertions(+), 314 deletions(-) delete mode 100644 coreutils/01-fix-fs72253.patch delete mode 100644 coreutils/copy-fix-reflink-auto-fallback.patch delete mode 100644 coreutils/coreutils-backup-62607.patch delete mode 100644 coreutils/gnulib-backupfile-62607.patch create mode 100644 coreutils/keys/pgp/6C37DC12121A5006BC1DB804DF6FD971306037D9.asc diff --git a/coreutils/01-fix-fs72253.patch b/coreutils/01-fix-fs72253.patch deleted file mode 100644 index ad2b068875..0000000000 --- a/coreutils/01-fix-fs72253.patch +++ /dev/null @@ -1,92 +0,0 @@ -From e8b56ebd536e82b15542a00c888109471936bfda Mon Sep 17 00:00:00 2001 -From: =?utf8?q?P=C3=A1draig=20Brady?= -Date: Fri, 24 Sep 2021 20:57:41 +0100 -Subject: [PATCH] chmod: fix exit status when ignoring symlinks - -* src/chmod.c: Reorder enum so CH_NOT_APPLIED -can be treated as a non error. -* tests/chmod/ignore-symlink.sh: A new test. -* tests/local.mk: Reference the new test. -Fixes https://bugs.gnu.org/50784 ---- - src/chmod.c | 4 ++-- - tests/chmod/ignore-symlink.sh | 31 +++++++++++++++++++++++++++++++ - tests/local.mk | 1 + - 4 files changed, 40 insertions(+), 2 deletions(-) - create mode 100755 tests/chmod/ignore-symlink.sh - -diff --git a/src/chmod.c b/src/chmod.c -index 37b04f5..57ac47f 100644 ---- a/src/chmod.c -+++ b/src/chmod.c -@@ -44,8 +44,8 @@ struct change_status - enum - { - CH_NO_STAT, -- CH_NOT_APPLIED, - CH_FAILED, -+ CH_NOT_APPLIED, - CH_NO_CHANGE_REQUESTED, - CH_SUCCEEDED - } -@@ -322,7 +322,7 @@ process_file (FTS *fts, FTSENT *ent) - if ( ! recurse) - fts_set (fts, ent, FTS_SKIP); - -- return CH_NO_CHANGE_REQUESTED <= ch.status; -+ return CH_NOT_APPLIED <= ch.status; - } - - /* Recursively change the modes of the specified FILES (the last entry -diff --git a/tests/chmod/ignore-symlink.sh b/tests/chmod/ignore-symlink.sh -new file mode 100755 -index 0000000..5ce3de8 ---- /dev/null -+++ b/tests/chmod/ignore-symlink.sh -@@ -0,0 +1,31 @@ -+#!/bin/sh -+# Test for proper exit code of chmod on a processed symlink. -+ -+# Copyright (C) 2021 Free Software Foundation, Inc. -+ -+# This program is free software: you can redistribute it and/or modify -+# it under the terms of the GNU General Public License as published by -+# the Free Software Foundation, either version 3 of the License, or -+# (at your option) any later version. -+ -+# This program is distributed in the hope that it will be useful, -+# but WITHOUT ANY WARRANTY; without even the implied warranty of -+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+# GNU General Public License for more details. -+ -+# You should have received a copy of the GNU General Public License -+# along with this program. If not, see . -+ -+. "${srcdir=.}/tests/init.sh"; path_prepend_ ./src -+print_ver_ chmod -+ -+mkdir dir || framework_failure_ -+touch dir/f || framework_failure_ -+ln -s f dir/l || framework_failure_ -+ -+# This operation ignores symlinks but should succeed. -+chmod u+w -R dir 2> out || fail=1 -+ -+compare /dev/null out || fail=1 -+ -+Exit $fail -diff --git a/tests/local.mk b/tests/local.mk -index 228d0e3..b5b893f 100644 ---- a/tests/local.mk -+++ b/tests/local.mk -@@ -456,6 +456,7 @@ all_tests = \ - tests/chmod/c-option.sh \ - tests/chmod/equal-x.sh \ - tests/chmod/equals.sh \ -+ tests/chmod/ignore-symlink.sh \ - tests/chmod/inaccessible.sh \ - tests/chmod/octal.sh \ - tests/chmod/setgid.sh \ --- -1.9.1 - diff --git a/coreutils/PKGBUILD b/coreutils/PKGBUILD index d9d753d43a..240a88d78d 100644 --- a/coreutils/PKGBUILD +++ b/coreutils/PKGBUILD @@ -1,20 +1,21 @@ # POWER Maintainer: Alexander Baldeck # Maintainer: Sébastien "Seblu" Luttringer +# Maintainer: Tobias Powalowski # Contributor: Bartłomiej Piotrowski # Contributor: Allan McRae # Contributor: judd pkgname=coreutils -pkgver=9.3 -pkgrel=1 +pkgver=9.4 +pkgrel=2 pkgdesc='The basic file, shell and text manipulation utilities of the GNU operating system' arch=(x86_64 powerpc64le powerpc64 powerpc riscv64) -license=('GPL3') +license=('GPL-3.0-or-later' 'GFDL-1.3-or-later') url='https://www.gnu.org/software/coreutils/' depends=('glibc' 'acl' 'attr' 'gmp' 'libcap' 'openssl') source=("https://ftp.gnu.org/gnu/$pkgname/$pkgname-$pkgver.tar.xz"{,.sig}) validpgpkeys=('6C37DC12121A5006BC1DB804DF6FD971306037D9') # Pádraig Brady -sha256sums=('adbcfcfe899235b71e8768dcf07cd532520b7f54f9a8064843f8d199a904bbaa' +sha256sums=('ea613a4cf44612326e917201bbbcdfbd301de21ffc3b59b6e5c07e040b275e52' 'SKIP') prepare() { diff --git a/coreutils/copy-fix-reflink-auto-fallback.patch b/coreutils/copy-fix-reflink-auto-fallback.patch deleted file mode 100644 index 22ede9b496..0000000000 --- a/coreutils/copy-fix-reflink-auto-fallback.patch +++ /dev/null @@ -1,136 +0,0 @@ -From 093a8b4bfaba60005f14493ce7ef11ed665a0176 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?P=C3=A1draig=20Brady?= -Date: Thu, 23 Mar 2023 13:19:04 +0000 -Subject: copy: fix --reflink=auto to fallback in more cases - -On restricted systems like android or some containers, -FICLONE could return EPERM, EACCES, or ENOTTY, -which would have induced the command to fail to copy -rather than falling back to a more standard copy. - -* src/copy.c (is_terminal_failure): A new function refactored -from handle_clone_fail(). -(is_CLONENOTSUP): Merge in the handling of EACCES, ENOTTY, EPERM -as they also pertain to determination of whether cloning is supported -if we ever use this function in that context. -(handle_clone_fail): Use is_terminal_failure() in all cases, -so that we assume a terminal failure in less errno cases. -* NEWS: Mention the bug fix. -Addresses https://bugs.gnu.org/62404 ---- - NEWS | 8 ++++++++ - src/copy.c | 62 +++++++++++++++++++++++++++++++++++--------------------------- - 2 files changed, 43 insertions(+), 27 deletions(-) - -diff --git a/src/copy.c b/src/copy.c -index 3919787..f8ba058 100644 ---- a/src/copy.c -+++ b/src/copy.c -@@ -278,15 +278,27 @@ create_hole (int fd, char const *name, bool punch_holes, off_t size) - } - - --/* Whether the errno from FICLONE, or copy_file_range -- indicates operation is not supported for this file or file system. */ -+/* Whether the errno indicates the operation is a transient failure. -+ I.e., a failure that would indicate the operation _is_ supported, -+ but has failed in a terminal way. */ -+ -+static bool -+is_terminal_error (int err) -+{ -+ return err == EIO || err == ENOMEM || err == ENOSPC || err == EDQUOT; -+} -+ -+ -+/* Whether the errno from FICLONE, or copy_file_range indicates -+ the operation is not supported/allowed for this file or process. */ - - static bool - is_CLONENOTSUP (int err) - { -- return err == ENOSYS || is_ENOTSUP (err) -+ return err == ENOSYS || err == ENOTTY || is_ENOTSUP (err) - || err == EINVAL || err == EBADF -- || err == EXDEV || err == ETXTBSY; -+ || err == EXDEV || err == ETXTBSY -+ || err == EPERM || err == EACCES; - } - - -@@ -339,20 +351,18 @@ sparse_copy (int src_fd, int dest_fd, char **abuf, size_t buf_size, - { - copy_debug.offload = COPY_DEBUG_UNSUPPORTED; - -- if (is_CLONENOTSUP (errno)) -- break; -- -- /* copy_file_range might not be enabled in seccomp filters, -- so retry with a standard copy. EPERM can also occur -- for immutable files, but that would only be in the edge case -- where the file is made immutable after creating/truncating, -+ /* Consider operation unsupported only if no data copied. -+ For example, EPERM could occur if copy_file_range not enabled -+ in seccomp filters, so retry with a standard copy. EPERM can -+ also occur for immutable files, but that would only be in the -+ edge case where the file is made immutable after creating, - in which case the (more accurate) error is still shown. */ -- if (errno == EPERM && *total_n_read == 0) -+ if (*total_n_read == 0 && is_CLONENOTSUP (errno)) - break; - - /* ENOENT was seen sometimes across CIFS shares, resulting in - no data being copied, but subsequent standard copies succeed. */ -- if (errno == ENOENT && *total_n_read == 0) -+ if (*total_n_read == 0 && errno == ENOENT) - break; - - if (errno == EINTR) -@@ -1172,17 +1182,15 @@ handle_clone_fail (int dst_dirfd, char const* dst_relname, - char const* src_name, char const* dst_name, - int dest_desc, bool new_dst, enum Reflink_type reflink_mode) - { -- /* If the clone operation is creating the destination, -- then don't try and cater for all non transient file system errors, -- and instead only cater for specific transient errors. */ -- bool transient_failure; -- if (dest_desc < 0) /* currently for fclonefileat(). */ -- transient_failure = errno == EIO || errno == ENOMEM -- || errno == ENOSPC || errno == EDQUOT; -- else /* currently for FICLONE. */ -- transient_failure = ! is_CLONENOTSUP (errno); -- -- if (reflink_mode == REFLINK_ALWAYS || transient_failure) -+ /* When the clone operation fails, report failure only with errno values -+ known to mean trouble when the clone is supported and called properly. -+ Do not report failure merely because !is_CLONENOTSUP (errno), -+ as systems may yield oddball errno values here with FICLONE. -+ Also is_CLONENOTSUP() is not appropriate for the range of errnos -+ possible from fclonefileat(), so it's more consistent to avoid. */ -+ bool report_failure = is_terminal_error (errno); -+ -+ if (reflink_mode == REFLINK_ALWAYS || report_failure) - error (0, errno, _("failed to clone %s from %s"), - quoteaf_n (0, dst_name), quoteaf_n (1, src_name)); - -@@ -1190,14 +1198,14 @@ handle_clone_fail (int dst_dirfd, char const* dst_relname, - but cloned no data. */ - if (new_dst /* currently not for fclonefileat(). */ - && reflink_mode == REFLINK_ALWAYS -- && ((! transient_failure) || lseek (dest_desc, 0, SEEK_END) == 0) -+ && ((! report_failure) || lseek (dest_desc, 0, SEEK_END) == 0) - && unlinkat (dst_dirfd, dst_relname, 0) != 0 && errno != ENOENT) - error (0, errno, _("cannot remove %s"), quoteaf (dst_name)); - -- if (! transient_failure) -+ if (! report_failure) - copy_debug.reflink = COPY_DEBUG_UNSUPPORTED; - -- if (reflink_mode == REFLINK_ALWAYS || transient_failure) -+ if (reflink_mode == REFLINK_ALWAYS || report_failure) - return false; - - return true; --- -cgit v1.1 - diff --git a/coreutils/coreutils-backup-62607.patch b/coreutils/coreutils-backup-62607.patch deleted file mode 100644 index 7d39aa5e6a..0000000000 --- a/coreutils/coreutils-backup-62607.patch +++ /dev/null @@ -1,39 +0,0 @@ -From 1a80fab339d52db7e284b4f2f41068d5d8dd7e4e Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?P=C3=A1draig=20Brady?= -Date: Mon, 3 Apr 2023 18:12:33 +0100 -Subject: [PATCH] tests: cp: test --backup with subdirectories - -* tests/cp/backup-dir.sh: Add a test to ensure -we rename appropriately when backing up through subdirs. -* NEWS: Mention the bug fix. -Addresses https://bugs.gnu.org/62607 ---- - NEWS | 5 +++++ - tests/cp/backup-dir.sh | 8 +++++++- - 2 files changed, 12 insertions(+), 1 deletion(-) - -diff --git a/tests/cp/backup-dir.sh b/tests/cp/backup-dir.sh -index 6573d58e0..5c17498cf 100755 ---- a/tests/cp/backup-dir.sh -+++ b/tests/cp/backup-dir.sh -@@ -1,5 +1,5 @@ - #!/bin/sh --# Ensure that cp -b doesn't back up directories. -+# Ensure that cp -b handles directories appropriately - - # Copyright (C) 2006-2023 Free Software Foundation, Inc. - -@@ -29,4 +29,10 @@ cp -ab x y || fail=1 - test -d y/x || fail=1 - test -d y/x~ && fail=1 - -+# Bug 62607. -+# This would fail to backup using rename, and thus fail to replace the file -+mkdir -p {src,dst}/foo || framework_failure_ -+touch {src,dst}/foo/bar || framework_failure_ -+cp --recursive --backup src/* dst || fail=1 -+ - Exit $fail --- -2.26.2 - diff --git a/coreutils/gnulib-backupfile-62607.patch b/coreutils/gnulib-backupfile-62607.patch deleted file mode 100644 index 53f281269d..0000000000 --- a/coreutils/gnulib-backupfile-62607.patch +++ /dev/null @@ -1,43 +0,0 @@ -From 418aa564ebff70c1d118a5d3307a6d0b147ff7a2 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?P=C3=A1draig=20Brady?= -Date: Mon, 3 Apr 2023 18:06:22 +0100 -Subject: [PATCH] backupfile: fix bug when renaming from subdirectory - -* lib/backupfile.c (backup_internal): Ensure we use the -appropriate offset if operating on a subdirectory, -i.e., on an updated sdir. -Fixes https://bugs.gnu.org/62607 ---- - ChangeLog | 8 ++++++++ - lib/backupfile.c | 7 ++++--- - 2 files changed, 12 insertions(+), 3 deletions(-) - -diff --git a/lib/backupfile.c b/lib/backupfile.c -index 9cca271343..5bcf924414 100644 ---- a/lib/backupfile.c -+++ b/lib/backupfile.c -@@ -331,7 +331,7 @@ backupfile_internal (int dir_fd, char const *file, - return s; - - DIR *dirp = NULL; -- int sdir = dir_fd; -+ int sdir = -1; - idx_t base_max = 0; - while (true) - { -@@ -370,9 +370,10 @@ backupfile_internal (int dir_fd, char const *file, - if (! rename) - break; - -- idx_t offset = backup_type == simple_backups ? 0 : base_offset; -+ dir_fd = sdir < 0 ? dir_fd : sdir; -+ idx_t offset = sdir < 0 ? 0 : base_offset; - unsigned flags = backup_type == simple_backups ? 0 : RENAME_NOREPLACE; -- if (renameatu (sdir, file + offset, sdir, s + offset, flags) == 0) -+ if (renameatu (dir_fd, file + offset, dir_fd, s + offset, flags) == 0) - break; - int e = errno; - if (! (e == EEXIST && extended)) --- -2.26.2 - diff --git a/coreutils/keys/pgp/6C37DC12121A5006BC1DB804DF6FD971306037D9.asc b/coreutils/keys/pgp/6C37DC12121A5006BC1DB804DF6FD971306037D9.asc new file mode 100644 index 0000000000..241f2ce0fd --- /dev/null +++ b/coreutils/keys/pgp/6C37DC12121A5006BC1DB804DF6FD971306037D9.asc @@ -0,0 +1,75 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- + +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 +=HaQo +-----END PGP PUBLIC KEY BLOCK-----