Admin/makedist
author wenzelm
Mon May 10 17:45:16 1999 +0200 (1999-05-10)
changeset 6630 5f810292c030
parent 6304 9a82e1c3d9da
child 6748 f1f70344b749
permissions -rwxr-xr-x
make pdf;
wenzelm@3060
     1
#!/bin/bash
wenzelm@2667
     2
#
wenzelm@2667
     3
# $Id$
wenzelm@2667
     4
#
wenzelm@2667
     5
# makedist -- make Isabelle distribution.
wenzelm@2667
     6
wenzelm@2667
     7
wenzelm@2667
     8
## global settings
wenzelm@2667
     9
wenzelm@2829
    10
LOGICS="CCL CTT Cube FOL FOLP HOL HOLCF LCF Provers Pure Sequents TFL Tools ZF"
wenzelm@2667
    11
wenzelm@5171
    12
CVSROOT=/usr/proj/isabelle-repository/archive
wenzelm@2667
    13
DISTBASE=~/tmp/isadist
wenzelm@2667
    14
wenzelm@2667
    15
wenzelm@2667
    16
## diagnostics
wenzelm@2667
    17
wenzelm@2667
    18
PRG=$(basename $0)
wenzelm@2667
    19
wenzelm@2667
    20
function usage()
wenzelm@2667
    21
{
wenzelm@2667
    22
  echo
wenzelm@2667
    23
  echo "Usage: $PRG VERSION"
wenzelm@2667
    24
  echo
wenzelm@2667
    25
  cat <<EOF
wenzelm@2667
    26
  Make Isabelle distribution from the master sources at TUM.
wenzelm@2667
    27
wenzelm@2667
    28
  VERSION may be either a tag like "Isabelle94-XX" that specifies the
wenzelm@2667
    29
  release to be exported from the repository, or "-" to checkout the
wenzelm@2667
    30
  current sources as an unofficial release.
wenzelm@2667
    31
wenzelm@2667
    32
  Checklist for official releases (before running this script):
wenzelm@2667
    33
wenzelm@5817
    34
    * Check release name and date in NEWS!
wenzelm@2668
    35
    * Check that README files are up to date (should have Id: lines).
wenzelm@5769
    36
    * Check Admin/index.html.
wenzelm@2970
    37
    * Make sure that encoding info is consistent (fixencoding)!
wenzelm@2667
    38
    * Make sure that the repository version of Doc is consistent
wenzelm@2667
    39
      (watch out for *.bbl, *.rao, *.ind)!
wenzelm@3186
    40
    * Check ML_SYSTEM defaults!
wenzelm@2667
    41
EOF
wenzelm@2667
    42
  #Wicked! We just won't tell other users ...
wenzelm@2667
    43
  if [ $LOGNAME = paulson -o $LOGNAME = nipkow -o $LOGNAME = wenzelm ]; then
wenzelm@2667
    44
    cat <<EOF
wenzelm@2667
    45
    * Tag the current repository version, e.g.:
wenzelm@4542
    46
        cvs -d $CVSROOT rtag Isabelle94-XX isabelle
wenzelm@2667
    47
      PLEASE DON'T DO THIS UNLESS YOU KNOW WHAT YOU'RE DOING!
wenzelm@2667
    48
EOF
wenzelm@2667
    49
  fi
wenzelm@2667
    50
  cat <<EOF
wenzelm@2667
    51
wenzelm@2667
    52
  After the distribution has been created succesfully, you might want
wenzelm@2667
    53
  to run some makeall tests using different ML systems.
wenzelm@5727
    54
wenzelm@2667
    55
EOF
wenzelm@2667
    56
  exit 1
wenzelm@2667
    57
}
wenzelm@2667
    58
wenzelm@2667
    59
function fail()
wenzelm@2667
    60
{
wenzelm@2667
    61
  echo "$1" >&2
wenzelm@2667
    62
  exit 2
wenzelm@2667
    63
}
wenzelm@2667
    64
