diff --git a/tools/webupdate b/tools/webupdate index 82632cd993..a4393679b6 100644 --- a/tools/webupdate +++ b/tools/webupdate @@ -1,133 +1,141 @@ #!/bin/sh # Copyright (c) 2001 Wolfram Schneider # Copyright (c) 2001 Dima Dorfman # # Update the FreeBSD web site from the CVS repository. # # # Major variables: # # PATH - The search path as interpreted by the shell. # CVSROOT - Path to the FreeBSD CVS repository. # BUILDDIR - Where the checked out copies of the files are stored. # DESTDIR - Where the rendered copies should wind up. # LOGFILE - Name of the log file to use (in $BUILDDIR). # BUILDARGS - Arguments to pass to make(1) when {build,install}ing. # INSTARGS - Arguments to pass to make(1) when installing. # WEBMAILTO - Address to send mail to if the build fails. # # subtrees - List of directores in $BUILDDIR which are from CVS. # # Variables which are in uppercase are derived from the environment # unless they don't exist, in which case a value suitable for # www.FreeBSD.org is used. Variables in lowercase can't be safely # changed without editing other parts of the script; thus, their value # in the environment is ignored. # # Exit codes: # # 0 - success # 1 - unknown failure # 2 - failure in CVS operations # 3 - failure in make operations # -# $FreeBSD: www/tools/webupdate,v 1.10 2003/11/18 11:00:54 kuriyama Exp $ +# $FreeBSD: www/tools/webupdate,v 1.11 2004/07/04 14:33:58 hrs Exp $ # # # Default configuration. # DEFAULT_PATH=/bin:/usr/bin:/usr/local/bin; DEFAULT_CVSROOT=/home/ncvs; DEFAULT_BUILDDIR=/usr/local/www/build; DEFAULT_DESTDIR=/usr/local/www; DEFAULT_LOGFILE=log.make.`date '+%d.%H'`; DEFAULT_BUILDARGS=''; DEFAULT_INSTARGS=''; DEFAULT_WEBMAILTO=freebsd-doc; # # Variable setup. # PATH=${PATH:-${DEFAULT_PATH}}; export PATH; CVSROOT=${CVSROOT:-${DEFAULT_CVSROOT}}; export CVSROOT; BUILDDIR=${BUILDDIR:-${DEFAULT_BUILDDIR}}; DESTDIR=${DESTDIR:-${DEFAULT_DESTDIR}}; LOGFILE=${LOGFILE:-${BUILDDIR}/${DEFAULT_LOGFILE}}; BUILDARGS=${BUILDARGS:-${DEFAULT_BUILDARGS}}; INSTARGS="${BUILDARGS} ${INSTARGS:-${DEFAULT_INSTARGS}}"; WEBMAILTO=${WEBMAILTO:-${DEFAULT_WEBMAILTO}}; # Notes on the names of the release notes directories: # # - They weren't named the same way they will be on the web site # (CURRENT, 4-STABLE) becuase that wouldn't make it obvious that they # were release notes. # # - They weren't named after their path names in the repository # (src/release/doc) because that doesn't play well with branches. # # - The '/doc' part is necessary because of the way doc.subdir.mk finds # ${LANGCODE}. It strips off the last component of ${.CURDIR} one by # one and compares the last component to 'doc'. When it finds it, it # assumes that the directory right below that is the language code. # This works fine if all the languages are in a directory called # 'doc', and not at all if they aren't. -subtrees='www doc relnotes/doc relnotes/man4 relnotes4/doc relnotes4/man4'; +subtrees='www doc relnotes/doc relnotes/man4 relnotes5/doc relnotes5/man4 relnotes4/doc relnotes4/man4'; # # Update the checked out copies. Check out new copies every Sunday or # if they don't exist. # # Only create $BUILDDIR if the directory right above it exists. cd `dirname $BUILDDIR` || exit 1; if [ ! -d $BUILDDIR ]; then mkdir $BUILDDIR; fi umask 002 cd $BUILDDIR || exit 1; rm -f $LOGFILE 2>/dev/null; touch $LOGFILE; # XXX If one of the directories in $subtrees doesn't exist, *all* of # them will be wiped and checked out again. This should only happen # if something went terribly wrong, or if there's a new entry in # $subtrees, so I (dd) don't plan on fixing it; there's no sense in # optimizing something that should only happen twice a year (if that). cond="X`date '+%u'` = X7 `echo $subtrees | sed -E 's/([^ ]*)/-o ! -d \1/g'`"; if [ $cond ]; then # Remove the old copies. rm -Rf $subtrees 2>/dev/null; chflags -R noschg $subtrees 2>/dev/null; rm -Rf $subtrees 2>/dev/null; # Check out the new copies. This creates all the $subtrees. cvs -qR checkout -P www >> $LOGFILE 2>&1 || exit 2; cvs -qR checkout -P doc >> $LOGFILE 2>&1 || exit 2; + test -d relnotes || mkdir relnotes; cvs -qR checkout -Pd relnotes/doc src/release/doc >> \ $LOGFILE 2>&1 || exit 2; cvs -qR checkout -Pd relnotes/man4 src/share/man/man4 >> \ $LOGFILE 2>&1 || exit 2; + + test -d relnotes5 || mkdir relnotes5; + cvs -qR checkout -Pd relnotes5/doc -rRELENG_5 src/release/doc >> \ + $LOGFILE 2>&1 || exit 2; + cvs -qR checkout -Pd relnotes5/man4 -rRELENG_5 src/share/man/man4 >> \ + $LOGFILE 2>&1 || exit 2; + test -d relnotes4 || mkdir relnotes4; cvs -qR checkout -Pd relnotes4/doc -rRELENG_4 src/release/doc >> \ $LOGFILE 2>&1 || exit 2; cvs -qR checkout -Pd relnotes4/man4 -rRELENG_4 src/share/man/man4 >> \ $LOGFILE 2>&1 || exit 2; else cvs -qR update -dP $subtrees >> $LOGFILE 2>&1 || exit 2; fi # # Build the web site. # cd $BUILDDIR/www/en || exit 1; time make ${BUILDARGS} all >> $LOGFILE 2>&1 && time make ${INSTARGS} DESTDIR=$DESTDIR install >> $LOGFILE 2>&1 || (tail -50 $LOGFILE | mail -s "FreeBSD web build failed on `hostname`" $WEBMAILTO; exit 3) || exit 3; exit 0;