gcc/maintainer-scripts/update_web_docs
Joseph Myers 832013cdfa update_web_docs: Handle -r and -d options to generate docs for a release or branch in a subdirectory.
* update_web_docs: Handle -r and -d options to generate docs for a
	release or branch in a subdirectory.  Determine names of G77 news
	and bugs files and contributors file after updated docs have been
	installed, not before.  Don't remove files from a subdirectory.
	Don't generate manuals for gcov (included in the GCC manual) or
	iostream (obsolete).  Do generate manuals for cppinternals, gcj
	and porting.  Update regular expressions for detecting whether
	files have really changed when regenerated.

From-SVN: r40589
2001-03-17 23:05:06 +00:00

149 lines
3.5 KiB
Bash
Executable File

#!/bin/sh -x
# Run this from /tmp.
CVSROOT=/cvs/gcc
export CVSROOT
PATH=/usr/local/bin:$PATH
WWWBASE=/www/gcc/htdocs
# Process options -rrelease and -ddirectory
RELEASE=""
SUBDIR=""
while [ $# -gt 0 ]; do
case $1 in
-r*)
if [ -n "$RELEASE" ]; then
echo "Multiple releases specified" >&2
exit 1
fi
RELEASE="${1#-r}"
if [ -z "$RELEASE" ]; then
shift
RELEASE="${1#-r}"
if [ -z "$RELEASE" ]; then
echo "No release specified with -r" >&2
exit 1
fi
fi
;;
-d*)
if [ -n "$SUBDIR" ]; then
echo "Multiple subdirectories specified" >&2
exit 1
fi
SUBDIR="${1#-d}"
if [ -z "$SUBDIR" ]; then
shift
SUBDIR="${1#-d}"
if [ -z "$SUBDIR" ]; then
echo "No subdirectory specified with -d" >&2
exit 1
fi
fi
;;
*)
echo "Unknown argument \"$1\"" >&2
exit 1
;;
esac
shift
done
if [ -n "$RELEASE" ] && [ -z "$SUBDIR" ]; then
echo "Release specified without subdirectory" >&2
exit 1
fi
if [ -z "$SUBDIR" ]; then
DOCSDIR=$WWWBASE/onlinedocs
else
DOCSDIR=$WWWBASE/onlinedocs/$SUBDIR
fi
if [ ! -d $DOCSDIR ]; then
mkdir $DOCSDIR
fi
if [ -z "$RELEASE" ]; then
RELEASE=HEAD
DO_THANKS_HTML=y
else
DO_THANKS_HTML=n
fi
WORKDIR=/tmp/gcc-doc-update.$$
/bin/rm -rf $WORKDIR
/bin/mkdir $WORKDIR
cd $WORKDIR
# Find all the texi files in the repository, except those in directories
# we do not care about (Attic, texinfo, etc).
find $CVSROOT/gcc -name \*.texi,v -print | fgrep -v -f/home/gccadmin/scripts/doc_exclude | sed -e s#$CVSROOT/##g -e s#,v##g > FILES
# Checkout all the texi files and get them into a single directory.
# If we ever have texi files with the same name we'll have to do this
# differently.
cvs -Q co -r$RELEASE `cat FILES`
mv `find . -name \*.texi -print` .
# Now convert the relavent files from texi to html
for file in c-tree cpp chill cppinternals gcc gcj gxxint g77 objc-features porting; do
/usr/local/bin/texi2html -glossary -menu -split_chapter ${file}.texi
done
# Then build a gzipped copy of each of the resulting .html files
for file in *.html; do
cat $file | gzip --best > $file.gz
done
# On the 15th of the month, wipe all the old files from the
# web server.
today=`date +%d`
if test $today = 15; then
find $DOCSDIR -type f -maxdepth 1 -print | grep -v index.html | xargs rm
fi
# And copy the resulting html files to the web server
for file in *.html; do
cat $DOCSDIR/$file |
sed -e '/^<!-- Created on/d' \
-e '/^by <I>GCC Administrator<\/I> on/d' > file1
cat $file |
sed -e '/^<!-- Created on/d' \
-e '/^by <I>GCC Administrator<\/I> on/d' > file2
if cmp -s file1 file2; then
:
else
cp $file ${file}.gz $DOCSDIR
fi
done
news_file=`grep "News About GNU Fortran" $DOCSDIR/g77_toc.html | sed -e '/HREF=.*[^.]/ s#^.*HREF="##g' | sed -e 's%#SEC.*%%g'`
bugs_file=`grep "Known Causes of Trouble with GNU Fortran" $DOCSDIR/g77_toc.html | sed -e '/HREF=.*[^.]/ s#^.*HREF="##g' | sed -e 's%#SEC.*%%g'`
contrib_file=`grep "Contributors to GCC" $DOCSDIR/gcc_toc.html | sed -e '/HREF=.*[^.]/ s#^.*HREF="##g' | sed -e 's%#SEC.*%%g'`
cd $DOCSDIR
rm -f g77_news.html
rm -f g77_bugs.html
rm -f g77_news.html.gz
rm -f g77_bugs.html.gz
ln $news_file g77_news.html
ln $bugs_file g77_bugs.html
ln ${news_file}.gz g77_news.html.gz
ln ${bugs_file}.gz g77_bugs.html.gz
if [ "$DO_THANKS_HTML" = y ]; then
cd $WWWBASE
rm -f thanks.html
rm -f thanks.html.gz
ln onlinedocs/$contrib_file thanks.html
ln onlinedocs/${contrib_file}.gz thanks.html.gz
fi
rm -rf $WORKDIR