summaryrefslogtreecommitdiff
path: root/build-aux/gnu-web-doc-update
diff options
context:
space:
mode:
authorAkim Demaille <akim@lrde.epita.fr>2012-06-07 16:17:36 +0200
committerAkim Demaille <akim@lrde.epita.fr>2012-06-12 12:22:08 +0200
commitb630d56579abda426606c94747748982f30e4a6c (patch)
tree842b5d6a4e4caeef4e03ba026ac92a4aeec89a15 /build-aux/gnu-web-doc-update
parent10128b6de9e71f24d53e081007b67ed2bcbcd33b (diff)
downloadgnulib-b630d56579abda426606c94747748982f30e4a6c.tar.gz
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.
Diffstat (limited to 'build-aux/gnu-web-doc-update')
-rwxr-xr-xbuild-aux/gnu-web-doc-update89
1 files changed, 59 insertions, 30 deletions
diff --git a/build-aux/gnu-web-doc-update b/build-aux/gnu-web-doc-update
index 7a4304980e..851f8b899b 100755
--- a/build-aux/gnu-web-doc-update
+++ b/build-aux/gnu-web-doc-update
@@ -27,59 +27,80 @@ VERSION=2009-07-21.16; # UTC
# 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 ;;
+ exit
+}
+
+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
- *) die "unrecognized option: $1";;
+ case $1 in
+ --help|--version) ${1#--};;
+ -C|--builddir) shift; builddir=$1; shift ;;
+ --*) die "unrecognized option: $1";;
+ *) break;;
esac
-}
+done
-case $# in
- 0) ;;
- 1) help_version $1 ;;
- *) die "$ME: too many options" ;;
-esac
+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 @@ trap 'exit $?' 1 2 13 15
# 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
-
-tmp=$(mktemp -d --tmpdir=. web-doc-update.XXXXXX) || 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 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