diff mbox series

[2/2] coreutils: upgrade 9.9 -> 9.10

Message ID 20260219191220.460166-2-Randy.MacLeod@windriver.com
State New
Headers show
Series [1/2] coreutils: kill and uptime are no longer installed | expand

Commit Message

Randy MacLeod Feb. 19, 2026, 7:12 p.m. UTC
From: Randy MacLeod <Randy.MacLeod@windriver.com>

From:
   https://lists.gnu.org/archive/html/coreutils-announce/2026-02/msg00000.html

Notable changes include:
- Options in man pages link directly into the full web docs
- timeout(1) now kills the command for all terminating signals
- paste(1) is now multi-byte character aware
- cp(1) fixes an unlikely infinite loop introduced in v9.9
- The multi-call binary is 3.2% smaller

Drop the 2 backported patches which are now part of 9.10.

License-Update: copyright years refreshed

For ptests, also install coreutils.texi which is used for a new test that ensures
there is an anchor for each --help option for all of coreutils' programs. See:
   https://cgit.git.savannah.gnu.org/cgit/coreutils.git/commit/?h=v9.10&id=77e6b5d8f8d1ebc3125d6585a266a912a1123791

+---------+--------+-------+------+------+
| Version | Libc   | TOTAL | PASS | SKIP |
+---------+--------+-------+------+------+
| 9.10    | glibc  |  705  |  543 |  162 |
| 9.9     | glibc  |  683  |  527 |  156 |
+---------+--------+-------+------+------+
| diff    | glibc  |   22  |   16 |    6 |
+---------+--------+-------+------+------+
| 9.10    | musl   |  703  |  544 |  159 |
| 9.10    | musl   |  681  |  529 |  152 |
+---------+--------+-------+------+------+
| diff    | musl   |   22  |   15 |    7 |
+---------+--------+-------+------+------+

Most of the skipped tests are due to being "very expensive" according to the coreutils developers.
The other skipped tests need strace, gdb, etc or locale dependencies which has not yet been added.

Signed-off-by: Randy MacLeod <Randy.MacLeod@windriver.com>
---
 .../coreutils/0001-fix-lseek-copy-loop.patch  | 35 -----------
 .../coreutils/0002-fix-lseek-copy-loop.patch  | 58 -------------------
 .../{coreutils_9.9.bb => coreutils_9.10.bb}   |  7 +--
 3 files changed, 3 insertions(+), 97 deletions(-)
 delete mode 100644 meta/recipes-core/coreutils/coreutils/0001-fix-lseek-copy-loop.patch
 delete mode 100644 meta/recipes-core/coreutils/coreutils/0002-fix-lseek-copy-loop.patch
 rename meta/recipes-core/coreutils/{coreutils_9.9.bb => coreutils_9.10.bb} (97%)
diff mbox series

Patch

diff --git a/meta/recipes-core/coreutils/coreutils/0001-fix-lseek-copy-loop.patch b/meta/recipes-core/coreutils/coreutils/0001-fix-lseek-copy-loop.patch
deleted file mode 100644
index 04380a575f..0000000000
--- a/meta/recipes-core/coreutils/coreutils/0001-fix-lseek-copy-loop.patch
+++ /dev/null
@@ -1,35 +0,0 @@ 
-From bd528f923482223649aa84be7d131e69356149da Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?P=C3=A1draig=20Brady?= <P@draigBrady.com>
-Date: Sun, 4 Jan 2026 12:45:46 +0000
-Subject: [PATCH] copy: fix possible infinite loop with SEEK_HOLE
-
-Commit v9.8-95-g4c0cf3864 intended to initialize
-ext_start to src_pos, as was described at:
-https://lists.gnu.org/r/coreutils/2025-11/msg00035.html
-However ipos was inadvertently used, which is only
-valid the first time through the loop.
-
-* src/copy-file-data.c (lseek_copy): Use scan_inference->hole_start
-only with the initial offset passed to lseek_copy().
-* NEWS: Mention the bug fix.
-Reported at https://github.com/coreutils/coreutils/issues/159
-
-Upstream-Status: Backport [commit bd528f923482223649aa84be7d131e69356149da]
-  - Removed changes to NEWS as they don't apply.
-
-Signed-off-by: Paul Barker <paul@pbarker.dev>
----
-
-diff --git a/src/copy-file-data.c b/src/copy-file-data.c
-index 927a6e0480..56b669fe72 100644
---- a/src/copy-file-data.c
-+++ b/src/copy-file-data.c
-@@ -338,7 +338,7 @@ lseek_copy (int src_fd, int dest_fd, char **abuf, idx_t buf_size,
-   for (off_t ext_start = scan_inference->ext_start;
-        0 <= ext_start && ext_start < max_ipos; )
-     {
--      off_t ext_end = (ext_start == ipos
-+      off_t ext_end = (ext_start == src_pos
-                        ? scan_inference->hole_start
-                        : lseek (src_fd, ext_start, SEEK_HOLE));
-       if (0 <= ext_end)
diff --git a/meta/recipes-core/coreutils/coreutils/0002-fix-lseek-copy-loop.patch b/meta/recipes-core/coreutils/coreutils/0002-fix-lseek-copy-loop.patch
deleted file mode 100644
index f247b6412d..0000000000
--- a/meta/recipes-core/coreutils/coreutils/0002-fix-lseek-copy-loop.patch
+++ /dev/null
@@ -1,58 +0,0 @@ 
-From 33bc44e1ba3aa4c70f3cd16aa9c41331543986dd Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?P=C3=A1draig=20Brady?= <P@draigBrady.com>
-Date: Mon, 5 Jan 2026 14:46:33 +0000
-Subject: [PATCH] copy: protect against infinite loop due to pathological race
-
-Consider:
-
-1. In infer_scantype():
-    - SEEK_DATA returns 0
-      - hole punched at 0
-    - SEEK_HOLE returns 0 (now a hole)
-    - Cache scan_inference->hole_start = 0
-2. In lseek_copy():
-      - data written at 0
-    - ext_start = 0, use cached hole_start = 0
-    - ext_len = 0
-    - now loop doesn't progress
-
-* src/copy-file-data.c (lseek_copy): Apply a more defensive check
-to ensure we only use the cached offsets in SCAN_INFERENCE once.
-This protects against an infinite loop where an extent (at SRC_POS)
-flip flops between data and hole extent while infer_scantype()
-and lseek_copy() are inspecting it.  I.e. ensure we use SEEK_HOLE
-to progress the copy.
-
-Upstream-Status: Backport [commit 33bc44e1ba3aa4c70f3cd16aa9c41331543986dd]
-Signed-off-by: Paul Barker <paul@pbarker.dev>
----
- src/copy-file-data.c | 13 ++++++++++---
- 1 file changed, 10 insertions(+), 3 deletions(-)
-
-diff --git a/src/copy-file-data.c b/src/copy-file-data.c
-index 56b669fe72..9bc4311af4 100644
---- a/src/copy-file-data.c
-+++ b/src/copy-file-data.c
-@@ -335,12 +335,19 @@ lseek_copy (int src_fd, int dest_fd, char **abuf, idx_t buf_size,
- 
-   debug->sparse_detection = COPY_DEBUG_EXTERNAL;
- 
-+  bool used_scan_inference = false;
-+
-   for (off_t ext_start = scan_inference->ext_start;
-        0 <= ext_start && ext_start < max_ipos; )
-     {
--      off_t ext_end = (ext_start == src_pos
--                       ? scan_inference->hole_start
--                       : lseek (src_fd, ext_start, SEEK_HOLE));
-+      off_t ext_end;
-+      if (ext_start == src_pos && ! used_scan_inference)
-+        {
-+          ext_end = scan_inference->hole_start;
-+          used_scan_inference = true;
-+        }
-+      else
-+        ext_end = lseek (src_fd, ext_start, SEEK_HOLE);
-       if (0 <= ext_end)
-         ext_end = MIN (ext_end, max_ipos);
-       else
diff --git a/meta/recipes-core/coreutils/coreutils_9.9.bb b/meta/recipes-core/coreutils/coreutils_9.10.bb
similarity index 97%
rename from meta/recipes-core/coreutils/coreutils_9.9.bb
rename to meta/recipes-core/coreutils/coreutils_9.10.bb
index 1a017cb0bb..984c5b5292 100644
--- a/meta/recipes-core/coreutils/coreutils_9.9.bb
+++ b/meta/recipes-core/coreutils/coreutils_9.10.bb
@@ -6,7 +6,7 @@  HOMEPAGE = "http://www.gnu.org/software/coreutils/"
 BUGTRACKER = "http://debbugs.gnu.org/coreutils"
 LICENSE = "GPL-3.0-or-later"
 LIC_FILES_CHKSUM = "file://COPYING;md5=1ebbd3e34237af26da5dc08a4e440464 \
-                    file://src/ls.c;beginline=1;endline=15;md5=824c1997414aea9f344747bd81cf5a31 \
+                    file://src/ls.c;beginline=1;endline=15;md5=f3bf23485dbd07e6c14bd74401b744c6\
                     "
 DEPENDS = "gmp libcap"
 DEPENDS:class-native = ""
@@ -15,11 +15,9 @@  inherit autotools gettext texinfo
 
 SRC_URI = "${GNU_MIRROR}/coreutils/${BP}.tar.xz \
            file://remove-usr-local-lib-from-m4.patch \
-           file://0001-fix-lseek-copy-loop.patch \
-           file://0002-fix-lseek-copy-loop.patch \
            file://run-ptest \
            "
-SRC_URI[sha256sum] = "19bcb6ca867183c57d77155eae946c5eced88183143b45ca51ad7d26c628ca75"
+SRC_URI[sha256sum] = "16535a9adf0b10037364e2d612aad3d9f4eca3a344949ced74d12faf4bd51d25"
 
 # http://git.savannah.gnu.org/cgit/coreutils.git/commit/?id=v8.27-101-gf5d7c0842
 #
@@ -179,6 +177,7 @@  do_install_ptest () {
     cp -r ${S}/tests/* ${D}${PTEST_PATH}/tests
     install -d ${D}${PTEST_PATH}/build-aux
     install ${S}/build-aux/test-driver ${D}${PTEST_PATH}/build-aux/
+    install -Dm 0644 ${S}/doc/coreutils.texi ${D}${PTEST_PATH}/doc/coreutils.texi
     install -Dm 0644 ${B}/lib/config.h ${D}${PTEST_PATH}/lib/config.h
     cp ${B}/Makefile ${D}${PTEST_PATH}/
     cp ${S}/init.cfg ${D}${PTEST_PATH}/