Mercurial > hg > octave-lojdl > gnulib-hg
changeset 16906:e055c477da04
gnu-web-doc-update: VPATH builds
* build-aux/gnu-web-doc-update (--builddir): New option.
Revamp the handling of options.
Prefer $(...) to `...`.
Don't pass --tmpdir=. to mktemp, it is useless given that we specify
the template, and it is GNU mktemp specific.
Prefer set -e to long series of &&.
Restore the initial git branch, not "master".
Properly initialize submodules (don't rely only on bootstrap)
Do not reconfigure blindly, use config.status.
* top/README-release: Update instructions for gnu-web-doc-update.
author | Akim Demaille <akim@lrde.epita.fr> |
---|---|
date | Thu, 07 Jun 2012 16:17:36 +0200 |
parents | 09debfeb90be |
children | 3cd0e20dcf8e |
files | ChangeLog build-aux/gnu-web-doc-update top/README-release |
diffstat | 3 files changed, 76 insertions(+), 31 deletions(-) [+] |
line wrap: on
line diff
--- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,17 @@ +2012-06-12 Akim Demaille <akim@lrde.epita.fr> + + gnu-web-doc-update: VPATH builds + * build-aux/gnu-web-doc-update (--builddir): New option. + Revamp the handling of options. + Prefer $(...) to `...`. + Don't pass --tmpdir=. to mktemp, it is useless given that we specify + the template, and it is GNU mktemp specific. + Prefer set -e to long series of &&. + Restore the initial git branch, not "master". + Properly initialize submodules (don't rely only on bootstrap). + Do not reconfigure blindly, use config.status. + * top/README-release: Update instructions for gnu-web-doc-update. + 2012-06-11 Jim Meyering <meyering@redhat.com> maint.mk: revert most of the previous change re "all these"
--- a/build-aux/gnu-web-doc-update +++ b/build-aux/gnu-web-doc-update @@ -27,59 +27,80 @@ # Requirements: everything required to bootstrap your package, # plus these: git, cvs, cvsu, rsync, mktemp -ME=`basename "$0"` +ME=$(basename "$0") warn() { printf '%s: %s\n' "$ME" "$*" >&2; } die() { warn "$*"; exit 1; } -help_version() +help() { - case $1 in - --help) cat <<EOF + cat <<EOF Usage: $ME -Run this script (no options or arguments) after each non-alpha release, -to update the web documentation at http://www.gnu.org/software/\$pkg/manual/ -Run it from your project's the top-level directory. +Run this script from top_srcdir (no options or arguments) after each +non-alpha release, to update the web documentation at +http://www.gnu.org/software/\$pkg/manual/ Run it from your project's +the top-level directory. Options: - --help print this help, then exit - --version print version number, then exit + -C, --builddir=DIR location of (configured) Makefile (default: .) + --help print this help, then exit + --version print version number, then exit Report bugs and patches to <bug-gnulib@gnu.org>. EOF - exit ;; + exit +} - --version) - year=`echo "$VERSION" | sed 's/[^0-9].*//'` - cat <<EOF +version() +{ + year=$(echo "$VERSION" | sed 's/[^0-9].*//') + cat <<EOF $ME $VERSION Copyright (C) $year Free Software Foundation, Inc, License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. EOF - exit ;; - - *) die "unrecognized option: $1";; - esac + exit } -case $# in - 0) ;; - 1) help_version $1 ;; - *) die "$ME: too many options" ;; -esac +builddir=. +while test $# != 0 +do + # Handle --option=value by splitting apart and putting back on argv. + case $1 in + --*=*) + opt=$(echo "$1" | sed -e 's/=.*//') + val=$(echo "$1" | sed -e 's/[^=]*=//') + shift + set dummy "$opt" "$val" ${1+"$@"}; shift + ;; + esac + + case $1 in + --help|--version) ${1#--};; + -C|--builddir) shift; builddir=$1; shift ;; + --*) die "unrecognized option: $1";; + *) break;; + esac +done + +test $# = 0 \ + || die "$ME: too many arguments" prev=.prev-version version=$(cat $prev) || die "$ME: no $prev file?" -pkg=$(sed -n 's/^PACKAGE = \(.*\)/\1/p' Makefile) || die "$ME: no Makefile?" +pkg=$(sed -n 's/^PACKAGE = \(.*\)/\1/p' $builddir/Makefile) \ + || die "$ME: no Makefile?" tmp_branch=web-doc-$version-$$ +current_branch=$(git branch | sed -ne '/^\* /{s///;p;q;}') cleanup() { - __st=$?; + __st=$? rm -rf "$tmp" - git checkout master + git checkout "$current_branch" + git submodule update --recursive git branch -d $tmp_branch exit $__st } @@ -89,15 +110,23 @@ # We must build using sources for which --version reports the # just-released version number, not some string like 7.6.18-20761. # That version string propagates into all documentation. +set -e git checkout -b $tmp_branch v$version -ok=0 -./bootstrap && ./configure && make && make web-manual && ok=1 -test $ok = 1 || exit 1 +git submodule update --recursive +./bootstrap +srcdir=$(pwd) +cd "$builddir" + ./config.status --recheck + ./config.status + make + make web-manual +cd "$srcdir" +set +e -tmp=$(mktemp -d --tmpdir=. web-doc-update.XXXXXX) || exit 1 +tmp=$(mktemp -d web-doc-update.XXXXXX) || exit 1 ( cd $tmp \ && cvs -d $USER@cvs.sv.gnu.org:/webcvs/$pkg co $pkg ) -rsync -avP doc/manual/ $tmp/$pkg/manual +rsync -avP "$builddir"/doc/manual/ $tmp/$pkg/manual ( cd $tmp/$pkg/manual