[libvirt] [PATCH 2/4] maint: start factoring bootstrap

Eric Blake eblake at redhat.com
Tue Feb 23 00:01:32 UTC 2010


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
-- 
1.6.6




More information about the libvir-list mailing list