[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

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



On Fri, Mar 30, 2012 at 10:35:41AM -0600, Eric Blake wrote:
> 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"

ACK


Daniel
-- 
|: http://berrange.com      -o-    http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org              -o-             http://virt-manager.org :|
|: http://autobuild.org       -o-         http://search.cpan.org/~danberr/ :|
|: http://entangle-photo.org       -o-       http://live.gnome.org/gtk-vnc :|


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]