# HG changeset patch # User wenzelm # Date 1378993029 -7200 # Node ID c0ad478abf50fa3878bcbe81a3a3fe6b319c6d71 # Parent ffc926553ec5580455ee6bb5f6e16f381d81f2ed generate distribution classpath for cold-start application wrappers; diff -r ffc926553ec5 -r c0ad478abf50 Admin/Linux/Isabelle --- a/Admin/Linux/Isabelle Thu Sep 12 14:32:02 2013 +0200 +++ b/Admin/Linux/Isabelle Thu Sep 12 15:37:09 2013 +0200 @@ -19,11 +19,9 @@ # main -declare -a JAVA_ARGS -JAVA_ARGS=({JAVA_ARGS}) - exec "$ISABELLE_HOME/contrib/jdk/${ISABELLE_PLATFORM64:-$ISABELLE_PLATFORM32}/bin/java" \ - -classpath "$ISABELLE_HOME/lib/classes/ext/Pure.jar:$ISABELLE_HOME/lib/classes/ext/scala-compiler.jar:$ISABELLE_HOME/lib/classes/ext/scala-library.jar:$ISABELLE_HOME/lib/classes/ext/scala-swing.jar:$ISABELLE_HOME/lib/classes/ext/scala-actors.jar:$ISABELLE_HOME/lib/classes/ext/scala-reflect.jar:$ISABELLE_HOME/src/Tools/jEdit/dist/jedit.jar" \ - "${JAVA_ARGS[@]}" "-Disabelle.home=$ISABELLE_HOME" \ + "-Disabelle.home=$ISABELLE_HOME" \ + {JAVA_ARGS} \ + -classpath "{CLASSPATH}" \ isabelle.Main "$@" diff -r ffc926553ec5 -r c0ad478abf50 Admin/Windows/WinRun4J/Isabelle.ini --- a/Admin/Windows/WinRun4J/Isabelle.ini Thu Sep 12 14:32:02 2013 +0200 +++ b/Admin/Windows/WinRun4J/Isabelle.ini Thu Sep 12 15:37:09 2013 +0200 @@ -1,11 +1,4 @@ main.class=isabelle.Main -classpath.1=lib\classes\ext\Pure.jar -classpath.2=lib\classes\ext\scala-compiler.jar -classpath.3=lib\classes\ext\scala-library.jar -classpath.4=lib\classes\ext\scala-swing.jar -classpath.5=lib\classes\ext\scala-actors.jar -classpath.6=lib\classes\ext\scala-reflect.jar -classpath.7=src\Tools\jEdit\dist\jedit.jar vm.location=contrib\jdk\x86-cygwin\jre\bin\server\jvm.dll splash.image=lib\logo\isabelle.bmp vmarg.1=-Disabelle.home=%INI_DIR% diff -r ffc926553ec5 -r c0ad478abf50 Admin/lib/Tools/makedist_bundle --- a/Admin/lib/Tools/makedist_bundle Thu Sep 12 14:32:02 2013 +0200 +++ b/Admin/lib/Tools/makedist_bundle Thu Sep 12 15:37:09 2013 +0200 @@ -51,6 +51,30 @@ tar -C "$TMP" -x -z -f "$ARCHIVE" || exit 2 +# distribution classpath (based on educated guesses) + +splitarray ":" "$ISABELLE_CLASSPATH"; CLASSPATH_ENTRIES=("${SPLITARRAY[@]}") +declare -a DISTRIBITION_CLASSPATH=() + +for ENTRY in "${CLASSPATH_ENTRIES[@]}" +do + ENTRY=$(echo "$ENTRY" | perl -n -e " + if (m,$ISABELLE_HOME/(.*)\$,) { print qq{\$1}; } + elsif (m,$USER_HOME/.isabelle/contrib/(.*)\$,) { print qq{contrib/\$1}; } + else { print; }; + print qq{\n};") + DISTRIBITION_CLASSPATH["${#DISTRIBITION_CLASSPATH[@]}"]="$ENTRY" +done + +DISTRIBITION_CLASSPATH["${#DISTRIBITION_CLASSPATH[@]}"]="src/Tools/jEdit/dist/jedit.jar" + +echo "classpath" +for ENTRY in "${DISTRIBITION_CLASSPATH[@]}" +do + echo " $ENTRY" +done + + # bundled components init_component "$JEDIT_HOME" @@ -128,9 +152,19 @@ case "$PLATFORM_FAMILY" in linux) purge_contrib '-name "x86*-darwin" -o -name "x86*-cygwin" -o -name "x86*-windows"' + + LINUX_CLASSPATH="" + for ENTRY in "${DISTRIBITION_CLASSPATH[@]}" + do + if [ -z "$LINUX_CLASSPATH" ]; then + LINUX_CLASSPATH="\\\$ISABELLE_HOME/$ENTRY" + else + LINUX_CLASSPATH="$LINUX_CLASSPATH:\\\$ISABELLE_HOME/$ENTRY" + fi + done cat "$ISABELLE_HOME/Admin/Linux/Isabelle" | \ - perl -p -e "s,{JAVA_ARGS},$JEDIT_JAVA_OPTIONS $JEDIT_SYSTEM_OPTIONS,g;" \ - > "$ISABELLE_TARGET/$ISABELLE_NAME" + perl -p > "$ISABELLE_TARGET/$ISABELLE_NAME" \ + -e "s,{JAVA_ARGS},$JEDIT_JAVA_OPTIONS $JEDIT_SYSTEM_OPTIONS,g; s,{CLASSPATH},$LINUX_CLASSPATH,;" chmod +x "$ISABELLE_TARGET/$ISABELLE_NAME" ;; macos) @@ -151,6 +185,7 @@ ( cat "$ISABELLE_HOME/Admin/Windows/WinRun4J/Isabelle.ini" + declare -a JAVA_ARGS=() eval "JAVA_ARGS=($ISABELLE_JAVA_SYSTEM_OPTIONS $JEDIT_JAVA_OPTIONS $JEDIT_SYSTEM_OPTIONS)" A=2 @@ -159,6 +194,14 @@ echo -e "vmarg.$A=$ARG\r" A=$[ $A + 1 ] done + + 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" cp "$TMP/windows_app/Isabelle.exe" "$ISABELLE_TARGET/${ISABELLE_NAME}.exe" @@ -233,11 +276,10 @@ cat "$APP_TEMPLATE/Info.plist-part2" ) | perl -p -e "s,{ISABELLE_NAME},${ISABELLE_NAME},g;" > "$APP/Contents/Info.plist" - for NAME in Pure.jar scala-compiler.jar scala-library.jar scala-swing.jar scala-actors.jar scala-reflect.jar + for ENTRY in "${DISTRIBITION_CLASSPATH[@]}" do - ln -sf "../Resources/${ISABELLE_NAME}/lib/classes/ext/$NAME" "$APP/Contents/Java" + ln -sf "../Resources/${ISABELLE_NAME}/$ENTRY" "$APP/Contents/Java" done - ln -sf "../Resources/${ISABELLE_NAME}/src/Tools/jEdit/dist/jedit.jar" "$APP/Contents/Java" cp -R "$APP_TEMPLATE/Resources/." "$APP/Contents/Resources/." cp "$APP_TEMPLATE/../isabelle.icns" "$APP/Contents/Resources/."