libevent/test/rpcgen_wrapper.sh
Ross Lagerwall 243386ccc2 rpcgen: Generate regress.gen.[c,h] in build rather than src dir
Currently an out-of-tree build will either write to the src dir or reuse
the existing regress.gen.[c,h].  But if building from a read-only git
tree (or if the git dir is cleaned), these files will not exist and the
build fails.  So write the files to the build dir.  If the system does
not have python, the regress.gen.[c,h] will be used from the src dir if
they exist.
2013-09-15 21:48:15 +02:00

53 lines
1.5 KiB
Bash
Executable File

#!/bin/sh
# libevent rpcgen_wrapper.sh
# Transforms event_rpcgen.py failure into success for make, only if
# regress.gen.c and regress.gen.h already exist in $srcdir. This
# is needed for "make distcheck" to pass the read-only $srcdir build,
# as with read-only sources fresh from tarball, regress.gen.[ch] will
# be correct in $srcdir but unwritable. This previously triggered
# Makefile.am to create stub regress.gen.c and regress.gen.h in the
# distcheck _build directory, which were then detected as leftover
# files in the build tree after distclean, breaking distcheck.
# Note that regress.gen.[ch] are not in fresh git clones, making
# working Python a requirement for make distcheck of a git tree.
exit_updated() {
# echo "Updated ${srcdir}/regress.gen.c and ${srcdir}/regress.gen.h"
exit 0
}
exit_reuse() {
echo "event_rpcgen.py failed, ${srcdir}/regress.gen.\[ch\] will be reused." >&2
exit 0
}
exit_failed() {
echo "Could not generate regress.gen.\[ch\] using event_rpcgen.sh" >&2
exit 1
}
if [ -x /usr/bin/python2 ] ; then
PYTHON2=/usr/bin/python2
elif [ "x`which python2`" != x ] ; then
PYTHON2=python2
else
PYTHON2=python
fi
srcdir=$1
srcdir=${srcdir:-.}
${PYTHON2} ${srcdir}/../event_rpcgen.py --quiet ${srcdir}/regress.rpc \
test/regress.gen.h test/regress.gen.c
case "$?" in
0)
exit_updated
;;
*)
test -r ${srcdir}/regress.gen.c -a -r ${srcdir}/regress.gen.h && \
exit_reuse
exit_failed
;;
esac