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