merged
authortraytel
Fri, 21 Aug 2015 23:27:52 +0200
changeset 61005 151d92332625
parent 61004 1dd6669ff612 (current diff)
parent 61003 0b9d8af73270 (diff)
child 61006 3d62df166e06
merged
--- a/Admin/Release/build	Fri Aug 21 16:10:11 2015 +0200
+++ b/Admin/Release/build	Fri Aug 21 23:27:52 2015 +0200
@@ -115,7 +115,7 @@
 
 # make bundles
 
-for PLATFORM_FAMILY in linux windows macos
+for PLATFORM_FAMILY in linux windows windows64 macos
 do
 
 echo
@@ -139,8 +139,9 @@
 <body>
 <h1>${DISTNAME}</h1>
 <ul>
-<li><a href="${DISTNAME}_linux.tar.gz">Linux</a></li>
+<li><a href="${DISTNAME}_app.tar.gz">Linux</a></li>
 <li><a href="${DISTNAME}.exe">Windows</a></li>
+<li><a href="${DISTNAME}-win64.exe">Windows (64bit)</a></li>
 <li><a href="${DISTNAME}.dmg">Mac OS X</a></li>
 </ul>
 </body>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Admin/Windows/launch4j/README	Fri Aug 21 23:27:52 2015 +0200
@@ -0,0 +1,4 @@
+Java application wrapper for Windows
+====================================
+
+* http://launch4j.sourceforge.net
Binary file Admin/Windows/launch4j/isabelle.bmp has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Admin/Windows/launch4j/isabelle.xml	Fri Aug 21 23:27:52 2015 +0200
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<launch4jConfig>
+  <dontWrapJar>true</dontWrapJar>
+  <headerType>gui</headerType>
+  <jar></jar>
+  <outfile>{OUTFILE}</outfile>
+  <errTitle></errTitle>
+  <cmdLine></cmdLine>
+  <chdir></chdir>
+  <priority>normal</priority>
+  <downloadUrl></downloadUrl>
+  <supportUrl></supportUrl>
+  <stayAlive>false</stayAlive>
+  <restartOnCrash>false</restartOnCrash>
+  <manifest></manifest>
+  <icon>{ICON}</icon>
+  <classPath>
+    <mainClass>isabelle.Main</mainClass>
+{CLASSPATH}
+  </classPath>
+  <jre>
+    <path>%EXEDIR%\contrib\jdk\{PLATFORM}\jre</path>
+    <bundledJre64Bit>{PLATFORM_IS_64}</bundledJre64Bit>
+    <bundledJreAsFallback>false</bundledJreAsFallback>
+    <minVersion></minVersion>
+    <maxVersion></maxVersion>
+    <jdkPreference>jdkOnly</jdkPreference>
+    <runtimeBits>{PLATFORM_BITS}</runtimeBits>
+    <opt>-Disabelle.home=&quot;%EXEDIR%&quot; -Dcygwin.root=&quot;%EXEDIR%\\contrib\\cygwin&quot;</opt>
+  </jre>
+  <splash>
+    <file>{SPLASH}</file>
+    <waitForWindow>true</waitForWindow>
+  </splash>
+</launch4jConfig>
\ No newline at end of file
Binary file Admin/Windows/launch4j/isabelle_transparent.ico has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Admin/Windows/launch4j/manifest.xml	Fri Aug 21 23:27:52 2015 +0200
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3" >
+ <asmv3:application>
+   <asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
+    <dpiAware>true</dpiAware>
+   </asmv3:windowsSettings>
+ </asmv3:application>
+</assembly>
+
--- a/Admin/components/bundled-windows	Fri Aug 21 16:10:11 2015 +0200
+++ b/Admin/components/bundled-windows	Fri Aug 21 23:27:52 2015 +0200
@@ -1,3 +1,3 @@
 #additional components to be bundled for release
 cygwin-20150410
-windows_app-20131201
+windows_app-20150821
--- a/Admin/components/components.sha1	Fri Aug 21 16:10:11 2015 +0200
+++ b/Admin/components/components.sha1	Fri Aug 21 23:27:52 2015 +0200
@@ -48,6 +48,7 @@
 44ffeeae219782d40ce6822b580e608e72fd4c76  jdk-8u31.tar.gz
 4132cf52d5025bf330d53b96a5c6466fef432377  jdk-8u51.tar.gz
 c95ebf7777beb3e7ef10c0cf3f734cb78f9828e4  jdk-8u5.tar.gz
+74df343671deba03be7caa49de217d78b693f817  jdk-8u60.tar.gz
 44775a22f42a9d665696bfb49e53c79371c394b0  jedit_build-20111217.tar.gz
 a242a688810f2bccf24587b0062ce8027bf77fa2  jedit_build-20120304.tar.gz
 4c948dee53f74361c097c08f49a1a5ff9b17bd1d  jedit_build-20120307.tar.gz
@@ -125,6 +126,7 @@
 d273abdc7387462f77a127fa43095eed78332b5c  windows_app-20130909.tar.gz
 c368908584e2bca38b3bcb20431d0c69399fc2f0  windows_app-20131130.tar.gz
 c3f5285481a95fde3c1961595b4dd0311ee7ac1f  windows_app-20131201.tar.gz
+14807afcf69e50d49663d5b48f4b103f30ae842b  windows_app-20150821.tar.gz
 1c36a840320dfa9bac8af25fc289a4df5ea3eccb  xz-java-1.2-1.tar.gz
 2ae13aa17d0dc95ce254a52f1dba10929763a10d  xz-java-1.2.tar.gz
 4530a1aa6f4498ee3d78d6000fa71a3f63bd077f  yices-1.0.28.tar.gz
--- a/Admin/components/main	Fri Aug 21 16:10:11 2015 +0200
+++ b/Admin/components/main	Fri Aug 21 23:27:52 2015 +0200
@@ -4,7 +4,7 @@
 e-1.8
 exec_process-1.0.3
 Haskabelle-2015
-jdk-8u51
+jdk-8u60
 jedit_build-20150228
 jfreechart-1.0.14-1
 jortho-1.0-2
--- a/Admin/java/build	Fri Aug 21 16:10:11 2015 +0200
+++ b/Admin/java/build	Fri Aug 21 23:27:52 2015 +0200
@@ -1,5 +1,8 @@
 #!/usr/bin/env bash
 
+THIS="$(cd "$(dirname "$0")"; pwd)"
+
+
 ## diagnostics
 
 function fail()
@@ -11,13 +14,14 @@
 
 ## parameters
 
-VERSION="8u51"
-FULL_VERSION="1.8.0_51"
+VERSION="8u60"
+FULL_VERSION="1.8.0_60"
 
 ARCHIVE_LINUX32="jdk-${VERSION}-linux-i586.tar.gz"
 ARCHIVE_LINUX64="jdk-${VERSION}-linux-x64.tar.gz"
+ARCHIVE_WINDOWS32="jdk${FULL_VERSION}-w32.tar.gz"
+ARCHIVE_WINDOWS64="jdk${FULL_VERSION}-w64.tar.gz"
 ARCHIVE_DARWIN="jdk${FULL_VERSION}.jdk.tar.gz"
-ARCHIVE_WINDOWS="jdk${FULL_VERSION}.tar.gz"
 
 
 ## main
@@ -35,7 +39,7 @@
 for the original downloads, which are covered by the Oracle Binary
 Code License Agreement for Java SE.
 
-Linux, Windows Mac OS X, work uniformly, depending on certain
+Linux, Windows, Mac OS X all work uniformly, depending on certain
 platform-specific subdirectories.
 EOF
 
@@ -43,21 +47,7 @@
 # settings
 
 mkdir "$DIR/etc"
-cat >> "$DIR/etc/settings" << EOF
-# -*- shell-script -*- :mode=shellscript:
-
-case "\${ISABELLE_PLATFORM64:-\$ISABELLE_PLATFORM32}" in
-  x86-darwin)
-    echo "### Java unavailable on 32bit Macintosh!" >&2
-    ;;
-  x86_64-darwin)
-    ISABELLE_JDK_HOME="\$COMPONENT/\$ISABELLE_PLATFORM64/Contents/Home"
-    ;;
-  *)
-    ISABELLE_JDK_HOME="\$COMPONENT/\${ISABELLE_PLATFORM64:-\$ISABELLE_PLATFORM32}"
-    ;;
-esac
-EOF
+cp "$THIS/settings" "$DIR/etc/settings"
 
 
 # content
@@ -67,16 +57,17 @@
   function tar() { /usr/bin/gnutar "$@"; }
 fi
 
-mkdir "$DIR/x86-linux" "$DIR/x86_64-linux" "$DIR/x86_64-darwin" "$DIR/x86-cygwin"
+mkdir "$DIR/x86-linux" "$DIR/x86_64-linux" "$DIR/x86-windows" "$DIR/x86_64-windows" "$DIR/x86_64-darwin"
 
 tar -C "$DIR/x86-linux" -xf "$ARCHIVE_LINUX32"
 tar -C "$DIR/x86_64-linux" -xf "$ARCHIVE_LINUX64"
+tar -C "$DIR/x86-windows" -xf "$ARCHIVE_WINDOWS32"
+tar -C "$DIR/x86_64-windows" -xf "$ARCHIVE_WINDOWS64"
 tar -C "$DIR/x86_64-darwin" -xf "$ARCHIVE_DARWIN"
-tar -C "$DIR/x86-cygwin" -xf "$ARCHIVE_WINDOWS"
 
 (
   cd "$DIR"
-  for PLATFORM in x86-linux x86_64-linux x86-cygwin
+  for PLATFORM in x86-linux x86_64-linux x86-windows x86_64-windows
   do
     mv "$PLATFORM/jdk${FULL_VERSION}"/* "$PLATFORM"/.
     rmdir "$PLATFORM/jdk${FULL_VERSION}"
@@ -99,8 +90,9 @@
   do
     for OTHER in \
       "../x86_64-linux/$FILE" \
-      "../x86_64-darwin/Contents/Home/$FILE" \
-      "../x86-cygwin/$FILE"
+      "../x86-windows/$FILE" \
+      "../x86_64-windows/$FILE" \
+      "../x86_64-darwin/Contents/Home/$FILE"
     do
       if cmp -s "$FILE" "$OTHER"
       then
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Admin/java/settings	Fri Aug 21 23:27:52 2015 +0200
@@ -0,0 +1,26 @@
+# -*- shell-script -*- :mode=shellscript:
+
+case "$ISABELLE_PLATFORM_FAMILY" in
+  linux)
+    ISABELLE_JAVA_PLATFORM="${ISABELLE_PLATFORM64:-$ISABELLE_PLATFORM32}"
+    ISABELLE_JDK_HOME="$COMPONENT/$ISABELLE_JAVA_PLATFORM"
+    ;;
+  windows)
+    if [ ! -e "$COMPONENT/x86_64-windows" ]; then
+      ISABELLE_JAVA_PLATFORM="x86-windows"
+    elif "$COMPONENT/x86_64-windows/jre/bin/java" -version > /dev/null 2> /dev/null; then
+      ISABELLE_JAVA_PLATFORM="x86_64-windows"
+    else
+      ISABELLE_JAVA_PLATFORM="x86-windows"
+    fi
+    ISABELLE_JDK_HOME="$COMPONENT/$ISABELLE_JAVA_PLATFORM"
+    ;;
+  macos)
+    if [ -z "$ISABELLE_PLATFORM64" ]; then
+      echo "### Java unavailable on 32bit Mac OS X" >&2
+    else
+      ISABELLE_JAVA_PLATFORM="$ISABELLE_PLATFORM64"
+      ISABELLE_JDK_HOME="$COMPONENT/$ISABELLE_JAVA_PLATFORM/Contents/Home"
+    fi
+    ;;
+esac
--- a/Admin/lib/Tools/makedist_bundle	Fri Aug 21 16:10:11 2015 +0200
+++ b/Admin/lib/Tools/makedist_bundle	Fri Aug 21 23:27:52 2015 +0200
@@ -11,8 +11,8 @@
   echo
   echo "Usage: isabelle $PRG ARCHIVE PLATFORM_FAMILY"
   echo
-  echo "  Re-package Isabelle source distribution with add-on components"
-  echo "  and post-hoc patches for platform family linux, macos, windows."
+  echo "  Re-package Isabelle source distribution with add-on components and"
+  echo "  post-hoc patches for platform family linux, windows, windows64, macos."
   echo
   echo "  Add-on components are that of the running Isabelle version!"
   echo
@@ -33,6 +33,12 @@
 ARCHIVE="$1"; shift
 PLATFORM_FAMILY="$1"; shift
 
+if [ "$PLATFORM_FAMILY" = windows64 ]; then
+  PLATFORM_FAM="windows"
+else
+  PLATFORM_FAM="$PLATFORM_FAMILY"
+fi
+
 [ -f "$ARCHIVE" ] || fail "Bad source archive: $ARCHIVE"
 
 ARCHIVE_DIR="$(cd $(dirname "$ARCHIVE"); echo "$PWD")"
@@ -81,7 +87,7 @@
 
 echo "#bundled components" >> "$ISABELLE_TARGET/etc/components"
 
-for CATALOG in main "$PLATFORM_FAMILY" bundled "bundled-$PLATFORM_FAMILY"
+for CATALOG in main "$PLATFORM_FAM" bundled "bundled-$PLATFORM_FAM"
 do
   CATALOG_FILE="$ISABELLE_HOME/Admin/components/$CATALOG"
   if [ -f "$CATALOG_FILE" ]
@@ -132,11 +138,11 @@
 
 # purge other platforms
 
-function purge_contrib
+function purge_target
 {
   (
     cd "$ISABELLE_TARGET"
-    for DIR in $(eval find contrib "$@" | sort)
+    for DIR in $(eval find "$@" | sort)
     do
       echo "removing $DIR"
       rm -rf "$DIR"
@@ -175,9 +181,9 @@
 perl -pi -e "s,view.title=Isabelle/jEdit,view.title=${ISABELLE_NAME},g;" \
   "$ISABELLE_TARGET/src/Tools/jEdit/dist/properties/jEdit.props"
 
-case "$PLATFORM_FAMILY" in
+case "$PLATFORM_FAM" in
   linux)
-    purge_contrib '-name "x86*-darwin" -o -name "x86*-cygwin" -o -name "x86*-windows"'
+    purge_target 'contrib -name "x86*-darwin" -o -name "x86*-cygwin" -o -name "x86*-windows"'
     purge_jdk "x86-linux"
     purge_jdk "x86_64-linux"
 
@@ -199,7 +205,7 @@
     cp "$TMP/linux_app/Isabelle" "$ISABELLE_TARGET/$ISABELLE_NAME"
     ;;
   macos)
-    purge_contrib '-name "x86*-linux" -o -name "x86*-cygwin" -o -name "x86*-windows"'
+    purge_target 'contrib -name "x86*-linux" -o -name "x86*-cygwin" -o -name "x86*-windows"'
     purge_jdk "x86_64-darwin/Contents/Home"
     mv "$ISABELLE_TARGET/contrib/macos_app" "$TMP/."
 
@@ -212,8 +218,20 @@
       "$ISABELLE_TARGET/src/Tools/jEdit/dist/properties/jEdit.props"
     ;;
   windows)
-    purge_contrib '-name "x86*-linux" -o -name "x86*-darwin"'
-    purge_jdk "x86-cygwin"
+    if [ "$PLATFORM_FAMILY" = windows ]; then
+      purge_target 'contrib -name x86_64-windows -o -name "x86*-linux" -o -name "x86*-darwin"'
+      PLATFORM="x86-windows"
+      PLATFORM_IS_64="false"
+      PLATFORM_BITS="32"
+    else
+      purge_target 'contrib -name "x86*-linux" -o -name "x86*-darwin"'
+      purge_target 'contrib/jdk -name "x86-windows"'
+      PLATFORM="x86_64-windows"
+      PLATFORM_IS_64="true"
+      PLATFORM_BITS="64"
+    fi
+    purge_jdk "$PLATFORM"
+
     mv "$ISABELLE_TARGET/contrib/windows_app" "$TMP/."
 
     perl -pi \
@@ -222,34 +240,50 @@
       "$ISABELLE_TARGET/src/Tools/jEdit/dist/properties/jEdit.props"
 
     (
-      cat "$ISABELLE_HOME/Admin/Windows/WinRun4J/Isabelle.ini"
-
+      echo -e "# Java runtime options\r"
       declare -a JAVA_ARGS=()
       eval "JAVA_ARGS=($ISABELLE_JAVA_SYSTEM_OPTIONS $JEDIT_JAVA_OPTIONS $JEDIT_SYSTEM_OPTIONS)"
-      A=2
       for ARG in "${JAVA_ARGS[@]}"
       do
-        echo -e "vmarg.$A=$ARG\r"
-        A=$[ $A + 1 ]
+        echo -e "$ARG\r"
       done
+    ) > "$ISABELLE_TARGET/${ISABELLE_NAME}.l4j.ini"
+
+    (
+      cd "$TMP"
+
+      APP_TEMPLATE="$ISABELLE_HOME/Admin/Windows/launch4j"
 
-      A=1
-      for ENTRY in "${DISTRIBITION_CLASSPATH[@]}"
-      do
-        ENTRY=$(echo "$ENTRY" | perl -p -e 's,/,\\\\,g;')
-        echo -e "classpath.$A=$ENTRY\r"
-        A=$[ $A + 1 ]
-      done
-    ) > "$ISABELLE_TARGET/${ISABELLE_NAME}.ini"
+      (
+        for ENTRY in "${DISTRIBITION_CLASSPATH[@]}"
+        do
+          ENTRY=$(echo "$ENTRY" | perl -p -e 's,/,\\\\,g;')
+          echo "    <cp>%EXEDIR%\\\\$ENTRY</cp>"
+        done
+      ) > exe_classpath
+      EXE_CLASSPATH="$(cat exe_classpath)"
 
-    cp "$TMP/windows_app/Isabelle.exe" "$ISABELLE_TARGET/${ISABELLE_NAME}.exe"
-    cp "$ISABELLE_HOME/Admin/Windows/WinRun4J/manifest.xml" "$ISABELLE_TARGET/${ISABELLE_NAME}.exe.manifest"
-    cp "$ISABELLE_HOME/Admin/Windows/Cygwin/Cygwin-Setup.bat" \
-      "$ISABELLE_HOME/Admin/Windows/Cygwin/Cygwin-Terminal.bat" "$ISABELLE_TARGET"
+      perl -p \
+        -e "s,{OUTFILE},$ISABELLE_TARGET/${ISABELLE_NAME}.exe,g;" \
+        -e "s,{ICON},$APP_TEMPLATE/isabelle_transparent.ico,g;" \
+        -e "s,{SPLASH},$APP_TEMPLATE/isabelle.bmp,g;" \
+        -e "s,{CLASSPATH},$EXE_CLASSPATH,g;" \
+        -e "s,{PLATFORM},$PLATFORM,g;" \
+        -e "s,{PLATFORM_IS_64},$PLATFORM_IS_64,g;" \
+        -e "s,{PLATFORM_BITS},$PLATFORM_BITS,g;" \
+        "$APP_TEMPLATE/isabelle.xml" > isabelle.xml
+
+      "windows_app/launch4j-${ISABELLE_PLATFORM_FAMILY}/launch4j" isabelle.xml
+
+      cp "$APP_TEMPLATE/manifest.xml" "$ISABELLE_TARGET/${ISABELLE_NAME}.exe.manifest"
+    )
 
     (
       cd "$ISABELLE_TARGET"
 
+      cp "$ISABELLE_HOME/Admin/Windows/Cygwin/Cygwin-Setup.bat" \
+        "$ISABELLE_HOME/Admin/Windows/Cygwin/Cygwin-Terminal.bat" .
+
       for NAME in postinstall rebaseall
       do
         cp -a "$ISABELLE_HOME/Admin/Windows/Cygwin/isabelle/$NAME" \
@@ -270,19 +304,15 @@
 esac
 
 
-# archive
-
-BUNDLE_ARCHIVE="${ARCHIVE_DIR}/${ISABELLE_NAME}_${PLATFORM_FAMILY}.tar.gz"
-
-echo "packaging $(basename "$BUNDLE_ARCHIVE")"
-tar -C "$TMP" -c -z -f "$BUNDLE_ARCHIVE" "$ISABELLE_NAME" || exit 2
-
-
 # platform-specific setup (outside archive)
 
 if [ "$ISABELLE_PLATFORM_FAMILY" = linux -a "$PLATFORM_FAMILY" != macos -o "$ISABELLE_PLATFORM_FAMILY" = macos ]
 then
-  case "$PLATFORM_FAMILY" in
+  case "$PLATFORM_FAM" in
+    linux)
+      echo "application for $PLATFORM_FAMILY"
+      tar -C "$TMP" -c -z -f "${ARCHIVE_DIR}/${ISABELLE_NAME}_app.tar.gz" "$ISABELLE_NAME"
+      ;;
     macos)
       echo "application for $PLATFORM_FAMILY"
       (
@@ -339,6 +369,12 @@
       ;;
     windows)
       (
+        if [ "$PLATFORM_FAMILY" = windows ]; then
+          PLATFORM_SUFFIX=""
+        else
+          PLATFORM_SUFFIX="-win64"
+        fi
+
         cd "$TMP"
         rm -f "${ARCHIVE_DIR}/${ISABELLE_NAME}.7z"
         7z -y -bd a "$TMP/${ISABELLE_NAME}.7z" "$ISABELLE_NAME" || exit 2
@@ -349,8 +385,8 @@
           cat "$ISABELLE_HOME/Admin/Windows/Installer/sfx.txt" | \
             perl -p -e "s,{ISABELLE_NAME},${ISABELLE_NAME},g;"
           cat "$TMP/${ISABELLE_NAME}.7z"
-        ) > "${ARCHIVE_DIR}/${ISABELLE_NAME}.exe"
-        chmod +x "${ARCHIVE_DIR}/${ISABELLE_NAME}.exe"
+        ) > "${ARCHIVE_DIR}/${ISABELLE_NAME}${PLATFORM_SUFFIX}.exe"
+        chmod +x "${ARCHIVE_DIR}/${ISABELLE_NAME}${PLATFORM_SUFFIX}.exe"
       )
       ;;
     *)
--- a/NEWS	Fri Aug 21 16:10:11 2015 +0200
+++ b/NEWS	Fri Aug 21 23:27:52 2015 +0200
@@ -300,6 +300,9 @@
 * Poly/ML 5.5.3 runs natively on x86-windows, with somewhat larger heap
 space than former x86-cygwin.
 
+* Java runtime environment for x86_64-windows allows to use larger heap
+space.
+
 
 
 New in Isabelle2015 (May 2015)
--- a/src/Pure/GUI/gui.scala	Fri Aug 21 16:10:11 2015 +0200
+++ b/src/Pure/GUI/gui.scala	Fri Aug 21 23:27:52 2015 +0200
@@ -44,6 +44,10 @@
     Platform.is_macos &&
     UIManager.getSystemLookAndFeelClassName() == UIManager.getLookAndFeel.getClass.getName
 
+  def is_windows_laf(): Boolean =
+    Platform.is_windows &&
+    UIManager.getSystemLookAndFeelClassName() == UIManager.getLookAndFeel.getClass.getName
+
 
   /* plain focus traversal, notably for text fields */
 
--- a/src/Pure/GUI/system_dialog.scala	Fri Aug 21 16:10:11 2015 +0200
+++ b/src/Pure/GUI/system_dialog.scala	Fri Aug 21 23:27:52 2015 +0200
@@ -7,7 +7,7 @@
 package isabelle
 
 
-import java.awt.{GraphicsEnvironment, Point, Font}
+import java.awt.{GraphicsEnvironment, Point}
 import javax.swing.WindowConstants
 import java.io.{File => JFile, BufferedReader, InputStreamReader}
 
@@ -82,6 +82,7 @@
       columns = 65
       rows = 24
     }
+    if (GUI.is_windows_laf) text.font = (new Label).font
 
     val scroll_text = new ScrollPane(text)
 
--- a/src/Pure/System/platform.scala	Fri Aug 21 16:10:11 2015 +0200
+++ b/src/Pure/System/platform.scala	Fri Aug 21 23:27:52 2015 +0200
@@ -53,8 +53,17 @@
   }
 
 
+  /* JVM version */
+
+  private val Version = new Regex("""1\.(\d+)\.0_(\d+)""")
+  lazy val jvm_version =
+    System.getProperty("java.version") match {
+      case Version(a, b) => a + "u" + b
+      case a => a
+    }
+
+
   /* JVM name */
 
   val jvm_name: String = System.getProperty("java.vm.name", "")
 }
-
--- a/src/Pure/Tools/main.scala	Fri Aug 21 16:10:11 2015 +0200
+++ b/src/Pure/Tools/main.scala	Fri Aug 21 23:27:52 2015 +0200
@@ -50,7 +50,10 @@
               dirs = dirs, system_mode = system_mode, sessions = List(session)) == 0)
             system_dialog.return_code(0)
           else {
-            system_dialog.title("Isabelle build (" + Isabelle_System.getenv("ML_IDENTIFIER") + ")")
+            system_dialog.title("Isabelle build (" +
+              Isabelle_System.getenv("ML_IDENTIFIER") + " / " +
+              "jdk-" + Platform.jvm_version + "_" +
+              Isabelle_System.getenv("ISABELLE_JAVA_PLATFORM") + ")")
             system_dialog.echo("Build started for Isabelle/" + session + " ...")
 
             val (out, rc) =
@@ -225,23 +228,11 @@
     {
       val isabelle_home = Isabelle_System.getenv("ISABELLE_HOME")
       val isabelle_home_user = Isabelle_System.getenv("ISABELLE_HOME_USER")
-      val upd =
-        if (Platform.is_windows)
-          List(
-            "ISABELLE_HOME" -> File.platform_path(isabelle_home),
-            "ISABELLE_HOME_USER" -> File.platform_path(isabelle_home_user),
-            "INI_DIR" -> "")
-        else
-          List(
-            "ISABELLE_HOME" -> isabelle_home,
-            "ISABELLE_HOME_USER" -> isabelle_home_user)
 
       (env0: Any) => {
         val env = env0.asInstanceOf[java.util.Map[String, String]]
-        upd.foreach {
-          case (x, "") => env.remove(x)
-          case (x, y) => env.put(x, y)
-        }
+        env.put("ISABELLE_HOME", File.platform_path(isabelle_home))
+        env.put("ISABELLE_HOME_USER", File.platform_path(isabelle_home_user))
       }
     }