This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "GNU M4 source repository".
http://git.sv.gnu.org/gitweb/?p=m4.git;a=commitdiff;h=33434cee444ebefb51734ec286857e7639500ad3 The branch, master has been updated via 33434cee444ebefb51734ec286857e7639500ad3 (commit) from 993cc5e94d2546ae7bfcb99cf749edb61a13efaf (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 33434cee444ebefb51734ec286857e7639500ad3 Author: Eric Blake <[email protected]> Date: Fri Mar 20 06:54:12 2009 -0600 Make gnulib a git submodule. * .gitmodules: New file. * gnulib: Record which version of gnulib has been tested. * bootstrap: Aid in submodule usage. * cfg.mk (gnulib_dir): Alter default location of gnulib. * HACKING: Mention how to use submodule. Signed-off-by: Eric Blake <[email protected]> (cherry picked from commit 6942f58cb5bb624a28672658a4369b85bce77783) ----------------------------------------------------------------------- Summary of changes: .gitmodules | 3 ++ ChangeLog | 9 +++++ HACKING | 42 ++++++++++++++++++++++--- bootstrap | 96 +++++++++++++++++++++++++++++----------------------------- cfg.mk | 2 +- gnulib | 1 + 6 files changed, 99 insertions(+), 54 deletions(-) create mode 100644 .gitmodules create mode 160000 gnulib diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..acb2669 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "gnulib"] + path = gnulib + url = git://git.sv.gnu.org/gnulib.git diff --git a/ChangeLog b/ChangeLog index f25fbe9..4c9c95a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2009-03-23 Eric Blake <[email protected]> + + Make gnulib a git submodule. + * .gitmodules: New file. + * gnulib: Record which version of gnulib has been tested. + * bootstrap: Aid in submodule usage. + * cfg.mk (gnulib_dir): Alter default location of gnulib. + * HACKING: Mention how to use submodule. + 2009-03-21 Eric Blake <[email protected]> Use memcmp2 to simplify lexicographic comparisons. diff --git a/HACKING b/HACKING index 17bbeaf..b409900 100644 --- a/HACKING +++ b/HACKING @@ -73,19 +73,46 @@ and is not part of a release distribution. - LZMA Utils 4.32 or later (from <http://tukaani.org/lzma/>) - Texinfo 4.8 or later - Any prerequisites of the above (such as perl, tex) - - A git checkout of gnulib. A read-only copy of gnulib can be - obtained by: + + Note that none of these bootstrapping dependencies should be required + by a distributed release. + +* M4 includes gnulib as a git submodule. By default, the bootstrap + script will attempt to run + git submodule update --init + to grab a gnulib clone from the official read-only location of + git://git.sv.gnu.org/gnulib.git + + However, this can be network and disk intensive. If you already have + another gnulib clone on your disk, you can use the environment + variable GNULIB_SRCDIR to point to the previous checkout to speed up + the process. Additionally, both the bootstrap script and gnulib-tool + require a shell that supports functions, so you can set the + environment variable CONFIG_SHELL to choose a better shell on systems + (like Solaris) where /bin/sh is lacking. Thus, you may find it + convenient to run: + GNULIB_SRCDIR=path/to/gnulib CONFIG_SHELL=path/to/sh \ + path/to/sh ./bootstrap + + A read-only copy of gnulib can be obtained by: git clone git://git.sv.gnu.org/gnulib.git or cvs -d:pserver:[email protected]:/srv/git/gnulib.git \ co -d gnulib HEAD + Using a CVS checkout might work, but it is relatively untested, + particularly now that we use a git submodule for gnulib. + If you are a member of the savannah group for gnulib, a read-write copy can be obtained by: git clone <savannah-user>@git.sv.gnu.org:/srv/git/gnulib.git - Note that none of these bootstrapping dependencies should be required - by a distributed release. + If you are behind a firewall that blocks the git protocol, you may + find it useful to do: + git config --global url.http://git.sv.gnu.org/r/.insteadof \ + git://git.sv.gnu.org/ + to force git to transparently rewrite all savannah git references to + instead use http. * Either add the gnulib directory to your PATH, or run GNULIB_TOOL=path/to/gnulib/gnulib-tool ./bootstrap @@ -214,13 +241,18 @@ yyyy-mm-dd Name of Author <em...@address> (tiny change) * Make sure your locale is sane, e.g. by exporting LC_ALL=C. +* Make sure you are happy with the particular gnulib version recorded as + the gnulib submodule. If necessary to update to the latest, run: + git submodule foreach git pull + git commit -m 'Update gnulib submodule to latest.' gnulib + * Update the version number in configure.ac. See http://www.gnu.org/software/libtool/contribute.html for details of the numbering scheme (m4 uses the same scheme as libtool). * Update NEWS, ChangeLog. -* Run ./bootstrap. +* Run ./bootstrap, perhaps with environment variables set. * Run ./configure (or create a build directory first and run configure from there, if you want to keep the build tree separate). diff --git a/bootstrap b/bootstrap index 8bc3021..f5d7321 100755 --- a/bootstrap +++ b/bootstrap @@ -1,6 +1,6 @@ #! /bin/sh -# bootstrap (GNU M4) version 2009-03-13 +# bootstrap (GNU M4) version 2009-03-23 # Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Free Software # Foundation, Inc. # License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> @@ -33,7 +33,7 @@ # You can also set the following variables to help $progname # locate the right tools: -# AUTOPOINT, AUTORECONF, AWK, GNULIB_SRCDIR, GNULIB_TOOL, LIBTOOLIZE, +# AUTOPOINT, AUTORECONF, AWK, CONFIG_SHELL, GNULIB_SRCDIR, LIBTOOLIZE, # M4, RM, SED # This script bootstraps a git or CVS checkout of GNU M4 by correctly calling @@ -50,7 +50,7 @@ : ${AUTOPOINT=autopoint} : ${AUTORECONF=autoreconf} : ${AWK=awk} -: ${GNULIB_TOOL=gnulib-tool} +: ${CONFIG_SHELL=/bin/sh} : ${LIBTOOLIZE=libtoolize} : ${M4=m4} : ${RM='rm -f'} @@ -396,35 +396,33 @@ $AUTOPOINT --force func_echo "running: $LIBTOOLIZE --force --copy --install" ${LIBTOOLIZE} --force --copy --install -## ---------------------------- ## -## Find the gnulib module tree. ## -## ---------------------------- ## +## ------------------------------ ## +## Update the gnulib module tree. ## +## ------------------------------ ## -if test -n "$GNULIB_SRCDIR" && test -d "$GNULIB_SRCDIR" ; then - gnulibdir=$GNULIB_SRCDIR +if test -d .git && (git --version) >/dev/null 2>/dev/null ; then + if test -f gnulib/gnulib-tool ; then + func_echo "updating gnulib submodule" + git submodule update \ + || func_fatal_error "Unable to update gnulib" + else + # A fresh checkout creates an empty subdirectory gnulib. However, + # older git didn't know how to clone into an empty subdir. If the + # user provided GNULIB_SRCDIR, then make the initial clone refer + # to the existing checkout, to save network traffic. + func_echo "importing gnulib submodule" + if test -d "$GNULIB_SRCDIR" ; then + rmdir gnulib 2>/dev/null + git clone --reference "$GNULIB_SRCDIR" git://git.sv.gnu.org/gnulib.git \ + && git submodule init && git submodule update \ + || func_fatal_error "Unable to update gnulib" + else + git submodule update --init \ + || func_fatal_error "Unable to update gnulib" + fi + fi else - case $GNULIB_TOOL in - /* ) gnulibdir=$GNULIB_TOOL ;; # absolute - */* ) gnulibdir=`pwd`/$GNULIB_TOOL ;; # relative - * ) gnulibdir=`which "$GNULIB_TOOL"` ;; # PATH search - esac - - # Follow symlinks - while test -h "$gnulibdir"; do - - # Resolve symbolic link. - sedexpr1='s, -> ,#%%#,' - sedexpr2='s,^.*#%%#\(.*\)$,\1,p' - linkval=`ls -l "$gnulibdir" | $SED "$sedexpr1" | $SED -n "$sedexpr2"` - test -n "$linkval" || break - - case "$linkval" in - /* ) gnulibdir="$linkval" ;; - * ) gnulibdir=`echo "$gnulibdir" | sed -e 's,/[^/]*$,,'`/"$linkval" ;; - esac - - done - gnulibdir=`echo "$gnulibdir" | $SED "$dirname"` + func_echo "git not detected. If needed, update gnulib subdirectory manually" fi @@ -432,9 +430,9 @@ fi ## Import Gnulib modules. ## ## ---------------------- ## -func_echo "running: ${GNULIB_TOOL} --update" -${GNULIB_TOOL} --update - +func_echo "running: $CONFIG_SHELL gnulib/gnulib-tool --update" +$CONFIG_SHELL gnulib/gnulib-tool --update \ + || func_fatal_error "gnulib-tool failed" ## --------------------------------- ## ## Copy additional src only modules. ## @@ -442,7 +440,8 @@ ${GNULIB_TOOL} --update func_echo "fetching modules for src directory" -for file in `${GNULIB_TOOL} --extract-filelist $src_modules`; do +for file in `$CONFIG_SHELL gnulib/gnulib-tool --extract-filelist $src_modules` +do dest=`echo $file | $SED "$basename"` case $file in @@ -454,11 +453,11 @@ for file in `${GNULIB_TOOL} --extract-filelist $src_modules`; do esac # Be sure to show all copying errors before bailing out - if test -f $gnulibdir/$file; then + if test -f gnulib/$file; then func_echo "copying file \`$dest'" - cp $gnulibdir/$file $dest + cp gnulib/$file $dest else - func_error "$gnulibdir/$file does not exist" + func_error "gnulib/$file does not exist" bailout_cb="exit 1" fi done @@ -480,17 +479,18 @@ AUTOPOINT=true LIBTOOLIZE=true \ ## Gnulib is more up-to-date than automake. ## ## ---------------------------------------- ## -func_update "$gnulibdir"/build-aux/config.guess $config_aux_dir/config.guess -func_update "$gnulibdir"/build-aux/config.sub $config_aux_dir/config.sub -func_update "$gnulibdir"/build-aux/depcomp $config_aux_dir/depcomp -func_update "$gnulibdir"/build-aux/install-sh $config_aux_dir/install-sh -func_update "$gnulibdir"/build-aux/mdate-sh $config_aux_dir/mdate-sh -func_update "$gnulibdir"/build-aux/missing $config_aux_dir/missing -func_update "$gnulibdir"/build-aux/texinfo.tex $config_aux_dir/texinfo.tex -func_update "$gnulibdir"/build-aux/po/Makefile.in.in po/Makefile.in.in -func_update "$gnulibdir"/build-aux/po/remove-potcdate.sin po/remove-potcdate.sin -func_update "$gnulibdir"/doc/COPYINGv3 COPYING -func_update "$gnulibdir"/doc/INSTALL INSTALL +func_update gnulib/build-aux/compile $config_aux_dir/compile +func_update gnulib/build-aux/config.guess $config_aux_dir/config.guess +func_update gnulib/build-aux/config.sub $config_aux_dir/config.sub +func_update gnulib/build-aux/depcomp $config_aux_dir/depcomp +func_update gnulib/build-aux/install-sh $config_aux_dir/install-sh +func_update gnulib/build-aux/mdate-sh $config_aux_dir/mdate-sh +func_update gnulib/build-aux/missing $config_aux_dir/missing +func_update gnulib/build-aux/texinfo.tex $config_aux_dir/texinfo.tex +func_update gnulib/build-aux/po/Makefile.in.in po/Makefile.in.in +func_update gnulib/build-aux/po/remove-potcdate.sin po/remove-potcdate.sin +func_update gnulib/doc/COPYINGv3 COPYING +func_update gnulib/doc/INSTALL INSTALL ## ------- ## diff --git a/cfg.mk b/cfg.mk index a67d088..2aac5ac 100644 --- a/cfg.mk +++ b/cfg.mk @@ -37,4 +37,4 @@ local-checks-to-skip = changelog-check # The local directory containing the checked-out copy of gnulib used in this # release. Used solely to get gnulib's SHA1 for the "announcement" target. -gnulib_dir = $(srcdir)/../gnulib +gnulib_dir = $(srcdir)/gnulib diff --git a/gnulib b/gnulib new file mode 160000 index 0000000..6c410f6 --- /dev/null +++ b/gnulib @@ -0,0 +1 @@ +Subproject commit 6c410f6d2875a0a41671daab4d9751a74c69c451 hooks/post-receive -- GNU M4 source repository
