| #!/bin/sh -x |
| |
| # Generate HTML documentation from GCC Texinfo docs. |
| # This version is for GCC 3.0.x and earlier versions. |
| |
| # Run this from /tmp. |
| CVSROOT=/cvs/gcc |
| export CVSROOT |
| |
| PATH=/usr/local/bin:$PATH |
| |
| WWWBASE=/www/gcc/htdocs |
| WWWBASE_PREFORMATTED=/www/gcc/htdocs-preformatted |
| WWWPREPROCESS='/www/gcc/bin/preprocess -r' |
| |
| # 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" |
| 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" |
| 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 |
| 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 (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 -e s#Attic/##g > FILES |
| |
| |
| # Checkout all the texi files. |
| cvs -Q co -r$RELEASE `cat FILES` gcc/gcc/doc/install.texi2html gcc/gcc/texinfo.tex gcc/gcc/doc/texinfo.tex gcc/gcc/doc/include/texinfo.tex |
| |
| # Find the directory to pass to -I; this is the one with texinfo.tex |
| # and fdl.texi. |
| texitexloc=`find . -name texinfo.tex` |
| includedir=${texitexloc%/*} |
| |
| # Now convert the relevant files from texi to HTML and PostScript. |
| for file in cpp chill cppinternals gcc gcj g77 gnat-style libiberty \ |
| objc-features porting; do |
| filename=`find . -name ${file}.texi` |
| if [ "${filename}" ]; then |
| /usr/local/bin/texi2html -glossary -menu -split_chapter -I ${includedir} ${filename} |
| texi2dvi -I ${includedir} ${filename} </dev/null && dvips -o ${file}.ps ${file}.dvi |
| fi |
| done |
| |
| # Then build a gzipped copy of each of the resulting .html and .ps files |
| for file in *.html *.ps; 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 *.ps; do |
| cat $DOCSDIR/$file | |
| sed -e '/^<!-- Created on/d' \ |
| -e '/^by <I>GCC Administrator<\/I> on/d' \ |
| -e '/^%DVIPSSource:/d' > file1 |
| cat $file | |
| sed -e '/^<!-- Created on/d' \ |
| -e '/^by <I>GCC Administrator<\/I> on/d' \ |
| -e '/^%DVIPSSource:/d' > file2 |
| if cmp -s file1 file2; then |
| : |
| else |
| cp $file ${file}.gz $DOCSDIR |
| fi |
| done |
| |
| cd $DOCSDIR |
| |
| # Finally, generate the installation documentation (but only for CVS HEAD). |
| if [ "$RELEASE" = "HEAD" ]; then |
| SOURCEDIR=$WORKDIR/gcc/gcc/doc |
| DESTDIR=$WWWBASE_PREFORMATTED/install |
| export SOURCEDIR |
| export DESTDIR |
| $WORKDIR/gcc/gcc/doc/install.texi2html |
| |
| # Preprocess the entire web site, not just the install docs! |
| echo "Invoking $WWWPREPROCESS" |
| $WWWPREPROCESS |grep -v '^ Warning: Keeping' |
| fi |
| |
| # Clean up behind us. |
| |
| rm -rf $WORKDIR |