[libvirt] gnulib compiler warning detection broken on RHEL5 autoconf

I was wondering why I didn't see any compile warnings from the broken gnutls code on RHEL5 when I noticed that we were building without any compiler warning flags at all. It seems configure fails on RHEL5 vintage autoconf checking whether compiler handles -Wall... ./configure: line 75468: ${$as_gl_Warn+set}: bad substitution I'm guessing it is the gl_WARN_ADD() macro that is at fault somehow. 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 :|

On 07/26/2011 04:45 AM, Daniel P. Berrange wrote:
I was wondering why I didn't see any compile warnings from the broken gnutls code on RHEL5 when I noticed that we were building without any compiler warning flags at all.
It seems configure fails on RHEL5 vintage autoconf
checking whether compiler handles -Wall... ./configure: line 75468: ${$as_gl_Warn+set}: bad substitution
Yuck. I'll take a look (it may be that older autoconf has a bug, and I merely need to backport a workaround for that bug fix).
I'm guessing it is the gl_WARN_ADD() macro that is at fault somehow.
Very possible, in fact, it may be a case of gl_WARN_ADD using an autoconf macro and assuming newer semantics, where a bit more work is needed to guarantee support with autoconf 2.59. -- Eric Blake eblake@redhat.com +1-801-349-2682 Libvirt virtualization library http://libvirt.org

On 07/26/2011 10:05 AM, Eric Blake wrote:
On 07/26/2011 04:45 AM, Daniel P. Berrange wrote:
I was wondering why I didn't see any compile warnings from the broken gnutls code on RHEL5 when I noticed that we were building without any compiler warning flags at all.
It seems configure fails on RHEL5 vintage autoconf
checking whether compiler handles -Wall... ./configure: line 75468: ${$as_gl_Warn+set}: bad substitution
Yuck. I'll take a look (it may be that older autoconf has a bug, and I merely need to backport a workaround for that bug fix).
I'm guessing it is the gl_WARN_ADD() macro that is at fault somehow.
Very possible, in fact, it may be a case of gl_WARN_ADD using an autoconf macro and assuming newer semantics, where a bit more work is needed to guarantee support with autoconf 2.59.
Yep. Bug is in gnulib. When using AS_VAR_PUSHDEF, autoconf 2.59 requires that all subsequent uses of that placeholder be used _unquoted_ until the AS_VAR_POPDEF. Newer autoconf fixed things to work with the typical autoconf quoting rules, but gnulib wants to work with autoconf 2.59, so it must use the older syntax. I'll be pushing a gnulib fix shortly. -- Eric Blake eblake@redhat.com +1-801-349-2682 Libvirt virtualization library http://libvirt.org

