From bac7e550af4d05a31bed06471f2fcb24d07e31aa Mon Sep 17 00:00:00 2001 From: idriskalp Date: Wed, 11 Dec 2019 19:21:52 +0300 Subject: [PATCH] findutils 4.7.0 --- .../findutils-fedora-4.4.2-xautofs.patch | 132 +++++++++++++ .../findutils-fedora-4.5.13-warnings.patch | 26 +++ .../findutils-fedora-4.5.15-no-locate.patch | 173 ++++++++++++++++++ .../findutils-fedora-4.6.0-leaf-opt.patch | 122 ++++++++++++ .../findutils-fedora-4.6.0-test-lock.patch | 29 +++ system/base/findutils/pspec.xml | 7 + 6 files changed, 489 insertions(+) create mode 100644 system/base/findutils/files/findutils-fedora-4.4.2-xautofs.patch create mode 100644 system/base/findutils/files/findutils-fedora-4.5.13-warnings.patch create mode 100644 system/base/findutils/files/findutils-fedora-4.5.15-no-locate.patch create mode 100644 system/base/findutils/files/findutils-fedora-4.6.0-leaf-opt.patch create mode 100644 system/base/findutils/files/findutils-fedora-4.6.0-test-lock.patch diff --git a/system/base/findutils/files/findutils-fedora-4.4.2-xautofs.patch b/system/base/findutils/files/findutils-fedora-4.4.2-xautofs.patch new file mode 100644 index 00000000..d8ebd51c --- /dev/null +++ b/system/base/findutils/files/findutils-fedora-4.4.2-xautofs.patch @@ -0,0 +1,132 @@ +From 17e470dc1acca4824b70328d733d5f99c12d0d65 Mon Sep 17 00:00:00 2001 +From: Kamil Dudka +Date: Wed, 11 May 2011 16:46:45 +0200 +Subject: [PATCH] findutils-4.4.2-xautofs.patch + +--- + doc/find.texi | 4 ++++ + find/defs.h | 3 +++ + find/find.1 | 3 +++ + find/ftsfind.c | 6 ++++++ + find/parser.c | 9 +++++++++ + find/util.c | 3 ++- + 6 files changed, 27 insertions(+), 1 deletions(-) + +diff --git a/doc/find.texi b/doc/find.texi +index c584298..9731b71 100644 +--- a/doc/find.texi ++++ b/doc/find.texi +@@ -1474,6 +1474,10 @@ them. + There are two ways to avoid searching certain filesystems. One way is + to tell @code{find} to only search one filesystem: + ++@deffn Option -xautofs ++Don't descend directories on autofs filesystems. ++@end deffn ++ + @deffn Option -xdev + @deffnx Option -mount + Don't descend directories on other filesystems. These options are +diff --git a/find/defs.h b/find/defs.h +index 11d1d00..f95ce72 100644 +--- a/find/defs.h ++++ b/find/defs.h +@@ -574,6 +574,9 @@ struct options + /* If true, don't cross filesystem boundaries. */ + bool stay_on_filesystem; + ++ /* If true, don't descend directories on autofs filesystems. */ ++ bool bypass_autofs; ++ + /* If true, we ignore the problem where we find that a directory entry + * no longer exists by the time we get around to processing it. + */ +diff --git a/find/find.1 b/find/find.1 +index e851f82..a4799ff 100644 +--- a/find/find.1 ++++ b/find/find.1 +@@ -567,6 +567,9 @@ to stat them; this gives a significant increase in search speed. + .IP "\-version, \-\-version" + Print the \fBfind\fR version number and exit. + ++.IP \-xautofs ++Don't descend directories on autofs filesystems. ++ + .IP \-xdev + Don't descend directories on other filesystems. + +diff --git a/find/ftsfind.c b/find/ftsfind.c +index 9fdb8ef..bd7cc37 100644 +--- a/find/ftsfind.c ++++ b/find/ftsfind.c +@@ -479,6 +479,12 @@ consider_visiting (FTS *p, FTSENT *ent) + } + } + ++ if (options.bypass_autofs && ++ 0 == strcmp ("autofs", filesystem_type (&statbuf, ent->fts_name))) ++ { ++ fts_set(p, ent, FTS_SKIP); /* descend no further */ ++ } ++ + if ( (ent->fts_info == FTS_D) && !options.do_dir_first ) + { + /* this is the preorder visit, but user said -depth */ +diff --git a/find/parser.c b/find/parser.c +index 52a1ef6..995aec3 100644 +--- a/find/parser.c ++++ b/find/parser.c +@@ -138,6 +138,7 @@ static bool parse_used (const struct parser_table*, char *argv[], int * + static bool parse_user (const struct parser_table*, char *argv[], int *arg_ptr); + static bool parse_wholename (const struct parser_table*, char *argv[], int *arg_ptr); + static bool parse_xdev (const struct parser_table*, char *argv[], int *arg_ptr); ++static bool parse_xautofs (const struct parser_table*, char *argv[], int *arg_ptr); + static bool parse_ignore_race (const struct parser_table*, char *argv[], int *arg_ptr); + static bool parse_noignore_race (const struct parser_table*, char *argv[], int *arg_ptr); + static bool parse_warn (const struct parser_table*, char *argv[], int *arg_ptr); +@@ -302,6 +303,7 @@ static struct parser_table const parse_table[] = + PARSE_TEST_NP ("wholename", wholename), /* GNU, replaced -path, but now -path is standardized since POSIX 2008 */ + {ARG_TEST, "writable", parse_accesscheck, pred_writable}, /* GNU, 4.3.0+ */ + PARSE_OPTION ("xdev", xdev), /* POSIX */ ++ PARSE_OPTION ("xautofs", xautofs), + PARSE_TEST ("xtype", xtype), /* GNU */ + #ifdef UNIMPLEMENTED_UNIX + /* It's pretty ugly for find to know about archive formats. +@@ -2603,6 +2605,13 @@ parse_xdev (const struct parser_table* entry, char **argv, int *arg_ptr) + return parse_noop (entry, argv, arg_ptr); + } + ++static bool ++parse_xautofs (const struct parser_table* entry, char **argv, int *arg_ptr) ++{ ++ options.bypass_autofs = true; ++ return parse_noop (entry, argv, arg_ptr); ++} ++ + static bool + parse_ignore_race (const struct parser_table* entry, char **argv, int *arg_ptr) + { +diff --git a/find/util.c b/find/util.c +index 8577396..4d45f84 100644 +--- a/find/util.c ++++ b/find/util.c +@@ -181,7 +181,7 @@ operators (decreasing precedence; -and is implicit where no others are given):\n + positional options (always true): -daystart -follow -regextype\n\n\ + normal options (always true, specified before other expressions):\n\ + -depth --help -maxdepth LEVELS -mindepth LEVELS -mount -noleaf\n\ +- --version -xdev -ignore_readdir_race -noignore_readdir_race\n")); ++ --version -xautofs -xdev -ignore_readdir_race -noignore_readdir_race\n")); + HTL (_("\ + tests (N can be +N or -N or N): -amin N -anewer FILE -atime N -cmin N\n\ + -cnewer FILE -ctime N -empty -false -fstype TYPE -gid N -group NAME\n\ +@@ -1044,6 +1044,7 @@ set_option_defaults (struct options *p) + + p->full_days = false; + p->stay_on_filesystem = false; ++ p->bypass_autofs = false; + p->ignore_readdir_race = false; + + if (p->posixly_correct) +-- +1.7.4.4 + diff --git a/system/base/findutils/files/findutils-fedora-4.5.13-warnings.patch b/system/base/findutils/files/findutils-fedora-4.5.13-warnings.patch new file mode 100644 index 00000000..cb7ee9b3 --- /dev/null +++ b/system/base/findutils/files/findutils-fedora-4.5.13-warnings.patch @@ -0,0 +1,26 @@ +From 690d4bd9f29a805999a3ce4651dac9585ccc9917 Mon Sep 17 00:00:00 2001 +From: Kamil Dudka +Date: Wed, 11 May 2011 16:46:57 +0200 +Subject: [PATCH] findutils-4.5.7-warnings.patch + +--- + xargs/xargs.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/xargs/xargs.c b/xargs/xargs.c +index 5e373f2..c0a8676 100644 +--- a/xargs/xargs.c ++++ b/xargs/xargs.c +@@ -1299,7 +1299,8 @@ xargs_do_exec (struct buildcmd_control *ctl, void *usercontext, int argc, char * + * utility if we run it, for POSIX compliance on the + * handling of exit values. + */ +- write (fd[1], &errno, sizeof (int)); ++ int sink = write (fd[1], &errno, sizeof (int)); ++ (void) sink; + } + + close (fd[1]); +-- +1.7.1 + diff --git a/system/base/findutils/files/findutils-fedora-4.5.15-no-locate.patch b/system/base/findutils/files/findutils-fedora-4.5.15-no-locate.patch new file mode 100644 index 00000000..659c7cf6 --- /dev/null +++ b/system/base/findutils/files/findutils-fedora-4.5.15-no-locate.patch @@ -0,0 +1,173 @@ +From 3e5e311d23ac0a5bd5930ddb4094f7555b886329 Mon Sep 17 00:00:00 2001 +From: Kamil Dudka +Date: Sat, 19 Dec 2015 22:56:40 +0100 +Subject: [PATCH 1/2] Revert "Don't include dblocation.texi from original spot, + symlink it." + +This reverts commit f59d88e456553dfe0b5185caf75e4041285fd595. +--- + doc/Makefile.am | 7 +------ + 1 file changed, 1 insertion(+), 6 deletions(-) + +diff --git a/doc/Makefile.am b/doc/Makefile.am +index f6f7443..6fbf57b 100644 +--- a/doc/Makefile.am ++++ b/doc/Makefile.am +@@ -16,11 +16,9 @@ AM_CFLAGS = $(WARN_CFLAGS) + + info_TEXINFOS = find.texi find-maint.texi + find_TEXINFOS = perm.texi parse-datetime.texi regexprops.texi fdl.texi +-BUILT_SOURCES = dblocation.texi +-nodist_find_TEXINFOS = dblocation.texi + find_maint_TEXINFOS = fdl.texi + MOSTLYCLEANFILES = find.cps +-CLEANFILES = find.txt find_mono.html findutils.texi_html_node.tar.gz dblocation.texi \ ++CLEANFILES = find.txt find_mono.html findutils.texi_html_node.tar.gz \ + find_mono.html findutils.texi_html_node.tar.gz \ + find-info.tar.gz find.texi find.texi.tar.gz \ + find.txt tmp-doc-install find_mono.html.gz +@@ -73,9 +71,6 @@ findutils.texi_html_node.tar.gz: find.html + tar zcf $@ $< + + +-dblocation.texi: ../locate/dblocation.texi +- $(LN_S) ../locate/dblocation.texi $@ +- + find-info.tar.gz: + $(MKDIR_P) tmp-doc-install/info + $(MAKE) $(AM_MAKEFLAGS) \ +-- +2.5.0 + + +From d5473caa86f689ebcadacc593f5a71781c99e829 Mon Sep 17 00:00:00 2001 +From: Kamil Dudka +Date: Wed, 11 May 2011 16:46:13 +0200 +Subject: [PATCH 2/2] findutils-4.4.0-no-locate.patch + +--- + Makefile.am | 2 +- + configure.ac | 2 -- + doc/find.texi | 24 ++++++++---------------- + tests/local.mk | 2 +- + 4 files changed, 10 insertions(+), 20 deletions(-) + +diff --git a/Makefile.am b/Makefile.am +index af82d54..6ad453b 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -35,7 +35,7 @@ DISTCLEANFILES = tool-versions.txt + + + # "gnulib-tests" is the gnulib unit test dir. +-SUBDIRS = gl build-aux lib find xargs locate doc po m4 gnulib-tests ++SUBDIRS = gl build-aux lib find xargs doc po m4 gnulib-tests + + ALL_RECURSIVE_TARGETS = + +diff --git a/configure.ac b/configure.ac +index ce0e768..521e665 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -309,8 +309,6 @@ find/testsuite/Makefile + gl/Makefile + gl/lib/Makefile + lib/Makefile +-locate/Makefile +-locate/testsuite/Makefile + m4/Makefile + po/Makefile.in + po/Makefile +diff --git a/doc/find.texi b/doc/find.texi +index c2714dd..01367a4 100644 +--- a/doc/find.texi ++++ b/doc/find.texi +@@ -7,7 +7,6 @@ + @c %**end of header + + @include version.texi +-@include dblocation.texi + + @iftex + @finalout +@@ -575,8 +574,7 @@ the databases are updated, and the directories for which they contain + entries. + + Here is how to select which file name databases @code{locate} +-searches. The default is system-dependent. At the time this document +-was generated, the default was @file{@value{LOCATE_DB}}. ++searches. The default is system-dependent. + + @table @code + @item --database=@var{path} +@@ -2929,13 +2927,9 @@ thrashing the network. + directories are indexed by each database file. + + The default location for the locate database depends on how findutils +-is built, but the findutils installation accompanying this manual uses +-the default location @file{@value{LOCATE_DB}}. +- +-If no database exists at @file{@value{LOCATE_DB}} but the user did not +-specify where to look (by using @samp{-d} or setting +-@code{LOCATE_PATH}), then @code{locate} will also check for a +-``secure'' database in @file{/var/lib/slocate/slocate.db}. ++is built. If user did not specify where to look (by using @samp{-d} ++or setting @code{LOCATE_PATH}), then @code{locate} will also check for ++a ``secure'' database in @file{/var/lib/slocate/slocate.db}. + + @node Database Formats + @section Database Formats +@@ -3460,8 +3454,7 @@ present. + + @item --database=@var{path} + @itemx -d @var{path} +-Instead of searching the default @code{locate} database +-@file{@value{LOCATE_DB}}, @code{locate} searches the file ++@code{locate} searches the file + name databases in @var{path}, which is a colon-separated list of + database file names. You can also use the environment variable + @code{LOCATE_PATH} to set the list of database files to search. The +@@ -3636,8 +3629,7 @@ The environment variable @code{PRUNEFS} also sets this value. Default + is @file{nfs NFS proc}. + + @item --output=@var{dbfile} +-The database file to build. The default is system-dependent, but +-when this document was formatted it was @file{@value{LOCATE_DB}}. ++The database file to build. + + @item --localuser=@var{user} + The user to search the non-network directories as, using @code{su}. +@@ -5631,7 +5623,7 @@ See the manual of the system call @code{dup2(2)}. + @section Error Messages From @code{locate} + + @table @samp +-@item warning: database @file{@value{LOCATE_DB}} is more than 8 days old ++@item warning: database @file{LOCATE_DB} is more than 8 days old + The @code{locate} program relies on a database which is periodically + built by the @code{updatedb} program. That hasn't happened in a long + time. To fix this problem, run @code{updatedb} manually. This can +@@ -5639,7 +5631,7 @@ often happen on systems that are generally not left on, so the + periodic ``cron'' task which normally does this doesn't get a chance + to run. + +-@item locate database @file{@value{LOCATE_DB}} is corrupt or invalid ++@item locate database @file{LOCATE_DB} is corrupt or invalid + This should not happen. Re-run @code{updatedb}. If that works, but + @code{locate} still produces this error, run @code{locate --version} + and @code{updatedb --version}. These should produce the same output. +diff --git a/tests/local.mk b/tests/local.mk +index 7e52a04..ae08a56 100644 +--- a/tests/local.mk ++++ b/tests/local.mk +@@ -15,7 +15,7 @@ + ## You should have received a copy of the GNU General Public License + ## along with this program. If not, see . + +-built_programs = find oldfind xargs frcode locate updatedb ++built_programs = find oldfind xargs + + # Indirections required so that we'll still be able to know the + # complete list of our tests even if the user overrides TESTS +-- +2.5.0 + diff --git a/system/base/findutils/files/findutils-fedora-4.6.0-leaf-opt.patch b/system/base/findutils/files/findutils-fedora-4.6.0-leaf-opt.patch new file mode 100644 index 00000000..c4e0f448 --- /dev/null +++ b/system/base/findutils/files/findutils-fedora-4.6.0-leaf-opt.patch @@ -0,0 +1,122 @@ +From 547e7145f335dc07144f35eaacc520475068852e Mon Sep 17 00:00:00 2001 +From: Kamil Dudka +Date: Fri, 30 Aug 2019 10:22:22 +0200 +Subject: [PATCH 1/3] Revert "fts: cleanup after FTS_NOATIME removal" + +This reverts commit dce8759f0f0236a860a3e68b63c5e99cc6f168f9. +--- + gl/lib/fts_.h | 10 ++++++---- + 1 file changed, 6 insertions(+), 4 deletions(-) + +diff --git a/gl/lib/fts_.h b/gl/lib/fts_.h +index fb5558f..0122262 100644 +--- a/gl/lib/fts_.h ++++ b/gl/lib/fts_.h +@@ -149,14 +149,16 @@ typedef struct { + dirent.d_type data. */ + # define FTS_DEFER_STAT 0x0400 + ++/* 0x0800 unused, was non-working FTS_NOATIME */ ++ + /* Use this flag to disable stripping of trailing slashes + from input path names during fts_open initialization. */ +-# define FTS_VERBATIM 0x0800 ++# define FTS_VERBATIM 0x1000 + +-# define FTS_OPTIONMASK 0x0fff /* valid user option mask */ ++# define FTS_OPTIONMASK 0x1fff /* valid user option mask */ + +-# define FTS_NAMEONLY 0x1000 /* (private) child names only */ +-# define FTS_STOP 0x2000 /* (private) unrecoverable error */ ++# define FTS_NAMEONLY 0x2000 /* (private) child names only */ ++# define FTS_STOP 0x4000 /* (private) unrecoverable error */ + int fts_options; /* fts_open options, global flags */ + + /* Map a directory's device number to a boolean. The boolean is +-- +2.20.1 + + +From 1328926a705fdb4728c1f255dd368de928736d39 Mon Sep 17 00:00:00 2001 +From: Kamil Dudka +Date: Fri, 25 Sep 2015 16:09:39 +0200 +Subject: [PATCH 2/3] fts: introduce the FTS_NOLEAF flag + +The flag is needed to implement the -noleaf option of find. +* lib/fts.c (link_count_optimize_ok): Implement the FTS_NOLEAF flag. +* lib/fts_.h (FTS_NOLEAF): New macro, shifted conflicting constants. +--- + gl/lib/fts.c | 4 ++++ + gl/lib/fts_.h | 12 +++++++++--- + 2 files changed, 13 insertions(+), 3 deletions(-) + +diff --git a/gl/lib/fts.c b/gl/lib/fts.c +index d2d404f..808466f 100644 +--- a/gl/lib/fts.c ++++ b/gl/lib/fts.c +@@ -713,6 +713,10 @@ filesystem_type (FTSENT const *p, int fd) + struct dev_type *ent; + struct statfs fs_buf; + ++ if (ISSET(FTS_NOLEAF)) ++ /* leaf optimization explicitly disabled by the FTS_NOLEAF flag */ ++ return 0; ++ + /* If we're not in CWDFD mode, don't bother with this optimization, + since the caller is not serious about performance. */ + if (!ISSET (FTS_CWDFD)) +diff --git a/gl/lib/fts_.h b/gl/lib/fts_.h +index 63d4b74..f1d519b 100644 +--- a/gl/lib/fts_.h ++++ b/gl/lib/fts_.h +@@ -155,10 +155,16 @@ typedef struct { + from input path names during fts_open initialization. */ + # define FTS_VERBATIM 0x1000 + +-# define FTS_OPTIONMASK 0x1fff /* valid user option mask */ ++ /* Disable leaf optimization (which eliminates stat() calls during traversal, ++ based on the count of nested directories stored in stat.st_nlink of each ++ directory). Note that the optimization is by default enabled only for ++ selected file systems, and only if the FTS_CWDFD flag is set. */ ++# define FTS_NOLEAF 0x2000 + +-# define FTS_NAMEONLY 0x2000 /* (private) child names only */ +-# define FTS_STOP 0x4000 /* (private) unrecoverable error */ ++# define FTS_OPTIONMASK 0x3fff /* valid user option mask */ ++ ++# define FTS_NAMEONLY 0x4000 /* (private) child names only */ ++# define FTS_STOP 0x8000 /* (private) unrecoverable error */ + int fts_options; /* fts_open options, global flags */ + + /* Map a directory's device number to a boolean. The boolean is +-- +2.5.0 + + +From c186934e6e37ddadf7511abb9b1045192757618e Mon Sep 17 00:00:00 2001 +From: Kamil Dudka +Date: Fri, 25 Sep 2015 19:13:15 +0200 +Subject: [PATCH 3/3] ftsfind: propagate the -noleaf option to FTS + +* find/ftsfind.c (find): Propagate the -noleaf option to FTS. +--- + find/ftsfind.c | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/find/ftsfind.c b/find/ftsfind.c +index 5159470..e34b672 100644 +--- a/find/ftsfind.c ++++ b/find/ftsfind.c +@@ -553,6 +553,9 @@ find (char *arg) + if (options.stay_on_filesystem) + ftsoptions |= FTS_XDEV; + ++ if (options.no_leaf_check) ++ ftsoptions |= FTS_NOLEAF; ++ + p = fts_open (arglist, ftsoptions, NULL); + if (NULL == p) + { +-- +2.5.0 + diff --git a/system/base/findutils/files/findutils-fedora-4.6.0-test-lock.patch b/system/base/findutils/files/findutils-fedora-4.6.0-test-lock.patch new file mode 100644 index 00000000..b74c0dc6 --- /dev/null +++ b/system/base/findutils/files/findutils-fedora-4.6.0-test-lock.patch @@ -0,0 +1,29 @@ +From 129f23ce758620fade812baab811379ce8454048 Mon Sep 17 00:00:00 2001 +From: rpm-build +Date: Fri, 27 Jan 2017 11:44:41 +0100 +Subject: [PATCH] test-lock: disable the rwlock test + +It hangs indefinitely if the system rwlock implementation does not +prevent writer starvation (and glibc does not implement it). + +Bug: http://www.mail-archive.com/bug-gnulib@gnu.org/msg33017.html +--- + gnulib-tests/test-lock.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/gnulib-tests/test-lock.c b/gnulib-tests/test-lock.c +index a992f64..fd9c014 100644 +--- a/gnulib-tests/test-lock.c ++++ b/gnulib-tests/test-lock.c +@@ -42,7 +42,7 @@ + Uncomment some of these, to verify that all tests crash if no locking + is enabled. */ + #define DO_TEST_LOCK 1 +-#define DO_TEST_RWLOCK 1 ++#define DO_TEST_RWLOCK 0 + #define DO_TEST_RECURSIVE_LOCK 1 + #define DO_TEST_ONCE 1 + +-- +2.7.4 + diff --git a/system/base/findutils/pspec.xml b/system/base/findutils/pspec.xml index 64b859e4..46a06aef 100644 --- a/system/base/findutils/pspec.xml +++ b/system/base/findutils/pspec.xml @@ -17,6 +17,13 @@ gettext texinfo + + findutils-fedora-4.4.2-xautofs.patch + findutils-fedora-4.5.13-warnings.patch + findutils-fedora-4.5.15-no-locate.patch + findutils-fedora-4.6.0-leaf-opt.patch + findutils-fedora-4.6.0-test-lock.patch +