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

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

On 01/18/2011 02:06 PM, Matthias Bolte wrote:
> 2011/1/17 Eric Blake <eblake 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 redhat com    +1-801-349-2682
Libvirt virtualization library http://libvirt.org

Attachment: signature.asc
Description: OpenPGP digital signature

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