3 # makedist -- make Isabelle source distribution
7 REPOS="http://isabelle.in.tum.de/repos/isabelle"
9 DISTPREFIX=${DISTPREFIX:-~/tmp/isadist}
16 PRG="$(basename "$0")"
17 THIS="$(cd $(dirname "$0"); echo "$PWD")"
23 Usage: $PRG [OPTIONS] [VERSION]
26 -r RELEASE proper release with name"
28 Make Isabelle distribution from the main Mercurial repository at TUM.
30 VERSION identifies the snapshot, using usual Mercurial terminology;
31 the default is RELEASE if given, otherwise "tip".
44 ## process command line
50 while getopts "r:" OPT
62 shift $(($OPTIND - 1))
68 [ "$#" -gt 0 ] && { VERSION="$1"; shift; }
69 [ -z "$VERSION" ] && VERSION="$RELEASE"
70 [ -z "$VERSION" ] && VERSION="tip"
72 [ "$#" -gt 0 ] && usage
80 function purge_tmp () { rm -rf "$DISTPREFIX/$TMP"; }
83 # retrieve archive and resolve version identifier
85 mkdir "$DISTPREFIX/$TMP" || fail "Failed to create fresh directory"
89 echo "### Retrieving Mercurial repository $VERSION"
92 { wget -q "$REPOS/archive/${VERSION}.tar.gz" -O- | tar -xzf -; } || \
93 fail "Failed to retrieve $VERSION"
95 IDENT=$(echo * | sed 's/isabelle-//')
97 rm -f "isabelle-$IDENT/.hg_archival.txt"
98 rm -f "isabelle-$IDENT/.hgtags"
99 rm -f "isabelle-$IDENT/.hgignore"
100 rm -f "isabelle-$IDENT/README_REPOSITORY"
105 DATE=$(env LC_ALL=C date "+%d-%b-%Y")
106 DISTDATE=$(env LC_ALL=C date "+%B %Y")
108 if [ -z "$RELEASE" ]; then
109 DISTNAME="Isabelle_$DATE"
110 DISTVERSION="Isabelle repository snapshot $IDENT ($DATE)"
113 DISTVERSION="$DISTNAME: $DISTDATE"
116 DISTBASE="$DISTPREFIX/dist-$DISTNAME"
117 mkdir -p "$DISTBASE" || { purge_tmp; fail "Unable to create distribution base dir $DISTBASE!"; }
118 [ -e "$DISTBASE/$DISTNAME" ] && { purge_tmp; fail "$DISTBASE/$DISTNAME already exists!"; }
119 [ -e "$DISTBASE/pdf/$DISTNAME" ] && { purge_tmp; fail "$DISTBASE/pdf/$DISTNAME already exists!"; }
122 mv "$DISTPREFIX/$TMP/isabelle-$IDENT" "$DISTNAME"
125 cd "$DISTNAME" || fail "No dist directory: $DISTBASE/$DISTNAME"
128 # prepare dist for release
131 echo "### Preparing distribution $DISTNAME"
135 find . "(" -name \*.thy -o -name \*.ML ")" -perm +111 -print | xargs chmod -f -x
136 find . -print | xargs chmod -f u+rw
138 ./Admin/build all || fail "Failed to build distribution"
141 MOVE=$(find doc-src \( -type f -a -not -type l -a -not -name isabelle_isar.pdf -a -not -name pghead.pdf -a \( -name \*.dvi -o -name \*.eps -o -name \*.ps -o -name \*.pdf \) -a -print \) | grep -v 'gfx/.*pdf')
143 rm doc/Isa-logics.eps
144 rm doc/adaption.dvi doc/adaption.pdf doc/architecture.dvi doc/architecture.pdf
149 cp doc/isabelle*.eps lib/logo
152 if [ -z "$RELEASE" ]; then
155 echo "IMPORTANT NOTE"
156 echo "=============="
158 echo "This is an unofficial snapshot of Isabelle, created by $LOGNAME $DATE."
159 echo "See $REPOS/log/$IDENT for details."
163 perl -pi -e "s,val is_official = false,val is_official = true,g" src/Pure/ROOT.ML
166 perl -pi -e "s,val changelog = \"\",val changelog = \"$REPOS/log/$IDENT\",g" src/Pure/ROOT.ML
167 perl -pi -e "s,ISABELLE_IDENTIFIER=\"\",ISABELLE_IDENTIFIER=\"$DISTNAME\",g" lib/scripts/getsettings
168 perl -pi -e "s,{ISABELLE},$DISTNAME,g" lib/html/library_index_header.template
169 perl -pi -e "s,Isabelle repository version,$DISTVERSION,g" src/Pure/ROOT.ML lib/Tools/version
170 perl -pi -e "s,the internal repository version of Isabelle,$DISTVERSION,g" README
176 echo "### Creating archives ..."
181 echo "$DISTBASE/$DISTNAME.tar.gz" > ../ISABELLE_DIST
182 echo "$IDENT" >../ISABELLE_IDENT
185 ln -s "$DISTNAME" Isabelle
187 chown -R "$LOGNAME" "$DISTNAME"
188 chmod -R u+w "$DISTNAME"
189 chmod -R g=o "$DISTNAME"
190 chgrp -R isabelle "$DISTNAME" Isabelle
192 mkdir -p "pdf/$DISTNAME/doc"
193 mv "$DISTNAME/doc/"*.pdf "pdf/$DISTNAME/doc"
195 echo "$DISTNAME.tar.gz"
196 tar -czf "$DISTNAME.tar.gz" Isabelle "$DISTNAME"
198 echo "${DISTNAME}_pdf.tar.gz"
199 tar -C pdf -czf "${DISTNAME}_pdf.tar.gz" "$DISTNAME"
201 mv "pdf/$DISTNAME/doc/"*.pdf "$DISTNAME/doc"
202 rmdir "pdf/$DISTNAME/doc" "pdf/$DISTNAME" pdf
207 mv "$DISTNAME" "${DISTNAME}-old"
210 mv "${DISTNAME}-old/README" "${DISTNAME}-old/INSTALL" "${DISTNAME}-old/NEWS" \
211 "${DISTNAME}-old/ANNOUNCE" "${DISTNAME}-old/COPYRIGHT" "${DISTNAME}-old/CONTRIBUTORS" \
213 mkdir "$DISTNAME/doc"
214 mv "${DISTNAME}-old/doc/"*.pdf "${DISTNAME}-old/doc/Contents" "$DISTNAME/doc"
216 chgrp -R isabelle "$DISTNAME"
218 rm -rf "${DISTNAME}-old"