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

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



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


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