wenzelm@2667
    65
wenzelm@2667
    66
## process command line
wenzelm@2667
    67
wenzelm@2667
    68
[ $# -ne 1 ] && usage
wenzelm@2667
    69
wenzelm@2667
    70
VERSION="$1"
wenzelm@2667
    71
shift
wenzelm@2667
    72
wenzelm@2667
    73
wenzelm@2667
    74
## main
wenzelm@2667
    75
wenzelm@2667
    76
# dist version
wenzelm@2667
    77
wenzelm@2667
    78
DATE=$(date "+%d-%b-%Y")
wenzelm@4979
    79
DISTDATE=$(date "+%B %Y")
wenzelm@2667
    80
wenzelm@2667
    81
if [ "$VERSION" = "-" ]; then
wenzelm@2667
    82
  DISTNAME=Isabelle_$DATE
wenzelm@4982
    83
  DISTVERSION="$DISTNAME"
wenzelm@3363
    84
  EXPORT="checkout -P"
wenzelm@2667
    85
  UNOFFICIAL=true
wenzelm@2667
    86
else
wenzelm@2667
    87
  DISTNAME="$VERSION"
wenzelm@4982
    88
  DISTVERSION="$DISTNAME: $DISTDATE"
wenzelm@2667
    89
  EXPORT="export -r $VERSION"
wenzelm@2667
    90
  UNOFFICIAL=""
wenzelm@2667
    91
fi
wenzelm@2667
    92
wenzelm@2667
    93
mkdir -p $DISTBASE || fail "Unable to create distribution base dir $DISTBASE!"
wenzelm@2667
    94
[ -e $DISTBASE/$DISTNAME ] && fail "$DISTBASE/$DISTNAME already exists!"
wenzelm@2667
    95
wenzelm@2667
    96
wenzelm@2667
    97
# export from repository
wenzelm@2667
    98
wenzelm@2667
    99
echo
wenzelm@2667
   100
echo "Exporting $DISTNAME from repository. Please be patient ..."
wenzelm@2667
   101
echo
wenzelm@2667
   102
wenzelm@2667
   103
cd $DISTBASE
wenzelm@2667
   104
wenzelm@2667
   105
export CVSROOT
wenzelm@3363
   106
cvs -f -q $EXPORT -d $DISTNAME isabelle
wenzelm@5622
   107
find . -name CVS -exec rm -rf {} \;
wenzelm@2667
   108
wenzelm@2667
   109
wenzelm@2667
   110
# make docs
wenzelm@2667
   111
wenzelm@3169
   112
cd $DISTBASE/$DISTNAME/Doc
wenzelm@6630
   113
PDFLATEX=$(type -path pdflatex)
wenzelm@3169
   114
wenzelm@3169
   115
for DOC in $(cat Contents)
wenzelm@2667
   116
do
wenzelm@3169
   117
  cd $DOC
wenzelm@6630
   118
  make dvi
wenzelm@6630
   119
  [ -n "$PDFLATEX" ] && make clean pdf
wenzelm@3169
   120
  cd ..
wenzelm@2667
   121
done
wenzelm@2667
   122
wenzelm@2667
   123
wenzelm@2667
   124
# prepare dist dir for release
wenzelm@2667
   125
wenzelm@2667
   126
cd $DISTBASE/$DISTNAME
wenzelm@2667
   127
wenzelm@6630
   128
MOVE=$(find Doc \( -type f -a \( -name \*.dvi -o -name \*.eps -o -name \*.ps -o -name \*.pdf \) \) \
wenzelm@6630
   129
  | grep -v 'gfx/.*pdf')
wenzelm@6630
   130
mv -f $MOVE Distribution/doc
wenzelm@3305
   131
rm Distribution/doc/Isa-logics.eps
wenzelm@4549
   132
cp Admin/index.html $DISTBASE
wenzelm@3099
   133
rm -rf Admin Doc
wenzelm@2667
   134
wenzelm@2667
   135
mkdir src
wenzelm@2667
   136
mv $LOGICS src
wenzelm@2667
   137
wenzelm@2667
   138
mv Distribution/* .
wenzelm@2667
   139
rmdir Distribution
wenzelm@2667
   140
wenzelm@4180
   141
( cd lib/browser; make; )
berghofe@3638
   142
wenzelm@5385
   143
cp doc/isabelle*.eps lib/logo
wenzelm@5385
   144
berghofe@3638
   145
wenzelm@2667
   146
if [ -n "$UNOFFICIAL" ]; then
wenzelm@2667
   147
  {
wenzelm@2667
   148
    echo
wenzelm@2667
   149
    echo "IMPORTANT NOTE"
wenzelm@2667
   150
    echo "=============="
wenzelm@2667
   151
    echo
wenzelm@2667
   152
    echo "This is an unofficial release of Isabelle, created by $LOGNAME $DATE."
wenzelm@2667
   153
    echo
wenzelm@2667
   154
  } >UNOFFICIAL
wenzelm@2667
   155
fi
wenzelm@2667
   156
wenzelm@6304
   157
perl -pi -e "s/{ISABELLE}/$DISTNAME/g;" lib/html/index1.html lib/html/index2.html
wenzelm@4986
   158
perl -pi -e "s/Isabelle repository/$DISTVERSION/" src/Pure/ROOT.ML
wenzelm@4986
   159
perl -pi -e "s/the internal repository version of Isabelle/$DISTVERSION/" README.html
wenzelm@3257
   160
lynx -dump README.html >README
wenzelm@3257
   161
wenzelm@2667
   162
wenzelm@2667
   163
# create archive
wenzelm@2667
   164
wenzelm@2667
   165
cd $DISTBASE
wenzelm@2667
   166
wenzelm@2794
   167
chown -R $LOGNAME:isabelle $DISTNAME
wenzelm@2794
   168
chmod -R u+w $DISTNAME
wenzelm@2667
   169
wenzelm@4548
   170
if type -path gtar
wenzelm@4548
   171
then
wenzelm@4549
   172
  gtar cf $DISTNAME.tar $DISTNAME
wenzelm@4411
   173
else
wenzelm@4549
   174
  tar cf $DISTNAME.tar $DISTNAME
wenzelm@4411
   175
fi
wenzelm@2667
   176
wenzelm@4549
   177
UNPACKED_SIZE=$[ $(wc -c <$DISTNAME.tar) / 1024 ]
wenzelm@4549
   178
wenzelm@4549
   179
gzip $DISTNAME.tar
wenzelm@4549
   180
wenzelm@4549
   181
PACKED_SIZE=$[ $(wc -c <$DISTNAME.tar.gz) / 1024 ]
wenzelm@4549
   182
wenzelm@4549
   183
wenzelm@6304
   184
# prepare dist index.html
wenzelm@6304
   185
wenzelm@6304
   186
perl -pi -e \
wenzelm@6304
   187
 "s/{ISABELLE}/$DISTNAME/g; \
wenzelm@6304
   188
  s/{PACKED_SIZE}/$PACKED_SIZE/g; \
wenzelm@6304
   189
  s/{UNPACKED_SIZE}/$UNPACKED_SIZE/g; \
wenzelm@6304
   190
  s/{AUTHOR}/$LOGNAME/g; \
wenzelm@6304
   191
  s/{DATE}/$DATE/g;" \
wenzelm@6304
   192
    index.html
wenzelm@6304
   193
wenzelm@6304
   194
wenzelm@2667
   195
# final note
wenzelm@2667
   196
wenzelm@2667
   197
echo
wenzelm@2667
   198
echo "That's it. You'll find the distribution in $DISTBASE."
wenzelm@2667
   199
echo