Admin/makedist
author wenzelm
Thu, 18 Jan 2001 20:35:39 +0100
changeset 10928 e040e8627bbb
parent 10533 909c473542f9
child 11062 e86340dc1d28
permissions -rwxr-xr-x
generate index.html for pdf docs;
     1 #!/bin/bash
     2 #
     3 # $Id$
     4 #
     5 # makedist -- make Isabelle source distribution.
     6 
     7 
     8 ## global settings
     9 
    10 LOGICS="CCL CTT Cube FOL FOLP HOL HOLCF LCF Provers Pure Sequents TFL ZF"
    11 
    12 case $(hostname) in
    13   *broy*)
    14     export CVSROOT=/usr/proj/isabelle-repository/archive
    15     ;;
    16   *.cl.cam.ac.uk)
    17     export CVSROOT=sunbroy1.informatik.tu-muenchen.de:/usr/proj/isabelle-repository/archive
    18     ;;
    19 esac
    20 
    21 DISTPREFIX=~/tmp/isadist
    22 
    23 umask 022
    24 
    25 TAR=tar
    26 type -path gtar >/dev/null && TAR=gtar
    27 
    28 FIND=find
    29 type -path gfind >/dev/null && FIND=gfind
    30 
    31 
    32 ## diagnostics
    33 
    34 PRG=$(basename "$0")
    35 THIS=$(cd $(dirname "$0"); echo "$PWD")
    36 
    37 function usage()
    38 {
    39   echo "###"
    40   echo "### Usage: $PRG VERSION"
    41   echo "###"
    42   cat <<EOF
    43   Make Isabelle distribution from the master sources at TUM.
    44 
    45   VERSION may be either a tag like "Isabelle99-XX" that specifies the
    46   release to be exported from the repository, or "-" to checkout the
    47   current sources as an unofficial release, or "--" to produce a
    48   tentative release from the present copy of the Isabelle repository.
    49 
    50   Checklist for official releases (before running this script):
    51 
    52     * Check release name and date in NEWS!
    53     * Check that README files are up to date (should have Id: lines).
    54     * Check Admin/index.html.
    55 EOF
    56   #Wicked! We just won't tell other users ...
    57   if [ $LOGNAME = paulson -o $LOGNAME = nipkow -o $LOGNAME = wenzelm -o $LOGNAME = berghofe ]; then
    58     cat <<EOF
    59     * Tag the current repository version, e.g.:
    60         cvs -d /usr/proj/isabelle-repository/archive rtag Isabelle99-X isabelle
    61       PLEASE DON'T DO THIS UNLESS YOU KNOW WHAT YOU'RE DOING!
    62 EOF
    63   fi
    64   cat <<EOF
    65 
    66   After the distribution has been created succesfully, you might want
    67   to run some makeall tests using different ML systems.
    68 
    69 EOF
    70   exit 1
    71 }
    72 
    73 function fail()
    74 {
    75   echo "$1" >&2
    76   exit 2
    77 }
    78 
    79 
    80 ## process command line
    81 
    82 [ "$#" -ne 1 ] && usage
    83 
    84 VERSION="$1"
    85 shift
    86 
    87 
    88 ## main
    89 
    90 # dist version
    91 
    92 DATE=$(date "+%d-%b-%Y")
    93 DISTDATE=$(date "+%B %Y")
    94 
    95 if [ "$VERSION" = "--" ]; then
    96   DISTNAME="Isabelle_$DATE"
    97   DISTVERSION="$DISTNAME"
    98   EXPORT="$THIS/cvs-copy $THIS/.. $DISTNAME"
    99   UNOFFICIAL="unofficial test"
   100 elif [ "$VERSION" = "-" ]; then
   101   DISTNAME="Isabelle_$DATE"
   102   DISTVERSION="$DISTNAME"
   103   EXPORT="cvs -f -q checkout -P -d $DISTNAME isabelle"
   104   UNOFFICIAL="unofficial"
   105 else
   106   DISTNAME="$VERSION"
   107   DISTVERSION="$DISTNAME: $DISTDATE"
   108   EXPORT="cvs -f -q export -r $VERSION -d $DISTNAME isabelle"
   109   UNOFFICIAL=""
   110 fi
   111 
   112 DISTBASE="$DISTPREFIX/dist-$DISTNAME"
   113 mkdir -p "$DISTBASE" || fail "Unable to create distribution base dir $DISTBASE!"
   114 [ -e "$DISTBASE/$DISTNAME" ] && fail "$DISTBASE/$DISTNAME already exists!"
   115 [ -e "$DISTBASE/pdf/$DISTNAME" ] && fail "$DISTBASE/pdf/$DISTNAME already exists!"
   116 
   117 
   118 # export repository
   119 
   120 echo "###"
   121 echo "### Exporting $DISTNAME ..."
   122 echo "###"
   123 
   124 cd "$DISTBASE"
   125 
   126 $EXPORT
   127 $FIND . -name CVS -print | xargs rm -rf
   128 $FIND . "(" -type d -a -empty ")" -print | xargs rm -rf
   129 $FIND . "(" -type d -a -empty ")" -print | xargs rm -rf
   130 $FIND . "(" -type d -a -empty ")" -print | xargs rm -rf
   131 
   132 
   133 # build docs
   134 
   135 echo "###"
   136 echo "### Building docs ..."
   137 echo "###"
   138 
   139 cd "$DISTBASE/$DISTNAME/Doc"
   140 PDFLATEX=$(type -path pdflatex)
   141 
   142 for DOC in $(cat Contents)
   143 do
   144   cd "$DOC"
   145   make dvi
   146   [ -n "$PDFLATEX" ] && make clean pdf
   147   cd ..
   148 done
   149 
   150 
   151 # prepare dist dir for release
   152 
   153 echo "###"
   154 echo "### Preparing distribution ..."
   155 echo "###"
   156 
   157 cd "$DISTBASE/$DISTNAME"
   158 
   159 cp -R Admin/page ..
   160 cp Distribution/doc/Contents ../page
   161 cp Distribution/lib/logo/isabelle.gif ../page/main-content
   162 cp Distribution/lib/logo/isabelle.gif ../page/dist-content
   163 echo "$DISTNAME" > ../page/DISTNAME
   164 
   165 MOVE=$($FIND Doc \( -type f -a \( -name \*.dvi -o -name \*.eps -o -name \*.ps -o -name \*.pdf \) -a -print \) | grep -v 'gfx/.*pdf')
   166 mv -f $MOVE Distribution/doc
   167 rm Distribution/doc/Isa-logics.eps
   168 rm -rf Doc Tools
   169 
   170 mkdir src contrib
   171 mv $LOGICS src
   172 
   173 mv Distribution/* .
   174 rmdir Distribution
   175 
   176 ( cd lib/browser; make; )
   177 
   178 cp doc/isabelle*.eps lib/logo
   179 
   180 
   181 if [ -n "$UNOFFICIAL" ]; then
   182   {
   183     echo
   184     echo "IMPORTANT NOTE"
   185     echo "=============="
   186     echo
   187     echo "This is an $UNOFFICIAL release of Isabelle, created by $LOGNAME $DATE."
   188     echo
   189   } >ANNOUNCE
   190 fi
   191 
   192 perl -pi -e "s/{ISABELLE}/$DISTNAME/g;" lib/html/index.html
   193 perl -pi -e "s/Isabelle repository version/$DISTVERSION/" src/Pure/ROOT.ML
   194 perl -pi -e "s/the internal repository version of Isabelle/$DISTVERSION/" README.html
   195 lynx -dump README.html >README
   196 
   197 ( cd src; ../Admin/maketags; )
   198 
   199 ( env BASH_PATH=/bin/bash PERL_PATH=/usr/bin/perl ./configure )
   200 
   201 rm -rf Admin
   202 
   203 
   204 # create archive
   205 
   206 echo "###"
   207 echo "### Creating archives ..."
   208 echo "###"
   209 
   210 cd "$DISTBASE"
   211 
   212 echo "$DISTBASE/$DISTNAME.tar.gz" > ../ISABELLE_DIST
   213 
   214 rm -f Isabelle
   215 ln -s "$DISTNAME" Isabelle
   216 
   217 chown -R "$LOGNAME" "$DISTNAME"
   218 chmod -R u+w "$DISTNAME"
   219 chmod -R g=o "$DISTNAME"
   220 chgrp -R isabelle "$DISTNAME" Isabelle
   221 
   222 mkdir -p "pdf/$DISTNAME/doc"
   223 mv "$DISTNAME/doc/"*.pdf "pdf/$DISTNAME/doc"
   224 
   225 page/bin/mkcontents "$DISTNAME/doc/Contents" "pdf/$DISTNAME/doc/index"
   226 cat > "pdf/$DISTNAME/doc/index.html" <<EOF
   227 <html>
   228 <head>
   229 <title>$DISTNAME Documentation</title>
   230 </head>
   231 <body>
   232 <h1>$DISTNAME Documentation</h1>
   233 $(cat "pdf/$DISTNAME/doc/index")
   234 </body>
   235 </html>
   236 EOF
   237 rm "pdf/$DISTNAME/doc/index"
   238 
   239 echo "$DISTNAME.tar.gz"
   240 "$TAR" cf "$DISTNAME.tar" Isabelle "$DISTNAME"
   241 gzip "$DISTNAME.tar"
   242 
   243 echo "${DISTNAME}_pdf.tar.gz"
   244 ( cd pdf; "$TAR" cf "../${DISTNAME}_pdf.tar" "$DISTNAME"; )
   245 gzip "${DISTNAME}_pdf.tar"
   246 
   247 mv "pdf/$DISTNAME/doc/"*.pdf "pdf/$DISTNAME/doc/index.html" "$DISTNAME/doc"
   248 rmdir "pdf/$DISTNAME/doc" "pdf/$DISTNAME" pdf
   249 
   250 
   251 # cleanup dist
   252 
   253 mv "$DISTNAME" "${DISTNAME}-old"
   254 mkdir "$DISTNAME"
   255 
   256 mv "${DISTNAME}-old/README.html" "${DISTNAME}-old/INSTALL" "${DISTNAME}-old/NEWS" "${DISTNAME}-old/ANNOUNCE" "$DISTNAME"
   257 mkdir "$DISTNAME/doc"
   258 mv "${DISTNAME}-old/doc/"*.pdf "${DISTNAME}-old/doc/index.html" "$DISTNAME/doc"
   259 
   260 chgrp -R isabelle "$DISTNAME"
   261 
   262 rm -rf "${DISTNAME}-old"
   263 
   264 
   265 # final note
   266 
   267 echo "###"
   268 echo "### Finished makedist."
   269 echo "###"