Admin/makedist
author wenzelm
Mon, 05 Feb 2001 14:31:49 +0100
changeset 11062 e86340dc1d28
parent 10928 e040e8627bbb
child 11392 3078f52ee552
permissions -rwxr-xr-x
tuned;
     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   cat <<EOF
    40 
    41 Usage: $PRG VERSION
    42 
    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 Admin/page contents.
    53     * Check ANNOUNCE, README, INSTALL, NEWS.
    54     * Try "isatool makeall all" with Poly/ML, SML/NJ, etc.
    55     * Tag the current repository version, e.g.:
    56         cvs -d /usr/proj/isabelle-repository/archive rtag Isabelle99-X isabelle
    57       PLEASE DO NOT DO THIS UNLESS YOU KNOW WHAT YOU ARE DOING!
    58 
    59 EOF
    60   exit 1
    61 }
    62 
    63 function fail()
    64 {
    65   echo "$1" >&2
    66   exit 2
    67 }
    68 
    69 
    70 ## process command line
    71 
    72 [ "$#" -ne 1 ] && usage
    73 
    74 VERSION="$1"
    75 shift
    76 
    77 
    78 ## main
    79 
    80 # dist version
    81 
    82 DATE=$(date "+%d-%b-%Y")
    83 DISTDATE=$(date "+%B %Y")
    84 
    85 if [ "$VERSION" = "--" ]; then
    86   DISTNAME="Isabelle_$DATE"
    87   DISTVERSION="$DISTNAME"
    88   EXPORT="$THIS/cvs-copy $THIS/.. $DISTNAME"
    89   UNOFFICIAL="unofficial test"
    90 elif [ "$VERSION" = "-" ]; then
    91   DISTNAME="Isabelle_$DATE"
    92   DISTVERSION="$DISTNAME"
    93   EXPORT="cvs -f -q checkout -P -d $DISTNAME isabelle"
    94   UNOFFICIAL="unofficial"
    95 else
    96   DISTNAME="$VERSION"
    97   DISTVERSION="$DISTNAME: $DISTDATE"
    98   EXPORT="cvs -f -q export -r $VERSION -d $DISTNAME isabelle"
    99   UNOFFICIAL=""
   100 fi
   101 
   102 DISTBASE="$DISTPREFIX/dist-$DISTNAME"
   103 mkdir -p "$DISTBASE" || fail "Unable to create distribution base dir $DISTBASE!"
   104 [ -e "$DISTBASE/$DISTNAME" ] && fail "$DISTBASE/$DISTNAME already exists!"
   105 [ -e "$DISTBASE/pdf/$DISTNAME" ] && fail "$DISTBASE/pdf/$DISTNAME already exists!"
   106 
   107 
   108 # export repository
   109 
   110 echo "###"
   111 echo "### Exporting $DISTNAME ..."
   112 echo "###"
   113 
   114 cd "$DISTBASE"
   115 
   116 $EXPORT
   117 $FIND . -name CVS -print | xargs rm -rf
   118 $FIND . "(" -type d -a -empty ")" -print | xargs rm -rf
   119 $FIND . "(" -type d -a -empty ")" -print | xargs rm -rf
   120 $FIND . "(" -type d -a -empty ")" -print | xargs rm -rf
   121 
   122 
   123 # build docs
   124 
   125 echo "###"
   126 echo "### Building docs ..."
   127 echo "###"
   128 
   129 cd "$DISTBASE/$DISTNAME/Doc"
   130 PDFLATEX=$(type -path pdflatex)
   131 
   132 for DOC in $(cat Contents)
   133 do
   134   cd "$DOC"
   135   make dvi
   136   [ -n "$PDFLATEX" ] && make clean pdf
   137   cd ..
   138 done
   139 
   140 
   141 # prepare dist dir for release
   142 
   143 echo "###"
   144 echo "### Preparing distribution ..."
   145 echo "###"
   146 
   147 cd "$DISTBASE/$DISTNAME"
   148 
   149 cp -R Admin/page ..
   150 cp Distribution/doc/Contents ../page
   151 cp Distribution/lib/logo/isabelle.gif ../page/main-content
   152 cp Distribution/lib/logo/isabelle.gif ../page/dist-content
   153 echo "$DISTNAME" > ../page/DISTNAME
   154 
   155 MOVE=$($FIND Doc \( -type f -a \( -name \*.dvi -o -name \*.eps -o -name \*.ps -o -name \*.pdf \) -a -print \) | grep -v 'gfx/.*pdf')
   156 mv -f $MOVE Distribution/doc
   157 rm Distribution/doc/Isa-logics.eps
   158 rm -rf Doc Tools
   159 
   160 mkdir src contrib
   161 mv $LOGICS src
   162 
   163 mv Distribution/* .
   164 rmdir Distribution
   165 
   166 ( cd lib/browser; make; )
   167 
   168 cp doc/isabelle*.eps lib/logo
   169 
   170 
   171 if [ -n "$UNOFFICIAL" ]; then
   172   {
   173     echo
   174     echo "IMPORTANT NOTE"
   175     echo "=============="
   176     echo
   177     echo "This is an $UNOFFICIAL release of Isabelle, created by $LOGNAME $DATE."
   178     echo
   179   } >ANNOUNCE
   180 fi
   181 
   182 perl -pi -e "s/{ISABELLE}/$DISTNAME/g;" lib/html/index.html
   183 perl -pi -e "s/Isabelle repository version/$DISTVERSION/" src/Pure/ROOT.ML
   184 perl -pi -e "s/the internal repository version of Isabelle/$DISTVERSION/" README.html
   185 lynx -dump README.html >README
   186 
   187 ( cd src; ../Admin/maketags; )
   188 
   189 ( env BASH_PATH=/bin/bash PERL_PATH=/usr/bin/perl ./configure )
   190 
   191 rm -rf Admin
   192 
   193 
   194 # create archive
   195 
   196 echo "###"
   197 echo "### Creating archives ..."
   198 echo "###"
   199 
   200 cd "$DISTBASE"
   201 
   202 echo "$DISTBASE/$DISTNAME.tar.gz" > ../ISABELLE_DIST
   203 
   204 rm -f Isabelle
   205 ln -s "$DISTNAME" Isabelle
   206 
   207 chown -R "$LOGNAME" "$DISTNAME"
   208 chmod -R u+w "$DISTNAME"
   209 chmod -R g=o "$DISTNAME"
   210 chgrp -R isabelle "$DISTNAME" Isabelle
   211 
   212 mkdir -p "pdf/$DISTNAME/doc"
   213 mv "$DISTNAME/doc/"*.pdf "pdf/$DISTNAME/doc"
   214 
   215 page/bin/mkcontents "$DISTNAME/doc/Contents" "pdf/$DISTNAME/doc/index"
   216 cat > "pdf/$DISTNAME/doc/index.html" <<EOF
   217 <html>
   218 <head>
   219 <title>$DISTNAME Documentation</title>
   220 </head>
   221 <body>
   222 <h1>$DISTNAME Documentation</h1>
   223 $(cat "pdf/$DISTNAME/doc/index")
   224 </body>
   225 </html>
   226 EOF
   227 rm "pdf/$DISTNAME/doc/index"
   228 
   229 echo "$DISTNAME.tar.gz"
   230 "$TAR" cf "$DISTNAME.tar" Isabelle "$DISTNAME"
   231 gzip "$DISTNAME.tar"
   232 
   233 echo "${DISTNAME}_pdf.tar.gz"
   234 ( cd pdf; "$TAR" cf "../${DISTNAME}_pdf.tar" "$DISTNAME"; )
   235 gzip "${DISTNAME}_pdf.tar"
   236 
   237 mv "pdf/$DISTNAME/doc/"*.pdf "pdf/$DISTNAME/doc/index.html" "$DISTNAME/doc"
   238 rmdir "pdf/$DISTNAME/doc" "pdf/$DISTNAME" pdf
   239 
   240 
   241 # cleanup dist
   242 
   243 mv "$DISTNAME" "${DISTNAME}-old"
   244 mkdir "$DISTNAME"
   245 
   246 mv "${DISTNAME}-old/README.html" "${DISTNAME}-old/INSTALL" "${DISTNAME}-old/NEWS" "${DISTNAME}-old/ANNOUNCE" "$DISTNAME"
   247 mkdir "$DISTNAME/doc"
   248 mv "${DISTNAME}-old/doc/"*.pdf "${DISTNAME}-old/doc/index.html" "$DISTNAME/doc"
   249 
   250 chgrp -R isabelle "$DISTNAME"
   251 
   252 rm -rf "${DISTNAME}-old"
   253 
   254 
   255 # final note
   256 
   257 echo "###"
   258 echo "### Finished makedist."
   259 echo "###"