Admin/Release/makebundle
changeset 48190 76b6207eb000
parent 47857 ec58b1fbe7b7
--- /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/&/&amp;/g; s/</&lt;/g; s/>/&gt;/g; s/'/&apos;/g; s/\"/&quot;/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"