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