gnu: findutils: Update to 4.7.0.

* gnu/packages/patches/findutils-gnulib-libio.patch,
gnu/packages/patches/findutils-makedev.patch,
gnu/packages/patches/findutils-test-xargs.patch: Delete files.
* gnu/local.mk (dist_patch_DATA): Adjust accordingly.
* gnu/packages/base.scm (findutils): Update to 4.7.0.
[source](uri): Adjust for file name change.
[source](snippet): Remove.
[source](patches): Remove obsolete.
[arguments]: Remove obsolete workaround.  Add phase to patch tests.
* gnu/packages/commencement.scm (findutils-boot0)[arguments]: Allow 32-bit
time_t on 64-bit systems.
This commit is contained in:
Marius Bakke 2019-11-30 04:41:12 +01:00
parent 72c7788fcf
commit 717867a6ef
No known key found for this signature in database
GPG key ID: A2A06DF2A33A54FA
6 changed files with 22 additions and 187 deletions

View file

@ -833,10 +833,7 @@ dist_patch_DATA = \
%D%/packages/patches/fifo-map-fix-flags-for-gcc.patch \ %D%/packages/patches/fifo-map-fix-flags-for-gcc.patch \
%D%/packages/patches/fifo-map-remove-catch.hpp.patch \ %D%/packages/patches/fifo-map-remove-catch.hpp.patch \
%D%/packages/patches/file-CVE-2019-18218.patch \ %D%/packages/patches/file-CVE-2019-18218.patch \
%D%/packages/patches/findutils-gnulib-libio.patch \
%D%/packages/patches/findutils-localstatedir.patch \ %D%/packages/patches/findutils-localstatedir.patch \
%D%/packages/patches/findutils-makedev.patch \
%D%/packages/patches/findutils-test-xargs.patch \
%D%/packages/patches/flann-cmake-3.11.patch \ %D%/packages/patches/flann-cmake-3.11.patch \
%D%/packages/patches/flint-ldconfig.patch \ %D%/packages/patches/flint-ldconfig.patch \
%D%/packages/patches/foomatic-filters-CVE-2015-8327.patch \ %D%/packages/patches/foomatic-filters-CVE-2015-8327.patch \

View file

