diff options
Diffstat (limited to 'meta/recipes-core/coreutils/coreutils')
6 files changed, 305 insertions, 70 deletions
diff --git a/meta/recipes-core/coreutils/coreutils/0001-fts-remove-NOSTAT_LEAF_OPTIMIZATION.patch b/meta/recipes-core/coreutils/coreutils/0001-fts-remove-NOSTAT_LEAF_OPTIMIZATION.patch new file mode 100644 index 0000000000..06b6307dab --- /dev/null +++ b/meta/recipes-core/coreutils/coreutils/0001-fts-remove-NOSTAT_LEAF_OPTIMIZATION.patch @@ -0,0 +1,167 @@ +From 3a48610860a9a75692d2cbedde69ac15269d540a Mon Sep 17 00:00:00 2001 +Message-Id: <3a48610860a9a75692d2cbedde69ac15269d540a.1624302273.git.wallinux@gmail.com> +From: Paul Eggert <eggert@cs.ucla.edu> +Date: Wed, 15 Apr 2020 20:50:32 -0700 +Subject: [PATCH] fts: remove NOSTAT_LEAF_OPTIMIZATION +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +It caused ‘find’ and ‘du’ to dump core, and it was useful +only for obsolescent Linux filesystems anyway. Problem reported in: +https://lists.gnu.org/r/bug-gnulib/2020-04/msg00068.html +Quite possibly there is still a serious underlying fts bug with +tight-loop-check and mutating file systems, but if so this patch +should cause the bug to be triggered less often. +* lib/fts.c (enum leaf_optimization): Remove +NOSTAT_LEAF_OPTIMIZATION, as it’s problematic. +(S_MAGIC_REISERFS, S_MAGIC_XFS): Remove; no longer needed. +(leaf_optimization): Remove special cases for ReiserFS and XFS. +(fts_read): Remove NOSTAT_LEAF_OPTIMIZATION code. +* lib/fts_.h (struct _ftsent.fts_n_dirs_remaining): +Remove. All uses removed. + +Upstream-Status: Backport [upstream gnulib commit: +47bf2cf3184027c1eb9c1dfeea5c5b8b2d69710d] + +Signed-off-by: Anders Wallin <wallinux@gmail.com> +--- + lib/fts.c | 56 ++++++++---------------------------------------------- + lib/fts_.h | 5 ----- + 2 files changed, 8 insertions(+), 53 deletions(-) + +diff --git a/lib/fts.c b/lib/fts.c +index d3a0472..ade8c33 100644 +--- a/lib/fts.c ++++ b/lib/fts.c +@@ -445,7 +445,6 @@ fts_open (char * const *argv, + if ((parent = fts_alloc(sp, "", 0)) == NULL) + goto mem2; + parent->fts_level = FTS_ROOTPARENTLEVEL; +- parent->fts_n_dirs_remaining = -1; + } + + /* The classic fts implementation would call fts_stat with +@@ -634,9 +633,8 @@ fts_close (FTS *sp) + } + + /* Minimum link count of a traditional Unix directory. When leaf +- optimization is OK and MIN_DIR_NLINK <= st_nlink, then st_nlink is +- an upper bound on the number of subdirectories (counting "." and +- ".."). */ ++ optimization is OK and a directory's st_nlink == MIN_DIR_NLINK, ++ then the directory has no subdirectories. */ + enum { MIN_DIR_NLINK = 2 }; + + /* Whether leaf optimization is OK for a directory. */ +@@ -645,12 +643,8 @@ enum leaf_optimization + /* st_nlink is not reliable for this directory's subdirectories. */ + NO_LEAF_OPTIMIZATION, + +- /* Leaf optimization is OK, but is not useful for avoiding stat calls. */ +- OK_LEAF_OPTIMIZATION, +- +- /* Leaf optimization is not only OK: it is useful for avoiding +- stat calls, because dirent.d_type does not work. */ +- NOSTAT_LEAF_OPTIMIZATION ++ /* st_nlink == 2 means the directory lacks subdirectories. */ ++ OK_LEAF_OPTIMIZATION + }; + + #if (defined __linux__ || defined __ANDROID__) \ +@@ -663,9 +657,7 @@ enum leaf_optimization + # define S_MAGIC_CIFS 0xFF534D42 + # define S_MAGIC_NFS 0x6969 + # define S_MAGIC_PROC 0x9FA0 +-# define S_MAGIC_REISERFS 0x52654973 + # define S_MAGIC_TMPFS 0x1021994 +-# define S_MAGIC_XFS 0x58465342 + + # ifdef HAVE___FSWORD_T + typedef __fsword_t fsword; +@@ -782,23 +774,15 @@ dirent_inode_sort_may_be_useful (FTSENT const *p, int dir_fd) + } + + /* Given an FTS entry P for a directory with descriptor DIR_FD, +- return true if it is both useful and valid to apply leaf optimization. +- The optimization is useful only for file systems that lack usable +- dirent.d_type info. The optimization is valid if an st_nlink value +- of at least MIN_DIR_NLINK is an upper bound on the number of +- subdirectories of D, counting "." and ".." as subdirectories. ++ return whether it is valid to apply leaf optimization. ++ The optimization is valid if a directory's st_nlink value equal ++ to MIN_DIR_NLINK means the directory has no subdirectories. + DIR_FD is negative if unavailable. */ + static enum leaf_optimization + leaf_optimization (FTSENT const *p, int dir_fd) + { + switch (filesystem_type (p, dir_fd)) + { +- /* List here the file system types that may lack usable dirent.d_type +- info, yet for which the optimization does apply. */ +- case S_MAGIC_REISERFS: +- case S_MAGIC_XFS: /* XFS lacked it until 2013-08-22 commit. */ +- return NOSTAT_LEAF_OPTIMIZATION; +- + case 0: + /* Leaf optimization is unsafe if the file system type is unknown. */ + FALLTHROUGH; +@@ -1023,26 +1007,7 @@ check_for_dir: + if (p->fts_info == FTS_NSOK) + { + if (p->fts_statp->st_size == FTS_STAT_REQUIRED) +- { +- FTSENT *parent = p->fts_parent; +- if (parent->fts_n_dirs_remaining == 0 +- && ISSET(FTS_NOSTAT) +- && ISSET(FTS_PHYSICAL) +- && (leaf_optimization (parent, sp->fts_cwd_fd) +- == NOSTAT_LEAF_OPTIMIZATION)) +- { +- /* nothing more needed */ +- } +- else +- { +- p->fts_info = fts_stat(sp, p, false); +- if (S_ISDIR(p->fts_statp->st_mode) +- && p->fts_level != FTS_ROOTLEVEL +- && 0 < parent->fts_n_dirs_remaining +- && parent->fts_n_dirs_remaining != (nlink_t) -1) +- parent->fts_n_dirs_remaining--; +- } +- } ++ p->fts_info = fts_stat(sp, p, false); + else + fts_assert (p->fts_statp->st_size == FTS_NO_STAT_REQUIRED); + } +@@ -1826,11 +1791,6 @@ err: memset(sbp, 0, sizeof(struct stat)); + } + + if (S_ISDIR(sbp->st_mode)) { +- p->fts_n_dirs_remaining +- = ((sbp->st_nlink < MIN_DIR_NLINK +- || p->fts_level <= FTS_ROOTLEVEL) +- ? -1 +- : sbp->st_nlink - (ISSET (FTS_SEEDOT) ? 0 : MIN_DIR_NLINK)); + if (ISDOT(p->fts_name)) { + /* Command-line "." and ".." are real directories. */ + return (p->fts_level == FTS_ROOTLEVEL ? FTS_D : FTS_DOT); +diff --git a/lib/fts_.h b/lib/fts_.h +index 6c7d0ce..15c248c 100644 +--- a/lib/fts_.h ++++ b/lib/fts_.h +@@ -219,11 +219,6 @@ typedef struct _ftsent { + + size_t fts_namelen; /* strlen(fts_name) */ + +- /* If not (nlink_t) -1, an upper bound on the number of +- remaining subdirectories of interest. If this becomes +- zero, some work can be avoided. */ +- nlink_t fts_n_dirs_remaining; +- + # define FTS_D 1 /* preorder directory */ + # define FTS_DC 2 /* directory that causes cycles */ + # define FTS_DEFAULT 3 /* none of the above */ +-- +2.32.0 + diff --git a/meta/recipes-core/coreutils/coreutils/0001-ls-restore-8.31-behavior-on-removed-directories.patch b/meta/recipes-core/coreutils/coreutils/0001-ls-restore-8.31-behavior-on-removed-directories.patch new file mode 100644 index 0000000000..fa900e3a76 --- /dev/null +++ b/meta/recipes-core/coreutils/coreutils/0001-ls-restore-8.31-behavior-on-removed-directories.patch @@ -0,0 +1,99 @@ +From 7c273e5c6041f8c70f73f5b280fbb8f27d9b5a36 Mon Sep 17 00:00:00 2001 +From: Paul Eggert <eggert@cs.ucla.edu> +Date: Thu, 5 Mar 2020 17:25:29 -0800 +Subject: [PATCH] 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. + +Upstream-Status: Backport [https://github.com/coreutils/coreutils/commit/10fcb97bd728f09d4a027eddf8ad2900f0819b0a] +Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> +--- + src/ls.c | 22 ---------------------- + tests/ls/removed-directory.sh | 10 ++-------- + 2 files changed, 2 insertions(+), 30 deletions(-) + +diff --git a/src/ls.c b/src/ls.c +index 637fe7a..0111f49 100644 +--- a/src/ls.c ++++ b/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> +@@ -2895,7 +2891,6 @@ print_dir (char const *name, char const *realname, bool command_line_arg) + struct dirent *next; + uintmax_t total_blocks = 0; + static bool first = true; +- bool found_any_entries = false; + + errno = 0; + dirp = opendir (name); +@@ -2971,7 +2966,6 @@ print_dir (char const *name, char const *realname, bool command_line_arg) + next = readdir (dirp); + if (next) + { +- found_any_entries = true; + if (! file_ignored (next->d_name)) + { + enum filetype type = unknown; +@@ -3017,22 +3011,6 @@ print_dir (char const *name, char const *realname, bool command_line_arg) + 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; + +diff --git a/tests/ls/removed-directory.sh b/tests/ls/removed-directory.sh +index e8c835d..fe8f929 100755 +--- a/tests/ls/removed-directory.sh ++++ b/tests/ls/removed-directory.sh +@@ -26,20 +26,14 @@ case $host_triplet in + *) 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_ + +-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 diff --git a/meta/recipes-core/coreutils/coreutils/fix-selinux-flask.patch b/meta/recipes-core/coreutils/coreutils/fix-selinux-flask.patch index 9d1ae55d47..173a57925b 100644 --- a/meta/recipes-core/coreutils/coreutils/fix-selinux-flask.patch +++ b/meta/recipes-core/coreutils/coreutils/fix-selinux-flask.patch @@ -1,4 +1,4 @@ -From a1d360509fa3a4aff57eedcd528cc0347a87531d Mon Sep 17 00:00:00 2001 +From 7e20a7242ba2657f73311bbf5278093da67f0721 Mon Sep 17 00:00:00 2001 From: Robert Yang <liezhi.yang@windriver.com> Date: Tue, 16 Sep 2014 01:59:08 -0700 Subject: [PATCH] gnulib-comp.m4: selinux/flask.h should respect to @@ -13,20 +13,20 @@ compilation terminated. Upstream-Status: Pending Signed-off-by: Robert Yang <liezhi.yang@windriver.com> + --- - m4/gnulib-comp.m4 | 2 +- + m4/gnulib-comp.m4 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/m4/gnulib-comp.m4 b/m4/gnulib-comp.m4 -index 472d3a0..5f09734 100644 +index dead90e..0abf0bd 100644 --- a/m4/gnulib-comp.m4 +++ b/m4/gnulib-comp.m4 -@@ -1730,11 +1730,11 @@ AC_DEFUN([gl_INIT], +@@ -1860,10 +1860,10 @@ AC_DEFUN([gl_INIT], AC_LIBOBJ([select]) fi gl_SYS_SELECT_MODULE_INDICATOR([select]) - AC_CHECK_HEADERS([selinux/flask.h]) - AC_LIBOBJ([selinux-at]) gl_HEADERS_SELINUX_SELINUX_H gl_HEADERS_SELINUX_CONTEXT_H if test "$with_selinux" != no && test "$ac_cv_header_selinux_selinux_h" = yes; then @@ -34,6 +34,3 @@ index 472d3a0..5f09734 100644 AC_LIBOBJ([getfilecon]) fi gl_SERVENT --- -1.7.9.5 - diff --git a/meta/recipes-core/coreutils/coreutils/remove-usr-local-lib-from-m4.patch b/meta/recipes-core/coreutils/coreutils/remove-usr-local-lib-from-m4.patch index 2ef8a548ac..1a8a9b9983 100644 --- a/meta/recipes-core/coreutils/coreutils/remove-usr-local-lib-from-m4.patch +++ b/meta/recipes-core/coreutils/coreutils/remove-usr-local-lib-from-m4.patch @@ -1,3 +1,8 @@ +From a26530083a29eeee910bfd606ecc621acecd547a Mon Sep 17 00:00:00 2001 +From: Khem Raj <raj.khem@gmail.com> +Date: Wed, 3 Aug 2011 14:12:30 -0700 +Subject: [PATCH] coreutils: Fix build on uclibc + We have problem using hardcoded directories like /usr/local here which will be checked for cross builds. This is a special case which is valid for AIX only. We do not have AIX as one of our supported @@ -8,11 +13,15 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com> Upstream-Status: Inappropriate [Upstream does care for AIX while we may not] -Index: coreutils-8.14/m4/getloadavg.m4 -=================================================================== ---- coreutils-8.14.orig/m4/getloadavg.m4 2011-09-19 08:09:24.000000000 -0700 -+++ coreutils-8.14/m4/getloadavg.m4 2011-10-19 21:42:00.385533357 -0700 -@@ -41,16 +41,6 @@ +--- + m4/getloadavg.m4 | 12 ------------ + 1 file changed, 12 deletions(-) + +diff --git a/m4/getloadavg.m4 b/m4/getloadavg.m4 +index 8e96965..63782a2 100644 +--- a/m4/getloadavg.m4 ++++ b/m4/getloadavg.m4 +@@ -41,18 +41,6 @@ AC_CHECK_FUNC([getloadavg], [], [LIBS="-lutil $LIBS" gl_func_getloadavg_done=yes]) fi @@ -20,7 +29,9 @@ Index: coreutils-8.14/m4/getloadavg.m4 - # There is a commonly available library for RS/6000 AIX. - # Since it is not a standard part of AIX, it might be installed locally. - gl_getloadavg_LIBS=$LIBS -- LIBS="-L/usr/local/lib $LIBS" +- if test $cross_compiling != yes; then +- LIBS="-L/usr/local/lib $LIBS" +- fi - AC_CHECK_LIB([getloadavg], [getloadavg], - [LIBS="-lgetloadavg $LIBS" gl_func_getloadavg_done=yes], - [LIBS=$gl_getloadavg_LIBS]) diff --git a/meta/recipes-core/coreutils/coreutils/run-ptest b/meta/recipes-core/coreutils/coreutils/run-ptest new file mode 100755 index 0000000000..6d4a7b365d --- /dev/null +++ b/meta/recipes-core/coreutils/coreutils/run-ptest @@ -0,0 +1,17 @@ +#!/bin/sh + +# remove any stale lock files so that the calls to groupadd/useradd don't stop +# the ptest if re-using the same image +rm -rf /etc/passwd.lock /etc/group.lock /etc/gshadow.lock + +COREUTILSLIB=@libdir@/coreutils +LOG="${COREUTILSLIB}/ptest/coreutils_ptest_$(date +%Y%m%d-%H%M%S).log" +USERNAME="tester" +groupadd ugroup1 +groupadd ugroup2 +useradd -G ugroup1,ugroup2 $USERNAME || echo "user $USERNAME already exists" + +su tester -c "cd ${COREUTILSLIB}/ptest && make check-TESTS top_srcdir=. srcdir=." 2>&1 | tee -a ${LOG} +userdel $USERNAME +groupdel ugroup1 +groupdel ugroup2 diff --git a/meta/recipes-core/coreutils/coreutils/strtod_fix_clash_with_strtold.patch b/meta/recipes-core/coreutils/coreutils/strtod_fix_clash_with_strtold.patch deleted file mode 100644 index 77770093cd..0000000000 --- a/meta/recipes-core/coreutils/coreutils/strtod_fix_clash_with_strtold.patch +++ /dev/null @@ -1,56 +0,0 @@ -From 0562b040fa17f1722ba2b3096067b45d0582ca53 Mon Sep 17 00:00:00 2001 -From: Paul Eggert <eggert@cs.ucla.edu> -Date: Mon, 11 Mar 2019 16:40:29 -0700 -Subject: [PATCH] strtod: fix clash with strtold - -Problem reported for RHEL 5 by Jesse Caldwell (Bug#34817). -* lib/strtod.c (compute_minus_zero, minus_zero): -Simplify by remving the macro / external variable, -and having just a function. User changed. This avoids -the need for an external variable that might clash. - -Upstream-Status: Backport [rhel5] - -Signed-off-by: Oleksandr Kravchuk <open.source@oleksandr-kravchuk.com> - ---- - ChangeLog | 9 +++++++++ - lib/strtod.c | 11 +++++------ - 2 files changed, 14 insertions(+), 6 deletions(-) - -diff --git a/lib/strtod.c b/lib/strtod.c -index b9eaa51b4..69b1564e1 100644 ---- a/lib/strtod.c -+++ b/lib/strtod.c -@@ -294,16 +294,15 @@ parse_number (const char *nptr, - ICC 10.0 has a bug when optimizing the expression -zero. - The expression -MIN * MIN does not work when cross-compiling - to PowerPC on Mac OS X 10.5. */ --#if defined __hpux || defined __sgi || defined __ICC - static DOUBLE --compute_minus_zero (void) -+minus_zero (void) - { -+#if defined __hpux || defined __sgi || defined __ICC - return -MIN * MIN; --} --# define minus_zero compute_minus_zero () - #else --DOUBLE minus_zero = -0.0; -+ return -0.0; - #endif -+} - - /* Convert NPTR to a DOUBLE. If ENDPTR is not NULL, a pointer to the - character after the last one used in the number is put in *ENDPTR. */ -@@ -479,6 +478,6 @@ STRTOD (const char *nptr, char **endptr) - /* Special case -0.0, since at least ICC miscompiles negation. We - can't use copysign(), as that drags in -lm on some platforms. */ - if (!num && negative) -- return minus_zero; -+ return minus_zero (); - return negative ? -num : num; - } --- -2.20.1 - |