diff options
author | Sergei Trofimovich <slyfox@gentoo.org> | 2018-10-14 10:40:05 +0100 |
---|---|---|
committer | Sergei Trofimovich <slyfox@gentoo.org> | 2018-10-14 10:40:31 +0100 |
commit | 59187801803475b949d2dfe41dfa7e7e70fdc5ea (patch) | |
tree | 31da3cd49154105f7e15f24c3b7cb76e03fff100 | |
parent | app-admin/conky: Revision bump to 1.10.8-r3. Fix bug #665812. (diff) | |
download | gentoo-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.patch | 335 | ||||
-rw-r--r-- | sys-apps/findutils/findutils-4.6.0-r1.ebuild | 4 |
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() { |