5 # makedist -- make Isabelle source distribution.
10 DISTPREFIX=${DISTPREFIX:-~/tmp/isadist}
11 LOGICS="CCL CTT Cube FOL FOLP HOL HOLCF LCF Provers Pure Sequents TFL ZF"
13 export CVSROOT=/usr/proj/isabelle-repository/archive
14 [ ! -d "$CVSROOT" ] && CVSROOT="sunbroy2.informatik.tu-muenchen.de:$CVSROOT"
19 type -path gtar >/dev/null && TAR=gtar
22 type -path gfind >/dev/null && FIND=gfind
28 THIS=$(cd $(dirname "$0"); echo "$PWD")
34 Usage: $PRG VERSION [NAME]
36 Make Isabelle distribution from the master sources at TUM.
38 VERSION may be either a tag like "Isabelle2005" that specifies the
39 release to be exported from the repository, or "-" to checkout the
40 current sources as an unofficial release.
42 NAME specifies an explicit distribution name, by default it is
45 Checklist for official releases (before running this script):
47 * Check Admin/website contents.
48 * Check ANNOUNCE, README.html, INSTALL, NEWS, COPYRIGHT, CONTRIBUTORS.
49 * Try "isatool makeall all" with Poly/ML, SML/NJ, etc.
50 * Tag the current repository version, e.g.:
51 cvs -d /usr/proj/isabelle-repository/archive rtag Isabelle2005 isabelle
52 PLEASE DO NOT DO THIS UNLESS YOU KNOW WHAT YOU ARE DOING!
65 ## process command line
67 [ "$#" -ne 1 -a "$#" -ne 2 ] && usage
71 if [ "$#" -eq 0 ]; then
82 DATE=$(date "+%d-%b-%Y")
83 DISTDATE=$(date "+%B %Y")
85 if [ "$VERSION" = "-" ]; then
86 DISTIDENT="Isabelle_$DATE"
87 [ -z "$DISTNAME" ] && DISTNAME="$DISTIDENT"
88 DISTVERSION="$DISTNAME"
89 EXPORT="cvs -f -q checkout -P -d $DISTNAME isabelle"
90 UNOFFICIAL="unofficial"
93 [ -z "$DISTNAME" ] && DISTNAME="$DISTIDENT"
94 DISTVERSION="$DISTNAME: $DISTDATE"
95 EXPORT="cvs -f -q export -P -r $VERSION -d $DISTNAME isabelle"
99 DISTBASE="$DISTPREFIX/dist-$DISTNAME"
100 mkdir -p "$DISTBASE" || fail "Unable to create distribution base dir $DISTBASE!"
101 [ -e "$DISTBASE/$DISTNAME" ] && fail "$DISTBASE/$DISTNAME already exists!"
102 [ -e "$DISTBASE/pdf/$DISTNAME" ] && fail "$DISTBASE/pdf/$DISTNAME already exists!"
108 echo "### Exporting $DISTIDENT ..."
113 $EXPORT || fail "Export failed!"
115 if [ -n "$CVS2CL" ]; then
123 $FIND . -name CVS -print | xargs rm -rf
124 $FIND . -name .cvsignore -print | xargs rm -rf
125 $FIND . "(" -name \*.thy -o -name \*.ML ")" -perm +111 -print | xargs chmod -x
131 echo "### Building docs ..."
134 cd "$DISTBASE/$DISTNAME/Doc"
135 PDFLATEX=$(type -path pdflatex)
137 for DOC in $(cat Contents)
140 make dvi || fail "DVI document for $DOC failed!"
141 { [ -n "$PDFLATEX" ] && make clean pdf; } || fail "PDF document for $DOC failed!"
146 # prepare dist dir for release
149 echo "### Preparing distribution ..."
152 cd "$DISTBASE/$DISTNAME" || fail "No dist directory: $DISTBASE/$DISTNAME"
154 cp -R Admin/website ..
155 mkdir -p ../website/conf
156 cat > ../website/conf/distname.mak <<EOF
157 # this is a generated file - do not edit!
163 MOVE=$($FIND Doc \( -type f -a -not -type l -a -not -name pghead.pdf -a \( -name \*.dvi -o -name \*.eps -o -name \*.ps -o -name \*.pdf \) -a -print \) | grep -v 'gfx/.*pdf')
164 mv -f $MOVE Distribution/doc
165 rm Distribution/doc/Isa-logics.eps
174 ( cd lib/browser; make; ) || fail "Graph browser build failed!"
176 cp doc/isabelle*.eps lib/logo
179 if [ -n "$UNOFFICIAL" ]; then
182 echo "IMPORTANT NOTE"
183 echo "=============="
185 echo "This is an unofficial release of Isabelle, created by $LOGNAME $DATE."
190 perl -pi -e "s/{ISABELLE}/$DISTNAME/g;" lib/html/index.html
191 perl -pi -e "s/Isabelle repository version/$DISTVERSION/" src/Pure/ROOT.ML lib/Tools/version
192 perl -pi -e "s/the internal repository version of Isabelle/$DISTVERSION/" README.html
193 lynx -dump README.html >README
195 ( cd src; ../Admin/maketags; )
204 echo "### Creating archives ..."
209 echo "$DISTBASE/$DISTNAME.tar.gz" > ../ISABELLE_DIST
212 ln -s "$DISTNAME" Isabelle
214 chown -R "$LOGNAME" "$DISTNAME"
215 chmod -R u+w "$DISTNAME"
216 chmod -R g=o "$DISTNAME"
217 chgrp -R isabelle "$DISTNAME" Isabelle
219 mkdir -p "pdf/$DISTNAME/doc"
220 mv "$DISTNAME/doc/"*.pdf "pdf/$DISTNAME/doc"
222 #~ page/bin/mkcontents "$DISTNAME/doc/Contents" "pdf/$DISTNAME/doc/index"
223 #~ cat > "pdf/$DISTNAME/doc/index.html" <<EOF
226 #~ <title>$DISTNAME Documentation</title>
229 #~ <h1>$DISTNAME Documentation</h1>
230 #~ $(cat "pdf/$DISTNAME/doc/index")
234 #~ rm "pdf/$DISTNAME/doc/index"
236 echo "$DISTNAME.tar.gz"
237 "$TAR" cf "$DISTNAME.tar" Isabelle "$DISTNAME"
240 echo "${DISTNAME}_pdf.tar.gz"
241 ( cd pdf; "$TAR" cf "../${DISTNAME}_pdf.tar" "$DISTNAME"; )
242 gzip "${DISTNAME}_pdf.tar"
244 mv "pdf/$DISTNAME/doc/"*.pdf "pdf/$DISTNAME/doc/index.html" "$DISTNAME/doc"
245 rmdir "pdf/$DISTNAME/doc" "pdf/$DISTNAME" pdf
250 mv "$DISTNAME" "${DISTNAME}-old"
253 mv "${DISTNAME}-old/README.html" "${DISTNAME}-old/INSTALL" "${DISTNAME}-old/NEWS" \
254 "${DISTNAME}-old/ANNOUNCE" "${DISTNAME}-old/COPYRIGHT" "${DISTNAME}-old/CONTRIBUTORS" \
256 mkdir "$DISTNAME/doc"
257 mv "${DISTNAME}-old/doc/"*.pdf "${DISTNAME}-old/doc/index.html" "$DISTNAME/doc"
259 chgrp -R isabelle "$DISTNAME"
261 rm -rf "${DISTNAME}-old"
267 echo "### Finished makedist."