Compare commits

..

27 commits

Author SHA1 Message Date
Kamil Dudka
9b5374de00 new snapshot available: coreutils-9.0.209-87d5c 2022-04-14 12:27:34 +02:00
Kamil Dudka
605cad7f69 Revert "add upstream patch to fix tests/misc/printf-mb.sh"
This reverts commit 3483a527ec.
2022-04-14 12:15:36 +02:00
Kamil Dudka
3483a527ec add upstream patch to fix tests/misc/printf-mb.sh 2022-04-11 15:42:29 +02:00
Kamil Dudka
5bf61ea697 new snapshot available: coreutils-9.0.193-54bec 2022-04-11 15:18:26 +02:00
Kamil Dudka
4b130ffaeb new snapshot available: coreutils-8.31.99-f2034 2020-03-03 10:39:25 +01:00
Kamil Dudka
765ae080a9 adapt i18n patch for the new release 2020-02-28 15:39:02 +01:00
Kamil Dudka
6c0c8d1c59 adapt DIR_COLORS patch for the new release
... and make it easier to maintain (by using sed for substitutions).
2020-02-28 15:25:43 +01:00
Kamil Dudka
b16ef99111 new snapshot available: coreutils-8.31.90-cc4c 2020-02-28 15:05:29 +01:00
Kamil Dudka
5e3889262b Merge branch 'master' into private-kdudka-coreutils-next 2020-02-28 15:01:12 +01:00
Kamil Dudka
50e3cfa826 new snapshot available: coreutils-8.30.87-66e2d 2019-03-07 13:17:39 +01:00
Kamil Dudka
d7513b90bb new snapshot available: coreutils-8.30.79-efa3e 2019-03-04 15:45:21 +01:00
Kamil Dudka
84a3b7e7d7 Merge branch 'master' into private-kdudka-coreutils-next 2019-03-04 15:29:01 +01:00
Kamil Dudka
4cd6ca50da coreutils-i18n-cut-old.patch: fix regression on 32bit arches 2018-06-27 15:07:04 +02:00
Kamil Dudka
eba1b50d9f adapt patches that no longer applied 2018-06-27 12:40:31 +02:00
Kamil Dudka
d316fd4d16 remove patches applied upstream 2018-06-27 12:40:31 +02:00
Kamil Dudka
3090b48886 Merge branch 'master' into private-kdudka-coreutils-next
update to the latest prerelease of coreutils-8.30
2018-06-27 12:40:18 +02:00
Kamil Dudka
da2300ff3b add BR for hostname
... to avoid the following build-time message:

./configure: line 7463: hostname: command not found
2017-12-21 18:02:36 +01:00
Kamil Dudka
f6571686fb update to coreutils-8.28.61-70c84 2017-12-21 17:49:57 +01:00
Kamil Dudka
d76f8c142d Merge remote-tracking branch 'origin' into private-kdudka-coreutils-next 2017-12-21 17:41:50 +01:00
Kamil Dudka
25549a0eef new snapshot available: coreutils-8.27.108-2ba96 2017-08-31 09:50:50 +02:00
Kamil Dudka
ece6cca509 new snapshot available: coreutils-8.27.103-db8d1 2017-08-30 11:36:01 +02:00
Kamil Dudka
e70cc2139f avoid test-suite failure if SELinux is disabled 2017-08-29 17:37:11 +02:00
Kamil Dudka
222189181e enable libseccomp [EXPERIMENTAL] 2017-08-29 14:58:03 +02:00
Kamil Dudka
c8beeadadb rebase patches on top of upstream 2017-08-29 14:58:03 +02:00
Kamil Dudka
1abe689c6a Merge branch 'master' into private-kdudka-coreutils-next 2017-08-29 14:24:40 +02:00
Kamil Dudka
359af8d751 sources: use SHA512 to make Koji work 2017-03-02 12:06:13 +01:00
Kamil Dudka
9de25cd8c5 new upstream snapshot 8.26.57-00381 2017-03-02 11:48:27 +01:00
24 changed files with 2600 additions and 1164 deletions

2
.gitignore vendored
View file

@ -1,2 +1,2 @@
/coreutils-[0-9.]*.tar.xz
/coreutils-[0-9.]*.tar.xz.sig
/coreutils-ss.tar.xz

View file

@ -0,0 +1,44 @@
src/uname.c | 16 +++++++++++++++-
1 file changed, 15 insertions(+), 1 deletion(-)
diff --git a/src/uname.c b/src/uname.c
index 6371ca2..1ad8fd7 100644
--- a/src/uname.c
+++ b/src/uname.c
@@ -322,6 +322,12 @@ main (int argc, char **argv)
# elif defined __ppc__ || defined __ppc64__
element = "powerpc";
# endif
+#else
+ {
+ static struct utsname u;
+ uname(&u);
+ element = u.machine;
+ }
#endif
#if HAVE_SYSINFO && defined SI_ARCHITECTURE
if (element == unknown)
@@ -347,7 +353,7 @@ main (int argc, char **argv)
if (toprint & PRINT_HARDWARE_PLATFORM)
{
- char const *element = unknown;
+ char *element = unknown;
#if HAVE_SYSINFO && defined SI_PLATFORM
{
static char hardware_platform[257];
@@ -355,6 +361,14 @@ main (int argc, char **argv)
hardware_platform, sizeof hardware_platform))
element = hardware_platform;
}
+#else
+ {
+ static struct utsname u;
+ uname(&u);
+ element = u.machine;
+ if(strlen(element)==4 && element[0]=='i' && element[2]=='8' && element[3]=='6')
+ element[1]='3';
+ }
#endif
#ifdef UNAME_HARDWARE_PLATFORM
if (element == unknown)

View file

@ -1,4 +1,4 @@
From bca11e30e8a6281a8cbddc9fb196dd86ab09c955 Mon Sep 17 00:00:00 2001
From c7b13f5e1a7ad012c510a8bdd5a8943ab4b55833 Mon Sep 17 00:00:00 2001
From: Kamil Dudka <kdudka@redhat.com>
Date: Fri, 17 Jun 2016 16:58:18 +0200
Subject: [PATCH] downstream changes to default DIR_COLORS
@ -9,61 +9,61 @@ Subject: [PATCH] downstream changes to default DIR_COLORS
2 files changed, 23 insertions(+), 7 deletions(-)
diff --git a/DIR_COLORS b/DIR_COLORS
index 540f6cd..b4785b6 100644
index b465771..ad42b09 100644
--- a/DIR_COLORS
+++ b/DIR_COLORS
@@ -1,3 +1,7 @@
+# This file goes in the /etc directory, and must be world readable.
+# You can override the system defaults by making a copy of this file
+# as ~/.dir_colors
+# You can copy this file to .dir_colors in your $HOME directory to override
+# the system defaults.
+
# Configuration file for dircolors, a utility to help you set the
# LS_COLORS environment variable used by GNU ls with the --color option.
@@ -11,6 +15,9 @@
@@ -10,6 +14,9 @@
# Global config options can be specified before TERM or COLORTERM entries
+# For compatibility, the pattern "^COLOR.*none" is recognized as a way to
+# disable colorization. See https://bugzilla.redhat.com/1349579 for details.
+
# ===================================================================
# Terminal filters
# ===================================================================
@@ -70,7 +77,7 @@ DOOR 01;35 # door
# Below are TERM or COLORTERM entries, which can be glob patterns, which
# restrict following config to systems with matching environment variables.
COLORTERM ?*
@@ -62,7 +69,7 @@ DOOR 01;35 # door
BLK 40;33;01 # block device driver
CHR 40;33;01 # character device driver
ORPHAN 40;31;01 # symlink to nonexistent file, or non-stat'able file ...
-MISSING 00 # ... and the files they point to
+MISSING 01;37;41 # ... and the files they point to
SETUID 37;41 # regular file that is setuid (u+s)
SETGID 30;43 # regular file that is setgid (g+s)
CAPABILITY 00 # regular file with capability (very expensive to lookup)
SETUID 37;41 # file that is setuid (u+s)
SETGID 30;43 # file that is setgid (g+s)
CAPABILITY 00 # file with capability (very expensive to lookup)
diff --git a/DIR_COLORS.lightbgcolor b/DIR_COLORS.lightbgcolor
index e3b0ec3..39a0a4c 100644
index eab6258..1627b63 100644
--- a/DIR_COLORS.lightbgcolor
+++ b/DIR_COLORS.lightbgcolor
@@ -1,3 +1,9 @@
+# Configuration file for the color ls utility - modified for lighter backgrounds
+
+# This file goes in the /etc directory, and must be world readable.
+# You can override the system defaults by making a copy of this file
+# as ~/.dir_colors
+# You can copy this file to .dir_colors in your $HOME directory to override
+# the system defaults.
+
# Configuration file for dircolors, a utility to help you set the
# LS_COLORS environment variable used by GNU ls with the --color option.
@@ -11,6 +17,9 @@
@@ -10,6 +16,9 @@
# Global config options can be specified before TERM or COLORTERM entries
+# For compatibility, the pattern "^COLOR.*none" is recognized as a way to
+# disable colorization. See https://bugzilla.redhat.com/1349579 for details.
+
# ===================================================================
# Terminal filters
# ===================================================================
@@ -60,17 +69,17 @@ TERM xterm*
# Below are TERM or COLORTERM entries, which can be glob patterns, which
# restrict following config to systems with matching environment variables.
COLORTERM ?*
@@ -52,17 +61,17 @@ TERM xterm*
#NORMAL 00 # no color code at all
#FILE 00 # regular file: use no color at all
RESET 0 # reset to "normal" color
@ -83,18 +83,18 @@ index e3b0ec3..39a0a4c 100644
ORPHAN 40;31;01 # symlink to nonexistent file, or non-stat'able file ...
-MISSING 00 # ... and the files they point to
+MISSING 01;37;41 # ... and the files they point to
SETUID 37;41 # regular file that is setuid (u+s)
SETGID 30;43 # regular file that is setgid (g+s)
CAPABILITY 00 # regular file with capability (very expensive to lookup)
@@ -79,7 +88,7 @@ OTHER_WRITABLE 34;42 # dir that is other-writable (o+w) and not sticky
SETUID 37;41 # file that is setuid (u+s)
SETGID 30;43 # file that is setgid (g+s)
CAPABILITY 00 # file with capability (very expensive to lookup)
@@ -71,7 +80,7 @@ OTHER_WRITABLE 34;42 # dir that is other-writable (o+w) and not sticky
STICKY 37;44 # dir with the sticky bit set (+t) and not other-writable
# This is for regular files with execute permission:
# This is for files with execute permission:
-EXEC 01;32
+EXEC 00;32
# ===================================================================
# File extension attributes
# List any file extensions like '.gz' or '.tar' that you would like ls
# to color below. Put the extension, a space, and the color init string.
--
2.49.0
2.34.1