@ -253,40 +253,28 @@ (define-public diffutils
(define-public findutils (define-public findutils
(package (package
(name "findutils") (name "findutils")
(version "4.6.0") (version "4.7.0")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "mirror://gnu/findutils/findutils-" (uri (string-append "mirror://gnu/findutils/findutils-"
version ".tar.gz")) version ".tar.xz"))
(sha256 (sha256
(base32 (base32
"178nn4dl7wbcw499czikirnkniwnx36argdnqgz4ik9i6zvwkm6y")) "16kqz9yz98dasmj70jwf5py7jk558w96w0vgp3zf9xsqk3gzpzn5"))
(patches (search-patches (patches (search-patches "findutils-localstatedir.patch"))))
"findutils-gnulib-libio.patch"
"findutils-localstatedir.patch"
"findutils-makedev.patch"
"findutils-test-xargs.patch"))
(modules '((guix build utils)))
(snippet
'(begin
;; The gnulib test-lock test is prone to writer starvation
;; with our glibc@2.25, which prefers readers, so disable it.
;; The gnulib commit b20e8afb0b2 should fix this once
;; incorporated here.
(substitute* "tests/Makefile.in"
(("test-lock\\$\\(EXEEXT\\) ") ""))
#t))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
`(#:configure-flags (list `(#:configure-flags (list
;; Tell 'updatedb' to write to /var. ;; Tell 'updatedb' to write to /var.
"--localstatedir=/var" "--localstatedir=/var")
#:phases (modify-phases %standard-phases
;; Work around cross-compilation failure. See (add-before 'check 'adjust-test-shebangs
;; <http://savannah.gnu.org/bugs/?27299#comment1>. (lambda _
,@(if (%current-target-system) (substitute* '("tests/xargs/verbose-quote.sh"
'("gl_cv_func_wcwidth_works=yes") "tests/find/exec-plus-last-file.sh")
'())))) (("#!/bin/sh")
(string-append "#!" (which "sh"))))
#t)))))
(synopsis "Operating on files matching given criteria") (synopsis "Operating on files matching given criteria")
(description (description
"Findutils supplies the basic file directory searching utilities of the "Findutils supplies the basic file directory searching utilities of the

View file

@ -1450,7 +1450,15 @@ (define findutils-boot0
(arguments (arguments
`(#:implicit-inputs? #f `(#:implicit-inputs? #f
#:guile ,%bootstrap-guile #:guile ,%bootstrap-guile
,@(package-arguments findutils)))))
;; The build system assumes we have done a mistake when time_t is 32-bit
;; on a 64-bit system. Ignore that for our bootstrap toolchain.
,@(if (target-64bit?)
(substitute-keyword-arguments (package-arguments findutils)
((#:configure-flags flags ''())
`(cons "TIME_T_32_BIT_OK=yes"
,flags)))
(package-arguments findutils))))))
(define file-boot0 (define file-boot0
(package (package

View file

@ -1,114 +0,0 @@
Adjust to removal of libio interface in glibc 2.28.
Based on this gnulib commit:
https://git.savannah.gnu.org/cgit/gnulib.git/commit/?id=4af4a4a71827c0bc5e0ec67af23edef4f15cee8e
diff --git a/gl/lib/fflush.c b/gl/lib/fflush.c
index 5ae3e41..7a82470 100644
--- a/gl/lib/fflush.c
+++ b/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);
diff --git a/gl/lib/fpurge.c b/gl/lib/fpurge.c
index f313b22..ecdf82d 100644
--- a/gl/lib/fpurge.c
+++ b/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. */
diff --git a/gl/lib/freadahead.c b/gl/lib/freadahead.c
index 094daab..3f8101e 100644
--- a/gl/lib/freadahead.c
+++ b/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)
diff --git a/gl/lib/freading.c b/gl/lib/freading.c
index 0512b19..8c48fe4 100644
--- a/gl/lib/freading.c
+++ b/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));
diff --git a/gl/lib/fseeko.c b/gl/lib/fseeko.c
index 1c65d2a..9026408 100644
--- a/gl/lib/fseeko.c
+++ b/gl/lib/fseeko.c
@@ -47,7 +47,7 @@ fseeko (FILE *fp, off_t offset, int whence)
#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 whence)
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__
diff --git a/gl/lib/stdio-impl.h b/gl/lib/stdio-impl.h
index 502d891..ea38ee2 100644
--- a/gl/lib/stdio-impl.h
+++ b/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. */

View file

@ -1,22 +0,0 @@
Include <sys/sysmacros.h> for "makedev".
Taken from this gnulib commit:
https://git.savannah.gnu.org/cgit/gnulib.git/commit/?id=4da63c5881f60f71999a943612da9112232b9161
diff --git a/gl/lib/mountlist.c b/gl/lib/mountlist.c
index bb4e4ee21..cf4020e2a 100644
--- a/gl/lib/mountlist.c
+++ b/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,

View file

@ -1,22 +0,0 @@
This test relies on 'xargs' being available in $PATH, which is not
the case when we build the initial Findutils doing bootstrapping.
Reported at <https://savannah.gnu.org/bugs/index.php?46786>.
--- findutils-4.6.0/find/testsuite/sv-34976-execdir-fd-leak.sh 2015-12-31 19:37:59.401526288 +0100
+++ findutils-4.6.0/find/testsuite/sv-34976-execdir-fd-leak.sh 2015-12-31 19:38:36.061770693 +0100
@@ -50,13 +50,14 @@ die() {
# Create test files, each 98 in the directories ".", "one" and "two".
make_test_data() {
d="$1"
+ xargs="`cd ../../xargs; pwd -P`/xargs"
(
cd "$1" || exit 1
mkdir one two || exit 1
for i in ${three_to_hundred} ; do
printf "./%03d one/%03d two/%03d " $i $i $i
done \
- | xargs touch || exit 1
+ | "$xargs" touch || exit 1
) \
|| die "failed to set up the test in ${outdir}"
}