5 # makedist -- make Isabelle source distribution.
10 LOGICS="CCL CTT Cube FOL FOLP HOL HOLCF LCF Provers Pure Sequents TFL ZF"
14 export CVSROOT=/usr/proj/isabelle-repository/archive
17 export CVSROOT=sunbroy1.informatik.tu-muenchen.de:/usr/proj/isabelle-repository/archive
21 DISTPREFIX=~/tmp/isadist
26 type -path gtar >/dev/null && TAR=gtar
29 type -path gfind >/dev/null && FIND=gfind
35 THIS=$(cd $(dirname "$0"); echo "$PWD")
43 Make Isabelle distribution from the master sources at TUM.
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.
50 Checklist for official releases (before running this script):
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!
70 ## process command line
72 [ "$#" -ne 1 ] && usage
82 DATE=$(date "+%d-%b-%Y")
83 DISTDATE=$(date "+%B %Y")
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"
97 DISTVERSION="$DISTNAME: $DISTDATE"
98 EXPORT="cvs -f -q export -r $VERSION -d $DISTNAME isabelle"
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!"
111 echo "### Exporting $DISTNAME ..."
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
126 echo "### Building docs ..."
129 cd "$DISTBASE/$DISTNAME/Doc"
130 PDFLATEX=$(type -path pdflatex)
132 for DOC in $(cat Contents)
136 [ -n "$PDFLATEX" ] && make clean pdf
141 # prepare dist dir for release
144 echo "### Preparing distribution ..."
147 cd "$DISTBASE/$DISTNAME"
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
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
166 ( cd lib/browser; make; )
168 cp doc/isabelle*.eps lib/logo
171 if [ -n "$UNOFFICIAL" ]; then
174 echo "IMPORTANT NOTE"
175 echo "=============="
177 echo "This is an $UNOFFICIAL release of Isabelle, created by $LOGNAME $DATE."
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
187 ( cd src; ../Admin/maketags; )
189 ( env BASH_PATH=/bin/bash PERL_PATH=/usr/bin/perl ./configure )
197 echo "### Creating archives ..."
202 echo "$DISTBASE/$DISTNAME.tar.gz" > ../ISABELLE_DIST
205 ln -s "$DISTNAME" Isabelle
207 chown -R "$LOGNAME" "$DISTNAME"
208 chmod -R u+w "$DISTNAME"
209 chmod -R g=o "$DISTNAME"
210 chgrp -R isabelle "$DISTNAME" Isabelle
212 mkdir -p "pdf/$DISTNAME/doc"
213 mv "$DISTNAME/doc/"*.pdf "pdf/$DISTNAME/doc"
215 page/bin/mkcontents "$DISTNAME/doc/Contents" "pdf/$DISTNAME/doc/index"
216 cat > "pdf/$DISTNAME/doc/index.html" <<EOF
219 <title>$DISTNAME Documentation</title>
222 <h1>$DISTNAME Documentation</h1>
223 $(cat "pdf/$DISTNAME/doc/index")
227 rm "pdf/$DISTNAME/doc/index"
229 echo "$DISTNAME.tar.gz"
230 "$TAR" cf "$DISTNAME.tar" Isabelle "$DISTNAME"
233 echo "${DISTNAME}_pdf.tar.gz"
234 ( cd pdf; "$TAR" cf "../${DISTNAME}_pdf.tar" "$DISTNAME"; )
235 gzip "${DISTNAME}_pdf.tar"
237 mv "pdf/$DISTNAME/doc/"*.pdf "pdf/$DISTNAME/doc/index.html" "$DISTNAME/doc"
238 rmdir "pdf/$DISTNAME/doc" "pdf/$DISTNAME" pdf
243 mv "$DISTNAME" "${DISTNAME}-old"
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"
250 chgrp -R isabelle "$DISTNAME"
252 rm -rf "${DISTNAME}-old"
258 echo "### Finished makedist."