#!/bin/sh # Run this after each non-alpha release, to update the web documentation at # http://www.gnu.org/software/$pkg/manual/ # This script must be run from the top-level directory, # assumes you're using git for revision control, # and requires a .prev-version file as well as a Makefile, # from which it extracts the version number and package name, respectively. # Also, it assumes all documentation is in the doc/ sub-directory. VERSION=2009-07-21.16; # UTC # Copyright (C) 2009-2012 Free Software Foundation, Inc. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 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 General Public License # along with this program. If not, see . # Requirements: everything required to bootstrap your package, # plus these: git, cvs, cvsu, rsync, mktemp ME=$(basename "$0") warn() { printf '%s: %s\n' "$ME" "$*" >&2; } die() { warn "$*"; exit 1; } help() { cat <. EOF exit } version() { year=$(echo "$VERSION" | sed 's/[^0-9].*//') cat < This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. EOF 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 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' $builddir/Makefile) \ || die "$ME: no Makefile?" tmp_branch=web-doc-$version-$$ current_branch=$(git branch | sed -ne '/^\* /{s///;p;q;}') cleanup() { __st=$? rm -rf "$tmp" git checkout "$current_branch" git submodule update --recursive git branch -d $tmp_branch exit $__st } trap cleanup 0 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 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 "$builddir"/doc/manual/ $tmp/$pkg/manual ( cd $tmp/$pkg/manual # Add any new files: cvsu --types='?'|sed s/..// | xargs --no-run-if-empty -- cvs add -ko cvs ci -m $version ) # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "VERSION=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: