| author | haftmann | 
| Sat, 10 Feb 2007 09:26:24 +0100 | |
| changeset 22304 | ba3d6b76a627 | 
| parent 21639 | 8ab7c4dbb524 | 
| child 25504 | dc960d760052 | 
| permissions | -rwxr-xr-x | 
| 11550 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 1 | #!/usr/bin/env bash | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 2 | # | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 3 | # $Id$ | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 4 | # Author: Markus Wenzel, TU Muenchen | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 5 | # | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 6 | # Isabelle process startup script. | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 7 | |
| 15843 | 8 | if [ -L "$0" ]; then | 
| 9 | TARGET="$(LC_ALL=C ls -l "$0" | sed 's/.* -> //')" | |
| 15967 | 10 | exec "$(cd "$(dirname "$0")"; cd "$(pwd -P)"; cd "$(dirname "$TARGET")"; pwd)/$(basename "$TARGET")" "$@" | 
| 15843 | 11 | fi | 
| 12 | ||
| 11550 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 13 | |
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 14 | ## settings | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 15 | |
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 16 | PRG="$(basename "$0")" | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 17 | |
| 15967 | 18 | ISABELLE_HOME="$(cd "$(dirname "$0")"; cd "$(pwd -P)"; cd ..; pwd)" | 
| 19 | source "$ISABELLE_HOME/lib/scripts/getsettings" || exit 2 | |
| 11550 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 20 | |
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 21 | |
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 22 | ## diagnostics | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 23 | |
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 24 | function usage() | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 25 | {
 | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 26 | echo | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 27 | echo "Usage: $PRG [OPTIONS] [INPUT] [OUTPUT]" | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 28 | echo | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 29 | echo " Options are:" | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 30 | echo " -C tell ML system to copy output image" | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 31 | echo " -I startup Isar interaction mode" | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 32 | echo " -P startup Proof General interaction mode" | 
| 20929 | 33 | echo " -S secure mode -- disallow critical operations" | 
| 16101 | 34 | echo " -X startup PGIP interaction mode" | 
| 11550 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 35 | echo " -c tell ML system to compress output image" | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 36 | echo " -e MLTEXT pass MLTEXT to the ML session" | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 37 | echo " -f pass 'Session.finish();' to the ML session" | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 38 | echo " -m MODE add print mode for output" | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 39 | echo " -q non-interactive session" | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 40 | echo " -r open heap file read-only" | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 41 | echo " -u pass 'use\"ROOT.ML\";' to the ML session" | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 42 | echo " -w reset write permissions on OUTPUT" | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 43 | echo | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 44 | echo " INPUT (default \"$ISABELLE_LOGIC\") and OUTPUT specify in/out heaps." | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 45 | echo " These are either names to be searched in the Isabelle path, or" | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 46 | echo " actual file names (containing at least one /)." | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 47 | echo " If INPUT is \"RAW_ML_SYSTEM\", just start the bare bones ML system." | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 48 | echo | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 49 | exit 1 | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 50 | } | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 51 | |
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 52 | function fail() | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 53 | {
 | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 54 | echo "$1" >&2 | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 55 | exit 2 | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 56 | } | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 57 | |
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 58 | |
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 59 | ## process command line | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 60 | |
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 61 | # options | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 62 | |
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 63 | COPYDB="" | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 64 | ISAR=false | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 65 | PROOFGENERAL="" | 
| 20923 | 66 | SECURE="" | 
| 11550 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 67 | COMPRESS="" | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 68 | MLTEXT="" | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 69 | MODES="" | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 70 | TERMINATE="" | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 71 | READONLY="" | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 72 | NOWRITE="" | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 73 | |
| 20923 | 74 | while getopts "XCIPSce:fm:qruw" OPT | 
| 11550 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 75 | do | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 76 | case "$OPT" in | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 77 | C) | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 78 | COPYDB=true | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 79 | ;; | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 80 | I) | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 81 | ISAR=true | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 82 | ;; | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 83 | P) | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 84 | PROOFGENERAL=true | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 85 | ;; | 
| 20923 | 86 | S) | 
| 87 | SECURE=true | |
| 88 | ;; | |
| 16101 | 89 | X) | 
| 90 | PGIP=true | |
| 91 | ;; | |
| 11550 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 92 | c) | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 93 | COMPRESS=true | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 94 | ;; | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 95 | e) | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 96 | MLTEXT="$MLTEXT $OPTARG" | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 97 | ;; | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 98 | f) | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 99 | MLTEXT="$MLTEXT Session.finish();" | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 100 | ;; | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 101 | m) | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 102 | if [ -z "$MODES" ]; then | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 103 | MODES="\"$OPTARG\"" | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 104 | else | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 105 | MODES="\"$OPTARG\", $MODES" | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 106 | fi | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 107 | ;; | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 108 | q) | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 109 | TERMINATE=true | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 110 | ;; | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 111 | r) | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 112 | READONLY=true | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 113 | ;; | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 114 | u) | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 115 | MLTEXT="$MLTEXT use\"ROOT.ML\";" | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 116 | ;; | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 117 | w) | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 118 | NOWRITE=true | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 119 | ;; | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 120 | \?) | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 121 | usage | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 122 | ;; | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 123 | esac | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 124 | done | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 125 | |
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 126 | shift $(($OPTIND - 1)) | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 127 | |
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 128 | |
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 129 | # args | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 130 | |
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 131 | INPUT="" | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 132 | OUTPUT="" | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 133 | |
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 134 | if [ "$#" -ge 1 ]; then | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 135 | INPUT="$1" | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 136 | shift | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 137 | fi | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 138 | |
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 139 | if [ "$#" -ge 1 ]; then | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 140 | OUTPUT="$1" | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 141 | shift | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 142 | fi | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 143 | |
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 144 | [ "$#" -ne 0 ] && { echo "Bad args: $*"; usage; }
 | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 145 | |
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 146 | |
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 147 | ## check ML system | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 148 | |
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 149 | [ -z "$ML_SYSTEM" ] && fail "Missing ML system settings! Unable to run Isabelle." | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 150 | |
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 151 | |
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 152 | ## input heap file | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 153 | |
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 154 | [ -z "$INPUT" ] && INPUT="$ISABELLE_LOGIC" | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 155 | |
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 156 | case "$INPUT" in | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 157 | RAW_ML_SYSTEM) | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 158 | INFILE="" | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 159 | ;; | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 160 | */*) | 
| 17792 | 161 | INFILE="$INPUT$ML_SUFFIX" | 
| 11550 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 162 | [ ! -f "$INFILE" ] && fail "Bad heap file: \"$INFILE\"" | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 163 | ;; | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 164 | *) | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 165 | INFILE="" | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 166 | ISA_PATH="" | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 167 | |
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 168 | ORIG_IFS="$IFS" | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 169 | IFS=":" | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 170 | for DIR in $ISABELLE_PATH | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 171 | do | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 172 | DIR="$DIR/$ML_IDENTIFIER" | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 173 | ISA_PATH="$ISA_PATH $DIR\n" | 
| 17792 | 174 | [ -z "$INFILE" -a -f "$DIR/$INPUT$ML_SUFFIX" ] && INFILE="$DIR/$INPUT$ML_SUFFIX" | 
| 11550 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 175 | done | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 176 | IFS="$ORIG_IFS" | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 177 | |
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 178 | if [ -z "$INFILE" ]; then | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 179 | echo "Unknown logic \"$INPUT\" -- no heap file found in:" >&2 | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 180 | echo -ne "$ISA_PATH" >&2 | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 181 | exit 2 | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 182 | fi | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 183 | ;; | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 184 | esac | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 185 | |
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 186 | |
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 187 | ## output heap file | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 188 | |
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 189 | case "$OUTPUT" in | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 190 | "") | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 191 | [ -z "$READONLY" -a -w "$INFILE" ] && OUTFILE="$INFILE" | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 192 | ;; | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 193 | */*) | 
| 17792 | 194 | OUTFILE="$OUTPUT$ML_SUFFIX" | 
| 11550 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 195 | ;; | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 196 | *) | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 197 | mkdir -p "$ISABELLE_OUTPUT" | 
| 17792 | 198 | OUTFILE="$ISABELLE_OUTPUT/$OUTPUT$ML_SUFFIX" | 
| 11550 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 199 | ;; | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 200 | esac | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 201 | |
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 202 | |
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 203 | ## prepare tmp directory | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 204 | |
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 205 | [ -z "$ISABELLE_TMP_PREFIX" ] && ISABELLE_TMP_PREFIX=/tmp/isabelle | 
| 16874 | 206 | ISABELLE_PID="$$" | 
| 17792 | 207 | ISABELLE_TMP="$ISABELLE_TMP_PREFIX$ISABELLE_PID" | 
| 16874 | 208 | mkdir -p "$ISABELLE_TMP" | 
| 11550 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 209 | |
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 210 | |
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 211 | ## run it! | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 212 | |
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 213 | ML_SYSTEM_BASE=$(echo "$ML_SYSTEM" | cut -f1 -d-) | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 214 | |
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 215 | [ -n "$MODES" ] && MLTEXT="print_mode := [$MODES]; $MLTEXT" | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 216 | |
| 20923 | 217 | [ -n "$SECURE" ] && MLTEXT="$MLTEXT Secure.set_secure ();" | 
| 218 | ||
| 16101 | 219 | if [ -n "$PGIP" ]; then | 
| 21639 
8ab7c4dbb524
Forward compatibility with new Proof General module.
 aspinall parents: 
