[libvirt] [PATCH] tests: work around pdwtags 1.9 failure

On rawhide, gcc is new enough to output new DWARF information that pdwtags has not yet learned, but the resulting 'make check' output was rather confusing: $ make -C src check ... GEN virkeepaliveprotocol-structs die__process_function: DW_TAG_INVALID (0x4109) @ <0x58c> not handled! WARNING: your pdwtags program is too old WARNING: skipping the virkeepaliveprotocol-structs test WARNING: install dwarves-1.3 or newer ... $ pdwtags --version v1.9 I've filed the pdwtags deficiency as https://bugzilla.redhat.com/show_bug.cgi?id=772358 * src/Makefile.am (PDWTAGS): Don't leave -t file behind on version mismatch. Soften warning message, since 1.9 is newer than 1.3. Don't leak stderr from broken version. --- Although this feels pretty trivial, it's not quite a build-breaker (everything still worked), so I'll await a review before pushing. src/Makefile.am | 17 +++++++++++------ 1 files changed, 11 insertions(+), 6 deletions(-) diff --git a/src/Makefile.am b/src/Makefile.am index 93bf54c..0a1221a 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -1,6 +1,6 @@ ## Process this file with automake to produce Makefile.in -## Copyright (C) 2005-2011 Red Hat, Inc. +## Copyright (C) 2005-2012 Red Hat, Inc. ## See COPYING.LIB for the License of this software # No libraries with the exception of LIBXML should be listed @@ -248,8 +248,12 @@ struct_prefix = (remote_|qemu_|virNet|keepalive_) PDWTAGS = \ $(AM_V_GEN)if (pdwtags --help) > /dev/null 2>&1; then \ - pdwtags --verbose $(<:.lo=.$(OBJEXT)) \ - | perl -0777 -n \ + pdwtags --verbose $(<:.lo=.$(OBJEXT)) > $(@F)-t1 2> $(@F)-t2; \ + if test -s $(@F)-t2; then \ + rm -rf $(@F)-t?; \ + echo 'WARNING: pdwtags appears broken; skipping the $@ test' >&2;\ + else \ + perl -0777 -n \ -e 'foreach my $$p (split m!\n*(?:$(r1)|$(r2))\n!) {' \ -e ' if ($$p =~ /^(struct|enum) $(struct_prefix)/ ||' \ -e ' $$p =~ /^enum {/) {' \ @@ -272,9 +276,10 @@ PDWTAGS = \ -e ' exit 8;' \ -e ' }' \ -e '}' \ - > $(@F)-t; \ - case $$? in 8) exit 0;; 0) ;; *) exit 1;; esac; \ - diff -u $(@F)-t $@; st=$$?; rm -f $(@F)-t; exit $$st; \ + < $(@F)-t1 > $(@F)-t3; \ + case $$? in 8) rm -f $(@F)-t?; exit 0;; 0) ;; *) exit 1;; esac;\ + diff -u $(@F)-t3 $@; st=$$?; rm -f $(@F)-t?; exit $$st; \ + fi; \ else \ echo 'WARNING: you lack pdwtags; skipping the $@ test' >&2; \ echo 'WARNING: install the dwarves package to get pdwtags' >&2; \ -- 1.7.7.5

On Fri, Jan 06, 2012 at 04:07:34PM -0700, Eric Blake wrote:
On rawhide, gcc is new enough to output new DWARF information that pdwtags has not yet learned, but the resulting 'make check' output was rather confusing:
$ make -C src check ... GEN virkeepaliveprotocol-structs die__process_function: DW_TAG_INVALID (0x4109) @ <0x58c> not handled! WARNING: your pdwtags program is too old WARNING: skipping the virkeepaliveprotocol-structs test WARNING: install dwarves-1.3 or newer ... $ pdwtags --version v1.9
I've filed the pdwtags deficiency as https://bugzilla.redhat.com/show_bug.cgi?id=772358
* src/Makefile.am (PDWTAGS): Don't leave -t file behind on version mismatch. Soften warning message, since 1.9 is newer than 1.3. Don't leak stderr from broken version. ---
Although this feels pretty trivial, it's not quite a build-breaker (everything still worked), so I'll await a review before pushing.
src/Makefile.am | 17 +++++++++++------ 1 files changed, 11 insertions(+), 6 deletions(-)
diff --git a/src/Makefile.am b/src/Makefile.am index 93bf54c..0a1221a 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -1,6 +1,6 @@ ## Process this file with automake to produce Makefile.in
-## Copyright (C) 2005-2011 Red Hat, Inc. +## Copyright (C) 2005-2012 Red Hat, Inc. ## See COPYING.LIB for the License of this software
# No libraries with the exception of LIBXML should be listed @@ -248,8 +248,12 @@ struct_prefix = (remote_|qemu_|virNet|keepalive_)
PDWTAGS = \ $(AM_V_GEN)if (pdwtags --help) > /dev/null 2>&1; then \ - pdwtags --verbose $(<:.lo=.$(OBJEXT)) \ - | perl -0777 -n \ + pdwtags --verbose $(<:.lo=.$(OBJEXT)) > $(@F)-t1 2> $(@F)-t2; \ + if test -s $(@F)-t2; then \ + rm -rf $(@F)-t?; \ + echo 'WARNING: pdwtags appears broken; skipping the $@ test' >&2;\ + else \ + perl -0777 -n \ -e 'foreach my $$p (split m!\n*(?:$(r1)|$(r2))\n!) {' \ -e ' if ($$p =~ /^(struct|enum) $(struct_prefix)/ ||' \ -e ' $$p =~ /^enum {/) {' \ @@ -272,9 +276,10 @@ PDWTAGS = \ -e ' exit 8;' \ -e ' }' \ -e '}' \ - > $(@F)-t; \ - case $$? in 8) exit 0;; 0) ;; *) exit 1;; esac; \ - diff -u $(@F)-t $@; st=$$?; rm -f $(@F)-t; exit $$st; \ + < $(@F)-t1 > $(@F)-t3; \ + case $$? in 8) rm -f $(@F)-t?; exit 0;; 0) ;; *) exit 1;; esac;\ + diff -u $(@F)-t3 $@; st=$$?; rm -f $(@F)-t?; exit $$st; \ + fi; \ else \ echo 'WARNING: you lack pdwtags; skipping the $@ test' >&2; \ echo 'WARNING: install the dwarves package to get pdwtags' >&2; \
ACK, That's fairly cryptic, but looks fine here, so I'm pushing to get it in 0.9.9, thanks ! Daniel -- Daniel Veillard | libxml Gnome XML XSLT toolkit http://xmlsoft.org/ daniel@veillard.com | Rpmfind RPM search engine http://rpmfind.net/ http://veillard.com/ | virtualization library http://libvirt.org/
participants (2)
-
Daniel Veillard
-
Eric Blake