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"