[libvirt] [PATCH] build: fix mingw ssize_t, syntax check

Eric Blake eblake at redhat.com
Fri Mar 30 16:35:41 UTC 2012


We are so close to a release that we don't want to pull in a
gnulib submodule update and risk regressions, since there has
been a lot of other gnulib churn upstream.  However, there are
a couple of gnulib issues that are worth fixing in isolation,
by applying local patches to gnulib.

There was an upstream gnulib bug in maint.mk that rendered most
of our syntax checks ineffective (and fixing it flushed out a
minor bug in our code):
https://lists.gnu.org/archive/html/bug-gnulib/2012-03/msg00194.html

There is still an upstream bug where gnulib uses the wrong type
for ssize_t on mingw; we need the fix now even though it has not
yet been accepted into gnulib:
https://lists.gnu.org/archive/html/bug-gnulib/2012-03/msg00188.html

* gnulib/local/top/maint.mk.diff: Pick up upstream gnulib
maint.mk.
* gnulib/local/m4/ssize_t.m4.diff: Work around gnulib bug.
* src/libvirt.c: Remove unused header.
---

Yes, I know reading a diff of a diff is hard.

Any objections to this?  I'd like to apply it before RC2 is built.

I am not set up to easily test if the ssize_t fix works on mingw.
I _did_ test it on Linux, including where I primed the configure
cache to intentionally treat ssize_t as missing, so I'm confident
the replacement mechanism works; I just don't know if it will
silence the warnings that Dan reported here:
https://www.redhat.com/archives/libvir-list/2012-March/msg01273.html

And we still need _part_ of that patch (the conversion from fprintf
to asprintf, in order to support %zd in the first place).

 gnulib/local/m4/ssize_t.m4.diff |   34 ++++++++++++++++++++++++++++++++++
 gnulib/local/top/maint.mk.diff  |   32 ++++++++++++++++++++++++++++++++
 src/libvirt.c                   |    2 --
 3 files changed, 66 insertions(+), 2 deletions(-)
 create mode 100644 gnulib/local/m4/ssize_t.m4.diff
 create mode 100644 gnulib/local/top/maint.mk.diff

diff --git a/gnulib/local/m4/ssize_t.m4.diff b/gnulib/local/m4/ssize_t.m4.diff
new file mode 100644
index 0000000..d0ae286
--- /dev/null
+++ b/gnulib/local/m4/ssize_t.m4.diff
@@ -0,0 +1,34 @@
+diff --git i/m4/ssize_t.m4 w/m4/ssize_t.m4
+index 209d64c..5ea72a1 100644
+--- i/m4/ssize_t.m4
++++ w/m4/ssize_t.m4
+@@ -1,4 +1,4 @@
+-# ssize_t.m4 serial 5 (gettext-0.18.2)
++# ssize_t.m4 serial 6 (gettext-0.18.2)
+ dnl Copyright (C) 2001-2003, 2006, 2010-2012 Free Software Foundation, Inc.
+ dnl This file is free software; the Free Software Foundation
+ dnl gives unlimited permission to copy and/or distribute it,
+@@ -17,7 +17,21 @@ AC_DEFUN([gt_TYPE_SSIZE_T],
+             return !x;]])],
+        [gt_cv_ssize_t=yes], [gt_cv_ssize_t=no])])
+   if test $gt_cv_ssize_t = no; then
+-    AC_DEFINE([ssize_t], [int],
+-              [Define as a signed type of the same size as size_t.])
++    AC_CACHE_CHECK([for rank of size_t], [gt_cv_size_t_rank],
++      [AC_COMPILE_IFELSE(
++        [AC_LANG_PROGRAM(
++          [[#include <sys/types.h>
++          #ifdef __cplusplus
++          extern "C" {
++          #endif
++            int foo(unsigned long bar);
++            int foo(size_t bar);
++          #ifdef __cplusplus
++          }
++          #endif
++          ]])],
++       [gt_cv_size_t_rank=long], [gt_cv_size_t_rank=int])])
++    AC_DEFINE_UNQUOTED([ssize_t], [$gt_cv_size_t_rank],
++              [Define as a signed type of the same size and rank as size_t.])
+   fi
+ ])
diff --git a/gnulib/local/top/maint.mk.diff b/gnulib/local/top/maint.mk.diff
new file mode 100644
index 0000000..85e97ae
--- /dev/null
+++ b/gnulib/local/top/maint.mk.diff
@@ -0,0 +1,32 @@
+diff --git i/top/maint.mk w/top/maint.mk
+index 4cbd5f4..2228a37 100644
+--- i/top/maint.mk
++++ w/top/maint.mk
+@@ -279,7 +279,7 @@ define _sc_search_regexp
+    if test -n "$$files"; then						\
+      if test -n "$$prohibit"; then					\
+        grep $$with_grep_options $(_ignore_case) -nE "$$prohibit" $$files \
+-         | grep -vE "$${exclude-^$$}"					\
++         | grep -vE "$${exclude:-^$$}"					\
+          && { msg="$$halt" $(_sc_say_and_exit) } || :;			\
+      else								\
+        grep $$with_grep_options $(_ignore_case) -LE "$$require" $$files \
+@@ -455,7 +455,8 @@ sc_prohibit_quotearg_without_use:
+
+ # Don't include quote.h unless you use one of its functions.
+ sc_prohibit_quote_without_use:
+-	@h='quote.h' re='\<quote(_n)? *\(' $(_sc_header_without_use)
++	@h='quote.h' re='\<quote((_n)? *\(|_quoting_options\>)' \
++	  $(_sc_header_without_use)
+
+ # Don't include this header unless you use one of its functions.
+ sc_prohibit_long_options_without_use:
+@@ -1332,7 +1333,7 @@ alpha beta stable: $(local-check) writable-files $(submodule-checks)
+ 	$(MAKE) vc-diff-check
+ 	$(MAKE) news-check
+ 	$(MAKE) distcheck
+-	$(MAKE) dist XZ_OPT=-9ev
++	$(MAKE) dist
+ 	$(MAKE) $(release-prep-hook) RELEASE_TYPE=$@
+ 	$(MAKE) -s emit_upload_commands RELEASE_TYPE=$@
+
diff --git a/src/libvirt.c b/src/libvirt.c
index 8bca16d..16d1fd5 100644
--- a/src/libvirt.c
+++ b/src/libvirt.c
@@ -45,8 +45,6 @@
 #include "virrandom.h"
 #include "viruri.h"

-#include <ctype.h>
-
 #ifndef WITH_DRIVER_MODULES
 # ifdef WITH_TEST
 #  include "test/test_driver.h"
-- 
1.7.1




More information about the libvir-list mailing list