Eric Blake wrote:
With my help on IRC, Roman Bogorodskiy identified a bug where the
BSD autoconf wrapper script eats stdin[1], which in turn causes
autopoint from gettext 0.18.3 to fail to find AM_GNU_GETTEXT_VERSION
within configure.ac[2], with this error:
./bootstrap: autopoint --force
autopoint: *** Missing version: please specify in configure.ac through a line
'AM_GNU_GETTEXT_VERSION(x.yy.zz)' the gettext version the package is using
[1]
http://www.freebsd.org/cgi/query-pr.cgi?pr=ports/184479
[2]
http://git.sv.gnu.org/cgit/gettext.git/commit/gettext-tools/misc/autopoin...
We found a workaround - fake the use of an intl subdirectory long
enough for autopoint to get what it wants from that fallback. This
workaround may eventually move upstream into gnulib's bootstrap;
when it does, we can remove the hack from libvirt's autogen.sh.
* autogen.sh (bootstrap): Force autopoint to work even if autom4te
doesn't.
Signed-off-by: Eric Blake <eblake(a)redhat.com>
---
I tested that this doesn't fall apart on Fedora 19 when running
autogen.sh (autopoint 0.18.2, no autom4te wrapper), but would
like feedback from Roman that it works for his broken toolchain
setup. I'd also like feedback from gnulib whether we should
fold a similar fix into gnulib's bootstrap, instead of applying
this patch to libvirt.
It works only when the submodule is not up to date.
When running autogen.sh again it doesn't reach the 'else' clause
you create intl/VERSION in, so it just runs autoreconf and
fails with the same error.
Also, I think we cannot do 'rmdir intl' because it's not empty (scripts
copy over gettext sources there?), so it fails:
rmdir: intl: Directory not empty
autogen.sh | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/autogen.sh b/autogen.sh
index 5aa1990..31e66c0 100755
--- a/autogen.sh
+++ b/autogen.sh
@@ -88,9 +88,16 @@ if test -d .git || test -f .git; then
echo cleaning up submodules...
git submodule foreach 'git clean -dfqx && git reset --hard'
fi
+ # work around broken BSD toolchain, where gettext 0.18.3 triggers
+ # a bug with the autom4te wrapper script eating stdin unless
+ # intl/VERSION exists, with contents comparable to configure.ac
+ mkdir -p intl
+ echo gettext-0.17 > intl/VERSION
echo running bootstrap$no_git...
./bootstrap$no_git --bootstrap-sync && bootstrap_hash > $curr_status
\
|| { echo "Failed to bootstrap, please investigate."; exit 1; }
+ rm intl/VERSION
+ rmdir -p intl
fi
fi
--
1.8.3.1
Roman Bogorodskiy