diff options
Diffstat (limited to 'poky/meta/recipes-extended/findutils')
5 files changed, 375 insertions, 8 deletions
diff --git a/poky/meta/recipes-extended/findutils/findutils/0001-Unset-need_charset_alias-when-building-for-musl.patch b/poky/meta/recipes-extended/findutils/findutils/0001-Unset-need_charset_alias-when-building-for-musl.patch index 8729e1b44..6064d1885 100644 --- a/poky/meta/recipes-extended/findutils/findutils/0001-Unset-need_charset_alias-when-building-for-musl.patch +++ b/poky/meta/recipes-extended/findutils/findutils/0001-Unset-need_charset_alias-when-building-for-musl.patch @@ -1,4 +1,4 @@ -From b9565dc2fe0c4f7daaec91b7e83bc7313dee2f4a Mon Sep 17 00:00:00 2001 +From 86db2a5f3b7ef8113e5384b4e02d2b299c87a047 Mon Sep 17 00:00:00 2001 From: Khem Raj <raj.khem@gmail.com> Date: Mon, 13 Apr 2015 17:02:13 -0700 Subject: [PATCH] Unset need_charset_alias when building for musl @@ -11,15 +11,16 @@ coreutils Upstream-Status: Pending Signed-off-by: Khem Raj <raj.khem@gmail.com> + --- - lib/gnulib.mk | 2 +- + gl/lib/Makefile.am | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -Index: findutils-4.5.14/gl/lib/Makefile.am -=================================================================== ---- findutils-4.5.14.orig/gl/lib/Makefile.am -+++ findutils-4.5.14/gl/lib/Makefile.am -@@ -1220,7 +1220,7 @@ install-exec-localcharset: all-local +diff --git a/gl/lib/Makefile.am b/gl/lib/Makefile.am +index a9e2fe4..1c6ea9c 100644 +--- a/gl/lib/Makefile.am ++++ b/gl/lib/Makefile.am +@@ -1234,7 +1234,7 @@ install-exec-localcharset: all-local case '$(host_os)' in \ darwin[56]*) \ need_charset_alias=true ;; \ diff --git a/poky/meta/recipes-extended/findutils/findutils/0001-find-make-delete-honour-the-ignore_readdir_race-opti.patch b/poky/meta/recipes-extended/findutils/findutils/0001-find-make-delete-honour-the-ignore_readdir_race-opti.patch new file mode 100644 index 000000000..a570473cc --- /dev/null +++ b/poky/meta/recipes-extended/findutils/findutils/0001-find-make-delete-honour-the-ignore_readdir_race-opti.patch @@ -0,0 +1,144 @@ +From a3f4821c4a3f723d21c9298d54bee8a656bfd7fb Mon Sep 17 00:00:00 2001 +From: Bernhard Voelker <mail@bernhard-voelker.de> +Date: Tue, 30 Jan 2018 23:30:09 +0100 +Subject: [PATCH] find: make -delete honour the -ignore_readdir_race option + +* find/pred.c (pred_delete): Return true when the -ignore_readdir_race +option is active and unlinkat() came back with ENOENT. +* doc/find.texi (Option -ignore_readdir_race): Document the change. +(Action -delete): Likewise. +* find/find.1: Likewise. +* NEWS (Bug Fixes): Mention the fix. + +For now, it seems a bit hard to add a proper test for this, +so the following shell snippet demonstrates the race: + + $ seq 10 | xargs touch + $ env time -f 'find exit status: %x\nfind time: %e' \ + find -ignore_readdir_race -type f \ + -delete \ + -exec sh -c 'sleep $(basename {})' \; \ + -printf 'find deleted: %p\n' \ + & \ + sleep 20; \ + seq 10 | xargs rm -fv; \ + wait $! + +Reported by Alexander Golubev in +https://savannah.gnu.org/bugs/?52981 + +Upstream-Status: Backport +Signed-off-by: Zhixiong Chi <zhixiong.chi@windriver.com> + +--- + NEWS | 4 ++++ + doc/find.texi | 15 ++++++++++++++- + find/find.1 | 22 ++++++++++++++++++++++ + find/pred.c | 6 ++++++ + 4 files changed, 46 insertions(+), 1 deletion(-) + +diff --git a/NEWS b/NEWS +index 660c241..b86ec1e 100644 +--- a/NEWS ++++ b/NEWS +@@ -42,6 +42,10 @@ Updated the Danish translation. + + ** Bug Fixes: + ++#52981: find: the '-delete' action no longer complains about disappeared files ++ when the '-ignore_readdir_race' option is given, too. That action will ++ also returns true in such a case now. ++ + Applied patch #8688: Spelling fixes. + + * Major changes in release 4.5.18, 2015-12-27 +diff --git a/doc/find.texi b/doc/find.texi +index fdeb841..247c19a 100644 +--- a/doc/find.texi ++++ b/doc/find.texi +@@ -1418,7 +1418,15 @@ gives a significant increase in search speed. + If a file disappears after its name has been read from a directory but + before @code{find} gets around to examining the file with @code{stat}, + don't issue an error message. If you don't specify this option, an +-error message will be issued. This option can be useful in system ++error message will be issued. ++ ++Furthermore, @code{find} with the @samp{-ignore_readdir_race} option ++will ignore errors of the @samp{-delete} action in the case the file ++has disappeared since the parent directory was read: it will not output ++an error diagnostic, and the return code of the @samp{-delete} action ++will be true. ++ ++This option can be useful in system + scripts (cron scripts, for example) that examine areas of the + filesystem that change frequently (mail queues, temporary directories, + and so forth), because this scenario is common for those sorts of +@@ -2779,6 +2787,11 @@ explicitly. + + If @samp{-delete} fails, @code{find}'s exit status will be nonzero + (when it eventually exits). ++ ++Together with the @samp{-ignore_readdir_race} option, @code{find} will ++ignore errors of the @samp{-delete} action in the case the file has disappeared ++since the parent directory was read: it will not output an error diagnostic, and ++the return code of the @samp{-delete} action will be true. + @end deffn + + @node Adding Tests +diff --git a/find/find.1 b/find/find.1 +index 7b141b8..0eec41c 100644 +--- a/find/find.1 ++++ b/find/find.1 +@@ -479,6 +479,17 @@ one part of the filesystem with this option on and part of it with this option + off (if you need to do that, you will need to issue two \fBfind\fR commands + instead, one with the option and one without it). + ++Furthermore, ++.B find ++with the ++.B \-ignore_readdir_race ++option will ignore errors of the ++.B \-delete ++action in the case the file has disappeared since the parent directory was read: ++it will not output an error diagnostic, and the return code of the ++.B \-delete ++action will be true. ++ + .IP "\-maxdepth \fIlevels\fR" + Descend at most \fIlevels\fR (a non-negative integer) levels of + directories below the starting-points. +@@ -1030,6 +1041,17 @@ and + .B \-delete + together. + ++Together with the ++.B \-ignore_readdir_race ++option, ++.B find ++will ignore errors of the ++.B \-delete ++action in the case the file has disappeared since the parent directory was ++read: it will not output an error diagnostic, and the return code of the ++.B \-delete ++action will be true. ++ + .IP "\-exec \fIcommand\fR ;" + Execute \fIcommand\fR; true if 0 status is returned. All following + arguments to +diff --git a/find/pred.c b/find/pred.c +index 32938fb..431f065 100644 +--- a/find/pred.c ++++ b/find/pred.c +@@ -324,6 +324,12 @@ pred_delete (const char *pathname, struct stat *stat_buf, struct predicate *pred + } + else + { ++ if (ENOENT == errno && options.ignore_readdir_race) ++ { ++ /* Ignore unlink() error for vanished files. */ ++ errno = 0; ++ return true; ++ } + if (EISDIR == errno) + { + if ((flags & AT_REMOVEDIR) == 0) diff --git a/poky/meta/recipes-extended/findutils/findutils/findutils-4.6.0-gnulib-fflush.patch b/poky/meta/recipes-extended/findutils/findutils/findutils-4.6.0-gnulib-fflush.patch new file mode 100644 index 000000000..d13e8ed3c --- /dev/null +++ b/poky/meta/recipes-extended/findutils/findutils/findutils-4.6.0-gnulib-fflush.patch @@ -0,0 +1,140 @@ +From 80cdfba079627e15129a926a133825b961d41e36 Mon Sep 17 00:00:00 2001 +From: Paul Eggert <eggert@cs.ucla.edu> +Date: Mon, 5 Mar 2018 10:56:29 -0800 +Subject: [PATCH] fflush: adjust to glibc 2.28 libio.h removal +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Problem reported by Daniel P. Berrangé in: +https://lists.gnu.org/r/bug-gnulib/2018-03/msg00000.html +* lib/fflush.c (clear_ungetc_buffer_preserving_position) +(disable_seek_optimization, rpl_fflush): +* lib/fpurge.c (fpurge): +* lib/freadahead.c (freadahead): +* lib/freading.c (freading): +* lib/fseeko.c (fseeko): +* lib/stdio-impl.h (_IO_IN_BACKUP) [_IO_EOF_SEEN]: +Define if not already defined. + +Upstream-commit: 4af4a4a71827c0bc5e0ec67af23edef4f15cee8e +Signed-off-by: Kamil Dudka <kdudka@redhat.com> +Upstream-Status: Backport [4af4a4a71827c0bc5e0ec67af23edef4f15cee8e] +--- + gl/lib/fflush.c | 6 +++--- + gl/lib/fpurge.c | 2 +- + gl/lib/freadahead.c | 2 +- + gl/lib/freading.c | 2 +- + gl/lib/fseeko.c | 4 ++-- + gl/lib/stdio-impl.h | 6 ++++++ + 6 files changed, 14 insertions(+), 8 deletions(-) + +Index: findutils-4.6.0/gl/lib/fflush.c +=================================================================== +--- findutils-4.6.0.orig/gl/lib/fflush.c ++++ findutils-4.6.0/gl/lib/fflush.c +@@ -33,7 +33,7 @@ + #undef fflush + + +-#if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ ++#if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ + + /* Clear the stream's ungetc buffer, preserving the value of ftello (fp). */ + static void +@@ -72,7 +72,7 @@ clear_ungetc_buffer (FILE *fp) + + #endif + +-#if ! (defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */) ++#if ! (defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */) + + # if (defined __sferror || defined __DragonFly__ || defined __ANDROID__) && defined __SNPT + /* FreeBSD, NetBSD, OpenBSD, DragonFly, Mac OS X, Cygwin, Android */ +@@ -148,7 +148,7 @@ rpl_fflush (FILE *stream) + if (stream == NULL || ! freading (stream)) + return fflush (stream); + +-#if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ ++#if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ + + clear_ungetc_buffer_preserving_position (stream); + +Index: findutils-4.6.0/gl/lib/fpurge.c +=================================================================== +--- findutils-4.6.0.orig/gl/lib/fpurge.c ++++ findutils-4.6.0/gl/lib/fpurge.c +@@ -62,7 +62,7 @@ fpurge (FILE *fp) + /* Most systems provide FILE as a struct and the necessary bitmask in + <stdio.h>, because they need it for implementing getc() and putc() as + fast macros. */ +-# if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ ++# if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ + fp->_IO_read_end = fp->_IO_read_ptr; + fp->_IO_write_ptr = fp->_IO_write_base; + /* Avoid memory leak when there is an active ungetc buffer. */ +Index: findutils-4.6.0/gl/lib/freadahead.c +=================================================================== +--- findutils-4.6.0.orig/gl/lib/freadahead.c ++++ findutils-4.6.0/gl/lib/freadahead.c +@@ -25,7 +25,7 @@ + size_t + freadahead (FILE *fp) + { +-#if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ ++#if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ + if (fp->_IO_write_ptr > fp->_IO_write_base) + return 0; + return (fp->_IO_read_end - fp->_IO_read_ptr) +Index: findutils-4.6.0/gl/lib/freading.c +=================================================================== +--- findutils-4.6.0.orig/gl/lib/freading.c ++++ findutils-4.6.0/gl/lib/freading.c +@@ -31,7 +31,7 @@ freading (FILE *fp) + /* Most systems provide FILE as a struct and the necessary bitmask in + <stdio.h>, because they need it for implementing getc() and putc() as + fast macros. */ +-# if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ ++# if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ + return ((fp->_flags & _IO_NO_WRITES) != 0 + || ((fp->_flags & (_IO_NO_READS | _IO_CURRENTLY_PUTTING)) == 0 + && fp->_IO_read_base != NULL)); +Index: findutils-4.6.0/gl/lib/fseeko.c +=================================================================== +--- findutils-4.6.0.orig/gl/lib/fseeko.c ++++ findutils-4.6.0/gl/lib/fseeko.c +@@ -47,7 +47,7 @@ fseeko (FILE *fp, off_t offset, int when + #endif + + /* These tests are based on fpurge.c. */ +-#if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ ++#if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ + if (fp->_IO_read_end == fp->_IO_read_ptr + && fp->_IO_write_ptr == fp->_IO_write_base + && fp->_IO_save_base == NULL) +@@ -123,7 +123,7 @@ fseeko (FILE *fp, off_t offset, int when + return -1; + } + +-#if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ ++#if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ + fp->_flags &= ~_IO_EOF_SEEN; + fp->_offset = pos; + #elif defined __sferror || defined __DragonFly__ || defined __ANDROID__ +Index: findutils-4.6.0/gl/lib/stdio-impl.h +=================================================================== +--- findutils-4.6.0.orig/gl/lib/stdio-impl.h ++++ findutils-4.6.0/gl/lib/stdio-impl.h +@@ -18,6 +18,12 @@ + the same implementation of stdio extension API, except that some fields + have different naming conventions, or their access requires some casts. */ + ++/* Glibc 2.28 made _IO_IN_BACKUP private. For now, work around this ++ problem by defining it ourselves. FIXME: Do not rely on glibc ++ internals. */ ++#if !defined _IO_IN_BACKUP && defined _IO_EOF_SEEN ++# define _IO_IN_BACKUP 0x100 ++#endif + + /* BSD stdio derived implementations. */ + diff --git a/poky/meta/recipes-extended/findutils/findutils/findutils-4.6.0-gnulib-makedev.patch b/poky/meta/recipes-extended/findutils/findutils/findutils-4.6.0-gnulib-makedev.patch new file mode 100644 index 000000000..0fb3953cf --- /dev/null +++ b/poky/meta/recipes-extended/findutils/findutils/findutils-4.6.0-gnulib-makedev.patch @@ -0,0 +1,78 @@ +From 80628047a6cc83f82e0c410a82b8f7facd9d50f2 Mon Sep 17 00:00:00 2001 +From: Eric Blake <eblake@redhat.com> +Date: Wed, 14 Sep 2016 19:21:42 -0500 +Subject: [PATCH] mountlist: include sysmacros.h for glibc + +On Fedora rawhide (glibc 2.25), './gnulib-tool --test mountlist' +reports: +../../gllib/mountlist.c: In function 'read_file_system_list': +../../gllib/mountlist.c:534:13: warning: '__makedev_from_sys_types' is deprecated: + In the GNU C Library, `makedev' is defined by <sys/sysmacros.h>. + For historical compatibility, it is currently defined by + <sys/types.h> as well, but we plan to remove this soon. + To use `makedev', include <sys/sysmacros.h> directly. + If you did not intend to use a system-defined macro `makedev', + you should #undef it after including <sys/types.h>. + [-Wdeprecated-declarations] + me->me_dev = makedev (devmaj, devmin); + ^~ +In file included from /usr/include/features.h:397:0, + from /usr/include/sys/types.h:25, + from ./sys/types.h:28, + from ../../gllib/mountlist.h:23, + from ../../gllib/mountlist.c:20: +/usr/include/sys/sysmacros.h:89:1: note: declared here + __SYSMACROS_DEFINE_MAKEDEV (__SYSMACROS_FST_IMPL_TEMPL) + ^ + +Fix it by including the right headers. We also need a fix to +autoconf's AC_HEADER_MAJOR, but that's a separate patch. + +* m4/mountlist.m4 (gl_PREREQ_MOUTLIST_EXTRA): Include +AC_HEADER_MAJOR. +* lib/mountlist.c (includes): Use correct headers. + +Signed-off-by: Eric Blake <eblake@redhat.com> + +Upstream-commit: 4da63c5881f60f71999a943612da9112232b9161 +Signed-off-by: Kamil Dudka <kdudka@redhat.com> +Upstream-Status: Backport [4da63c5881f60f71999a943612da9112232b9161] +--- + gl/lib/mountlist.c | 6 ++++++ + gl/m4/mountlist.m4 | 3 ++- + 2 files changed, 8 insertions(+), 1 deletion(-) + +Index: findutils-4.6.0/gl/lib/mountlist.c +=================================================================== +--- findutils-4.6.0.orig/gl/lib/mountlist.c ++++ findutils-4.6.0/gl/lib/mountlist.c +@@ -37,6 +37,12 @@ + # include <sys/param.h> + #endif + ++#if MAJOR_IN_MKDEV ++# include <sys/mkdev.h> ++#elif MAJOR_IN_SYSMACROS ++# include <sys/sysmacros.h> ++#endif ++ + #if defined MOUNTED_GETFSSTAT /* OSF_1 and Darwin1.3.x */ + # if HAVE_SYS_UCRED_H + # include <grp.h> /* needed on OSF V4.0 for definition of NGROUPS, +Index: findutils-4.6.0/gl/m4/mountlist.m4 +=================================================================== +--- findutils-4.6.0.orig/gl/m4/mountlist.m4 ++++ findutils-4.6.0/gl/m4/mountlist.m4 +@@ -1,4 +1,4 @@ +-# serial 11 ++# serial 12 + dnl Copyright (C) 2002-2006, 2009-2015 Free Software Foundation, Inc. + dnl This file is free software; the Free Software Foundation + dnl gives unlimited permission to copy and/or distribute it, +@@ -15,5 +15,6 @@ AC_DEFUN([gl_PREREQ_MOUNTLIST_EXTRA], + [ + dnl Note gl_LIST_MOUNTED_FILE_SYSTEMS checks for mntent.h, not sys/mntent.h. + AC_CHECK_HEADERS([sys/mntent.h]) ++ AC_HEADER_MAJOR()dnl for use of makedev () + gl_FSTYPENAME + ]) diff --git a/poky/meta/recipes-extended/findutils/findutils_4.6.0.bb b/poky/meta/recipes-extended/findutils/findutils_4.6.0.bb index 072d3b3c0..5e4ca9486 100644 --- a/poky/meta/recipes-extended/findutils/findutils_4.6.0.bb +++ b/poky/meta/recipes-extended/findutils/findutils_4.6.0.bb @@ -6,7 +6,11 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=f27defe1e96c2e1ecd4e0c9be8967949" DEPENDS = "bison-native" -SRC_URI += "file://0001-Unset-need_charset_alias-when-building-for-musl.patch" +SRC_URI += "file://0001-Unset-need_charset_alias-when-building-for-musl.patch \ + file://0001-find-make-delete-honour-the-ignore_readdir_race-opti.patch \ + file://findutils-4.6.0-gnulib-fflush.patch \ + file://findutils-4.6.0-gnulib-makedev.patch \ +" SRC_URI[md5sum] = "9936aa8009438ce185bea2694a997fc1" SRC_URI[sha256sum] = "ded4c9f73731cd48fec3b6bdaccce896473b6d8e337e9612e16cf1431bb1169d" |