Without this, a configure built by autoconf 2.59 was broken when trying to detect which compiler warning flags were supported. * .gnulib: Update to latest, for warnings.m4 fix. * src/qemu/qemu_conf.c (includes): Drop unused include. * src/uml/uml_conf.c (include): Likewise. Reported by Daniel P. Berrange. --- * .gnulib a918da4...336406c (86):
include-next, warnings: support older autoconf fseek, ftell: Fix doc. Add dependencies to the 'largefile' module. fcntl: Move AC_LIBOBJ invocation to module description. fcntl: Remove call-in from fchdir.m4. dup3: Remove potential call-in from fchdir.m4. dup2: Move AC_LIBOBJ invocation to module description. dup2: Remove call-in from fchdir.m4. fclose: Move AC_LIBOBJ invocation to module description. fclose: Remove call-in from close.m4. close: Move AC_LIBOBJ invocation to module description. close: Remove call-in from fchdir.m4. open: Move AC_LIBOBJ invocation to module description. open: Remove call-in from fchdir.m4. fchdir: Start to remove gl_REPLACE_* idiom. * lib/ftell.c (ftell): Comment out cast. close: use gl_REPLACE_FCLOSE only if defined test-select.h: avoid warning from gcc's -Wmissing-declarations doc: Mention the effects of AC_SYS_LARGEFILE. doc: Fix typo. doc: Mention fsusage. Reorder ChangeLog entries to match the order in which the changes went in at the central repository. doc: Mention new glibc headers and functions. ftell: don't include <unistd.h> ftell: do not assume wraparound signed arithmetic Attribution for last commit. close: No longer depend on module 'fclose'. fsusage: Enable large volume support on AIX >= 5.2. fsusage: Restore previous behaviour on AIX, Cygwin, Interix. fsusage: Support large volumes on glibc/Hurd, HP-UX, Solaris, MacOS X. * README: Modernize discussion of signed integers. select tests, pselect tests: Refactor. sys_select tests: Check the signature of FD_*. largefile: new module, replacing large-inode fsusage: port to MacOS X 10.7 with 4 TiB file systems large-inode: New module extensions: Enable extensions on MacOS X 10.5 and later. file-has-acl: use acl_extended_file_nofollow if available Declare system functions in a way that works with C++. maint.mk: prohibit inclusion of "verify.h" without use timer-time: A new module to check for timer_settime() pthread_sigmask: assume POSIX threads if --avoid=threadlib strstr: Update cross-compilation guess. getopt-gnu: suppress core dumps from detection code pthread_sigmask: ensure usleep is declared doc: Document NonStop portability issues. ffsl, ffsll: Avoid unportable behaviour. ffs: More tests. ffsl, ffsll: new modules ffs: fix m4 prerequisite ffs: avoid undefined behavior pthread_sigmask: Rely on module 'threadlib'. regex: Depend on module 'strcase'. warn-on-use: fix typo in file name strings: Document module. Rename module '_Noreturn' to 'snippet/_Noreturn'. Mention the changes. Rename module 'warn-on-use' to 'snippet/warn-on-use'. Rename module 'unused-parameter' to 'snippet/unused-parameter'. Rename module 'link-warning' to 'snippet/link-warning'. Rename module 'c++defs' to 'snippet/c++defs'. Rename module 'arg-nonnull' to 'snippet/arg-nonnull'. Improve ChangeLog to summarize _Noreturn better. modules/_Exit-tests: test _Noreturn too stdnoreturn, stdnoreturn-tests: remove modules _Noreturn: Ignore __STDC_VERSION__; observe _MSC_VER. _Noreturn-tests: remove module * top/maint.mk: Adjust to new noreturn support. xalloc: use stdnoreturn.h xstrtol: use stdnoreturn.h xmemdup0: use stdnoreturn.h sigpipe-die: use stdnoreturn.h openat: use stdnoreturn.h * lib/openat-die.c (openat_save_fail): Modernize comment. * lib/xalloc-die.c (xalloc_die): Modernize comment. * lib/glthread/thread.h: Modernize comment. obstack: use _Noreturn c-stack: use _Noreturn exclude_tests: use _Noreturn argmatch-tests: use _Noreturn stdlib: use _Noreturn stdnoreturn-tests: new module stdnoreturn: new module _Noreturn-tests: new module _Noreturn: new module * m4/gnulib-common.m4 (gl_COMMON_BODY): Add _Noreturn.
.gnulib | 2 +- src/qemu/qemu_conf.c | 1 - src/uml/uml_conf.c | 1 - 3 files changed, 1 insertions(+), 3 deletions(-) diff --git a/.gnulib b/.gnulib index a918da4..336406c 160000 --- a/.gnulib +++ b/.gnulib @@ -1 +1 @@ -Subproject commit a918da4d61d28be61a12605c9d35e2cf3966d866 +Subproject commit 336406c13cc08ee13d6a15cc8cf86efb9132a830 diff --git a/src/qemu/qemu_conf.c b/src/qemu/qemu_conf.c index 6efca6b..443e08d 100644 --- a/src/qemu/qemu_conf.c +++ b/src/qemu/qemu_conf.c @@ -46,7 +46,6 @@ #include "conf.h" #include "util.h" #include "memory.h" -#include "verify.h" #include "datatypes.h" #include "xml.h" #include "nodeinfo.h" diff --git a/src/uml/uml_conf.c b/src/uml/uml_conf.c index c4b6e75..417271e 100644 --- a/src/uml/uml_conf.c +++ b/src/uml/uml_conf.c @@ -43,7 +43,6 @@ #include "util.h" #include "memory.h" #include "nodeinfo.h" -#include "verify.h" #include "bridge.h" #include "logging.h" #include "domain_nwfilter.h" -- 1.7.4.4

On 07/26/2011 02:25 PM, Eric Blake wrote:
Without this, a configure built by autoconf 2.59 was broken when trying to detect which compiler warning flags were supported.
* .gnulib: Update to latest, for warnings.m4 fix. * src/qemu/qemu_conf.c (includes): Drop unused include. * src/uml/uml_conf.c (include): Likewise. Reported by Daniel P. Berrange. ---
* .gnulib a918da4...336406c (86):
close: No longer depend on module 'fclose'.
This gnulib commit means that we also have to modify bootstrap.conf to explicitly pull in the fclose module (we were previously relying on it, but only implicitly). I plan to squash this in: diff --git i/bootstrap.conf w/bootstrap.conf index 2fc457e..f006a47 100644 --- i/bootstrap.conf +++ w/bootstrap.conf @@ -36,6 +36,7 @@ configmake count-one-bits crypto/md5 dirname-lgpl +fclose fcntl-h ffs fnmatch -- Eric Blake eblake@redhat.com +1-801-349-2682 Libvirt virtualization library http://libvirt.org

On Tue, Jul 26, 2011 at 02:25:40PM -0600, Eric Blake wrote:
Without this, a configure built by autoconf 2.59 was broken when trying to detect which compiler warning flags were supported.
* .gnulib: Update to latest, for warnings.m4 fix. * src/qemu/qemu_conf.c (includes): Drop unused include. * src/uml/uml_conf.c (include): Likewise. Reported by Daniel P. Berrange.
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 :|

On 07/27/2011 02:03 AM, Daniel P. Berrange wrote:
On Tue, Jul 26, 2011 at 02:25:40PM -0600, Eric Blake wrote:
Without this, a configure built by autoconf 2.59 was broken when trying to detect which compiler warning flags were supported.
* .gnulib: Update to latest, for warnings.m4 fix. * src/qemu/qemu_conf.c (includes): Drop unused include. * src/uml/uml_conf.c (include): Likewise. Reported by Daniel P. Berrange.
ACK
Thanks; pushed. -- Eric Blake eblake@redhat.com +1-801-349-2682 Libvirt virtualization library http://libvirt.org
participants (2)
-
Daniel P. Berrange
-
Eric Blake