--- /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 '<?xml version="1.0" encoding="utf-8" ?>'
+ echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">'
+ echo '<html xmlns="http://www.w3.org/1999/xhtml">'
+ echo '<head>'
+ echo '<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>'
+ echo "<title>${NAME}</title>"
+ echo '</head>'
+ echo '<body>'
+ echo '<pre>'
+ perl -w -p -e "s/&/&/g; s/</</g; s/>/>/g; s/'/'/g; s/\"/"/g;" "$FILE"
+ echo '</pre>'
+ echo '</body>'
+ } > "${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"