# HG changeset patch # User wenzelm # Date 1341490394 -7200 # Node ID 76b6207eb000a197c169e56d25eb86f1e4a43a50 # Parent cd0a411b7fc1e9b9a699765a652e6edc9f5de127 more explicit directory structure Admin/Release/; updated to Admin/components; diff -r cd0a411b7fc1 -r 76b6207eb000 Admin/CHECKLIST --- a/Admin/CHECKLIST Thu Jul 05 13:35:46 2012 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,81 +0,0 @@ -Checklist for official releases -=============================== - -- test polyml-5.4.1, polyml-5.4.0, polyml-5.3.0, smlnj; - -- test Proof General 4.1, 3.7.1.1; - -- check HTML header of library; - -- check CTRL-C, SIGINT in tty (also for external processes); - -- check persistent sessions with PG and Poly/ML 5.x; - -- check file positions within logic images (hyperlinks etc.); - -- Admin/update-keywords; - -- check ANNOUNCE, README, NEWS, COPYRIGHT, CONTRIBUTORS; - -- check Admin/contributed_components; - -- check funny base directory, e.g. "Test 中国"; - -- diff NEWS wrt. last official release, which is read-only; - -- update https://isabelle.in.tum.de/repos/website; - -- maintain Docs: - doc-src: make all - doc-src/Dirs - doc/Contents - -- maintain Logics: - build - etc/components - lib/html/library_index_content.template - -- test separate compilation of Isabelle/Scala PIDE sources: - Admin/build jars_test - -- test Isabelle/jEdit: - print buffer - -- test contrib components: - x86_64-linux without 32bit C/C++ libraries - Mac OS X Leopard - - -Packaging -========= - -- makedist -j jedit_build-XXXX -r DISTNAME - -- makebin (multiplatform); - -- makebundle (multiplatform); - -- Mac OS X: hdiutil create -srcfolder DIR DMG; - -- Windows: cat 7zsd_All.sfx sfx.txt Isabelle.7z > Isabelle.exe - -- makebin -l on fast machine, based on renamed bundle with deleted heaps; - - -Final release stage -=================== - -- makedist: REPOS_NAME="isabelle-release" - -- various .hg/hgrc files: - default = /home/isabelle-repository/repos/isabelle-release - -- isatest@macbroy28:hg-isabelle/.hg/hgrc -- isatest@macbroy28:devel-page/content/index.content - - -Post-release -============ - -- update /home/isabelle and /home/isabelle/html-data - diff -r cd0a411b7fc1 -r 76b6207eb000 Admin/Release/CHECKLIST --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Admin/Release/CHECKLIST Thu Jul 05 14:13:14 2012 +0200 @@ -0,0 +1,81 @@ +Checklist for official releases +=============================== + +- test polyml-5.4.1, polyml-5.4.0, polyml-5.3.0, smlnj; + +- test Proof General 4.1, 3.7.1.1; + +- check HTML header of library; + +- check CTRL-C, SIGINT in tty (also for external processes); + +- check persistent sessions with PG and Poly/ML 5.x; + +- check file positions within logic images (hyperlinks etc.); + +- Admin/update-keywords; + +- check ANNOUNCE, README, NEWS, COPYRIGHT, CONTRIBUTORS; + +- check Admin/components; + +- check funny base directory, e.g. "Test 中国"; + +- diff NEWS wrt. last official release, which is read-only; + +- update https://isabelle.in.tum.de/repos/website; + +- maintain Docs: + doc-src: make all + doc-src/Dirs + doc/Contents + +- maintain Logics: + build + etc/components + lib/html/library_index_content.template + +- test separate compilation of Isabelle/Scala PIDE sources: + Admin/build jars_test + +- test Isabelle/jEdit: + print buffer + +- test contrib components: + x86_64-linux without 32bit C/C++ libraries + Mac OS X Leopard + + +Packaging +========= + +- makedist -j jedit_build-XXXX -r DISTNAME + +- makebin (multiplatform); + +- makebundle (multiplatform); + +- Mac OS X: hdiutil create -srcfolder DIR DMG; + +- Windows: cat 7zsd_All.sfx sfx.txt Isabelle.7z > Isabelle.exe + +- makebin -l on fast machine, based on renamed bundle with deleted heaps; + + +Final release stage +=================== + +- makedist: REPOS_NAME="isabelle-release" + +- various .hg/hgrc files: + default = /home/isabelle-repository/repos/isabelle-release + +- isatest@macbroy28:hg-isabelle/.hg/hgrc +- isatest@macbroy28:devel-page/content/index.content + + +Post-release +============ + +- update /home/isabelle and /home/isabelle/html-data + diff -r cd0a411b7fc1 -r 76b6207eb000 Admin/Release/isasync --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Admin/Release/isasync Thu Jul 05 14:13:14 2012 +0200 @@ -0,0 +1,129 @@ +#!/usr/bin/env bash +# +# mirror script for Isabelle distribution or website + + +## diagnostics + +PRG=`basename "$0"` + +usage() +{ + echo + echo "Usage: $PRG [OPTIONS] DEST" + echo + echo " Options are:" + echo " -h print help message" + echo " -n dry run, don't do anything, just report what would happen" + echo " -w (ignored for backward compatibility)" + echo " -d delete files that are not on the server (BEWARE!)" + echo + exit 1 +} + +fail() +{ + echo "$1" >&2 + exit 2 +} + + +## process command line + +# options + +HELP="" +ARGS="" +SRC="isabelle-website" + +while getopts "hnwd" OPT +do + case "$OPT" in + h) + HELP=true + ;; + n) + ARGS="$ARGS -n" + ;; + w) + echo "option -w ignored" + ;; + d) + ARGS="$ARGS --delete" + ;; + \?) + usage + ;; + esac +done + +shift `expr $OPTIND - 1` + + +# help + +if [ -n "$HELP" ]; then + cat <&2 + exit 2 +} + + +## process command line + +# options + +DO_LIBRARY="" + +while getopts "l" OPT +do + case "$OPT" in + l) + DO_LIBRARY=true + ;; + \?) + usage + ;; + esac +done + +shift $(($OPTIND - 1)) + + +# args + +[ "$#" -gt 1 ] && usage + +ARCHIVE="$1"; shift + + +## main + +[ ! -f "$ARCHIVE" ] && fail "Bad archive file $ARCHIVE" +ARCHIVE_BASE="$(basename "$ARCHIVE")" +ARCHIVE_DIR="$(cd $(dirname "$ARCHIVE"); echo "$PWD")" +ARCHIVE_FULL="$ARCHIVE_DIR/$ARCHIVE_BASE" + +ISABELLE_NAME="$(basename "$ARCHIVE_BASE" .tar.gz)" +ISABELLE_HOME="$TMP/$ISABELLE_NAME" + + +# build logics + +mkdir "$TMP" || fail "Cannot create directory $TMP" + +cd "$TMP" +tar xzf "$ARCHIVE_FULL" +cd "$ISABELLE_NAME" + +perl -pi \ + -e 's:^ISABELLE_USEDIR_OPTIONS=.*$:ISABELLE_USEDIR_OPTIONS="-M 1":;' \ + etc/settings + +if [ -n "$DO_LIBRARY" ]; then + perl -pi -e 's:^ISABELLE_USEDIR_OPTIONS=.*$:ISABELLE_USEDIR_OPTIONS="-M 1 -i true -d pdf -V outline=/proof,/ML":;' \ + etc/settings +fi + +ISABELLE_HOME_USER=$(./bin/isabelle getenv -b ISABELLE_HOME_USER) + +COMPILER=$(./bin/isabelle getenv -b ML_IDENTIFIER) +PLATFORM=$(./bin/isabelle getenv -b ML_PLATFORM) + +if [ -n "$DO_LIBRARY" ]; then + ./build -bait -m all +else + ./build -b HOL +fi + + +# prepare result + +cd "$TMP" + +chmod -R g=o "$TMP" +chgrp -R isabelle "$TMP" + +if [ -n "$DO_LIBRARY" ]; then + tar -c -z -f "$ARCHIVE_DIR/${ISABELLE_NAME}_library.tar.gz" "$ISABELLE_NAME/browser_info" +else + tar -c -z -f "$ARCHIVE_DIR/${ISABELLE_NAME}_heaps_${PLATFORM}.tar.gz" "$ISABELLE_NAME/heaps" +fi + + +# clean up +rm -rf "$TMP" diff -r cd0a411b7fc1 -r 76b6207eb000 Admin/Release/makebundle --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Admin/Release/makebundle Thu Jul 05 14:13:14 2012 +0200 @@ -0,0 +1,147 @@ +#!/usr/bin/env bash +# +# makebundle -- re-package with add-on components + +## diagnostics + +PRG=$(basename "$0") + +function usage() +{ + echo + echo "Usage: $PRG ARCHIVE PLATFORM" + echo + echo " Re-package Isabelle source distribution with add-on components" + echo " and heap images" + echo + exit 1 +} + +function fail() +{ + echo "$1" >&2 + exit 2 +} + + +## implicit and explicit arguments + +TMP="/var/tmp/isabelle-makebundle$$" +mkdir "$TMP" || fail "Cannot create directory $TMP" + +[ "$#" -ne 2 ] && usage + +ARCHIVE="$1"; shift +PLATFORM="$1"; shift + +[ -f "$ARCHIVE" ] || fail "Bad source archive: $ARCHIVE" + + +## main + +ARCHIVE_DIR="$(cd $(dirname "$ARCHIVE"); echo "$PWD")" +ISABELLE_NAME="$(basename "$ARCHIVE" .tar.gz)" +ISABELLE_HOME="$TMP/$ISABELLE_NAME" + +tar -C "$TMP" -x -z -f "$ARCHIVE" + + +echo "#bundled components" >> "$ISABELLE_HOME/etc/components" + +for CONTRIB in "$ARCHIVE_DIR/contrib/"*.tar.gz "$ARCHIVE_DIR/contrib/$PLATFORM"/*.tar.gz +do + if [ -f "$CONTRIB" ]; then + tar -C "$ISABELLE_HOME/contrib" -x -z -f "$CONTRIB" + NAME="$(basename "$CONTRIB" .tar.gz)" + [ -d "$ISABELLE_HOME/contrib/$NAME" ] || fail "Bad archive content $CONTRIB" + + if [ -e "$ISABELLE_HOME/contrib/$NAME/etc/settings" ]; then + echo "component $NAME" + if [ "$PLATFORM" != x86-cygwin -a "$NAME" = ProofGeneral-3.7.1.1 ]; then + echo "#contrib/$NAME" >> "$ISABELLE_HOME/etc/components" + elif [ "$PLATFORM" = x86-cygwin -a "$NAME" = ProofGeneral-4.1 ]; then + echo "#contrib/$NAME" >> "$ISABELLE_HOME/etc/components" + else + echo "contrib/$NAME" >> "$ISABELLE_HOME/etc/components" + fi + else + echo "package $NAME" + fi + fi +done + +if [ "$PLATFORM" = x86-cygwin ]; then + TAR="$ARCHIVE_DIR/contrib/x86-cygwin/Isabelle.tar" + [ -e "$TAR" ] || fail "Missing $TAR" + rm -f "$ISABELLE_HOME/Isabelle" + tar -C "$ISABELLE_HOME" -xv -f "$TAR" + + ( + cd "$ISABELLE_HOME" + for DIR in $(find contrib -name x86-linux -o -name x86_64-linux -o -name x86-darwin -o -name x86_64-darwin | sort) + do + echo "removing $DIR" + rm -rf "$DIR" + done + ) + + mv "$ISABELLE_HOME/contrib"/polyml* "$ISABELLE_HOME/contrib/cygwin-1.7.9/usr/local/" + ( + cd "$ISABELLE_HOME/contrib/cygwin-1.7.9" + find usr/local/polyml-*/x86-cygwin | gzip > etc/setup/polyml.lst.gz + ) + + for NAME in ANNOUNCE README NEWS COPYRIGHT CONTRIBUTORS contrib/README + do + FILE="$ISABELLE_HOME/$NAME" + { + echo '' + echo '' + echo '' + echo '' + echo '' + echo "${NAME}" + echo '' + echo '' + echo '
'
+      perl -w -p -e "s/&/&/g; s//>/g; s/'/'/g; s/\"/"/g;" "$FILE"
+      echo '
' + echo '' + } > "${FILE}.html" + done +fi + + +HEAPS_ARCHIVE="$ARCHIVE_DIR/${ISABELLE_NAME}_heaps_${PLATFORM}.tar.gz" +[ -f "$HEAPS_ARCHIVE" ] || fail "Bad heaps archive: $HEAPS_ARCHIVE" +echo "heaps" +tar -C "$TMP" -x -z -f "$HEAPS_ARCHIVE" + +case "$PLATFORM" in + x86_64-linux) + perl -pi -e 's,^ML_PLATFORM=.*$,ML_PLATFORM="\$ISABELLE_PLATFORM64",g;' "$TMP/$ISABELLE_NAME/etc/settings" + perl -pi -e "s,^ML_OPTIONS=.*$,ML_OPTIONS=\"-H 400\",g;" "$TMP/$ISABELLE_NAME/etc/settings" + ;; + *-darwin) + perl -pi -e "s,lookAndFeel=.*,lookAndFeel=com.apple.laf.AquaLookAndFeel,g;" \ + -e "s,delete-line.shortcut=.*,delete-line.shortcut=C+d,g;" \ + -e "s,delete.shortcut2=.*,delete.shortcut2=A+d,g;" \ + "$TMP/$ISABELLE_NAME/src/Tools/jEdit/dist/properties/jEdit.props" + ;; + *-cygwin) + perl -pi -e "s,lookAndFeel=.*,lookAndFeel=com.sun.java.swing.plaf.windows.WindowsLookAndFeel,g;" \ + "$TMP/$ISABELLE_NAME/src/Tools/jEdit/dist/properties/jEdit.props" + ;; + *) + ;; +esac + +BUNDLE_ARCHIVE="${ARCHIVE_DIR}/${ISABELLE_NAME}_bundle_${PLATFORM}.tar.gz" + +echo "$(basename "$BUNDLE_ARCHIVE")" +tar -C "$TMP" -c -z -f "$BUNDLE_ARCHIVE" "$ISABELLE_NAME" + + +# clean up +cd /tmp +rm -rf "$TMP" diff -r cd0a411b7fc1 -r 76b6207eb000 Admin/Release/makedist --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Admin/Release/makedist Thu Jul 05 14:13:14 2012 +0200 @@ -0,0 +1,235 @@ +#!/usr/bin/env bash +# +# makedist -- make Isabelle source distribution + +## global settings + +REPOS_NAME="isabelle" +REPOS="${REPOS:-http://isabelle.in.tum.de/repos/${REPOS_NAME}}" +DISTPREFIX="${DISTPREFIX:-$HOME/tmp/isadist}" + +umask 022 + + +## diagnostics + +PRG="$(basename "$0")" +THIS="$(cd $(dirname "$0"); pwd)" + +function usage() +{ + cat <&2 + exit 2 +} + + +## process command line + +# options + +RELEASE="" +ISABELLE_JEDIT_BUILD_HOME="" + +while getopts "j:r:" OPT +do + case "$OPT" in + j) + ISABELLE_JEDIT_BUILD_HOME="$OPTARG" + ;; + r) + RELEASE="$OPTARG" + ;; + \?) + usage + ;; + esac +done + +shift $(($OPTIND - 1)) + + +# args + +VERSION="" +[ "$#" -gt 0 ] && { VERSION="$1"; shift; } +[ -z "$VERSION" ] && VERSION="$RELEASE" +[ -z "$VERSION" ] && VERSION="tip" + +[ "$#" -gt 0 ] && usage + + +## main + +# tmp + +TMP="tmp-$USER$$" +function purge_tmp () { rm -rf "$DISTPREFIX/$TMP"; } + + +# retrieve archive and resolve version identifier + +mkdir "$DISTPREFIX/$TMP" || fail "Failed to create fresh directory" +cd "$DISTPREFIX/$TMP" + +echo "###" +echo "### Retrieving Mercurial repository $VERSION" +echo "###" + +if expr match "$REPOS" "https\?://" > /dev/null +then + { wget -q "$REPOS/archive/${VERSION}.tar.gz" -O- | tar -xzf -; } || \ + fail "Failed to retrieve $VERSION" +else + { hg --repository "$REPOS" archive --type tgz - | tar -xzf -; } || \ + fail "Failed to retrieve $VERSION" +fi + +IDENT=$(echo * | sed "s/${REPOS_NAME}-//") + +rm -f "${REPOS_NAME}-${IDENT}/.hg_archival.txt" +rm -f "${REPOS_NAME}-${IDENT}/.hgtags" +rm -f "${REPOS_NAME}-${IDENT}/.hgignore" +rm -f "${REPOS_NAME}-${IDENT}/README_REPOSITORY" + + +# dist name + +DATE=$(env LC_ALL=C date "+%d-%b-%Y") +DISTDATE=$(env LC_ALL=C date "+%B %Y") + +if [ -z "$RELEASE" ]; then + DISTNAME="Isabelle_$DATE" + DISTVERSION="Isabelle repository snapshot $IDENT $DATE" +else + DISTNAME="$RELEASE" + DISTVERSION="$DISTNAME: $DISTDATE" +fi + +DISTBASE="$DISTPREFIX/dist-$DISTNAME" +mkdir -p "$DISTBASE" || { purge_tmp; fail "Unable to create distribution base dir $DISTBASE!"; } +[ -e "$DISTBASE/$DISTNAME" ] && { purge_tmp; fail "$DISTBASE/$DISTNAME already exists!"; } + +cd "$DISTBASE" +mv "$DISTPREFIX/$TMP/${REPOS_NAME}-${IDENT}" "$DISTNAME" +purge_tmp + +cd "$DISTNAME" || fail "No dist directory: $DISTBASE/$DISTNAME" + + +# prepare dist for release + +echo "###" +echo "### Preparing distribution $DISTNAME" +echo "###" + +rm -f .hgignore +find . "(" -name \*.thy -o -name \*.ML -o -name \*.scala ")" -perm +111 -print | xargs chmod -f -x +find . -print | xargs chmod -f u+rw + +perl -pi -e 's/^(ISABELLE_SCALA_BUILD_OPTIONS=")/$1-optimise /,' etc/settings + +./Admin/build all || fail "Failed to build distribution" + +if [ -n "$ISABELLE_JEDIT_BUILD_HOME" ]; then + [ -d "$ISABELLE_JEDIT_BUILD_HOME" ] || fail "Bad jedit_build component directory: \"$ISABELLE_JEDIT_BUILD_HOME\"" + eval "$(fgrep ISABELLE_JEDIT_BUILD_VERSION "$ISABELLE_JEDIT_BUILD_HOME/etc/settings")" + [ -n "$ISABELLE_JEDIT_BUILD_VERSION" ] || fail "Bad ISABELLE_JEDIT_BUILD_VERSION" + export ISABELLE_JEDIT_BUILD_HOME ISABELLE_JEDIT_BUILD_VERSION + ./bin/isabelle jedit -b || fail "Failed to build Isabelle/jEdit" +fi + +rm -rf Admin + +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') +mv -f $MOVE doc +rm doc/Isa-logics.eps +rm doc/adaptation.dvi doc/adaptation.pdf doc/architecture.dvi doc/architecture.pdf +rm -rf doc-src + +mkdir -p contrib +cat >contrib/README <ANNOUNCE +else + perl -pi -e "s,val is_official = false,val is_official = true,g" src/Pure/ROOT.ML +fi + +perl -pi -e "s,val changelog = \"\",val changelog = \"$REPOS/log/$IDENT\",g" src/Pure/ROOT.ML +perl -pi -e "s,ISABELLE_ID=\"\",ISABELLE_ID=\"$IDENT\",g" lib/scripts/getsettings +perl -pi -e "s,ISABELLE_IDENTIFIER=\"\",ISABELLE_IDENTIFIER=\"$DISTNAME\",g" lib/scripts/getsettings +perl -pi -e "s,{ISABELLE},$DISTNAME,g" lib/html/library_index_header.template +perl -pi -e "s,unidentified repository version,$DISTVERSION,g" src/Pure/ROOT.ML lib/Tools/version +perl -pi -e "s,some unidentified repository version of Isabelle,$DISTVERSION,g" README + + +# create archive + +echo "###" +echo "### Creating archive ..." +echo "###" + +cd "$DISTBASE" + +echo "$DISTBASE/$DISTNAME.tar.gz" > ../ISABELLE_DIST +echo "$IDENT" >../ISABELLE_IDENT + +chown -R "$LOGNAME" "$DISTNAME" +chmod -R u+w "$DISTNAME" +chmod -R g=o "$DISTNAME" +chgrp -R isabelle "$DISTNAME" + +echo "$DISTNAME.tar.gz" +tar -czf "$DISTNAME.tar.gz" "$DISTNAME" + + +# cleanup dist + +mv "$DISTNAME" "${DISTNAME}-old" +mkdir "$DISTNAME" + +mv "${DISTNAME}-old/README" "${DISTNAME}-old/NEWS" "${DISTNAME}-old/ANNOUNCE" \ + "${DISTNAME}-old/COPYRIGHT" "${DISTNAME}-old/CONTRIBUTORS" "$DISTNAME" +mkdir "$DISTNAME/doc" +mv "${DISTNAME}-old/doc/"*.pdf "${DISTNAME}-old/doc/Contents" "$DISTNAME/doc" + +rm -f Isabelle && ln -sf "$DISTNAME" Isabelle + +chgrp -R isabelle "$DISTNAME" + +rm -rf "${DISTNAME}-old" + +echo "DONE" diff -r cd0a411b7fc1 -r 76b6207eb000 Admin/Release/mirror-website --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Admin/Release/mirror-website Thu Jul 05 14:13:14 2012 +0200 @@ -0,0 +1,21 @@ +#!/usr/bin/env bash +# +# mirrors the Isabelle website + +HOST=$(hostname) + +case ${HOST} in + sunbroy* | atbroy* | macbroy*) + DEST=/home/html/isabelle/html-data + ;; + *.cl.cam.ac.uk) + USER=paulson + DEST=/anfs/www/html/research/hvg/Isabelle + ;; + *) + echo "Unknown destination directory for ${HOST}" + exit 2 + ;; +esac + +exec $(dirname $0)/isasync $DEST diff -r cd0a411b7fc1 -r 76b6207eb000 Admin/isasync --- a/Admin/isasync Thu Jul 05 13:35:46 2012 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,129 +0,0 @@ -#!/usr/bin/env bash -# -# mirror script for Isabelle distribution or website - - -## diagnostics - -PRG=`basename "$0"` - -usage() -{ - echo - echo "Usage: $PRG [OPTIONS] DEST" - echo - echo " Options are:" - echo " -h print help message" - echo " -n dry run, don't do anything, just report what would happen" - echo " -w (ignored for backward compatibility)" - echo " -d delete files that are not on the server (BEWARE!)" - echo - exit 1 -} - -fail() -{ - echo "$1" >&2 - exit 2 -} - - -## process command line - -# options - -HELP="" -ARGS="" -SRC="isabelle-website" - -while getopts "hnwd" OPT -do - case "$OPT" in - h) - HELP=true - ;; - n) - ARGS="$ARGS -n" - ;; - w) - echo "option -w ignored" - ;; - d) - ARGS="$ARGS --delete" - ;; - \?) - usage - ;; - esac -done - -shift `expr $OPTIND - 1` - - -# help - -if [ -n "$HELP" ]; then - cat <&2 - exit 2 -} - - -## process command line - -# options - -DO_LIBRARY="" - -while getopts "l" OPT -do - case "$OPT" in - l) - DO_LIBRARY=true - ;; - \?) - usage - ;; - esac -done - -shift $(($OPTIND - 1)) - - -# args - -[ "$#" -gt 1 ] && usage - -ARCHIVE="$1"; shift - - -## main - -[ ! -f "$ARCHIVE" ] && fail "Bad archive file $ARCHIVE" -ARCHIVE_BASE="$(basename "$ARCHIVE")" -ARCHIVE_DIR="$(cd $(dirname "$ARCHIVE"); echo "$PWD")" -ARCHIVE_FULL="$ARCHIVE_DIR/$ARCHIVE_BASE" - -ISABELLE_NAME="$(basename "$ARCHIVE_BASE" .tar.gz)" -ISABELLE_HOME="$TMP/$ISABELLE_NAME" - - -# build logics - -mkdir "$TMP" || fail "Cannot create directory $TMP" - -cd "$TMP" -tar xzf "$ARCHIVE_FULL" -cd "$ISABELLE_NAME" - -perl -pi \ - -e 's:^ISABELLE_USEDIR_OPTIONS=.*$:ISABELLE_USEDIR_OPTIONS="-M 1":;' \ - etc/settings - -if [ -n "$DO_LIBRARY" ]; then - perl -pi -e 's:^ISABELLE_USEDIR_OPTIONS=.*$:ISABELLE_USEDIR_OPTIONS="-M 1 -i true -d pdf -V outline=/proof,/ML":;' \ - etc/settings -fi - -ISABELLE_HOME_USER=$(./bin/isabelle getenv -b ISABELLE_HOME_USER) - -COMPILER=$(./bin/isabelle getenv -b ML_IDENTIFIER) -PLATFORM=$(./bin/isabelle getenv -b ML_PLATFORM) - -if [ -n "$DO_LIBRARY" ]; then - ./build -bait -m all -else - ./build -b HOL -fi - - -# prepare result - -cd "$TMP" - -chmod -R g=o "$TMP" -chgrp -R isabelle "$TMP" - -if [ -n "$DO_LIBRARY" ]; then - tar -c -z -f "$ARCHIVE_DIR/${ISABELLE_NAME}_library.tar.gz" "$ISABELLE_NAME/browser_info" -else - tar -c -z -f "$ARCHIVE_DIR/${ISABELLE_NAME}_heaps_${PLATFORM}.tar.gz" "$ISABELLE_NAME/heaps" -fi - - -# clean up -rm -rf "$TMP" diff -r cd0a411b7fc1 -r 76b6207eb000 Admin/makebundle --- a/Admin/makebundle Thu Jul 05 13:35:46 2012 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,147 +0,0 @@ -#!/usr/bin/env bash -# -# makebundle -- re-package with add-on components - -## diagnostics - -PRG=$(basename "$0") - -function usage() -{ - echo - echo "Usage: $PRG ARCHIVE PLATFORM" - echo - echo " Re-package Isabelle source distribution with add-on components" - echo " and heap images" - echo - exit 1 -} - -function fail() -{ - echo "$1" >&2 - exit 2 -} - - -## implicit and explicit arguments - -TMP="/var/tmp/isabelle-makebundle$$" -mkdir "$TMP" || fail "Cannot create directory $TMP" - -[ "$#" -ne 2 ] && usage - -ARCHIVE="$1"; shift -PLATFORM="$1"; shift - -[ -f "$ARCHIVE" ] || fail "Bad source archive: $ARCHIVE" - - -## main - -ARCHIVE_DIR="$(cd $(dirname "$ARCHIVE"); echo "$PWD")" -ISABELLE_NAME="$(basename "$ARCHIVE" .tar.gz)" -ISABELLE_HOME="$TMP/$ISABELLE_NAME" - -tar -C "$TMP" -x -z -f "$ARCHIVE" - - -echo "#bundled components" >> "$ISABELLE_HOME/etc/components" - -for CONTRIB in "$ARCHIVE_DIR/contrib/"*.tar.gz "$ARCHIVE_DIR/contrib/$PLATFORM"/*.tar.gz -do - if [ -f "$CONTRIB" ]; then - tar -C "$ISABELLE_HOME/contrib" -x -z -f "$CONTRIB" - NAME="$(basename "$CONTRIB" .tar.gz)" - [ -d "$ISABELLE_HOME/contrib/$NAME" ] || fail "Bad archive content $CONTRIB" - - if [ -e "$ISABELLE_HOME/contrib/$NAME/etc/settings" ]; then - echo "component $NAME" - if [ "$PLATFORM" != x86-cygwin -a "$NAME" = ProofGeneral-3.7.1.1 ]; then - echo "#contrib/$NAME" >> "$ISABELLE_HOME/etc/components" - elif [ "$PLATFORM" = x86-cygwin -a "$NAME" = ProofGeneral-4.1 ]; then - echo "#contrib/$NAME" >> "$ISABELLE_HOME/etc/components" - else - echo "contrib/$NAME" >> "$ISABELLE_HOME/etc/components" - fi - else - echo "package $NAME" - fi - fi -done - -if [ "$PLATFORM" = x86-cygwin ]; then - TAR="$ARCHIVE_DIR/contrib/x86-cygwin/Isabelle.tar" - [ -e "$TAR" ] || fail "Missing $TAR" - rm -f "$ISABELLE_HOME/Isabelle" - tar -C "$ISABELLE_HOME" -xv -f "$TAR" - - ( - cd "$ISABELLE_HOME" - for DIR in $(find contrib -name x86-linux -o -name x86_64-linux -o -name x86-darwin -o -name x86_64-darwin | sort) - do - echo "removing $DIR" - rm -rf "$DIR" - done - ) - - mv "$ISABELLE_HOME/contrib"/polyml* "$ISABELLE_HOME/contrib/cygwin-1.7.9/usr/local/" - ( - cd "$ISABELLE_HOME/contrib/cygwin-1.7.9" - find usr/local/polyml-*/x86-cygwin | gzip > etc/setup/polyml.lst.gz - ) - - for NAME in ANNOUNCE README NEWS COPYRIGHT CONTRIBUTORS contrib/README - do - FILE="$ISABELLE_HOME/$NAME" - { - echo '' - echo '' - echo '' - echo '' - echo '' - echo "${NAME}" - echo '' - echo '' - echo '
'
-      perl -w -p -e "s/&/&/g; s//>/g; s/'/'/g; s/\"/"/g;" "$FILE"
-      echo '
' - echo '' - } > "${FILE}.html" - done -fi - - -HEAPS_ARCHIVE="$ARCHIVE_DIR/${ISABELLE_NAME}_heaps_${PLATFORM}.tar.gz" -[ -f "$HEAPS_ARCHIVE" ] || fail "Bad heaps archive: $HEAPS_ARCHIVE" -echo "heaps" -tar -C "$TMP" -x -z -f "$HEAPS_ARCHIVE" - -case "$PLATFORM" in - x86_64-linux) - perl -pi -e 's,^ML_PLATFORM=.*$,ML_PLATFORM="\$ISABELLE_PLATFORM64",g;' "$TMP/$ISABELLE_NAME/etc/settings" - perl -pi -e "s,^ML_OPTIONS=.*$,ML_OPTIONS=\"-H 400\",g;" "$TMP/$ISABELLE_NAME/etc/settings" - ;; - *-darwin) - perl -pi -e "s,lookAndFeel=.*,lookAndFeel=com.apple.laf.AquaLookAndFeel,g;" \ - -e "s,delete-line.shortcut=.*,delete-line.shortcut=C+d,g;" \ - -e "s,delete.shortcut2=.*,delete.shortcut2=A+d,g;" \ - "$TMP/$ISABELLE_NAME/src/Tools/jEdit/dist/properties/jEdit.props" - ;; - *-cygwin) - perl -pi -e "s,lookAndFeel=.*,lookAndFeel=com.sun.java.swing.plaf.windows.WindowsLookAndFeel,g;" \ - "$TMP/$ISABELLE_NAME/src/Tools/jEdit/dist/properties/jEdit.props" - ;; - *) - ;; -esac - -BUNDLE_ARCHIVE="${ARCHIVE_DIR}/${ISABELLE_NAME}_bundle_${PLATFORM}.tar.gz" - -echo "$(basename "$BUNDLE_ARCHIVE")" -tar -C "$TMP" -c -z -f "$BUNDLE_ARCHIVE" "$ISABELLE_NAME" - - -# clean up -cd /tmp -rm -rf "$TMP" diff -r cd0a411b7fc1 -r 76b6207eb000 Admin/makedist --- a/Admin/makedist Thu Jul 05 13:35:46 2012 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,235 +0,0 @@ -#!/usr/bin/env bash -# -# makedist -- make Isabelle source distribution - -## global settings - -REPOS_NAME="isabelle" -REPOS="${REPOS:-http://isabelle.in.tum.de/repos/${REPOS_NAME}}" -DISTPREFIX="${DISTPREFIX:-$HOME/tmp/isadist}" - -umask 022 - - -## diagnostics - -PRG="$(basename "$0")" -THIS="$(cd $(dirname "$0"); pwd)" - -function usage() -{ - cat <&2 - exit 2 -} - - -## process command line - -# options - -RELEASE="" -ISABELLE_JEDIT_BUILD_HOME="" - -while getopts "j:r:" OPT -do - case "$OPT" in - j) - ISABELLE_JEDIT_BUILD_HOME="$OPTARG" - ;; - r) - RELEASE="$OPTARG" - ;; - \?) - usage - ;; - esac -done - -shift $(($OPTIND - 1)) - - -# args - -VERSION="" -[ "$#" -gt 0 ] && { VERSION="$1"; shift; } -[ -z "$VERSION" ] && VERSION="$RELEASE" -[ -z "$VERSION" ] && VERSION="tip" - -[ "$#" -gt 0 ] && usage - - -## main - -# tmp - -TMP="tmp-$USER$$" -function purge_tmp () { rm -rf "$DISTPREFIX/$TMP"; } - - -# retrieve archive and resolve version identifier - -mkdir "$DISTPREFIX/$TMP" || fail "Failed to create fresh directory" -cd "$DISTPREFIX/$TMP" - -echo "###" -echo "### Retrieving Mercurial repository $VERSION" -echo "###" - -if expr match "$REPOS" "https\?://" > /dev/null -then - { wget -q "$REPOS/archive/${VERSION}.tar.gz" -O- | tar -xzf -; } || \ - fail "Failed to retrieve $VERSION" -else - { hg --repository "$REPOS" archive --type tgz - | tar -xzf -; } || \ - fail "Failed to retrieve $VERSION" -fi - -IDENT=$(echo * | sed "s/${REPOS_NAME}-//") - -rm -f "${REPOS_NAME}-${IDENT}/.hg_archival.txt" -rm -f "${REPOS_NAME}-${IDENT}/.hgtags" -rm -f "${REPOS_NAME}-${IDENT}/.hgignore" -rm -f "${REPOS_NAME}-${IDENT}/README_REPOSITORY" - - -# dist name - -DATE=$(env LC_ALL=C date "+%d-%b-%Y") -DISTDATE=$(env LC_ALL=C date "+%B %Y") - -if [ -z "$RELEASE" ]; then - DISTNAME="Isabelle_$DATE" - DISTVERSION="Isabelle repository snapshot $IDENT $DATE" -else - DISTNAME="$RELEASE" - DISTVERSION="$DISTNAME: $DISTDATE" -fi - -DISTBASE="$DISTPREFIX/dist-$DISTNAME" -mkdir -p "$DISTBASE" || { purge_tmp; fail "Unable to create distribution base dir $DISTBASE!"; } -[ -e "$DISTBASE/$DISTNAME" ] && { purge_tmp; fail "$DISTBASE/$DISTNAME already exists!"; } - -cd "$DISTBASE" -mv "$DISTPREFIX/$TMP/${REPOS_NAME}-${IDENT}" "$DISTNAME" -purge_tmp - -cd "$DISTNAME" || fail "No dist directory: $DISTBASE/$DISTNAME" - - -# prepare dist for release - -echo "###" -echo "### Preparing distribution $DISTNAME" -echo "###" - -rm -f .hgignore -find . "(" -name \*.thy -o -name \*.ML -o -name \*.scala ")" -perm +111 -print | xargs chmod -f -x -find . -print | xargs chmod -f u+rw - -perl -pi -e 's/^(ISABELLE_SCALA_BUILD_OPTIONS=")/$1-optimise /,' etc/settings - -./Admin/build all || fail "Failed to build distribution" - -if [ -n "$ISABELLE_JEDIT_BUILD_HOME" ]; then - [ -d "$ISABELLE_JEDIT_BUILD_HOME" ] || fail "Bad jedit_build component directory: \"$ISABELLE_JEDIT_BUILD_HOME\"" - eval "$(fgrep ISABELLE_JEDIT_BUILD_VERSION "$ISABELLE_JEDIT_BUILD_HOME/etc/settings")" - [ -n "$ISABELLE_JEDIT_BUILD_VERSION" ] || fail "Bad ISABELLE_JEDIT_BUILD_VERSION" - export ISABELLE_JEDIT_BUILD_HOME ISABELLE_JEDIT_BUILD_VERSION - ./bin/isabelle jedit -b || fail "Failed to build Isabelle/jEdit" -fi - -rm -rf Admin - -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') -mv -f $MOVE doc -rm doc/Isa-logics.eps -rm doc/adaptation.dvi doc/adaptation.pdf doc/architecture.dvi doc/architecture.pdf -rm -rf doc-src - -mkdir -p contrib -cat >contrib/README <ANNOUNCE -else - perl -pi -e "s,val is_official = false,val is_official = true,g" src/Pure/ROOT.ML -fi - -perl -pi -e "s,val changelog = \"\",val changelog = \"$REPOS/log/$IDENT\",g" src/Pure/ROOT.ML -perl -pi -e "s,ISABELLE_ID=\"\",ISABELLE_ID=\"$IDENT\",g" lib/scripts/getsettings -perl -pi -e "s,ISABELLE_IDENTIFIER=\"\",ISABELLE_IDENTIFIER=\"$DISTNAME\",g" lib/scripts/getsettings -perl -pi -e "s,{ISABELLE},$DISTNAME,g" lib/html/library_index_header.template -perl -pi -e "s,unidentified repository version,$DISTVERSION,g" src/Pure/ROOT.ML lib/Tools/version -perl -pi -e "s,some unidentified repository version of Isabelle,$DISTVERSION,g" README - - -# create archive - -echo "###" -echo "### Creating archive ..." -echo "###" - -cd "$DISTBASE" - -echo "$DISTBASE/$DISTNAME.tar.gz" > ../ISABELLE_DIST -echo "$IDENT" >../ISABELLE_IDENT - -chown -R "$LOGNAME" "$DISTNAME" -chmod -R u+w "$DISTNAME" -chmod -R g=o "$DISTNAME" -chgrp -R isabelle "$DISTNAME" - -echo "$DISTNAME.tar.gz" -tar -czf "$DISTNAME.tar.gz" "$DISTNAME" - - -# cleanup dist - -mv "$DISTNAME" "${DISTNAME}-old" -mkdir "$DISTNAME" - -mv "${DISTNAME}-old/README" "${DISTNAME}-old/NEWS" "${DISTNAME}-old/ANNOUNCE" \ - "${DISTNAME}-old/COPYRIGHT" "${DISTNAME}-old/CONTRIBUTORS" "$DISTNAME" -mkdir "$DISTNAME/doc" -mv "${DISTNAME}-old/doc/"*.pdf "${DISTNAME}-old/doc/Contents" "$DISTNAME/doc" - -rm -f Isabelle && ln -sf "$DISTNAME" Isabelle - -chgrp -R isabelle "$DISTNAME" - -rm -rf "${DISTNAME}-old" - -echo "DONE" diff -r cd0a411b7fc1 -r 76b6207eb000 Admin/mira.py --- a/Admin/mira.py Thu Jul 05 13:35:46 2012 +0200 +++ b/Admin/mira.py Thu Jul 05 14:13:14 2012 +0200 @@ -313,7 +313,7 @@ """Build of distribution""" ## FIXME This is rudimentary; study Admin/CHECKLIST to complete this configuration accordingly isabelle_home = paths[0] - (return_code, log) = env.run_process(path.join(isabelle_home, 'Admin', 'makedist'), + (return_code, log) = env.run_process(path.join(isabelle_home, 'Admin', 'Release', 'makedist'), REPOS = repositories.get(Isabelle).local_path, DISTPREFIX = os.getcwd()) return (return_code == 0, '', ## FIXME might add summary here {}, {'log': log}, None) ## FIXME might add proper result here diff -r cd0a411b7fc1 -r 76b6207eb000 Admin/mirror-website --- a/Admin/mirror-website Thu Jul 05 13:35:46 2012 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,21 +0,0 @@ -#!/usr/bin/env bash -# -# mirrors the Isabelle website - -HOST=$(hostname) - -case ${HOST} in - sunbroy* | atbroy* | macbroy*) - DEST=/home/html/isabelle/html-data - ;; - *.cl.cam.ac.uk) - USER=paulson - DEST=/anfs/www/html/research/hvg/Isabelle - ;; - *) - echo "Unknown destination directory for ${HOST}" - exit 2 - ;; -esac - -exec $(dirname $0)/isasync $DEST