summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergei Trofimovich <slyfox@gentoo.org>2018-10-14 10:40:05 +0100
committerSergei Trofimovich <slyfox@gentoo.org>2018-10-14 10:40:31 +0100
commit59187801803475b949d2dfe41dfa7e7e70fdc5ea (patch)
tree31da3cd49154105f7e15f24c3b7cb76e03fff100
parentapp-admin/conky: Revision bump to 1.10.8-r3. Fix bug #665812. (diff)
downloadgentoo-59187801803475b949d2dfe41dfa7e7e70fdc5ea.tar.gz
gentoo-59187801803475b949d2dfe41dfa7e7e70fdc5ea.tar.bz2
gentoo-59187801803475b949d2dfe41dfa7e7e70fdc5ea.zip
sys-apps/findutils: fix build against glibc-2.28, bug #663242
Patch by milan hodoscek. While at it added 'epatch_user'. Closes: https://bugs.gentoo.org/663242 Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org> Package-Manager: Portage-2.3.51, Repoman-2.3.11
-rw-r--r--sys-apps/findutils/files/findutils-4.6.0-glibc228.patch335
-rw-r--r--sys-apps/findutils/findutils-4.6.0-r1.ebuild4
2 files changed, 338 insertions, 1 deletions
diff --git a/sys-apps/findutils/files/findutils-4.6.0-glibc228.patch b/sys-apps/findutils/files/findutils-4.6.0-glibc228.patch
new file mode 100644
index 000000000000..651c2d265324
--- /dev/null
+++ b/sys-apps/findutils/files/findutils-4.6.0-glibc228.patch
@@ -0,0 +1,335 @@
+Fix build failure on glibc-2.28:
+ fseeko.c: In function 'rpl_fseeko':
+ fseeko.c:110:4: error: #error "Please port gnulib fseeko.c to your platform! Look at the code in fseeko.c, then report this to bug-gnulib."
+ #error "Please port gnulib fseeko.c to your platform! Look at the code in fseeko.c, then report this to bug-gnulib."
+
+Patch by milan hodoscek.
+
+https://bugs.gentoo.org/663242
+--- a/old/stdio-impl.h
++++ b/gl/lib/stdio-impl.h
+@@ -1,5 +1,5 @@
+ /* Implementation details of FILE streams.
+- Copyright (C) 2007-2008, 2010-2015 Free Software Foundation, Inc.
++ Copyright (C) 2007-2008, 2010-2018 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
+@@ -12,12 +12,18 @@
+ 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 <http://www.gnu.org/licenses/>. */
++ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ /* Many stdio implementations have the same logic and therefore can share
+ 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. */
+
+@@ -29,10 +35,10 @@
+ #include <errno.h> /* For detecting Plan9. */
+
+ #if defined __sferror || defined __DragonFly__ || defined __ANDROID__
+- /* FreeBSD, NetBSD, OpenBSD, DragonFly, Mac OS X, Cygwin, Android */
++ /* FreeBSD, NetBSD, OpenBSD, DragonFly, Mac OS X, Cygwin, Minix 3, Android */
+
+ # if defined __DragonFly__ /* DragonFly */
+- /* See <http://www.dragonflybsd.org/cvsweb/src/lib/libc/stdio/priv_stdio.h?rev=HEAD&content-type=text/x-cvsweb-markup>. */
++ /* See <https://gitweb.dragonflybsd.org/dragonfly.git/blob_plain/HEAD:/lib/libc/stdio/priv_stdio.h>. */
+ # define fp_ ((struct { struct __FILE_public pub; \
+ struct { unsigned char *_base; int _size; } _bf; \
+ void *cookie; \
+@@ -49,30 +55,84 @@
+ fpos_t _offset; \
+ /* More fields, not relevant here. */ \
+ } *) fp)
+- /* See <http://www.dragonflybsd.org/cvsweb/src/include/stdio.h?rev=HEAD&content-type=text/x-cvsweb-markup>. */
++ /* See <https://gitweb.dragonflybsd.org/dragonfly.git/blob_plain/HEAD:/include/stdio.h>. */
+ # define _p pub._p
+ # define _flags pub._flags
+ # define _r pub._r
+ # define _w pub._w
++# elif defined __ANDROID__ /* Android */
++ /* Up to this commit from 2015-10-12
++ <https://android.googlesource.com/platform/bionic.git/+/f0141dfab10a4b332769d52fa76631a64741297a>
++ the innards of FILE were public, and fp_ub could be defined like for OpenBSD,
++ see <https://android.googlesource.com/platform/bionic.git/+/e78392637d5086384a5631ddfdfa8d7ec8326ee3/libc/stdio/fileext.h>
++ and <https://android.googlesource.com/platform/bionic.git/+/e78392637d5086384a5631ddfdfa8d7ec8326ee3/libc/stdio/local.h>.
++ After this commit, the innards of FILE are hidden. */
++# define fp_ ((struct { unsigned char *_p; \
++ int _r; \
++ int _w; \
++ int _flags; \
++ int _file; \
++ struct { unsigned char *_base; size_t _size; } _bf; \
++ int _lbfsize; \
++ void *_cookie; \
++ void *_close; \
++ void *_read; \
++ void *_seek; \
++ void *_write; \
++ struct { unsigned char *_base; size_t _size; } _ext; \
++ unsigned char *_up; \
++ int _ur; \
++ unsigned char _ubuf[3]; \
++ unsigned char _nbuf[1]; \
++ struct { unsigned char *_base; size_t _size; } _lb; \
++ int _blksize; \
++ fpos_t _offset; \
++ /* More fields, not relevant here. */ \
++ } *) fp)
+ # else
+ # define fp_ fp
+ # endif
+
+-# if (defined __NetBSD__ && __NetBSD_Version__ >= 105270000) || defined __OpenBSD__ || defined __ANDROID__ /* NetBSD >= 1.5ZA, OpenBSD, Android */
++# if (defined __NetBSD__ && __NetBSD_Version__ >= 105270000) || defined __OpenBSD__ || defined __minix /* NetBSD >= 1.5ZA, OpenBSD, Minix 3 */
+ /* See <http://cvsweb.netbsd.org/bsdweb.cgi/src/lib/libc/stdio/fileext.h?rev=HEAD&content-type=text/x-cvsweb-markup>
+- and <http://www.openbsd.org/cgi-bin/cvsweb/src/lib/libc/stdio/fileext.h?rev=HEAD&content-type=text/x-cvsweb-markup> */
++ and <https://cvsweb.openbsd.org/cgi-bin/cvsweb/src/lib/libc/stdio/fileext.h?rev=HEAD&content-type=text/x-cvsweb-markup>
++ and <https://github.com/Stichting-MINIX-Research-Foundation/minix/blob/master/lib/libc/stdio/fileext.h> */
+ struct __sfileext
+ {
+ struct __sbuf _ub; /* ungetc buffer */
+ /* More fields, not relevant here. */
+ };
+ # define fp_ub ((struct __sfileext *) fp->_ext._base)->_ub
+-# else /* FreeBSD, NetBSD <= 1.5Z, DragonFly, Mac OS X, Cygwin, Android */
++# elif defined __ANDROID__ /* Android */
++ struct __sfileext
++ {
++ struct { unsigned char *_base; size_t _size; } _ub; /* ungetc buffer */
++ /* More fields, not relevant here. */
++ };
++# define fp_ub ((struct __sfileext *) fp_->_ext._base)->_ub
++# else /* FreeBSD, NetBSD <= 1.5Z, DragonFly, Mac OS X, Cygwin */
+ # define fp_ub fp_->_ub
+ # endif
+
+ # define HASUB(fp) (fp_ub._base != NULL)
+
++# if defined __ANDROID__ /* Android */
++ /* Needed after this commit from 2016-01-25
++ <https://android.googlesource.com/platform/bionic.git/+/e70e0e9267d069bf56a5078c99307e08a7280de7> */
++# ifndef __SEOF
++# define __SLBF 1
++# define __SNBF 2
++# define __SRD 4
++# define __SWR 8
++# define __SRW 0x10
++# define __SEOF 0x20
++# define __SERR 0x40
++# endif
++# ifndef __SOFF
++# define __SOFF 0x1000
++# endif
++# endif
++
+ #endif
+
+
+@@ -81,7 +141,7 @@
+ #ifdef __TANDEM /* NonStop Kernel */
+ # ifndef _IOERR
+ /* These values were determined by the program 'stdioext-flags' at
+- <http://lists.gnu.org/archive/html/bug-gnulib/2010-12/msg00165.html>. */
++ <https://lists.gnu.org/r/bug-gnulib/2010-12/msg00165.html>. */
+ # define _IOERR 0x40
+ # define _IOREAD 0x80
+ # define _IOWRT 0x4
+@@ -99,6 +159,8 @@
+ int _file; \
+ unsigned int _flag; \
+ } *) fp)
++# elif defined __VMS /* OpenVMS */
++# define fp_ ((struct _iobuf *) fp)
+ # else
+ # define fp_ fp
+ # endif
+@@ -110,4 +172,31 @@
+ # define _flag __flag
+ # endif
+
++#elif defined _WIN32 && ! defined __CYGWIN__ /* newer Windows with MSVC */
++
++/* <stdio.h> does not define the innards of FILE any more. */
++# define WINDOWS_OPAQUE_FILE
++
++struct _gl_real_FILE
++{
++ /* Note: Compared to older Windows and to mingw, it has the fields
++ _base and _cnt swapped. */
++ unsigned char *_ptr;
++ unsigned char *_base;
++ int _cnt;
++ int _flag;
++ int _file;
++ int _charbuf;
++ int _bufsiz;
++};
++# define fp_ ((struct _gl_real_FILE *) fp)
++
++/* These values were determined by a program similar to the one at
++ <https://lists.gnu.org/r/bug-gnulib/2010-12/msg00165.html>. */
++# define _IOREAD 0x1
++# define _IOWRT 0x2
++# define _IORW 0x4
++# define _IOEOF 0x8
++# define _IOERR 0x10
++
+ #endif
+--- a/old/fseeko.c
++++ b/gl/lib/fseeko.c
+@@ -1,5 +1,5 @@
+ /* An fseeko() function that, together with fflush(), is POSIX compliant.
+- Copyright (C) 2007-2015 Free Software Foundation, Inc.
++ Copyright (C) 2007-2018 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
+@@ -12,7 +12,7 @@
+ 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 <http://www.gnu.org/licenses/>. */
++ with this program; if not, see <https://www.gnu.org/licenses/>. */
+
+ #include <config.h>
+
+@@ -33,9 +33,9 @@ fseeko (FILE *fp, off_t offset, int whence)
+ #endif
+ #if _GL_WINDOWS_64_BIT_OFF_T
+ # undef fseeko
+-# if HAVE__FSEEKI64 /* msvc, mingw64 */
++# if HAVE__FSEEKI64 && HAVE_DECL__FSEEKI64 /* msvc, mingw since msvcrt8.0, mingw64 */
+ # define fseeko _fseeki64
+-# else /* mingw */
++# else /* mingw before msvcrt8.0 */
+ # define fseeko fseeko64
+ # endif
+ #endif
+@@ -47,12 +47,13 @@ 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 || defined _IO_ftrylockfile || __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)
+ #elif defined __sferror || defined __DragonFly__ || defined __ANDROID__
+- /* FreeBSD, NetBSD, OpenBSD, DragonFly, Mac OS X, Cygwin, Android */
++ /* FreeBSD, NetBSD, OpenBSD, DragonFly, Mac OS X, Cygwin, Minix 3, Android */
+ # if defined __SL64 && defined __SCLE /* Cygwin */
+ if ((fp->_flags & __SL64) == 0)
+ {
+@@ -80,7 +81,7 @@ fseeko (FILE *fp, off_t offset, int whence)
+ #elif defined __minix /* Minix */
+ if (fp_->_ptr == fp_->_buf
+ && (fp_->_ptr == NULL || fp_->_count == 0))
+-#elif defined _IOERR /* AIX, HP-UX, IRIX, OSF/1, Solaris, OpenServer, mingw, NonStop Kernel */
++#elif defined _IOERR /* AIX, HP-UX, IRIX, OSF/1, Solaris, OpenServer, mingw, MSVC, NonStop Kernel, OpenVMS */
+ if (fp_->_ptr == fp_->_base
+ && (fp_->_ptr == NULL || fp_->_cnt == 0))
+ #elif defined __UCLIBC__ /* uClibc */
+@@ -117,18 +118,19 @@ fseeko (FILE *fp, off_t offset, int whence)
+ if (pos == -1)
+ {
+ #if defined __sferror || defined __DragonFly__ || defined __ANDROID__
+- /* FreeBSD, NetBSD, OpenBSD, DragonFly, Mac OS X, Cygwin, Android */
++ /* FreeBSD, NetBSD, OpenBSD, DragonFly, Mac OS X, Cygwin, Minix 3, Android */
+ fp_->_flags &= ~__SOFF;
+ #endif
+ return -1;
+ }
+
+-#if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */
++#if defined _IO_EOF_SEEN || defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1
++ /* GNU libc, BeOS, Haiku, Linux libc5 */
+ fp->_flags &= ~_IO_EOF_SEEN;
+ fp->_offset = pos;
+ #elif defined __sferror || defined __DragonFly__ || defined __ANDROID__
+- /* FreeBSD, NetBSD, OpenBSD, DragonFly, Mac OS X, Cygwin, Android */
+-# if defined __CYGWIN__ || (defined __NetBSD__ && __NetBSD_Version__ >= 600000000)
++ /* FreeBSD, NetBSD, OpenBSD, DragonFly, Mac OS X, Cygwin, Minix 3, Android */
++# if defined __CYGWIN__ || (defined __NetBSD__ && __NetBSD_Version__ >= 600000000) || defined __minix
+ /* fp_->_offset is typed as an integer. */
+ fp_->_offset = pos;
+ # else
+@@ -150,8 +152,8 @@ fseeko (FILE *fp, off_t offset, int whence)
+ fp_->_flags &= ~__SEOF;
+ #elif defined __EMX__ /* emx+gcc */
+ fp->_flags &= ~_IOEOF;
+-#elif defined _IOERR /* AIX, HP-UX, IRIX, OSF/1, Solaris, OpenServer, mingw, NonStop Kernel */
+- fp->_flag &= ~_IOEOF;
++#elif defined _IOERR /* AIX, HP-UX, IRIX, OSF/1, Solaris, OpenServer, mingw, MSVC, NonStop Kernel, OpenVMS */
++ fp_->_flag &= ~_IOEOF;
+ #elif defined __MINT__ /* Atari FreeMiNT */
+ fp->__offset = pos;
+ fp->__eof = 0;
+--- a/old/freadahead.c
++++ b/gl/lib/freadahead.c
+@@ -1,5 +1,5 @@
+ /* Retrieve information about a FILE stream.
+- Copyright (C) 2007-2015 Free Software Foundation, Inc.
++ Copyright (C) 2007-2018 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
+@@ -12,7 +12,7 @@
+ 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 <http://www.gnu.org/licenses/>. */
++ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ #include <config.h>
+
+@@ -22,17 +22,26 @@
+ #include <stdlib.h>
+ #include "stdio-impl.h"
+
++#if defined __DragonFly__
++/* Defined in libc, but not declared in <stdio.h>. */
++extern size_t __sreadahead (FILE *);
++#endif
++
++/* This file is not used on systems that have the __freadahead function,
++ namely musl libc. */
++
+ size_t
+ freadahead (FILE *fp)
+ {
+-#if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */
++#if defined _IO_EOF_SEEN || defined _IO_ftrylockfile || __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)
+ + (fp->_flags & _IO_IN_BACKUP ? fp->_IO_save_end - fp->_IO_save_base :
+ 0);
+ #elif defined __sferror || defined __DragonFly__ || defined __ANDROID__
+- /* FreeBSD, NetBSD, OpenBSD, DragonFly, Mac OS X, Cygwin, Android */
++ /* FreeBSD, NetBSD, OpenBSD, DragonFly, Mac OS X, Cygwin, Minix 3, Android */
+ if ((fp_->_flags & __SWR) != 0 || fp_->_r < 0)
+ return 0;
+ # if defined __DragonFly__
+@@ -53,7 +62,7 @@ freadahead (FILE *fp)
+ if ((fp_->_flags & _IOWRITING) != 0)
+ return 0;
+ return fp_->_count;
+-#elif defined _IOERR /* AIX, HP-UX, IRIX, OSF/1, Solaris, OpenServer, mingw, NonStop Kernel */
++#elif defined _IOERR /* AIX, HP-UX, IRIX, OSF/1, Solaris, OpenServer, mingw, MSVC, NonStop Kernel, OpenVMS */
+ if ((fp_->_flag & _IOWRT) != 0)
+ return 0;
+ return fp_->_cnt;
diff --git a/sys-apps/findutils/findutils-4.6.0-r1.ebuild b/sys-apps/findutils/findutils-4.6.0-r1.ebuild
index d59a80b99113..0d3700374197 100644
--- a/sys-apps/findutils/findutils-4.6.0-r1.ebuild
+++ b/sys-apps/findutils/findutils-4.6.0-r1.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2018 Gentoo Foundation
+# Copyright 1999-2018 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI="5"
@@ -39,6 +39,8 @@ src_prepare() {
epatch "${FILESDIR}"/${P}-gnulib-mb.patch #576818
epatch "${FILESDIR}"/${P}-gnulib-S_MAGIC_NFS.patch #580032
+ epatch "${FILESDIR}"/${P}-glibc228.patch #663242
+ epatch_user
}
src_configure() {