[libvirt] [PATCH] build: fix mingw ssize_t, syntax check
Daniel P. Berrange
berrange at redhat.com
Fri Mar 30 16:54:06 UTC 2012
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 :|
More information about the libvir-list
mailing list