View file

@ -0,0 +1,13 @@
diff --git a/doc/coreutils.texi b/doc/coreutils.texi
index 400e135..47e4480 100644
--- a/doc/coreutils.texi
+++ b/doc/coreutils.texi
@@ -10829,6 +10829,8 @@ incorrect. @xref{Directory Setuid and Setgid}, for how the
set-user-ID and set-group-ID bits of directories are inherited unless
overridden in this way.
+Note: The @option{--mode},@option{-m} option only applies to the right-most directories listed on the command line. When combined with @option{--parents}, @option{-p} option, any parent directories are created with @samp{u+wx} modified by umask.
+
@item -p
@itemx --parents
@opindex -p

View file

@ -0,0 +1,87 @@
From f4422844dbcd839ce486bcbc15b7bd5b72c9198d Mon Sep 17 00:00:00 2001
From: Rohan Sable <rsable@redhat.com>
Date: Mon, 7 Mar 2022 14:14:13 +0000
Subject: [PATCH 1/2] ls: avoid triggering automounts
statx() has different defaults wrt automounting
compared to stat() or lstat(), so explicitly
set the AT_NO_AUTOMOUNT flag to suppress that behavior,
and avoid unintended operations or potential errors.
* src/ls.c (do_statx): Pass AT_NO_AUTOMOUNT to avoid this behavior.
Fixes https://bugs.gnu.org/54286
Signed-off-by: Rohan Sable <rsable@redhat.com>
Upstream-commit: 85c975df2c25bd799370b04bb294e568e001102f
Signed-off-by: Kamil Dudka <kdudka@redhat.com>
---
src/ls.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/ls.c b/src/ls.c
index 1047801..fe0e9f8 100644
--- a/src/ls.c
+++ b/src/ls.c
@@ -1175,7 +1175,7 @@ do_statx (int fd, char const *name, struct stat *st, int flags,
{
struct statx stx;
bool want_btime = mask & STATX_BTIME;
- int ret = statx (fd, name, flags, mask, &stx);
+ int ret = statx (fd, name, flags | AT_NO_AUTOMOUNT, mask, &stx);
if (ret >= 0)
{
statx_to_stat (&stx, st);
--
2.34.1
From 3d227f9e4f3fe806064721e4b9451ee06526bc80 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?P=C3=A1draig=20Brady?= <P@draigBrady.com>
Date: Mon, 7 Mar 2022 23:29:20 +0000
Subject: [PATCH 2/2] stat: only automount with --cached=never
Revert to the default behavior before the introduction of statx().
* src/stat.c (do_stat): Set AT_NO_AUTOMOUNT without --cached=never.
* doc/coreutils.texi (stat invocation): Mention the automount
behavior with --cached=never.
Fixes https://bugs.gnu.org/54287
Upstream-commit: 92cb8427c537f37edd43c5cef1909585201372ab
Signed-off-by: Kamil Dudka <kdudka@redhat.com>
---
doc/coreutils.texi | 1 +
src/stat.c | 3 +++
2 files changed, 4 insertions(+)
diff --git a/doc/coreutils.texi b/doc/coreutils.texi
index 19b535c..0f5c16a 100644
--- a/doc/coreutils.texi
+++ b/doc/coreutils.texi
@@ -12564,6 +12564,7 @@ Always read the already cached attributes if available.
@item never
Always sychronize with the latest file system attributes.
+This also mounts automounted files.
@item default
Leave the caching behavior to the underlying file system.
diff --git a/src/stat.c b/src/stat.c
index 0c34501..803340a 100644
--- a/src/stat.c
+++ b/src/stat.c
@@ -1381,6 +1381,9 @@ do_stat (char const *filename, char const *format, char const *format2)
else if (force_sync)
flags |= AT_STATX_FORCE_SYNC;
+ if (! force_sync)
+ flags |= AT_NO_AUTOMOUNT;
+
fd = statx (fd, pathname, flags, format_to_mask (format), &stx);
if (fd < 0)
{
--
2.34.1

View file

@ -0,0 +1,114 @@
From c76e70637e529481478e26683ebd73c40621c382 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?P=C3=A1draig=20Brady?= <P@draigBrady.com>
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.
* NEWS: Mention the bug fix.
Fixes https://bugs.gnu.org/50784
Upstream-commit: e8b56ebd536e82b15542a00c888109471936bfda
Signed-off-by: Kamil Dudka <kdudka@redhat.com>
---
NEWS | 6 ++++++
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/NEWS b/NEWS
index f2fbcbb..5722a8b 100644
--- a/NEWS
+++ b/NEWS
@@ -143,6 +143,12 @@ GNU coreutils NEWS -*- outline -*-
where avx2 instructions are supported.
A new --debug option will indicate if avx2 is being used.
+** Bug fixes
+
+ chmod -R no longer exits with error status when encountering symlinks.
+ All files would be processed correctly, but the exit status was incorrect.
+ [bug introduced in coreutils-9.0]
+
* Noteworthy changes in release 8.32 (2020-03-05) [stable]
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 <https://www.gnu.org/licenses/>.
+
+. "${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 a76c808..a2164c9 100644
--- a/tests/local.mk
+++ b/tests/local.mk
@@ -458,6 +458,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 \
--
2.31.1

View file

@ -1,28 +0,0 @@
From 95044cb5eaea83d02f768feb5ab79fcf5e6ad782 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?P=C3=A1draig=20Brady?= <P@draigBrady.com>
Date: Mon, 22 Dec 2025 17:12:48 +0000
Subject: [PATCH] tests: avoid false failure due to ulimit on aarch64
* tests/cut/cut-huge-range.sh: Add an extra 1MiB headroom,
which was seen with aarch64.
Reported at https://bugzilla.redhat.com/2424302
Cherry-picked-by: Lukáš Zaoral <lzaoral@redhat.com>
Upstream-commit: 95044cb5eaea83d02f768feb5ab79fcf5e6ad782
---
tests/cut/cut-huge-range.sh | 1 +
1 file changed, 1 insertion(+)
diff --git a/tests/cut/cut-huge-range.sh b/tests/cut/cut-huge-range.sh
index 4bd1b129d8..98d7e8f0b9 100755
--- a/tests/cut/cut-huge-range.sh
+++ b/tests/cut/cut-huge-range.sh
@@ -22,6 +22,7 @@ getlimits_
vm=$(get_min_ulimit_v_ returns_ 0 cut -b1 /dev/null) \
|| skip_ 'shell lacks ulimit, or ASAN enabled'
+vm=$(($vm+1000)) # https://bugzilla.redhat.com/2424302
# Ensure we can cut up to our sentinel value.
# Don't use expr to subtract one,

View file

@ -1,169 +0,0 @@
From 891761bca1aa78336e5b18c121075b6e4696c5d4 Mon Sep 17 00:00:00 2001
From: Paul Eggert <eggert@cs.ucla.edu>
Date: Sun, 23 Nov 2025 00:50:40 -0800
Subject: [PATCH] Port to C23 qualifier-generic fns like strchr
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
This ports Gnulib to strict C23 platforms that reject code
like char *q = strchr (P, 'x'); when P is a pointer to const,
because in C23 strchr is a qualifier-generic function so
strchr (P, 'x') returns char const *.
This patch does not attempt to do the following two things,
which might be useful in the future:
1. When compiling on non-C23 platforms, check user code for
portability to platforms that define qualifier-generic functions.
2. Port Gnulib to platforms that have qualifier-generic functions
not listed in the C23 standard, e.g., strchrnul. I dont know
of any such platforms.
* lib/mbschr.c (mbschr):
* lib/memchr2.c (memchr2):
Port to C23, where functions like strchr are qualifier-generic.
* lib/c++defs.h (_GL_FUNCDECL_SYS_NAME): New macro.
* lib/c++defs.h (_GL_FUNCDECL_SYS):
* lib/stdlib.in.h (bsearch):
Use it, to prevent C23 names like strchr from acting like macros.
* lib/string.in.h (memchr, strchr, strpbrk, strrchr):
Do not #undef when GNULIB_POSIXCHECK is defined, as this could
cause conforming C23 code to fail to conform. Its not clear why
_GL_WARN_ON_USE_CXX; perhaps it was needed but isnt any more?
But for now, limit the removal of #undef to these four functions
where #undeffing is clearly undesirable in C23.
* lib/wchar.in.h (wmemchr): Parenthesize function name in decl,
to prevent it from acting like a macro.
Cherry-picked-by: Lukáš Zaoral <lzaoral@redhat.com>
Upstream-commit: df17f4f37ed3ca373d23ad42eae51122bdb96626
---
lib/c++defs.h | 12 +++++++++++-
lib/mbschr.c | 2 +-
lib/memchr2.c | 2 +-
lib/stdlib.in.h | 6 +++---
lib/string.in.h | 4 ----
lib/wchar.in.h | 2 +-
6 files changed, 17 insertions(+), 11 deletions(-)
diff --git a/lib/c++defs.h b/lib/c++defs.h
index b77979a..7384457 100644
--- a/lib/c++defs.h
+++ b/lib/c++defs.h
@@ -127,6 +127,16 @@
#define _GL_FUNCDECL_RPL_1(rpl_func,rettype,parameters,...) \
_GL_EXTERN_C_FUNC __VA_ARGS__ rettype rpl_func parameters
+/* _GL_FUNCDECL_SYS_NAME (func) expands to plain func if C++, and to
+ parenthsized func otherwise. Parenthesization is needed in C23 if
+ the function is like strchr and so is a qualifier-generic macro
+ that expands to something more complicated. */
+#ifdef __cplusplus
+# define _GL_FUNCDECL_SYS_NAME(func) func
+#else
+# define _GL_FUNCDECL_SYS_NAME(func) (func)
+#endif
+
/* _GL_FUNCDECL_SYS (func, rettype, parameters, [attributes]);
declares the system function, named func, with the given prototype,
consisting of return type, parameters, and attributes.
@@ -139,7 +149,7 @@
_GL_FUNCDECL_SYS (posix_openpt, int, (int flags), _GL_ATTRIBUTE_NODISCARD);
*/
#define _GL_FUNCDECL_SYS(func,rettype,parameters,...) \
- _GL_EXTERN_C_FUNC __VA_ARGS__ rettype func parameters
+ _GL_EXTERN_C_FUNC __VA_ARGS__ rettype _GL_FUNCDECL_SYS_NAME (func) parameters
/* _GL_CXXALIAS_RPL (func, rettype, parameters);
declares a C++ alias called GNULIB_NAMESPACE::func
diff --git a/lib/mbschr.c b/lib/mbschr.c
index c9e14b5..6582134 100644
--- a/lib/mbschr.c
+++ b/lib/mbschr.c
@@ -65,5 +65,5 @@ mbschr (const char *string, int c)
return NULL;
}
else
- return strchr (string, c);
+ return (char *) strchr (string, c);
}
diff --git a/lib/memchr2.c b/lib/memchr2.c
index 7493823..d7724ae 100644
--- a/lib/memchr2.c
+++ b/lib/memchr2.c
@@ -55,7 +55,7 @@ memchr2 (void const *s, int c1_in, int c2_in, size_t n)
c2 = (unsigned char) c2_in;
if (c1 == c2)
- return memchr (s, c1, n);
+ return (void *) memchr (s, c1, n);
/* Handle the first few bytes by reading one byte at a time.
Do this until VOID_PTR is aligned on a longword boundary. */
diff --git a/lib/stdlib.in.h b/lib/stdlib.in.h
index bef0aaa..fd0e1e0 100644
--- a/lib/stdlib.in.h
+++ b/lib/stdlib.in.h
@@ -224,9 +224,9 @@ _GL_INLINE_HEADER_BEGIN
/* Declarations for ISO C N3322. */
#if defined __GNUC__ && __GNUC__ >= 15 && !defined __clang__
-_GL_EXTERN_C void *bsearch (const void *__key,
- const void *__base, size_t __nmemb, size_t __size,
- int (*__compare) (const void *, const void *))
+_GL_EXTERN_C void *_GL_FUNCDECL_SYS_NAME (bsearch)
+ (const void *__key, const void *__base, size_t __nmemb, size_t __size,
+ int (*__compare) (const void *, const void *))
_GL_ATTRIBUTE_NONNULL_IF_NONZERO (2, 3) _GL_ARG_NONNULL ((5));
_GL_EXTERN_C void qsort (void *__base, size_t __nmemb, size_t __size,
int (*__compare) (const void *, const void *))
diff --git a/lib/string.in.h b/lib/string.in.h
index fdcdd21..8b56acf 100644
--- a/lib/string.in.h
+++ b/lib/string.in.h
@@ -409,7 +409,6 @@ _GL_CXXALIASWARN1 (memchr, void const *,
_GL_CXXALIASWARN (memchr);
# endif
#elif defined GNULIB_POSIXCHECK
-# undef memchr
/* Assume memchr is always declared. */
_GL_WARN_ON_USE (memchr, "memchr has platform-specific bugs - "
"use gnulib module memchr for portability" );
@@ -674,7 +673,6 @@ _GL_WARN_ON_USE (stpncpy, "stpncpy is unportable - "
#if defined GNULIB_POSIXCHECK
/* strchr() does not work with multibyte strings if the locale encoding is
GB18030 and the character to be searched is a digit. */
-# undef strchr
/* Assume strchr is always declared. */
_GL_WARN_ON_USE_CXX (strchr,
const char *, char *, (const char *, int),
@@ -981,7 +979,6 @@ _GL_CXXALIASWARN (strpbrk);
Even in this simple case, it does not work with multibyte strings if the
locale encoding is GB18030 and one of the characters to be searched is a
digit. */
-# undef strpbrk
_GL_WARN_ON_USE_CXX (strpbrk,
const char *, char *, (const char *, const char *),
"strpbrk cannot work correctly on character strings "
@@ -1011,7 +1008,6 @@ _GL_WARN_ON_USE (strspn, "strspn cannot work correctly on character strings "
#if defined GNULIB_POSIXCHECK
/* strrchr() does not work with multibyte strings if the locale encoding is
GB18030 and the character to be searched is a digit. */
-# undef strrchr
/* Assume strrchr is always declared. */
_GL_WARN_ON_USE_CXX (strrchr,
const char *, char *, (const char *, int),
diff --git a/lib/wchar.in.h b/lib/wchar.in.h
index ab602a2..6be4515 100644
--- a/lib/wchar.in.h
+++ b/lib/wchar.in.h
@@ -301,7 +301,7 @@ _GL_EXTERN_C int wcsncmp (const wchar_t *__s1, const wchar_t *__s2, size_t __n)
_GL_ATTRIBUTE_NONNULL_IF_NONZERO (1, 3)
_GL_ATTRIBUTE_NONNULL_IF_NONZERO (2, 3);
# ifndef __cplusplus
-_GL_EXTERN_C wchar_t *wmemchr (const wchar_t *__s, wchar_t __wc, size_t __n)
+_GL_EXTERN_C wchar_t *(wmemchr) (const wchar_t *__s, wchar_t __wc, size_t __n)
_GL_ATTRIBUTE_NONNULL_IF_NONZERO (1, 3);
# endif
_GL_EXTERN_C wchar_t *wmemset (wchar_t *__s, wchar_t __wc, size_t __n)
--
2.52.0

View file

@ -1,4 +1,4 @@
From 91be1a584108a6a3d96f64382bbf206c4213b3db Mon Sep 17 00:00:00 2001
From 6e36198f10a2f63b89c89ebb5d5c185b20fb3a63 Mon Sep 17 00:00:00 2001
From: Kamil Dudka <kdudka@redhat.com>
Date: Mon, 29 Mar 2010 17:20:34 +0000
Subject: [PATCH] coreutils-df-direct.patch
@ -11,10 +11,10 @@ Subject: [PATCH] coreutils-df-direct.patch
create mode 100755 tests/df/direct.sh
diff --git a/doc/coreutils.texi b/doc/coreutils.texi
index b420606..0ccb368 100644
index 5b9a597..6810c15 100644
--- a/doc/coreutils.texi
+++ b/doc/coreutils.texi
@@ -12597,6 +12597,13 @@ some systems (notably Solaris), doing this yields more up to date results,
@@ -12074,6 +12074,13 @@ some systems (notably Solaris), doing this yields more up to date results,
but in general this option makes @command{df} much slower, especially when
there are many or very busy file systems.
@ -29,10 +29,10 @@ index b420606..0ccb368 100644
@opindex --total
@cindex grand total of file system size, usage and available space
diff --git a/src/df.c b/src/df.c
index 75e638c..ef9f0a7 100644
index 48025b9..c8efa5b 100644
--- a/src/df.c
+++ b/src/df.c
@@ -121,6 +121,9 @@ static bool print_type;
@@ -125,6 +125,9 @@ static bool print_type;
/* If true, print a grand total at the end. */
static bool print_grand_total;
@ -42,7 +42,7 @@ index 75e638c..ef9f0a7 100644
/* Grand total data. */
static struct fs_usage grand_fsu;
@@ -248,13 +251,15 @@ enum
@@ -252,13 +255,15 @@ enum
NO_SYNC_OPTION = CHAR_MAX + 1,
SYNC_OPTION,
TOTAL_OPTION,
@ -53,16 +53,16 @@ index 75e638c..ef9f0a7 100644
static struct option const long_options[] =
{
{"all", no_argument, nullptr, 'a'},
{"block-size", required_argument, nullptr, 'B'},
+ {"direct", no_argument, nullptr, DIRECT_OPTION},
{"inodes", no_argument, nullptr, 'i'},
{"human-readable", no_argument, nullptr, 'h'},
{"si", no_argument, nullptr, 'H'},
@@ -571,7 +576,10 @@ get_header (void)
for (idx_t col = 0; col < ncolumns; col++)
{"all", no_argument, NULL, 'a'},
{"block-size", required_argument, NULL, 'B'},
+ {"direct", no_argument, NULL, DIRECT_OPTION},
{"inodes", no_argument, NULL, 'i'},
{"human-readable", no_argument, NULL, 'h'},
{"si", no_argument, NULL, 'H'},
@@ -583,7 +588,10 @@ get_header (void)
for (col = 0; col < ncolumns; col++)
{
char *cell;
char *cell = NULL;
- char const *header = _(columns[col]->caption);
+ char const *header = (columns[col]->field == TARGET_FIELD
+ && direct_statfs)?
@ -71,7 +71,7 @@ index 75e638c..ef9f0a7 100644
if (columns[col]->field == SIZE_FIELD
&& (header_mode == DEFAULT_MODE
@@ -1446,6 +1454,17 @@ get_point (char const *point, const struct stat *statp)
@@ -1486,6 +1494,17 @@ get_point (char const *point, const struct stat *statp)
static void
get_entry (char const *name, struct stat const *statp)
{
@ -79,17 +79,17 @@ index 75e638c..ef9f0a7 100644
+ {
+ char *resolved = canonicalize_file_name (name);
+ if (resolved)
+ {
+ get_dev (NULL, resolved, name, NULL, NULL, false, false, NULL, false);
+ free (resolved);
+ return;
+ }
+ {
+ get_dev (NULL, resolved, name, NULL, NULL, false, false, NULL, false);
+ free (resolved);
+ return;
+ }
+ }
+
if ((S_ISBLK (statp->st_mode) || S_ISCHR (statp->st_mode))
&& get_device (name))
return;
@@ -1516,6 +1535,7 @@ or all file systems by default.\n\
@@ -1556,6 +1575,7 @@ or all file systems by default.\n\
-B, --block-size=SIZE scale sizes by SIZE before printing them; e.g.,\n\
'-BM' prints sizes in units of 1,048,576 bytes;\n\
see SIZE format below\n\
@ -97,7 +97,7 @@ index 75e638c..ef9f0a7 100644
-h, --human-readable print sizes in powers of 1024 (e.g., 1023M)\n\
-H, --si print sizes in powers of 1000 (e.g., 1.1G)\n\
"), stdout);
@@ -1610,6 +1630,9 @@ main (int argc, char **argv)
@@ -1646,6 +1666,9 @@ main (int argc, char **argv)
xstrtol_fatal (e, oi, c, long_options, optarg);
}
break;
@ -107,14 +107,14 @@ index 75e638c..ef9f0a7 100644
case 'i':
if (header_mode == OUTPUT_MODE)
{
@@ -1706,6 +1729,13 @@ main (int argc, char **argv)
@@ -1742,6 +1765,13 @@ main (int argc, char **argv)
}
}
+ if (direct_statfs && show_local_fs)
+ {
+ error (0, 0, _("options --direct and --local (-l) are mutually "
+ "exclusive"));
+ "exclusive"));
+ usage (EXIT_FAILURE);
+ }
+
@ -183,5 +183,5 @@ index 0000000..8e4cfb8
+
+Exit $fail
--
2.52.0
2.31.1

View file

@ -0,0 +1,94 @@
diff --git a/lib/getugroups.c b/lib/getugroups.c
index 299bae6..8ece29b 100644
--- a/lib/getugroups.c
+++ b/lib/getugroups.c
@@ -19,6 +19,9 @@
#include <config.h>
+/* We do not need this code if getgrouplist(3) is available. */
+#ifndef HAVE_GETGROUPLIST
+
#include "getugroups.h"
#include <errno.h>
@@ -126,3 +129,4 @@ getugroups (int maxcount, gid_t *grouplist, char const *username,
}
#endif /* HAVE_GRP_H */
+#endif /* have getgrouplist */
diff --git a/lib/mgetgroups.c b/lib/mgetgroups.c
index 76474c2..0a9d221 100644
--- a/lib/mgetgroups.c
+++ b/lib/mgetgroups.c
@@ -31,6 +31,7 @@
#endif
#include "getugroups.h"
+#include "xalloc.h"
#include "xalloc-oversized.h"
/* Work around an incompatibility of OS X 10.11: getgrouplist
@@ -119,9 +120,17 @@ mgetgroups (char const *username, gid_t gid, gid_t **groups)
/* else no username, so fall through and use getgroups. */
#endif
- max_n_groups = (username
- ? getugroups (0, NULL, username, gid)
- : getgroups (0, NULL));
+ if (!username)
+ max_n_groups = getgroups(0, NULL);
+ else
+ {
+#ifdef HAVE_GETGROUPLIST
+ max_n_groups = 0;
+ getgrouplist (username, gid, NULL, &max_n_groups);
+#else
+ max_n_groups = getugroups (0, NULL, username, gid);
+#endif
+ }
/* If we failed to count groups because there is no supplemental
group support, then return an array containing just GID.
@@ -143,10 +152,25 @@ mgetgroups (char const *username, gid_t gid, gid_t **groups)
if (g == NULL)
return -1;
- ng = (username
- ? getugroups (max_n_groups, g, username, gid)
- : getgroups (max_n_groups - (gid != (gid_t) -1),
- g + (gid != (gid_t) -1)));
+ if (!username)
+ ng = getgroups (max_n_groups - (gid != (gid_t)-1), g + (gid != (gid_t)-1));
+ else
+ {
+#ifdef HAVE_GETGROUPLIST
+ int e;
+ ng = max_n_groups;
+ while ((e = getgrouplist (username, gid, g, &ng)) == -1
+ && ng > max_n_groups)
+ {
+ max_n_groups = ng;
+ g = xrealloc (g, max_n_groups * sizeof (GETGROUPS_T));
+ }
+ if (e == -1)
+ ng = -1;
+#else
+ ng = getugroups (max_n_groups, g, username, gid);
+#endif
+ }
if (ng < 0)
{
diff --git a/m4/jm-macros.m4 b/m4/jm-macros.m4
index 62777c7..5180243 100644
--- a/m4/jm-macros.m4
+++ b/m4/jm-macros.m4
@@ -68,6 +68,7 @@ AC_DEFUN([coreutils_MACROS],
fchown
fchmod
ftruncate
+ getgrouplist
iswspace
mkfifo
mbrlen

File diff suppressed because it is too large Load diff

9
coreutils-provides.inc Normal file
View file

@ -0,0 +1,9 @@
Provides: bundled(gnulib)
# make it possible to install the latest available Adobe Reader RPM for Linux
Provides: /bin/cat
Provides: /bin/chmod
Provides: /bin/echo
Provides: /bin/ln
Provides: /bin/rm
Provides: /bin/touch

View file

@ -1,65 +0,0 @@
From 8927d505ecb5334f09c48ef98ef1f464f581d0f7 Mon Sep 17 00:00:00 2001
From: rpm-build <rpm-build>
Date: Tue, 2 Apr 2024 14:11:26 +0100
Subject: [PATCH] coreutils-python3.patch
---
init.cfg | 4 ++--
tests/d_type-check | 2 +-
tests/du/move-dir-while-traversing.sh | 6 +++---
3 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/init.cfg b/init.cfg
index ac05f7b..26d9516 100644
--- a/init.cfg
+++ b/init.cfg
@@ -601,10 +601,10 @@ seek_data_capable_()
# Skip the current test if "." lacks d_type support.
require_dirent_d_type_()
{
- python < /dev/null \
+ python3 < /dev/null \
|| skip_ python missing: assuming no d_type support
- python "$abs_srcdir"/tests/d_type-check \
+ python3 "$abs_srcdir"/tests/d_type-check \
|| skip_ requires d_type support
}
diff --git a/tests/d_type-check b/tests/d_type-check
index 1a2f76f..42d3924 100644
--- a/tests/d_type-check
+++ b/tests/d_type-check
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/python3
# Exit 0 if "." and "./tempfile" have useful d_type information, else 1.
# Intended to exit 0 only on Linux/GNU systems.
import os
diff --git a/tests/du/move-dir-while-traversing.sh b/tests/du/move-dir-while-traversing.sh
index adf482b..cf9214a 100755
--- a/tests/du/move-dir-while-traversing.sh
+++ b/tests/du/move-dir-while-traversing.sh
@@ -21,8 +21,8 @@ print_ver_ du
require_trap_signame_
# We use a python-inotify script, so...
-python -m pyinotify -h > /dev/null \
- || skip_ 'python inotify package not installed'
+python3 -m pyinotify -h > /dev/null \
+ || skip_ 'python3 inotify package not installed'
# Move a directory "up" while du is processing its sub-directories.
# While du is processing a hierarchy .../B/C/D/... this script
@@ -33,7 +33,7 @@ python -m pyinotify -h > /dev/null \
# rename syscall before du finishes processing the subtree under D/.
cat <<'EOF' > inotify-watch-for-dir-access.py
-#!/usr/bin/env python
+#!/usr/bin/env python3
import pyinotify as pn
import os,sys
--
2.51.0

136
coreutils-selinux.patch Normal file
View file

@ -0,0 +1,136 @@
From d70ddb3eb845c494280e7365e2b889242e7e1bb9 Mon Sep 17 00:00:00 2001
From: rpm-build <rpm-build>
Date: Mon, 4 Oct 2021 08:45:53 +0200
Subject: [PATCH] coreutils-selinux.patch
---
doc/coreutils.texi | 5 +++++
man/chcon.x | 2 +-
man/runcon.x | 2 +-
src/cp.c | 16 +++++++++++++++-
src/install.c | 10 ++++++++--
5 files changed, 30 insertions(+), 5 deletions(-)
diff --git a/doc/coreutils.texi b/doc/coreutils.texi
index 6810c15..19b535c 100644
--- a/doc/coreutils.texi
+++ b/doc/coreutils.texi
@@ -8766,6 +8766,11 @@ done
exit $fail
@end example
+@item -c
+@cindex SELinux security context information, preserving
+Preserve SELinux security context of the original files if possible.
+Some file systems don't support storing of SELinux security context.
+
@item --copy-contents
@cindex directories, copying recursively
@cindex copying directories recursively
diff --git a/man/chcon.x b/man/chcon.x
index 8c1ff6f..c84fb96 100644
--- a/man/chcon.x
+++ b/man/chcon.x
@@ -1,4 +1,4 @@
[NAME]
-chcon \- change file security context
+chcon \- change file SELinux security context
[DESCRIPTION]
.\" Add any additional description here
diff --git a/man/runcon.x b/man/runcon.x
index d2df13e..5c5f5d8 100644
--- a/man/runcon.x
+++ b/man/runcon.x
@@ -1,5 +1,5 @@
[NAME]
-runcon \- run command with specified security context
+runcon \- run command with specified SELinux security context
[DESCRIPTION]
Run COMMAND with completely-specified CONTEXT, or with current or
transitioned security context modified by one or more of LEVEL,
diff --git a/src/cp.c b/src/cp.c
index c97a675..89fb8ec 100644
--- a/src/cp.c
+++ b/src/cp.c
@@ -191,6 +191,9 @@ Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY.\n\
additional attributes: context, links, xattr,\
\n\
all\n\
+"), stdout);
+ fputs (_("\
+ -c deprecated, same as --preserve=context\n\
"), stdout);
fputs (_("\
--no-preserve=ATTR_LIST don't preserve the specified attributes\n\
@@ -954,7 +957,7 @@ main (int argc, char **argv)
selinux_enabled = (0 < is_selinux_enabled ());
cp_option_init (&x);
- while ((c = getopt_long (argc, argv, "abdfHilLnprst:uvxPRS:TZ",
+ while ((c = getopt_long (argc, argv, "abcdfHilLnprst:uvxPRS:TZ",
long_opts, NULL))
!= -1)
{
@@ -1002,6 +1005,17 @@ main (int argc, char **argv)
copy_contents = true;
break;
+ case 'c':
+ fprintf (stderr, "%s: warning: option '-c' is deprecated, please use '--preserve=context' instead\n", argv[0]);
+ if ( x.set_security_context ) {
+ (void) fprintf(stderr, "%s: cannot force target context and preserve it\n", argv[0]);
+ exit( 1 );
+ }
+ else if (selinux_enabled) {
+ x.preserve_security_context = true;
+ x.require_preserve_context = true;
+ }
+ break;
case 'd':
x.preserve_links = true;
x.dereference = DEREF_NEVER;
diff --git a/src/install.c b/src/install.c
index c9456fe..2b1bee9 100644
--- a/src/install.c
+++ b/src/install.c
@@ -638,7 +638,7 @@ In the 4th form, create all components of the given DIRECTORY(ies).\n\
-v, --verbose print the name of each directory as it is created\n\
"), stdout);
fputs (_("\
- --preserve-context preserve SELinux security context\n\
+ -P, --preserve-context preserve SELinux security context (-P deprecated)\n\
-Z set SELinux security context of destination\n\
file and each created directory to default type\n\
--context[=CTX] like -Z, or if CTX is specified then set the\n\
@@ -790,7 +790,7 @@ main (int argc, char **argv)
dir_arg = false;
umask (0);
- while ((optc = getopt_long (argc, argv, "bcCsDdg:m:o:pt:TvS:Z", long_options,
+ while ((optc = getopt_long (argc, argv, "bcCsDdg:m:o:pPt:TvS:Z", long_options,
NULL)) != -1)
{
switch (optc)
@@ -851,6 +851,8 @@ main (int argc, char **argv)
no_target_directory = true;
break;
+ case 'P':
+ fprintf (stderr, "%s: warning: option '-P' is deprecated, please use '--preserve-context' instead\n", argv[0]);
case PRESERVE_CONTEXT_OPTION:
if (! selinux_enabled)
{
@@ -858,6 +860,10 @@ main (int argc, char **argv)
"this kernel is not SELinux-enabled"));
break;
}
+ if ( x.set_security_context ) {
+ (void) fprintf(stderr, "%s: cannot force target context and preserve it\n", argv[0]);
+ exit( 1 );
+ }
x.preserve_security_context = true;
use_default_selinux_context = false;
break;
--
2.31.1

16
coreutils-ss.tar.xz.sig Normal file
View file

@ -0,0 +1,16 @@
-----BEGIN PGP SIGNATURE-----
iQIzBAABCAAdFiEEbDfcEhIaUAa8HbgE32/ZcTBgN9kFAmJXLFQACgkQ32/ZcTBg
N9nZHA/9FYyhdcGBRb38sXL9H8eDZVgyyU9n0vosx54C4fkZGLb94yJIKTkdtSJC
buBycS5PGBGZwx1TC7U5dYj9I/WB27ZIdrH4qEHnKLtPfGfDy1en0+JpJle4FWWi
uViW5xxqt33ME+bE7DXZUMimvfQR6uEEkL2UU7hJdWDikf3VgSQJllCViS92zDsg
v9Y4Wz2dvctLaGu4jYd+WRKgJ+N1kliJKDaz6KHKrWEjfFH2ECXYttm21y2fZ3Ib
PZZSHKnSzzw4yyrJFDiLELKEILdsqxVr7Bxbv52ZqBTLsSOW0mjR+LMC5yU/gjMT
DstU38k6L0SSSYh+6T0NCeW0Plxq17fLxDmQa8lfrnbW6rhtGu8eW4FdWa7n7qPC
qwsvRCLxc6Kd4Wpw5qOioyzCzV20bpwsJvvylfn2wnln7Pr0Xb2iEyh2Oi/KWWo5
MiGdW8WR9vLScHSwzMyp8iTnwOZW6IBIfPkq3Nr3ExTz5m4bFPho7tDvHn+/BY3W
XXyJ/QJqyJqtOcC6wR8VK1eWtmgDDBKWDkJn1XTMAVVPmeF7BLH0WLCSpp4vVvQI
U9PKF+y6Gt3yqtoLbFbl5SyAmvH62fyvvoOSozO/evXADTMCZVKUgBywg6zM0yEA
FBM1GTzPoLa9pXStVFmqeT0UKo9YFez5E+m4bGlrbo2VPJh1Zws=
=94MD
-----END PGP SIGNATURE-----

View file

@ -1,16 +1,12 @@
Summary: A set of basic GNU tools commonly used in shell scripts
Name: coreutils
Version: 9.9
Release: 2%{?dist}
# some used parts of gnulib are under various variants of LGPL
License: GPL-3.0-or-later AND GFDL-1.3-no-invariants-or-later AND LGPL-2.1-or-later AND LGPL-3.0-or-later
Version: 9.0
Release: 9999.2%{?dist}
License: GPLv3+
Url: https://www.gnu.org/software/coreutils/
Source0: https://ftp.gnu.org/gnu/%{name}/%{name}-%{version}.tar.xz
Source1: https://ftp.gnu.org/gnu/%{name}/%{name}-%{version}.tar.xz.sig
# From https://savannah.gnu.org/project/release-gpgkeys.php?group=coreutils&download=1
# which is linked as project keyring on https://savannah.gnu.org/projects/coreutils
Source2: coreutils-keyring.gpg
Source0: https://pixelbeat.org/cu/coreutils-ss.tar.xz
Source50: supported_utils
Source51: coreutils-provides.inc
Source105: coreutils-colorls.sh
Source106: coreutils-colorls.csh
@ -21,30 +17,32 @@ Source106: coreutils-colorls.csh
Patch100: coreutils-8.26-test-lock.patch
# require_selinux_(): use selinuxenabled(8) if available
Patch101: coreutils-8.26-selinuxenable.patch
Patch105: coreutils-8.26-selinuxenable.patch
# downstream changes to default DIR_COLORS
Patch102: coreutils-8.32-DIR_COLORS.patch
# use python3 in tests
Patch103: coreutils-python3.patch
# df --direct
# to be removed (#548834)
Patch103: coreutils-8.2-uname-processortype.patch
#df --direct
Patch104: coreutils-df-direct.patch
#add note about mkdir --mode behaviour into info documentation(#610559)
Patch107: coreutils-8.4-mkdir-modenote.patch
# gnulib C23 support
# https://github.com/coreutils/gnulib/commit/df17f4f37ed3ca373d23ad42eae51122bdb96626
Patch105: coreutils-9.9-gnulib-c23.patch
# fix cut test failure on aarch64 rawhide (rhbz#2424302)
# https://github.com/coreutils/coreutils/commit/95044cb5eaea83d02f768feb5ab79fcf5e6ad782
Patch106: coreutils-9.9-fix-cut-test-aarch64.patch
# sh-utils
#add info about TZ envvar to date manpage
Patch703: sh-utils-2.0.11-dateman.patch
# (sb) lin18nux/lsb compliance - multibyte functionality patch
Patch800: coreutils-i18n.patch
Conflicts: filesystem < 3
#getgrouplist() patch from Ulrich Drepper.
Patch908: coreutils-getgrouplist.patch
#SELINUX Patch - implements Redhat changes
#(upstream did some SELinux implementation unlike with RedHat patch)
Patch950: coreutils-selinux.patch
Conflicts: filesystem < 3
# To avoid clobbering installs
Conflicts: coreutils-single
@ -63,40 +61,23 @@ BuildRequires: libselinux-utils
BuildRequires: make
BuildRequires: openssl-devel
BuildRequires: strace
BuildRequires: systemd-devel
BuildRequires: texinfo
# For gpg verification of source tarball
BuildRequires: gnupg2
# test-only dependencies
BuildRequires: acl
BuildRequires: gdb
BuildRequires: perl-interpreter
BuildRequires: perl(FileHandle)
BuildRequires: python3
BuildRequires: tzdata
%ifarch %valgrind_arches
BuildRequires: valgrind
%endif
%if 0%{?fedora}
BuildRequires: perl(Expect)
BuildRequires: python3-inotify
%endif
%if 23 < 0%{?fedora} || 7 < 0%{?rhel}
# needed by i18n test-cases
BuildRequires: glibc-langpack-en
BuildRequires: glibc-langpack-fr
BuildRequires: glibc-langpack-ko
BuildRequires: glibc-langpack-sv
%endif
Requires: %{name}-common = %{version}-%{release}
Provides: coreutils-full = %{version}-%{release}
Provides: bundled(gnulib)
%include %{SOURCE51}
Obsoletes: %{name} < 8.24-100
%description
@ -108,7 +89,7 @@ Summary: coreutils multicall binary
Suggests: coreutils-common
Provides: coreutils = %{version}-%{release}
Provides: coreutils%{?_isa} = %{version}-%{release}
Provides: bundled(gnulib)
%include %{SOURCE51}
# To avoid clobbering installs
Conflicts: coreutils < 8.24-100
# Note RPM doesn't support separate buildroots for %files
@ -125,9 +106,6 @@ packaged as a single multicall binary.
# https://bugzilla.redhat.com/show_bug.cgi?id=1107973#c7
Obsoletes: %{name} < 8.24-100
# Gnulib translations are maintained seprately since coreutils 9.6 (#2393892)
Requires: gnulib-l10n
# info doc refers to "Specifying the Time Zone" from glibc-doc (#959597)
Suggests: glibc-doc
@ -137,8 +115,7 @@ Optional though recommended components,
including documentation and translations.
%prep
%{gpgverify} --keyring='%{SOURCE2}' --signature='%{SOURCE1}' --data='%{SOURCE0}'
%autosetup -N
%autosetup -N -n %{name}-%{version}.209-87d5
# will be regenerated in the build directories
rm -f src/fs.h
@ -162,15 +139,16 @@ sed src/dircolors.hin \
find tests -name '*.sh' -perm 0644 -print -exec chmod 0755 '{}' '+'
(echo "<<< done") 2>/dev/null
# FIXME: Force a newer gettext version to workaround `autoreconf -i` errors
# with coreutils 9.6 and bundled gettext 0.19.2 from gettext-common-devel.
sed -i "s/0.19.2/$(rpm -q --queryformat '%%{VERSION}\n' gettext-devel)/" bootstrap.conf configure.ac
autoreconf -fiv
%build
export CFLAGS="$RPM_OPT_FLAGS -fno-strict-aliasing -fpic"
# disable -flto on ppc64le to make test-float pass (#1789115)
%ifarch ppc64le
CFLAGS="$CFLAGS -fno-lto"
%endif
# Upstream suggests to build with -Dlint for static analyzers:
# https://lists.gnu.org/archive/html/coreutils/2018-06/msg00110.html
# ... and even for production binary RPMs:
@ -199,7 +177,6 @@ for type in separate single; do
--cache-file=../config.cache \
--enable-install-program=arch \
--enable-no-install-program=kill,uptime \
--enable-systemd \
--with-tty-group \
DEFAULT_POSIX2_VERSION=200112 alternative=199209 || :
%make_build all V=1
@ -226,20 +203,14 @@ for type in separate single; do
fi
(cd $type && make DESTDIR=$RPM_BUILD_ROOT/$subdir $install)
%if "%{_sbindir}" != "%{_bindir}"
# chroot was in /usr/sbin :
mkdir -p $RPM_BUILD_ROOT/$subdir/%_sbindir
mkdir -p $RPM_BUILD_ROOT/$subdir/{%{_bindir},%{_sbindir}}
mv $RPM_BUILD_ROOT/$subdir/{%_bindir,%_sbindir}/chroot
%endif
# Move multicall variants to *.single.
# RemovePathPostfixes will strip that later.
if test $type = 'single'; then
for dir in %{_bindir} \
%if "%{_sbindir}" != "%{_bindir}"
%{_sbindir} \
%endif
%{_libexecdir}/%{name}; do
for dir in %{_bindir} %{_sbindir} %{_libexecdir}/%{name}; do
for bin in $RPM_BUILD_ROOT/%{_libexecdir}/%{name}/$dir/*; do
basebin=$(basename $bin)
mv $bin $RPM_BUILD_ROOT/$dir/$basebin.single
@ -267,9 +238,7 @@ rm -f $RPM_BUILD_ROOT%{_infodir}/dir
%files single
%{_bindir}/*.single
%if "%{_sbindir}" != "%{_bindir}"
%{_sbindir}/chroot.single
%endif
%dir %{_libexecdir}/coreutils
%{_libexecdir}/coreutils/*.so.single
# duplicate the license because coreutils-common does not need to be installed
@ -286,271 +255,6 @@ rm -f $RPM_BUILD_ROOT%{_infodir}/dir
%license COPYING
%changelog
* Tue Jan 13 2026 Lukáš Zaoral <lzaoral@redhat.com> - 9.9-2
- fix cut test failure on aarch64 rawhide (rhbz#2424302)
* Wed Nov 26 2025 Lukáš Zaoral <lzaoral@redhat.com> - 9.9-1
- rebase to latest upstream release (rhbz#2413803)
* Mon Sep 29 2025 Lukáš Zaoral <lzaoral@redhat.com> - 9.8-3
- require gnulib-l10n for translations of gnulib messages (rhbz#2393892)
* Thu Sep 25 2025 Lukáš Zaoral <lzaoral@redhat.com> - 9.8-2
- tail: fix tailing larger number of lines in regular files (rhbz#2398008)
* Wed Sep 24 2025 Lukáš Zaoral <lzaoral@redhat.com> - 9.8-1
- rebase to latest upstream release (rhbz#2397467)
- remove downstream patch for selinux options deprecated since 2009
* Wed Jul 23 2025 Fedora Release Engineering <releng@fedoraproject.org> - 9.7-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild
* Mon Jun 30 2025 Lukáš Zaoral <lzaoral@redhat.com> - 9.7-4
- stty: add support for arbitrary baud rates (rhbz#2375439)
* Wed May 28 2025 Lukáš Zaoral <lzaoral@redhat.com> - 9.7-3
- sort: fix buffer under-read (CVE-2025-5278)
* Mon May 19 2025 Lukáš Zaoral <lzaoral@redhat.com> - 9.7-2
- cp/mv: do not fail when copying of trivial NFSv4 ACLs fails (rhbz#2363149)
* Wed Apr 09 2025 Lukáš Zaoral <lzaoral@redhat.com> - 9.7-1
- rebase to latest upstream release (rhbz#2358624)
* Tue Feb 25 2025 Lukáš Zaoral <lzaoral@redhat.com> - 9.6-2
- fix 'who -m' with guessed tty names (rhbz#2343998)
* Mon Jan 20 2025 Lukáš Zaoral <lzaoral@redhat.com> - 9.6-1
- rebase to latest upstream version (rhbz#2338620)
- sync i18n patch with SUSE (Kudos to Berny Völker!)
* Thu Jan 16 2025 Fedora Release Engineering <releng@fedoraproject.org> - 9.5-13
- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
* Sun Jan 12 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 9.5-12
- Rebuilt for the bin-sbin merge (2nd attempt)
* Wed Nov 13 2024 Florian Weimer <fweimer@redhat.com> - 9.5-11
- Affinity mask handling in nproc for large CPU counts (rhbz#2325167)
* Fri Sep 27 2024 Lukáš Zaoral <lzaoral@redhat.com> - 9.5-10
- fix fold -b with UTF8 locale (RHEL-60295)
* Tue Aug 27 2024 Lukáš Zaoral <lzaoral@redhat.com> - 9.5-9
- show web sessions in who output (rhbz#2307847)
* Wed Aug 21 2024 Lukáš Zaoral <lzaoral@redhat.com> - 9.5-8
- add missing systemd-devel buildrequires
* Wed Jul 17 2024 Fedora Release Engineering <releng@fedoraproject.org> - 9.5-7
- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
* Mon Jul 15 2024 Lukáš Zaoral <lzaoral@redhat.com> - 9.5-6
- Rebuilt for the bin-sbin merge
* Mon Jul 15 2024 Sohum Mendon <sohum.mendon@proton.me> - 9.5-5
- fix incorrect exit status when fold is called with a non-existent file
* Tue Jul 09 2024 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 9.5-4
- Rebuilt for the bin-sbin merge
* Thu Jul 04 2024 Lukáš Zaoral <lzaoral@redhat.com> - 9.5-3
- do not buildrequire perl(Expect) on ELN
* Tue Jun 04 2024 Lukáš Zaoral <lzaoral@redhat.com> - 9.5-2
- enable LTO on ppc64le
* Tue Apr 02 2024 Lukáš Zaoral <lzaoral@redhat.com> - 9.5-1
- rebase to latest upstream version (rhbz#2272063)
- sync i18n patch with SUSE (Kudos to Berny Völker!)
- add some test dependencies to execute additional part of the upstream test-suite
* Mon Jan 29 2024 Lukáš Zaoral <lzaoral@redhat.com> - 9.4-6
- fix tail on kernels with 64k page sizes (RHEL-22866)
* Wed Jan 24 2024 Fedora Release Engineering <releng@fedoraproject.org> - 9.4-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
* Fri Jan 19 2024 Fedora Release Engineering <releng@fedoraproject.org> - 9.4-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
* Thu Jan 18 2024 Lukáš Zaoral <lzaoral@redhat.com> - 9.4-3
- fix compilation on i686
* Thu Jan 18 2024 Lukáš Zaoral <lzaoral@redhat.com> - 9.4-2
- fix buffer overflow in split (CVE-2024-0684)
* Fri Sep 15 2023 Lukáš Zaoral <lzaoral@redhat.com> - 9.4-1
- new upstream release 9.4 (#2235759)
- enable integration with systemd
- fix the license field
* Wed Jul 19 2023 Fedora Release Engineering <releng@fedoraproject.org> - 9.3-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
* Tue Apr 18 2023 Kamil Dudka <kdudka@redhat.com> - 9.3-1
- remove obsolete Provides for absolute paths
- new upstream release 9.3
* Tue Apr 11 2023 Lukáš Zaoral <lzaoral@redhat.com> - 9.2-4
- migrate to SPDX license format
* Fri Mar 24 2023 Kamil Dudka <kdudka@redhat.com> - 9.2-3
- copy: fix --reflink=auto to fallback in more cases (#2180056)
- cksum: fix reporting of failed checks (#2180056)
* Wed Mar 22 2023 Kamil Dudka <kdudka@redhat.com> - 9.2-2
- coreutils-getgrouplist.patch: drop a patch no longer needed
* Wed Mar 22 2023 Kamil Dudka <kdudka@redhat.com> - 9.2-1
- new upstream release 9.2
* Thu Jan 19 2023 Fedora Release Engineering <releng@fedoraproject.org>
- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
* Mon Jan 02 2023 Kamil Dudka <kdudka@redhat.com> - 9.1-10
- drop obsolete downstream-only extension of date(1) man page
- undocument downstream SELinux options deprecated since 2009
* Mon Jan 02 2023 Kamil Dudka <kdudka@redhat.com> - 9.1-9
- basic support for checking NFSv4 ACLs (#2137866)
* Mon Sep 19 2022 Kamil Dudka <kdudka@redhat.com> - 9.1-8
- remove obsolete extension of mkdir(1) info documentation
* Tue Aug 23 2022 Kamil Dudka <kdudka@redhat.com> - 9.1-7
- remove non-upstream patch for uname -i/-p (#548834)
* Mon Aug 08 2022 Kamil Dudka <kdudka@redhat.com> - 9.1-6
- improve wording of a comment in /etc/DIR_COLORS (#2112593)
* Mon Aug 08 2022 Kamil Dudka <kdudka@redhat.com> - 9.1-5
- improve handling of control characters in unexpand (#2112870)
* Mon Aug 01 2022 Kamil Dudka <kdudka@redhat.com> - 9.1-4
- prevent unexpand from failing on control characters (#2112870)
* Wed Jul 20 2022 Fedora Release Engineering <releng@fedoraproject.org>
- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
* Sat Apr 23 2022 Pádraig Brady <P@draigBrady.com> - 9.1-2
- make simple backups in correct dir; broken in 9.1
* Tue Apr 19 2022 Kamil Dudka <kdudka@redhat.com> - 9.1-1
- new upstream release 9.1
* Mon Mar 21 2022 Kamil Dudka <kdudka@redhat.com> - 9.0-5
- ls, stat: avoid triggering automounts (#2044981)
* Tue Mar 01 2022 Kamil Dudka <kdudka@redhat.com> - 9.0-4
- make `df --direct` work again (#2058686)
* Wed Jan 19 2022 Fedora Release Engineering <releng@fedoraproject.org>
- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
* Mon Oct 04 2021 Kamil Dudka <kdudka@redhat.com> - 9.0-2
- chmod: fix exit status when ignoring symlinks
* Sun Sep 26 2021 Kamil Dudka <kdudka@redhat.com> - 9.0-1
- new upstream release 9.0
* Tue Sep 14 2021 Sahana Prasad <sahana@redhat.com>
- Rebuilt with OpenSSL 3.0.0
* Wed Jul 21 2021 Fedora Release Engineering <releng@fedoraproject.org>
- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
* Wed Jul 07 2021 Kamil Dudka <kdudka@redhat.com> - 8.32-30
- df: fix duplicated remote entries due to bind mounts (#1979814)
* Thu Jul 01 2021 Kamil Dudka <kdudka@redhat.com> - 8.32-28
- tail: fix stack out-of-bounds write with --follow
* Tue Jun 08 2021 Kamil Dudka <kdudka@redhat.com> - 8.32-27
- mountlist: recognize fuse.portal as dummy file system (#1913358)
* Mon May 17 2021 Kamil Dudka <kdudka@redhat.com> - 8.32-26
- cp: pick additional copy_file_range()-related fixes from upstream
* Mon May 03 2021 Kamil Dudka <kdudka@redhat.com> - 8.32-24
- copy: ensure we enforce --reflink=never (#1956080)
* Tue Apr 27 2021 Kamil Dudka <kdudka@redhat.com> - 8.32-23
- copy: do not refuse to copy a swap file
* Fri Apr 09 2021 Kamil Dudka <kdudka@redhat.com> - 8.32-22
- weaken the dependency on glibc-doc to reduce minimal installations
- drop the last use of ncurses no longer needed (#1830318)
- utimens: fix confusing arg type in internal func
* Fri Mar 26 2021 Kamil Dudka <kdudka@redhat.com> - 8.32-21
- hostname,ln: fix memory leaks detected by Coverity
* Wed Mar 24 2021 Kamil Dudka <kdudka@redhat.com> - 8.32-20
- cp: use copy_file_range if available
* Thu Feb 18 2021 Kamil Dudka <kdudka@redhat.com> - 8.32-19
- stat: add support for the exfat file system (#1921427)
* Wed Feb 03 2021 Kamil Dudka <kdudka@redhat.com> - 8.32-18
- make coreutils-common recommend glibc-doc for info doc refs (#959597)
* Tue Feb 02 2021 Kamil Dudka <kdudka@redhat.com> - 8.32-17
- ls: fix crash printing SELinux context for unstatable files (#1921249)
- split: fix --number=K/N to output correct part of file (#1921246)
- expr: fix invalid read with unmatched \(...\) (#1919775)
* Tue Jan 26 2021 Fedora Release Engineering <releng@fedoraproject.org>
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
* Tue Dec 08 2020 Kamil Dudka <kdudka@redhat.com> - 8.32-15
- rm: do not skip files upon failure to remove an empty dir (#1905481)
* Tue Nov 03 2020 Kamil Dudka <kdudka@redhat.com> - 8.32-14
- df,stat,tail: recognize more file system types
* Wed Oct 14 2020 Kamil Dudka <kdudka@redhat.com> - 8.32-13
- make the %%build section idempotent
* Mon Aug 17 2020 Kamil Dudka <kdudka@redhat.com> - 8.32-12
- do not install /etc/DIR_COLORS.256color (#1830318)
* Thu Jul 30 2020 Kamil Dudka <kdudka@redhat.com> - 8.32-11
- cp: default to --reflink=auto (#1861108)
* Mon Jul 27 2020 Fedora Release Engineering <releng@fedoraproject.org>
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
* Fri Jul 24 2020 Kamil Dudka <kdudka@redhat.com> - 8.32-9
- disable -flto on ppc64le to make test-float pass (#1789115)
* Mon Jul 13 2020 Tom Stellard <tstellar@redhat.com> - 8.32-8
- Use make macros
- https://fedoraproject.org/wiki/Changes/UseMakeBuildInstallMacro
* Fri Jun 26 2020 James Cassell <cyberpear@fedoraproject.org> - 8.32-7
- move ncurses to -common package since it's needed for colorls.sh
- make ncurses optional
* Fri May 15 2020 Kamil Dudka <kdudka@redhat.com> - 8.32-6
- compile with -Dlint to enable optional initialization and cleanup code
* Thu Apr 23 2020 Kamil Dudka <kdudka@redhat.com> - 8.32-5
- du: simplify leaf optimization for XFS (#1823247)
* Fri Apr 17 2020 Tom Stellard <tstellar@redhat.com> - 8.32-4
- Fix missing inline function definition
* Wed Mar 11 2020 Kamil Dudka <kdudka@redhat.com> - 8.32-3
- uniq: remove collation handling as required by newer POSIX
* Mon Mar 09 2020 Kamil Dudka <kdudka@redhat.com> - 8.32-2
- make mknod work again in chroot without /proc being mounted (#1811038)
- ls: restore 8.31 behavior on removed directories
* Thu Mar 05 2020 Kamil Dudka <kdudka@redhat.com> - 8.32-1
- new upstream release 8.32
* Tue Feb 11 2020 Kamil Dudka <kdudka@redhat.com> - 8.31-10
- make upstream test-suite work with root privileges (#1800597)

View file

@ -0,0 +1,12 @@
diff -urNp coreutils-5.97-orig/man/date.x coreutils-5.97/man/date.x
--- coreutils-5.97-orig/man/date.x 1999-11-02 15:07:36.000000000 +0100
+++ coreutils-5.97/man/date.x 2008-10-15 10:13:31.000000000 +0200
@@ -11,3 +11,8 @@ calendar date, time of day, time zone, day of week, relative time,
relative date, and numbers. An empty string indicates the beginning
of the day. The date string format is more complex than is easily
documented here but is fully described in the info documentation.
+[ENVIRONMENT]
+.TP
+TZ
+Specifies the timezone, unless overridden by command line parameters.
+If neither is specified, the setting from /etc/localtime is used.

View file

@ -1,2 +1 @@
SHA512 (coreutils-9.9.tar.xz.sig) = 0a3dfdfa6b4234e2e1d42142269f959bdf3cf8f6605a50270a27eff84dd22588f182121f7dd3eeb04be45f5109d02690215065b3d3b43882874d0e165a1435d0
SHA512 (coreutils-9.9.tar.xz) = e7b0e59f7732d2c098ea4934014f470248bd5c4764210e9200a698010a8e3b95bbb26e543f0cd73ed5a4b8e1f8cda932c73f39954d68175e4deaa47526610c65
SHA512 (coreutils-ss.tar.xz) = 3d51477d0f5a2082dd723974554185c855eea28189875b9b7ce88605db044897b0b8b0244d06ff6eb9f6fee5c2279437539dd8518d5a30d02e824d3a54b51303

View file

@ -0,0 +1,63 @@
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# Makefile of /CoreOS/coreutils/readlink-cannot-handle-recursive-symlink s
# Description: Test for readlink cannot handle recursive symlinks
# Author: Jan Scotka <jscotka@redhat.com>
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# Copyright (c) 2010 Red Hat, Inc. All rights reserved.
#
# This copyrighted material is made available to anyone wishing
# to use, modify, copy, or redistribute it subject to the terms
# and conditions of the GNU General Public License version 2.
#
# 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, write to the Free
# Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
# Boston, MA 02110-1301, USA.
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
export TEST=/CoreOS/coreutils/readlink-cannot-handle-recursive-symlinks
export TESTVERSION=1.0
BUILT_FILES=
FILES=$(METADATA) runtest.sh Makefile PURPOSE
.PHONY: all install download clean
run: $(FILES) build
./runtest.sh
build: $(BUILT_FILES)
chmod a+x runtest.sh
clean:
rm -f *~ $(BUILT_FILES)
include /usr/share/rhts/lib/rhts-make.include
$(METADATA): Makefile
@echo "Owner: Jan Scotka <jscotka@redhat.com>" > $(METADATA)
@echo "Name: $(TEST)" >> $(METADATA)
@echo "TestVersion: $(TESTVERSION)" >> $(METADATA)
@echo "Path: $(TEST_DIR)" >> $(METADATA)
@echo "Description: Test for readlink cannot handle recursive symlinks" >> $(METADATA)
@echo "Type: Sanity" >> $(METADATA)
@echo "TestTime: 5m" >> $(METADATA)
@echo "RunFor: coreutils" >> $(METADATA)
@echo "Requires: coreutils" >> $(METADATA)
@echo "Priority: Normal" >> $(METADATA)
@echo "License: GPLv2" >> $(METADATA)
@echo "Confidential: no" >> $(METADATA)
@echo "Destructive: no" >> $(METADATA)
rhts-lint $(METADATA)

View file

@ -0,0 +1,54 @@
PURPOSE of /CoreOS/coreutils/readlink-cannot-handle-recursive-symlinks
Description: Test for readlink cannot handle recursive symlinks
Author: Jan Scotka <jscotka@redhat.com>
Bug summary: readlink cannot handle recursive symlinks
Description:
Description of problem:
The readlink command fails with an error "Too many levels of symbolic links", even if there are only 2 levels.
The readlink command from RHEL 3 and RHEL 4 and from Fedora 11 all work fine.
Among other changes between RHEL 4 and RHEL 5, RHEL 5's coreutils added calls to cycle_check() in lib/canonicalize.c, but in upstream canonicalize.c (now in gnulib instead of coreutils), we see the comment:
/* Detect loops. We cannot use the cycle-check module here,
since it's actually possible to encounter the same symlink
more than once in a given traversal. However, encountering
the same symlink,NAME pair twice does indicate a loop. */
http://git.savannah.gnu.org/gitweb/?p=gnulib.git;a=blob;f=lib/canonicalize.c;h=4f348398fd69ae516396313d18ac294a4ca3dde3;hb=b653eda3ac4864de205419d9f41eec267cb89eeb#l262
The latest canonicalize.c uses seen_triple() instead of cycle_check().
Version-Release number of selected component (if applicable):
coreutils-5.97-19.el5
How reproducible:
every time
Steps to Reproduce:
1. Create a directory with a symlink to itself
mkdir /tmp/dir
cd /tmp/dir
ln -s ../dir dirlink
2. Run readlink using the 'dirlink' symlink recursively
readlink -v -f dirlink
readlink -v -f dirlink/dirlink
readlink -v -f dirlink/dirlink/dirlink
Actual results:
The first readlink command on just dirlink succeeds, but the 2nd and 3rd commands fail with
readlink: dirlink/dirlink: Too many levels of symbolic links
Expected results:
$ readlink -v -f dirlink
/tmp/dir
$ readlink -v -f dirlink/dirlink
/tmp/dir
$ readlink -v -f dirlink/dirlink/dirlink
/tmp/dir
Additional info:

View file

@ -0,0 +1,60 @@
#!/bin/bash
# vim: dict=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# runtest.sh of /CoreOS/coreutils/readlink-cannot-handle-recursive-symlinks
# Description: Test for readlink cannot handle recursive symlinks
# Author: Jan Scotka <jscotka@redhat.com>
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# Copyright (c) 2010 Red Hat, Inc. All rights reserved.
#
# This copyrighted material is made available to anyone wishing
# to use, modify, copy, or redistribute it subject to the terms
# and conditions of the GNU General Public License version 2.
#
# 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, write to the Free
# Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
# Boston, MA 02110-1301, USA.
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Include rhts environment
. /usr/bin/rhts-environment.sh
. /usr/lib/beakerlib/beakerlib.sh
PACKAGE="coreutils"
rlJournalStart
rlPhaseStartSetup
rlAssertRpm $PACKAGE
rlRun "TmpDir=\`mktemp -d\`" 0 "Creating tmp directory"
rlRun "pushd $TmpDir"
rlRun "mkdir link" 0 "Creating test directory"
rlRun "cd link" 0 "cd to this dir"
rlRun "ln -s ../link link" 0 "creating symlink to ../link -> link"
rlPhaseEnd
rlPhaseStartTest
rlLog "Test of readlink up to 20 iteration"
export TMPVAR="link"
for foo in `seq 20`
do echo $TMPVAR
rlRun "readlink -v -f $TMPVAR" 0 "readlink of $TMPVAR"
TMPVAR="$TMPVAR/link"
done
rlPhaseEnd
rlPhaseStartCleanup
rlRun "popd"
rlRun "rm -r $TmpDir" 0 "Removing tmp directory"
rlPhaseEnd
rlJournalPrintText
rlJournalEnd

39
tests/test-basics Executable file
View file

@ -0,0 +1,39 @@
#!/bin/sh
# Checks that touch ls rm and foo work
# https://www.mankier.com/1/beakerlib#Examples
. /usr/share/beakerlib/beakerlib.sh
# Set the full test name
TEST="/examples/beakerlib/Sanity/phases"
# Package being tested
PACKAGE="coreutils"
rlJournalStart
# Setup phase: Prepare test directory
rlPhaseStartSetup
rlAssertRpm $PACKAGE
rlRun 'TmpDir=$(mktemp -d)' 0 'Creating tmp directory' # no-reboot
rlRun "pushd $TmpDir"
rlPhaseEnd
# Test phase: Testing touch, ls and rm commands
rlPhaseStartTest
rlRun "touch foo" 0 "Creating the foo test file"
rlAssertExists "foo"
rlRun "ls -l foo" 0 "Listing the foo test file"
rlRun "rm foo" 0 "Removing the foo test file"
rlAssertNotExists "foo"
rlRun "ls -l foo" 2 "Listing foo should now report an error"
rlPhaseEnd
# Cleanup phase: Remove test directory
rlPhaseStartCleanup
rlRun "popd"
rlRun "rm -r $TmpDir" 0 "Removing tmp directory"
rlPhaseEnd
rlJournalEnd
# Print the test report
rlJournalPrintText

9
tests/test_basics.yml Normal file
View file

@ -0,0 +1,9 @@
---
# This first play always runs on the local staging system
- hosts: localhost
tags:
- atomic
- classic
- container
roles:
- { role: standard-test-beakerlib, tests: [ test-basics, readlink-cannot-handle-recursive-symlinks ] }

2
tests/tests.yml Normal file
View file

@ -0,0 +1,2 @@
# Fedora Continuous Integration: https://fedoraproject.org/wiki/CI
- include: test_basics.yml