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

Daniel P. Berrangé posted 1 patch 6 years, 1 month ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/libvirt tags/patchew/20180305175656.29138-1-berrange@redhat.com
Test syntax-check failed
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
[libvirt] [PATCH] gnulib: temporary hacks to deal with glibc libio.h removal
Posted by Daniel P. Berrangé 6 years, 1 month ago
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@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

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list