20929diff
changeset | 220 | MLTEXT="$MLTEXT; ProofGeneralPgip.init_pgip $ISAR;" | 
| 16101 | 221 | elif [ -n "$PROOFGENERAL" ]; then | 
| 11550 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 222 | MLTEXT="$MLTEXT; ProofGeneral.init $ISAR;" | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 223 | elif [ "$ISAR" = true ]; then | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 224 | MLTEXT="$MLTEXT; Isar.main();" | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 225 | fi | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 226 | |
| 16874 | 227 | export INFILE OUTFILE COPYDB COMPRESS MLTEXT TERMINATE NOWRITE \ | 
| 228 | ISABELLE_PID ISABELLE_TMP | |
| 11550 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 229 | |
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 230 | if [ -f "$ISABELLE_HOME/lib/scripts/run-$ML_SYSTEM" ]; then | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 231 | "$ISABELLE_HOME/lib/scripts/run-$ML_SYSTEM" | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 232 | else | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 233 | "$ISABELLE_HOME/lib/scripts/run-$ML_SYSTEM_BASE" | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 234 | fi | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 235 | RC="$?" | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 236 | |
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 237 | rmdir "$ISABELLE_TMP" | 
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 238 | |
| 
915c5de6480f
smart selection of isabelle-process versus isabelle-interface;
 wenzelm parents: diff
changeset | 239 | exit "$RC" |