diff --git a/Admin/build b/Admin/build deleted file mode 100755 --- a/Admin/build +++ /dev/null @@ -1,69 +0,0 @@ -#!/usr/bin/env bash -# -# Administrative build for Isabelle source distribution. - -## directory layout - -if [ -z "$ISABELLE_HOME" ]; then - unset CDPATH - ISABELLE_HOME="$(cd "$(dirname "$0")"; cd "$(pwd -P)"; cd ..; pwd)" - ISABELLE_TOOL="$ISABELLE_HOME/bin/isabelle" -fi - - -## diagnostics - -PRG="$(basename "$0")" - -function usage() -{ - cat <&2 - exit 2 -} - - -## process command line - -[ "$#" -eq 0 ] && usage - -MODULES="$@"; shift "$#" - - -## modules - -function build_setup () -{ - rm -rf \ - "$ISABELLE_HOME/lib/classes/Pure.jar" \ - "$ISABELLE_HOME/lib/classes/Pure.shasum" \ - "$ISABELLE_HOME/src/Tools/jEdit/dist" - env ISABELLE_SETUP_CLASSPATH_SKIP=true "$ISABELLE_TOOL" java isabelle.setup.Setup "$@" -} - - -## main - -for MODULE in $MODULES -do - case $MODULE in - jars) build_setup build;; - jars_fresh) build_setup build_fresh;; - *) fail "Bad module $MODULE" - esac -done diff --git a/Admin/build_history b/Admin/build_history --- a/Admin/build_history +++ b/Admin/build_history @@ -1,9 +1,9 @@ #!/usr/bin/env bash # # DESCRIPTION: build history versions from another repository clone unset CDPATH THIS="$(cd "$(dirname "$0")"; pwd)" -"$THIS/build" jars > /dev/null || exit $? +env ISABELLE_SETUP_CLASSPATH_SKIP=true "$THIS/../bin/isabelle" java isabelle.setup.Setup build > /dev/null || exit $? exec "$THIS/../bin/isabelle_java" isabelle.Build_History "$@" diff --git a/Admin/build_release b/Admin/build_release --- a/Admin/build_release +++ b/Admin/build_release @@ -1,9 +1,9 @@ #!/usr/bin/env bash # # DESCRIPTION: build full Isabelle distribution from repository unset CDPATH THIS="$(cd "$(dirname "$0")"; pwd)" -"$THIS/build" jars || exit $? +env ISABELLE_SETUP_CLASSPATH_SKIP=true "$THIS/../bin/isabelle" java isabelle.setup.Setup build > /dev/null || exit $? exec "$THIS/../bin/isabelle_java" isabelle.Build_Release "$@" diff --git a/bin/isabelle b/bin/isabelle --- a/bin/isabelle +++ b/bin/isabelle @@ -1,51 +1,51 @@ #!/usr/bin/env bash # # Author: Markus Wenzel, TU Muenchen # # Isabelle tool wrapper. unset CDPATH if [ -L "$0" ]; then TARGET="$(LC_ALL=C ls -l "$0" | sed 's/.* -> //')" exec "$(cd "$(dirname "$0")"; cd "$(pwd -P)"; cd "$(dirname "$TARGET")"; pwd)/$(basename "$TARGET")" "$@" fi ## settings PRG="$(basename "$0")" ISABELLE_HOME="$(cd "$(dirname "$0")"; cd "$(pwd -P)"; cd ..; pwd)" source "$ISABELLE_HOME/lib/scripts/getsettings" || exit 2 ## external tool (shell script) if [ "$#" -ge 1 -a "$1" != "-?" ] then TOOL_NAME="$1" splitarray ":" "$ISABELLE_TOOLS"; TOOLS=("${SPLITARRAY[@]}") for DIR in "${TOOLS[@]}" do TOOL="$DIR/$TOOL_NAME" case "$TOOL" in *~ | *.orig) ;; *) if [ -f "$TOOL" -a -x "$TOOL" ]; then shift exec "$TOOL" "$@" fi ;; esac done fi ## internal tool or usage (Scala) -isabelle_admin_build jars || exit $? +isabelle_scala_build || exit $? eval "declare -a JAVA_ARGS=($ISABELLE_TOOL_JAVA_OPTIONS)" exec isabelle java "${JAVA_ARGS[@]}" isabelle.Isabelle_Tool "$@" diff --git a/lib/Tools/components b/lib/Tools/components --- a/lib/Tools/components +++ b/lib/Tools/components @@ -1,166 +1,166 @@ #!/usr/bin/env bash # # Author: Makarius # # DESCRIPTION: resolve Isabelle components ## diagnostics PRG="$(basename "$0")" function usage() { echo echo "Usage: isabelle $PRG [OPTIONS] [COMPONENTS ...]" echo echo " Options are:" echo " -I init user settings" echo " -R URL component repository (default \$ISABELLE_COMPONENT_REPOSITORY)" echo " -a resolve all missing components" echo " -l list status" echo " -u DIR update \$ISABELLE_HOME_USER/etc/components: add directory" echo " -x DIR update \$ISABELLE_HOME_USER/etc/components: remove directory" echo echo " Resolve Isabelle components via download and installation: given COMPONENTS" echo " are identified via base name. Further operations manage etc/settings and" echo " etc/components in \$ISABELLE_HOME_USER." echo echo " ISABELLE_COMPONENT_REPOSITORY=\"$ISABELLE_COMPONENT_REPOSITORY\"" echo " ISABELLE_HOME_USER=\"$ISABELLE_HOME_USER\"" echo exit 1 } function fail() { echo "$1" >&2 exit 2 } ## process command line #options INIT_SETTINGS="" COMPONENT_REPOSITORY="$ISABELLE_COMPONENT_REPOSITORY" ALL_MISSING="" LIST_ONLY="" declare -a UPDATE_COMPONENTS=() while getopts "IR:alu:x:" OPT do case "$OPT" in I) INIT_SETTINGS="true" ;; R) COMPONENT_REPOSITORY="$OPTARG" ;; a) ALL_MISSING="true" ;; l) LIST_ONLY="true" ;; u) UPDATE_COMPONENTS["${#UPDATE_COMPONENTS[@]}"]="+$OPTARG" ;; x) UPDATE_COMPONENTS["${#UPDATE_COMPONENTS[@]}"]="-$OPTARG" ;; \?) usage ;; esac done shift $(($OPTIND - 1)) # args [ "$#" -eq 0 -a -z "$INIT_SETTINGS" -a -z "$ALL_MISSING" -a -z "$LIST_ONLY" -a "${#UPDATE_COMPONENTS[@]}" -eq 0 ] && usage if [ -z "$ALL_MISSING" ]; then splitarray ":" "$@" else splitarray ":" "$ISABELLE_COMPONENTS_MISSING" "$@" fi declare -a SELECTED_COMPONENTS=("${SPLITARRAY[@]}") ## main splitarray ":" "$ISABELLE_COMPONENTS"; declare -a AVAILABLE_COMPONENTS=("${SPLITARRAY[@]}") splitarray ":" "$ISABELLE_COMPONENTS_MISSING"; declare -a MISSING_COMPONENTS=("${SPLITARRAY[@]}") if [ -n "$INIT_SETTINGS" ]; then SETTINGS="$ISABELLE_HOME_USER/etc/settings" SETTINGS_CONTENT='init_components "${ISABELLE_COMPONENTS_BASE:-$USER_HOME/.isabelle/contrib}" "$ISABELLE_HOME/Admin/components/main"' if [ ! -e "$SETTINGS" ]; then echo "Initializing \"$SETTINGS\"" mkdir -p "$(dirname "$SETTINGS")" { echo "#-*- shell-script -*- :mode=shellscript:" echo echo "$SETTINGS_CONTENT" } > "$SETTINGS" elif grep "init_components.*components/main" "$SETTINGS" >/dev/null 2>/dev/null then : else echo "User settings file already exists!" echo echo "Edit \"$SETTINGS\" manually" echo "and add the following line near its start:" echo echo " $SETTINGS_CONTENT" echo fi elif [ -n "$LIST_ONLY" ]; then echo echo "Available components:" for NAME in "${AVAILABLE_COMPONENTS[@]}"; do echo " $NAME"; done echo echo "Missing components:" for NAME in "${MISSING_COMPONENTS[@]}"; do echo " $NAME"; done elif [ "${#UPDATE_COMPONENTS[@]}" -ne 0 ]; then - isabelle_admin_build jars || exit $? + isabelle_scala_build || exit $? exec isabelle java isabelle.Components "${UPDATE_COMPONENTS[@]}" else for NAME in "${SELECTED_COMPONENTS[@]}" do BASE_NAME="$(basename "$NAME")" FULL_NAME="" for X in "${AVAILABLE_COMPONENTS[@]}" "${MISSING_COMPONENTS[@]}" do [ -z "$FULL_NAME" -a "$BASE_NAME" = "$(basename "$X")" ] && FULL_NAME="$X" done if [ -z "$FULL_NAME" ]; then echo "Ignoring irrelevant component \"$NAME\"" elif [ -d "$FULL_NAME" ]; then echo "Skipping existing component \"$FULL_NAME\"" else if [ ! -e "${FULL_NAME}.tar.gz" ]; then REMOTE="$COMPONENT_REPOSITORY/${BASE_NAME}.tar.gz" type -p curl > /dev/null || fail "Cannot download files: missing curl" echo "Getting \"$REMOTE\"" mkdir -p "$(dirname "$FULL_NAME")" if curl --fail --silent --location "$REMOTE" > "${FULL_NAME}.tar.gz.part" then mv -f "${FULL_NAME}.tar.gz.part" "${FULL_NAME}.tar.gz" else rm -f "${FULL_NAME}.tar.gz.part" fail "Failed to download \"$REMOTE\"" fi fi if [ -e "${FULL_NAME}.tar.gz" ]; then echo "Unpacking \"${FULL_NAME}.tar.gz\"" tar -C "$(dirname "$FULL_NAME")" -x -f "${FULL_NAME}.tar.gz" || exit 2 fi fi done fi diff --git a/lib/Tools/console b/lib/Tools/console --- a/lib/Tools/console +++ b/lib/Tools/console @@ -1,19 +1,19 @@ #!/usr/bin/env bash # # Author: Makarius # # DESCRIPTION: raw ML process (interactive mode) -isabelle_admin_build jars || exit $? +isabelle_scala_build || exit $? eval "declare -a JAVA_ARGS=($ISABELLE_TOOL_JAVA_OPTIONS)" mkdir -p "$ISABELLE_TMP_PREFIX" || exit $? if type -p "$ISABELLE_LINE_EDITOR" > /dev/null then exec "$ISABELLE_LINE_EDITOR" isabelle java "${JAVA_ARGS[@]}" isabelle.ML_Console "$@" else echo >&2 "### No line editor: \"$ISABELLE_LINE_EDITOR\"" exec isabelle java "${JAVA_ARGS[@]}" isabelle.ML_Console "$@" fi diff --git a/lib/Tools/scala b/lib/Tools/scala --- a/lib/Tools/scala +++ b/lib/Tools/scala @@ -1,21 +1,21 @@ #!/usr/bin/env bash # # Author: Makarius # # DESCRIPTION: invoke Scala within the Isabelle environment -isabelle_admin_build jars || exit $? +isabelle_scala_build || exit $? eval "declare -a JAVA_ARGS=($ISABELLE_JAVA_SYSTEM_OPTIONS)" declare -a SCALA_ARGS=() for ARG in "${JAVA_ARGS[@]}" do SCALA_ARGS["${#SCALA_ARGS[@]}"]="-J$ARG" done classpath "$ISABELLE_SETUP_CLASSPATH"; unset ISABELLE_SETUP_CLASSPATH classpath "$CLASSPATH"; unset CLASSPATH isabelle_scala scala "${SCALA_ARGS[@]}" \ -classpath "$(platform_path "$ISABELLE_CLASSPATH")" \ -Disabelle.scala.classpath="$(platform_path "$ISABELLE_CLASSPATH")" "$@" diff --git a/lib/Tools/scalac b/lib/Tools/scalac --- a/lib/Tools/scalac +++ b/lib/Tools/scalac @@ -1,13 +1,13 @@ #!/usr/bin/env bash # # Author: Makarius # # DESCRIPTION: invoke Scala compiler within the Isabelle environment -isabelle_admin_build jars || exit $? +isabelle_scala_build || exit $? classpath "$ISABELLE_SETUP_CLASSPATH"; unset ISABELLE_SETUP_CLASSPATH classpath "$CLASSPATH"; unset CLASSPATH isabelle_scala scalac -Dfile.encoding=UTF-8 \ -classpath "$(platform_path "$ISABELLE_CLASSPATH")" "$@" diff --git a/lib/scripts/getfunctions b/lib/scripts/getfunctions --- a/lib/scripts/getfunctions +++ b/lib/scripts/getfunctions @@ -1,309 +1,316 @@ # -*- shell-script -*- :mode=shellscript: # # Author: Makarius # # Isabelle shell functions, with on-demand re-initialization for # non-interactive bash processess. NB: bash shell functions are not portable # and may be dropped by aggressively POSIX-conformant versions of /bin/sh. unset CDPATH if type splitarray >/dev/null 2>/dev/null then : else if [ "$OSTYPE" = cygwin ]; then function platform_path() { cygpath -i -C UTF8 -w -p "$@"; } function standard_path() { cygpath -i -u -p "$@" | tr -d '\r'; } else function platform_path() { echo "$@"; } function standard_path() { echo "$@"; } fi export -f platform_path standard_path #GNU tar (notably on macOS) function tar() { if [ -f "$ISABELLE_TAR" ]; then "$ISABELLE_TAR" "$@" else "$(type -P tar)" "$@" fi } export -f tar #OCaml management via OPAM function isabelle_opam () { if [ -z "$ISABELLE_OPAM" ]; then echo "Unknown ISABELLE_OPAM -- OCaml management tools unavailable" >&2 return 127 else env OPAMROOT="$ISABELLE_OPAM_ROOT" OPAMCOLOR="never" "$ISABELLE_OPAM" "$@" fi } export -f isabelle_opam #GHC management via Stack function isabelle_stack () { if [ -z "$ISABELLE_STACK" ]; then echo "Unknown ISABELLE_STACK -- GHC management tools unavailable" >&2 return 127 else env STACK_ROOT="$(platform_path "$ISABELLE_STACK_ROOT")" "$ISABELLE_STACK" --resolver "$ISABELLE_STACK_RESOLVER" --compiler "$ISABELLE_GHC_VERSION" "$@" fi } export -f isabelle_stack #robust invocation via ISABELLE_JDK_HOME function isabelle_jdk () { if [ -z "$ISABELLE_JDK_HOME" ]; then echo "Unknown ISABELLE_JDK_HOME -- Java development tools unavailable" >&2 return 127 else local PRG="$1"; shift "$ISABELLE_JDK_HOME/bin/$PRG" "$@" fi } export -f isabelle_jdk #robust invocation via JAVA_HOME function isabelle_java () { if [ -z "$JAVA_HOME" ]; then echo "Unknown JAVA_HOME -- Java unavailable" >&2 return 127 else local PRG="$1"; shift "$JAVA_HOME/bin/$PRG" "$@" fi } export -f isabelle_java #robust invocation via SCALA_HOME function isabelle_scala () { if [ -z "$JAVA_HOME" ]; then echo "Unknown JAVA_HOME -- Java unavailable" >&2 return 127 elif [ -z "$SCALA_HOME" ]; then echo "Unknown SCALA_HOME -- Scala unavailable" >&2 return 127 else local PRG="$1"; shift "$SCALA_HOME/bin/$PRG" "$@" fi } export -f isabelle_scala #classpath function classpath () { local X="" for X in "$@" do if [ -z "$ISABELLE_CLASSPATH" ]; then ISABELLE_CLASSPATH="$X" elif [ -n "$X" ]; then ISABELLE_CLASSPATH="$ISABELLE_CLASSPATH:$X" fi done export ISABELLE_CLASSPATH } export -f classpath #java_library function java_library () { local X="" for X in "$@" do case "$ISABELLE_PLATFORM_FAMILY" in linux) if [ -z "$LD_LIBRARY_PATH" ]; then export LD_LIBRARY_PATH="$X" else export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$X" fi ;; macos) if [ -z "$JAVA_LIBRARY_PATH" ]; then export JAVA_LIBRARY_PATH="$X" else export JAVA_LIBRARY_PATH="$JAVA_LIBRARY_PATH:$X" fi ;; windows) if [ -z "$PATH" ]; then export PATH="$X" else export PATH="$PATH:$X" fi ;; esac done export ISABELLE_CLASSPATH } export -f java_library #Isabelle fonts function isabelle_fonts () { local X="" for X in "$@" do if [ -z "$ISABELLE_FONTS" ]; then ISABELLE_FONTS="$X" else ISABELLE_FONTS="$ISABELLE_FONTS:$X" fi done export ISABELLE_FONTS } export -f isabelle_fonts function isabelle_fonts_hidden () { local X="" for X in "$@" do if [ -z "$ISABELLE_FONTS_HIDDEN" ]; then ISABELLE_FONTS_HIDDEN="$X" else ISABELLE_FONTS_HIDDEN="$ISABELLE_FONTS_HIDDEN:$X" fi done export ISABELLE_FONTS_HIDDEN } export -f isabelle_fonts_hidden #Isabelle/Scala services function isabelle_scala_service () { local X="" for X in "$@" do if [ -z "$ISABELLE_SCALA_SERVICES" ]; then ISABELLE_SCALA_SERVICES="$X" else ISABELLE_SCALA_SERVICES="$ISABELLE_SCALA_SERVICES:$X" fi done export ISABELLE_SCALA_SERVICES } export -f isabelle_scala_service #Special directories function isabelle_directory () { local X="" for X in "$@" do if [ -z "$ISABELLE_DIRECTORIES" ]; then ISABELLE_DIRECTORIES="$X" else ISABELLE_DIRECTORIES="$ISABELLE_DIRECTORIES:$X" fi done export ISABELLE_DIRECTORIES } export -f isabelle_directory -#administrative build -function isabelle_admin_build () +#Isabelle/Scala/Java build +function isabelle_scala_build () { - if [ -e "$ISABELLE_HOME/Admin/build" ]; then - "$ISABELLE_HOME/Admin/build" "$@" + rm -rf \ + "$ISABELLE_HOME/lib/classes/Pure.jar" \ + "$ISABELLE_HOME/lib/classes/Pure.shasum" \ + "$ISABELLE_HOME/src/Tools/jEdit/dist" + if [ "$1" = "fresh" ]; then + CMD="build_fresh" + else + CMD="build" fi + env ISABELLE_SETUP_CLASSPATH_SKIP=true isabelle java isabelle.setup.Setup "$CMD" } -export -f isabelle_admin_build +export -f isabelle_scala_build #arrays function splitarray () { SPLITARRAY=() local IFS="$1"; shift local X="" for X in $* do SPLITARRAY["${#SPLITARRAY[@]}"]="$X" done } export -f splitarray #init component tree function init_component () { local COMPONENT="$1" case "$COMPONENT" in /*) ;; *) echo >&2 "Absolute component path required: \"$COMPONENT\"" exit 2 ;; esac if [ -d "$COMPONENT" ]; then if [ -z "$ISABELLE_COMPONENTS" ]; then ISABELLE_COMPONENTS="$COMPONENT" else ISABELLE_COMPONENTS="$ISABELLE_COMPONENTS:$COMPONENT" fi else echo >&2 "### Missing Isabelle component: \"$COMPONENT\"" if [ -z "$ISABELLE_COMPONENTS_MISSING" ]; then ISABELLE_COMPONENTS_MISSING="$COMPONENT" else ISABELLE_COMPONENTS_MISSING="$ISABELLE_COMPONENTS_MISSING:$COMPONENT" fi fi if [ -f "$COMPONENT/etc/settings" ]; then source "$COMPONENT/etc/settings" local RC="$?" if [ "$RC" -ne 0 ]; then echo >&2 "Return code $RC from bash script: \"$COMPONENT/etc/settings\"" exit 2 fi fi if [ -f "$COMPONENT/etc/components" ]; then init_components "$COMPONENT" "$COMPONENT/etc/components" fi } export -f init_component #init component forest function init_components () { local REPLY="" local BASE="$1" local CATALOG="$2" local COMPONENT="" local -a COMPONENTS=() if [ ! -f "$CATALOG" ]; then echo >&2 "Bad component catalog file: \"$CATALOG\"" exit 2 fi { while { unset REPLY; read -r; test "$?" = 0 -o -n "$REPLY"; } do case "$REPLY" in \#* | "") ;; /*) COMPONENTS["${#COMPONENTS[@]}"]="$REPLY" ;; *) COMPONENTS["${#COMPONENTS[@]}"]="$BASE/$REPLY" ;; esac done } < "$CATALOG" for COMPONENT in "${COMPONENTS[@]}" do init_component "$COMPONENT" done } export -f init_components fi diff --git a/src/Tools/GraphBrowser/lib/Tools/browser b/src/Tools/GraphBrowser/lib/Tools/browser --- a/src/Tools/GraphBrowser/lib/Tools/browser +++ b/src/Tools/GraphBrowser/lib/Tools/browser @@ -1,108 +1,108 @@ #!/usr/bin/env bash # # Author: Markus Wenzel, TU Muenchen # # DESCRIPTION: Isabelle graph browser PRG="$(basename "$0")" function usage() { echo echo "Usage: isabelle $PRG [OPTIONS] [GRAPHFILE]" echo echo " Options are:" echo " -b Admin/build only" echo " -c cleanup -- remove GRAPHFILE after use" echo " -o FILE output to FILE (ps, eps, pdf)" echo exit 1 } function fail() { echo "$1" >&2 exit 2 } ## process command line # options ADMIN_BUILD="" CLEAN="" OUTFILE="" while getopts "bco:" OPT do case "$OPT" in b) ADMIN_BUILD=true ;; c) CLEAN=true ;; o) OUTFILE="$OPTARG" ;; \?) usage ;; esac done shift $(($OPTIND - 1)) # args GRAPHFILE="" [ "$#" -gt 0 ] && { GRAPHFILE="$1"; shift; } [ "$#" -ne 0 ] && usage ## main -isabelle_admin_build jars || exit $? +isabelle_scala_build || exit $? if [ -n "$GRAPHFILE" ]; then PRIVATE_FILE="${ISABELLE_TMP:-${TMPDIR:-/tmp}}/$$"$(basename "$GRAPHFILE") if [ -n "$CLEAN" ]; then mv -f "$GRAPHFILE" "$PRIVATE_FILE" || fail "Cannot move file: $GRAPHFILE" else cp -f "$GRAPHFILE" "$PRIVATE_FILE" || fail "Cannot copy file: $GRAPHFILE" fi PDF="" case "$OUTFILE" in *.pdf) OUTFILE="${OUTFILE%%.pdf}.eps" PDF=true ;; esac if [ -z "$OUTFILE" ]; then isabelle java isabelle.graphbrowser.GraphBrowser "$(platform_path "$PRIVATE_FILE")" else isabelle java isabelle.graphbrowser.Console "$(platform_path "$PRIVATE_FILE")" "$(platform_path "$OUTFILE")" fi RC="$?" if [ -n "$PDF" ]; then ( cd "$(dirname "$OUTFILE")" "$ISABELLE_EPSTOPDF" "$(basename "$OUTFILE")" || fail "Failed to produce pdf output" ) fi rm -f "$PRIVATE_FILE" elif [ -z "$ADMIN_BUILD" ]; then [ -d "$ISABELLE_BROWSER_INFO" ] && cd "$ISABELLE_BROWSER_INFO" exec isabelle java isabelle.graphbrowser.GraphBrowser else RC=0 fi exit "$RC" diff --git a/src/Tools/jEdit/lib/Tools/jedit b/src/Tools/jEdit/lib/Tools/jedit --- a/src/Tools/jEdit/lib/Tools/jedit +++ b/src/Tools/jEdit/lib/Tools/jedit @@ -1,172 +1,172 @@ #!/usr/bin/env bash # # Author: Makarius # # DESCRIPTION: Isabelle/jEdit interface wrapper ## diagnostics PRG="$(basename "$0")" function usage() { echo echo "Usage: isabelle $PRG [OPTIONS] [FILES ...]" echo echo " Options are:" echo " -A NAME ancestor session for option -R (default: parent)" echo " -D NAME=X set JVM system property" echo " -J OPTION add JVM runtime option" echo " (default $JEDIT_JAVA_SYSTEM_OPTIONS $JEDIT_JAVA_OPTIONS)" echo " -R NAME build image with requirements from other sessions" echo " -b build only" echo " -d DIR include session directory" echo " -f fresh build" echo " -i NAME include session in name-space of theories" echo " -j OPTION add jEdit runtime option" echo " (default $JEDIT_OPTIONS)" echo " -l NAME logic session name" echo " -m MODE add print mode for output" echo " -n no build of session image on startup" echo " -p CMD ML process command prefix (process policy)" echo " -s system build mode for session image (system_heaps=true)" echo " -u user build mode for session image (system_heaps=false)" echo echo " Start jEdit with Isabelle plugin setup and open FILES" echo " (default \"$USER_HOME/Scratch.thy\" or \":\" for empty buffer)." echo exit 1 } function fail() { echo "$1" >&2 exit 2 } function failed() { fail "Failed!" } ## process command line # options BUILD_ONLY=false FRESH_BUILD="" ML_PROCESS_POLICY="" JEDIT_LOGIC_ANCESTOR="" JEDIT_LOGIC_REQUIREMENTS="" JEDIT_INCLUDE_SESSIONS="" JEDIT_SESSION_DIRS="-" JEDIT_LOGIC="" JEDIT_PRINT_MODE="" JEDIT_NO_BUILD="" JEDIT_BUILD_MODE="default" function getoptions() { OPTIND=1 while getopts "A:BFD:J:R:bd:fi:j:l:m:np:su" OPT do case "$OPT" in A) JEDIT_LOGIC_ANCESTOR="$OPTARG" ;; D) JAVA_ARGS["${#JAVA_ARGS[@]}"]="-D$OPTARG" ;; J) JAVA_ARGS["${#JAVA_ARGS[@]}"]="$OPTARG" ;; R) JEDIT_LOGIC="$OPTARG" JEDIT_LOGIC_REQUIREMENTS="true" ;; b) BUILD_ONLY=true ;; d) JEDIT_SESSION_DIRS="$JEDIT_SESSION_DIRS:$OPTARG" ;; i) if [ -z "$JEDIT_INCLUDE_SESSIONS" ]; then JEDIT_INCLUDE_SESSIONS="$OPTARG" else JEDIT_INCLUDE_SESSIONS="$JEDIT_INCLUDE_SESSIONS:$OPTARG" fi ;; f) FRESH_BUILD="true" ;; j) ARGS["${#ARGS[@]}"]="$OPTARG" ;; l) JEDIT_LOGIC="$OPTARG" ;; m) if [ -z "$JEDIT_PRINT_MODE" ]; then JEDIT_PRINT_MODE="$OPTARG" else JEDIT_PRINT_MODE="$JEDIT_PRINT_MODE,$OPTARG" fi ;; n) JEDIT_NO_BUILD="true" ;; p) ML_PROCESS_POLICY="$OPTARG" ;; s) JEDIT_BUILD_MODE="system" ;; u) JEDIT_BUILD_MODE="user" ;; \?) usage ;; esac done } eval "declare -a JAVA_ARGS=($JEDIT_JAVA_SYSTEM_OPTIONS $JEDIT_JAVA_OPTIONS)" declare -a ARGS=() declare -a OPTIONS; eval "OPTIONS=($ISABELLE_JEDIT_OPTIONS)" getoptions "${OPTIONS[@]}" getoptions "$@" shift $(($OPTIND - 1)) # args while [ "$#" -gt 0 ]; do ARGS["${#ARGS[@]}"]="$(platform_path "$1")" shift done ## main if [ -n "$FRESH_BUILD" ]; then - isabelle_admin_build jars_fresh || exit "$?" + isabelle_scala_build fresh || exit "$?" else - isabelle_admin_build jars || exit "$?" + isabelle_scala_build || exit "$?" fi if [ "$BUILD_ONLY" = false ] then "$ISABELLE_HOME/lib/scripts/java-gui-setup" export JEDIT_SESSION_DIRS JEDIT_LOGIC JEDIT_LOGIC_ANCESTOR JEDIT_LOGIC_REQUIREMENTS \ JEDIT_INCLUDE_SESSIONS JEDIT_PRINT_MODE JEDIT_NO_BUILD JEDIT_BUILD_MODE export JEDIT_ML_PROCESS_POLICY="$ML_PROCESS_POLICY" exec isabelle java -splash:"$(platform_path "$ISABELLE_HOME/lib/logo/isabelle.gif")" \ "${JAVA_ARGS[@]}" isabelle.jedit.Main "${ARGS[@]}" fi