On Mon, Feb 22, 2010 at 05:01:32PM -0700, Eric Blake wrote:
Borrow ideas from gnulib/build-aux/bootstrap, in order to factor the
specifics of libvirt into bootstrap.conf, while allowing future
upgrades of bootstrap to happen with less effort.
* bootstrap (gnulib_tool): Update invocation to be closer to
gnulib's version. Move libvirt specifics...
* bootstrap.conf: ...into new file.
---
All manual edits at this point, but it creates a bootstrap.conf
similar to the template in .gnulib/build-aux/bootstrap.conf.
bootstrap | 133 +++++++++++++++++++++++++++++++++-----------------------
bootstrap.conf | 124 ++++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 203 insertions(+), 54 deletions(-)
create mode 100644 bootstrap.conf
diff --git a/bootstrap b/bootstrap
index 113cc0f..269de3a 100755
--- a/bootstrap
+++ b/bootstrap
@@ -20,6 +20,72 @@ Running without arguments will suffice in most cases.
"
}
+# Configuration.
+
+# List of gnulib modules needed.
+gnulib_modules=
+
+extract_package_name='
+ /^AC_INIT(/{
+ /.*,.*,.*, */{
+ s///
+ s/[][]//g
+ s/)$//
+ p
+ q
+ }
+ s/AC_INIT(\[*//
+ s/]*,.*//
+ s/^GNU //
+ y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/
+ s/[^A-Za-z0-9_]/-/g
+ p
+ }
+'
+package=`sed -n "$extract_package_name" configure.ac` || exit
+gnulib_name=lib$package
+
+build_aux=build-aux
+source_base=lib
+m4_base=m4
+doc_base=doc
+tests_base=tests
+
+# Extra files from gnulib, which override files from other sources.
+gnulib_extra_files="
+ $build_aux/install-sh
+ $build_aux/missing
+ $build_aux/mdate-sh
+ $build_aux/texinfo.tex
+ $build_aux/depcomp
+ $build_aux/config.guess
+ $build_aux/config.sub
+ doc/INSTALL
+"
+
+# Additional gnulib-tool options to use. Use "\newline" to break lines.
+gnulib_tool_option_extras=
+
+# Other locale categories that need message catalogs.
+EXTRA_LOCALE_CATEGORIES=
+
+# Additional xgettext options to use. Use "\\\newline" to break lines.
+XGETTEXT_OPTIONS='\\\
+ --flag=_:1:pass-c-format\\\
+ --flag=N_:1:pass-c-format\\\
+ --flag=error:3:c-format --flag=error_at_line:5:c-format\\\
+'
+
+# Override the default configuration, if necessary.
+# Make sure that bootstrap.conf is sourced from the current directory
+# if we were invoked as "sh bootstrap".
+case "$0" in
+ */*) test -r "$0.conf" && . "$0.conf" ;;
+ *) test -r "$0.conf" && . ./"$0.conf" ;;
+esac
+
+# Parse options.
+
for option
do
case $option in
@@ -64,57 +130,16 @@ esac
gnulib_tool=$GNULIB_SRCDIR/gnulib-tool
<$gnulib_tool || exit
-modules='
-areadlink
-base64
-c-ctype
-canonicalize-lgpl
-close
-connect
-dirname-lgpl
-getaddrinfo
-gethostname
-getpass
-gettext
-gitlog-to-changelog
-gnumakefile
-ignore-value
-inet_pton
-ioctl
-maintainer-makefile
-mkstemp
-mktempd
-perror
-physmem
-poll
-posix-shell
-recv
-random_r
-send
-setsockopt
-socket
-stpcpy
-strchrnul
-strndup
-strerror
-strsep
-sys_stat
-time_r
-useless-if-before-free
-vasprintf
-verify
-vc-list-files
-'
-
-# Tell gnulib to:
-# require LGPLv2+
-# put *.m4 files in new gnulib/m4/ dir
-# put *.[ch] files in new gnulib/lib/ dir.
-
-$gnulib_tool \
- --lgpl=2 \
- --with-tests \
- --m4-base=gnulib/m4 \
- --source-base=gnulib/lib \
- --tests-base=gnulib/tests \
- --import $modules
+gnulib_tool_options="\
+ --import\
+ --no-changelog\
+ --aux-dir $build_aux\
+ --doc-base $doc_base\
+ --lib $gnulib_name\
+ --m4-base $m4_base/\
+ --source-base $source_base/\
+ --tests-base $tests_base\
+ $gnulib_tool_option_extras\
+"
+echo "$0: $gnulib_tool $gnulib_tool_options --import ..."
+$gnulib_tool $gnulib_tool_options --import $gnulib_modules
diff --git a/bootstrap.conf b/bootstrap.conf
new file mode 100644
index 0000000..fd3c1cb
--- /dev/null
+++ b/bootstrap.conf
@@ -0,0 +1,124 @@
+# Bootstrap configuration.
+
+# Copyright (C) 2010 Red Hat, Inc.
+
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+
+# gnulib modules used by this package.
+gnulib_modules='
+areadlink
+base64
+c-ctype
+canonicalize-lgpl
+close
+connect
+dirname-lgpl
+getaddrinfo
+gethostname
+getpass
+gettext
+gitlog-to-changelog
+gnumakefile
+ignore-value
+inet_pton
+ioctl
+maintainer-makefile
+mkstemp
+mktempd
+perror
+physmem
+poll
+posix-shell
+recv
+random_r
+send
+setsockopt
+socket
+stpcpy
+strchrnul
+strndup
+strerror
+strsep
+sys_stat
+time_r
+useless-if-before-free
+vasprintf
+verify
+vc-list-files
+'
+
+# Additional xgettext options to use. Use "\\\newline" to break lines.
+XGETTEXT_OPTIONS=$XGETTEXT_OPTIONS'\\\
+ --flag=virAsprintf:2:c-format\\\
+ --from-code=UTF-8\\\
+'
+
+# If "AM_GNU_GETTEXT(external" or "AM_GNU_GETTEXT([external]"
+# appears in configure.ac, exclude some unnecessary files.
+# Without grep's -E option (not portable enough, pre-configure),
+# the following test is ugly. Also, this depends on the existence
+# of configure.ac, not the obsolescent-named configure.in. But if
+# you're using this infrastructure, you should care about such things.
+
+gettext_external=0
+grep '^[ ]*AM_GNU_GETTEXT(external\>' configure.ac > /dev/null
&&
+ gettext_external=1
+grep '^[ ]*AM_GNU_GETTEXT(\[external\]' configure.ac > /dev/null &&
+ gettext_external=1
+
+if test $gettext_external = 1; then
+ # Gettext supplies these files, but we don't need them since
+ # we don't have an intl subdirectory.
+ excluded_files='
+ m4/glibc2.m4
+ m4/intdiv0.m4
+ m4/lcmessage.m4
+ m4/uintmax_t.m4
+ m4/ulonglong.m4
+ m4/visibility.m4
+ '
+fi
+
+# Tell gnulib to:
+# require LGPLv2+
+# put *.m4 files in new gnulib/m4/ dir
+# put *.[ch] files in new gnulib/lib/ dir.
+# import gnulib tests in new gnulib/tests/ dir.
+gnulib_name=libgnu
+m4_base=gnulib/m4
+source_base=gnulib/lib
+tests_base=gnulib/tests
+gnulib_tool_option_extras="\
+ --lgpl=2\
+ --with-tests\
+"
+
+# Build prerequisites
+buildreq="\
+autoconf 2.59
+automake 1.9.6
+autopoint -
+gettext -
+git 1.6.4
+gzip -
+libtool -
+perl 5.5
+rsync -
+tar -
+"
+
+# Automake requires that ChangeLog exist.
+touch ChangeLog || exit 1
--
ACK
Daniel
--
|: Red Hat, Engineering, London -o-
http://people.redhat.com/berrange/ :|
|:
http://libvirt.org -o-
http://virt-manager.org -o-
http://deltacloud.org :|
|:
http://autobuild.org -o-
http://search.cpan.org/~danberr/ :|
|: GnuPG: 7D3B9505 -o- F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :|