# HG changeset patch # User traytel # Date 1440192472 -7200 # Node ID 151d923326253f73ba6a07089d38359335ae5438 # Parent 1dd6669ff612944aea1c373876cca4f05520a472# Parent 0b9d8af732700432dcf8dd955f79bfd4552f2acb merged diff -r 1dd6669ff612 -r 151d92332625 Admin/Release/build --- 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 @@

${DISTNAME}

diff -r 1dd6669ff612 -r 151d92332625 Admin/Windows/launch4j/README --- /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 diff -r 1dd6669ff612 -r 151d92332625 Admin/Windows/launch4j/isabelle.bmp Binary file Admin/Windows/launch4j/isabelle.bmp has changed diff -r 1dd6669ff612 -r 151d92332625 Admin/Windows/launch4j/isabelle.xml --- /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 @@ + + + true + gui + + {OUTFILE} + + + + normal + + + false + false + + {ICON} + + isabelle.Main +{CLASSPATH} + + + %EXEDIR%\contrib\jdk\{PLATFORM}\jre + {PLATFORM_IS_64} + false + + + jdkOnly + {PLATFORM_BITS} + -Disabelle.home="%EXEDIR%" -Dcygwin.root="%EXEDIR%\\contrib\\cygwin" + + + {SPLASH} + true + + \ No newline at end of file diff -r 1dd6669ff612 -r 151d92332625 Admin/Windows/launch4j/isabelle_transparent.ico Binary file Admin/Windows/launch4j/isabelle_transparent.ico has changed diff -r 1dd6669ff612 -r 151d92332625 Admin/Windows/launch4j/manifest.xml --- /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 @@ + + + + + true + + + + diff -r 1dd6669ff612 -r 151d92332625 Admin/components/bundled-windows --- 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 diff -r 1dd6669ff612 -r 151d92332625 Admin/components/components.sha1 --- 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 diff -r 1dd6669ff612 -r 151d92332625 Admin/components/main --- 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 diff -r 1dd6669ff612 -r 151d92332625 Admin/java/build --- 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 diff -r 1dd6669ff612 -r 151d92332625 Admin/java/settings --- /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 diff -r 1dd6669ff612 -r 151d92332625 Admin/lib/Tools/makedist_bundle --- 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 " %EXEDIR%\\\\$ENTRY" + 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" ) ;; *) diff -r 1dd6669ff612 -r 151d92332625 NEWS --- 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) diff -r 1dd6669ff612 -r 151d92332625 src/Pure/GUI/gui.scala --- 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 */ diff -r 1dd6669ff612 -r 151d92332625 src/Pure/GUI/system_dialog.scala --- 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) diff -r 1dd6669ff612 -r 151d92332625 src/Pure/System/platform.scala --- 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", "") } - diff -r 1dd6669ff612 -r 151d92332625 src/Pure/Tools/main.scala --- 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)) } }