diff -r cd0a411b7fc1 -r 76b6207eb000 Admin/Release/makebin --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Admin/Release/makebin Thu Jul 05 14:13:14 2012 +0200 @@ -0,0 +1,118 @@ +#!/usr/bin/env bash +# +# makebin -- make Isabelle logic images for current platform + + +## global settings + +TMP="/var/tmp/isabelle-makebin$$" + + +## diagnostics + +PRG=$(basename "$0") + +function usage() +{ + echo + echo "Usage: $PRG [OPTIONS] ARCHIVE" + echo + echo " Options are:" + echo " -l produce library" + echo + echo " Precompile Isabelle for the current platform." + echo + exit 1 +} + +function fail() +{ + echo "$1" >&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"