| #!/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" |
| 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 |
| 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 |