[libvirt] [PATCH] build: use more gnulib modules for simpler code

Eric Blake eblake at redhat.com
Tue Jan 18 22:44:49 UTC 2011


On 01/18/2011 02:06 PM, Matthias Bolte wrote:
> 2011/1/17 Eric Blake <eblake at redhat.com>:
>> * .gnulib: Update to latest, for sigpipe and sigaction modules.
>> * bootstrap.conf (gnulib_modules): Add siaction, sigpipe, strerror_r.
>> * tools/virsh.c (vshSetupSignals) [!SIGPIPE]: Delete, now that
>> gnulib guarantees it.
>> (SA_SIGINFO): Define for mingw fallback.
>> * src/util/virterror.c (virStrerror): Simplify, now that gnulib
>> guarantees the POSIX interface.
>> * configure.ac (AC_CHECK_FUNCS_ONCE): Drop redundant check.
>> (AM_PROG_CC_STDC): Move earlier, to keep autoconf happy.
>>
> 
> ACK.

Thanks; pushed.

Note - this commit has the (unfortunate) side-effect that incrementally
crossing this commit when doing bisection or other branch traversal may
cause some spurious build failures.  There are (at least) two issues
that I ran into during my testing where we have some chicken-and-egg
dependency tracking issues in the makefiles such that the incremental
build fails, but where a fresh checkout will succeed.  So, if you run
into either issue, hopefully these hints will help you avoid spending
the time of a complete fresh checkout:

1. On Linux, strerror_r has two different signatures, depending on
whether you are targetting POSIX or _GNU_SOURCE.  Prior to this patch,
we used only the _GNU_SOURCE signature; after this patch, the code
expects the POSIX signature (in spite of using _GNU_SOURCE).  But gnulib
(intentionally) won't regenerate gnulib/lib/string.h merely because we
added another module to bootstrap.conf, so the build may fail when the
current state of the generated header doesn't match the state of the
code calling strerror_r.  If this happens, 'rm -f gnulib/lib/string.h &&
make' is safe and will resolve the problem.

2. This patch introduces an ordering constraint that causes newer
autoconf some grief about the location of AM_PROG_CC_STDC.  This is
fixed if you have the latest gnulib .m4 files in place.  However, the
makefile rules for determining when to rerun ./autogen.sh have a
dependency glitch where sometimes they try to rerun autoconf prior to
rerunning autogen.sh, therefore, the autoconf run will fail because the
updated gnulib macros haven't yet been picked up.  If this happens, 'git
submodule update && ./bootstrap && make' will clear up the problem.

-- 
Eric Blake   eblake at redhat.com    +1-801-349-2682
Libvirt virtualization library http://libvirt.org

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 619 bytes
Desc: OpenPGP digital signature
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20110118/0741a34d/attachment-0001.sig>


More information about the libvir-list mailing list