[libvirt] [PATCH] gnulib: temporary hacks to deal with glibc libio.h removal

Daniel P. Berrangé berrange at redhat.com
Mon Mar 5 17:56:56 UTC 2018


GLibc deprecated libio.h in 2.27 and has removed it in current
code that will become 2.28. The latter is now in Fedora rawhide
and this change breaks gnulib which mistakenly still relies on
these ancient symbols. Add a local hack for gnulib until a
proper fix is available upstream.

Signed-off-by: Daniel P. Berrangé <berrange at redhat.com>
---

Pushed as a CI build fix

 gnulib/local/lib/fflush.c.diff   | 33 +++++++++++++++++++++++++++++++++
 gnulib/local/lib/fpurge.c.diff   | 13 +++++++++++++
 gnulib/local/lib/freading.c.diff | 13 +++++++++++++
 gnulib/local/lib/fseeko.c.diff   | 22 ++++++++++++++++++++++
 4 files changed, 81 insertions(+)
 create mode 100644 gnulib/local/lib/fflush.c.diff
 create mode 100644 gnulib/local/lib/fpurge.c.diff
 create mode 100644 gnulib/local/lib/freading.c.diff
 create mode 100644 gnulib/local/lib/fseeko.c.diff

diff --git a/gnulib/local/lib/fflush.c.diff b/gnulib/local/lib/fflush.c.diff
new file mode 100644
index 0000000000..fa0e2431bd
--- /dev/null
+++ b/gnulib/local/lib/fflush.c.diff
@@ -0,0 +1,33 @@
+diff --git a/lib/fflush.c b/lib/fflush.c
+index 983ade0ff..5f617305a 100644
+--- a/lib/fflush.c
++++ b/lib/fflush.c
+@@ -32,8 +32,8 @@
+ 
+ #undef fflush
+ 
+-
+-#if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */
++#define _IO_IN_BACKUP 0x100
++#if defined _IO_ftrylockfile || __GNU_LIBRARY__ /* 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_ftrylockfile || __GNU_LIBRARY__ /* GNU libc, BeOS, Haiku, Linux libc5 */)
+ 
+ # if (defined __sferror || defined __DragonFly__ || defined __ANDROID__) && defined __SNPT
+ /* FreeBSD, NetBSD, OpenBSD, DragonFly, Mac OS X, Cygwin, Minix 3, 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_ftrylockfile || __GNU_LIBRARY__ /* GNU libc, BeOS, Haiku, Linux libc5 */
+ 
+   clear_ungetc_buffer_preserving_position (stream);
+ 
diff --git a/gnulib/local/lib/fpurge.c.diff b/gnulib/local/lib/fpurge.c.diff
new file mode 100644
index 0000000000..1fd87d8bfa
--- /dev/null
+++ b/gnulib/local/lib/fpurge.c.diff
@@ -0,0 +1,13 @@
+diff --git a/lib/fpurge.c b/lib/fpurge.c
+index b1d417c7a..75cf34ca2 100644
+--- a/lib/fpurge.c
++++ b/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_ftrylockfile || __GNU_LIBRARY__ /* 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/gnulib/local/lib/freading.c.diff b/gnulib/local/lib/freading.c.diff
new file mode 100644
index 0000000000..c51e34dd6a
--- /dev/null
+++ b/gnulib/local/lib/freading.c.diff
@@ -0,0 +1,13 @@
+diff --git a/lib/freading.c b/lib/freading.c
+index 73c28acdd..b1c397016 100644
+--- a/lib/freading.c
++++ b/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_ftrylockfile || __GNU_LIBRARY__ /* 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/gnulib/local/lib/fseeko.c.diff b/gnulib/local/lib/fseeko.c.diff
new file mode 100644
index 0000000000..b2c061fc97
--- /dev/null
+++ b/gnulib/local/lib/fseeko.c.diff
@@ -0,0 +1,22 @@
+diff --git a/lib/fseeko.c b/lib/fseeko.c
+index 0101ab55f..542241bb2 100644
+--- a/lib/fseeko.c
++++ b/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_ftrylockfile || __GNU_LIBRARY__ /* 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_ftrylockfile || __GNU_LIBRARY__ /* GNU libc, BeOS, Haiku, Linux libc5 */
+       fp->_flags &= ~_IO_EOF_SEEN;
+       fp->_offset = pos;
+ #elif defined __sferror || defined __DragonFly__ || defined __ANDROID__
-- 
2.14.3




More information about the libvir-list mailing list