equal
deleted
inserted
replaced
24 { |
24 { |
25 echo |
25 echo |
26 echo "Usage: $PRG [OPTIONS] [INPUT] [OUTPUT]" |
26 echo "Usage: $PRG [OPTIONS] [INPUT] [OUTPUT]" |
27 echo |
27 echo |
28 echo " Options are:" |
28 echo " Options are:" |
29 echo " -I startup Isar interaction mode" |
|
30 echo " -O system options from given YXML file" |
29 echo " -O system options from given YXML file" |
31 echo " -S secure mode -- disallow critical operations" |
30 echo " -S secure mode -- disallow critical operations" |
32 echo " -T ADDR startup process wrapper, with socket address" |
31 echo " -T ADDR startup process wrapper, with socket address" |
33 echo " -W IN:OUT startup process wrapper, with input/output fifos" |
32 echo " -W IN:OUT startup process wrapper, with input/output fifos" |
34 echo " -e MLTEXT pass MLTEXT to the ML session" |
33 echo " -e MLTEXT pass MLTEXT to the ML session" |
55 |
54 |
56 ## process command line |
55 ## process command line |
57 |
56 |
58 # options |
57 # options |
59 |
58 |
60 ISAR="" |
|
61 OPTIONS_FILE="" |
59 OPTIONS_FILE="" |
62 SECURE="" |
60 SECURE="" |
63 WRAPPER_SOCKET="" |
61 WRAPPER_SOCKET="" |
64 WRAPPER_FIFOS="" |
62 WRAPPER_FIFOS="" |
65 MLTEXT="" |
63 MLTEXT="" |
67 declare -a SYSTEM_OPTIONS=() |
65 declare -a SYSTEM_OPTIONS=() |
68 TERMINATE="" |
66 TERMINATE="" |
69 READONLY="" |
67 READONLY="" |
70 NOWRITE="" |
68 NOWRITE="" |
71 |
69 |
72 while getopts "IO:ST:W:e:m:o:qrw" OPT |
70 while getopts "O:ST:W:e:m:o:qrw" OPT |
73 do |
71 do |
74 case "$OPT" in |
72 case "$OPT" in |
75 I) |
|
76 ISAR=true |
|
77 ;; |
|
78 O) |
73 O) |
79 OPTIONS_FILE="$OPTARG" |
74 OPTIONS_FILE="$OPTARG" |
80 ;; |
75 ;; |
81 S) |
76 S) |
82 SECURE=true |
77 SECURE=true |
205 ML_SYSTEM_BASE=$(echo "$ML_SYSTEM" | cut -f1 -d-) |
200 ML_SYSTEM_BASE=$(echo "$ML_SYSTEM" | cut -f1 -d-) |
206 |
201 |
207 [ -n "$MODES" ] && MLTEXT="Unsynchronized.change print_mode (append [$MODES]); $MLTEXT" |
202 [ -n "$MODES" ] && MLTEXT="Unsynchronized.change print_mode (append [$MODES]); $MLTEXT" |
208 |
203 |
209 [ -n "$SECURE" ] && MLTEXT="$MLTEXT; Secure.set_secure ();" |
204 [ -n "$SECURE" ] && MLTEXT="$MLTEXT; Secure.set_secure ();" |
210 |
|
211 NICE="nice" |
|
212 |
205 |
213 if [ -n "$WRAPPER_SOCKET" ]; then |
206 if [ -n "$WRAPPER_SOCKET" ]; then |
214 MLTEXT="$MLTEXT; Isabelle_Process.init_socket \"$WRAPPER_SOCKET\";" |
207 MLTEXT="$MLTEXT; Isabelle_Process.init_socket \"$WRAPPER_SOCKET\";" |
215 elif [ -n "$WRAPPER_FIFOS" ]; then |
208 elif [ -n "$WRAPPER_FIFOS" ]; then |
216 splitarray ":" "$WRAPPER_FIFOS"; FIFOS=("${SPLITARRAY[@]}") |
209 splitarray ":" "$WRAPPER_FIFOS"; FIFOS=("${SPLITARRAY[@]}") |
230 fail "Failed to retrieve Isabelle system options" |
223 fail "Failed to retrieve Isabelle system options" |
231 fi |
224 fi |
232 if [ "$INPUT" != RAW_ML_SYSTEM -a "$INPUT" != RAW ]; then |
225 if [ "$INPUT" != RAW_ML_SYSTEM -a "$INPUT" != RAW ]; then |
233 MLTEXT="Exn.capture_exit 2 Options.load_default (); $MLTEXT" |
226 MLTEXT="Exn.capture_exit 2 Options.load_default (); $MLTEXT" |
234 fi |
227 fi |
235 if [ -n "$ISAR" ]; then |
|
236 MLTEXT="$MLTEXT; Isar.main ();" |
|
237 else |
|
238 NICE="" |
|
239 fi |
|
240 fi |
228 fi |
241 |
229 |
242 export INFILE OUTFILE MLTEXT TERMINATE NOWRITE ISABELLE_PID ISABELLE_TMP ISABELLE_PROCESS_OPTIONS |
230 export INFILE OUTFILE MLTEXT TERMINATE NOWRITE ISABELLE_PID ISABELLE_TMP ISABELLE_PROCESS_OPTIONS |
243 |
231 |
244 if [ -f "$ISABELLE_HOME/lib/scripts/run-$ML_SYSTEM" ]; then |
232 if [ -f "$ISABELLE_HOME/lib/scripts/run-$ML_SYSTEM" ]; then |
245 $NICE "$ISABELLE_HOME/lib/scripts/run-$ML_SYSTEM" |
233 "$ISABELLE_HOME/lib/scripts/run-$ML_SYSTEM" |
246 else |
234 else |
247 $NICE "$ISABELLE_HOME/lib/scripts/run-$ML_SYSTEM_BASE" |
235 "$ISABELLE_HOME/lib/scripts/run-$ML_SYSTEM_BASE" |
248 fi |
236 fi |
249 RC="$?" |
237 RC="$?" |
250 |
238 |
251 [ -n "$ISABELLE_PROCESS_OPTIONS" ] && rm -f "$ISABELLE_PROCESS_OPTIONS" |
239 [ -n "$ISABELLE_PROCESS_OPTIONS" ] && rm -f "$ISABELLE_PROCESS_OPTIONS" |
252 rmdir "$ISABELLE_TMP" |
240 rmdir "$ISABELLE_TMP" |