| author | wenzelm |
| Sat, 18 Mar 2017 14:16:13 +0100 | |
| changeset 65305 | bec8674aa6ec |
| parent 65304 | fd6415b8c0a9 |
| permissions | -rw-r--r-- |
| 59720 | 1 |
/* Title: Pure/PIDE/batch_session.scala |
| 59362 | 2 |
Author: Makarius |
3 |
||
4 |
PIDE session in batch mode. |
|
5 |
*/ |
|
6 |
||
7 |
package isabelle |
|
8 |
||
9 |
||
10 |
import isabelle._ |
|
11 |
||
12 |
||
13 |
object Batch_Session |
|
14 |
{
|
|
15 |
def batch_session( |
|
16 |
options: Options, |
|
17 |
verbose: Boolean = false, |
|
18 |
dirs: List[Path] = Nil, |
|
|
59369
7090199d3f78
more informative build_theories_result: cumulative Runtime.exn_message;
wenzelm
parents:
59367
diff
changeset
|
19 |
session: String): Batch_Session = |
| 59362 | 20 |
{
|
| 62635 | 21 |
val (_, session_tree) = Sessions.load(options, dirs).selection(sessions = List(session)) |
| 59362 | 22 |
val session_info = session_tree(session) |
23 |
val parent_session = |
|
24 |
session_info.parent getOrElse error("No parent session for " + quote(session))
|
|
25 |
||
| 64115 | 26 |
if (!Build.build(options, new Console_Progress(verbose = verbose), |
| 59362 | 27 |
verbose = verbose, build_heap = true, |
| 62641 | 28 |
dirs = dirs, sessions = List(parent_session)).ok) |
| 65305 | 29 |
throw new RuntimeException |
| 59362 | 30 |
|
| 65251 | 31 |
val deps = Sessions.dependencies(verbose = verbose, tree = session_tree) |
| 64854 | 32 |
val resources = new Resources(deps(parent_session)) |
| 59362 | 33 |
|
| 64115 | 34 |
val progress = new Console_Progress(verbose = verbose) |
|
59366
e94df7f6b608
clarified build_theories: proper protocol handler;
wenzelm
parents:
59364
diff
changeset
|
35 |
|
|
65264
7e6ecd04b5fe
dynamic session_options for tuning parameters and initial prover options;
wenzelm
parents:
65251
diff
changeset
|
36 |
val prover_session = new Session(options, resources) |
|
59369
7090199d3f78
more informative build_theories_result: cumulative Runtime.exn_message;
wenzelm
parents:
59367
diff
changeset
|
37 |
val batch_session = new Batch_Session(prover_session) |
| 59362 | 38 |
|
| 59367 | 39 |
val handler = new Build.Handler(progress, session) |
40 |
||
| 65226 | 41 |
Isabelle_Process.start(prover_session, options, logic = parent_session, |
42 |
phase_changed = |
|
43 |
{
|
|
| 59362 | 44 |
case Session.Ready => |
| 59367 | 45 |
prover_session.add_protocol_handler(handler) |
| 59362 | 46 |
val master_dir = session_info.dir |
| 59364 | 47 |
val theories = session_info.theories.map({ case (_, opts, thys) => (opts, thys) })
|
|
59369
7090199d3f78
more informative build_theories_result: cumulative Runtime.exn_message;
wenzelm
parents:
59367
diff
changeset
|
48 |
batch_session.build_theories_result = |
|
59366
e94df7f6b608
clarified build_theories: proper protocol handler;
wenzelm
parents:
59364
diff
changeset
|
49 |
Some(Build.build_theories(prover_session, master_dir, theories)) |
| 65304 | 50 |
case Session.Terminated(rc) => |
51 |
batch_session.session_result.fulfill(rc) |
|
| 59362 | 52 |
case _ => |
| 65226 | 53 |
}) |
| 59362 | 54 |
|
|
59369
7090199d3f78
more informative build_theories_result: cumulative Runtime.exn_message;
wenzelm
parents:
59367
diff
changeset
|
55 |
batch_session |
| 59362 | 56 |
} |
57 |
} |
|
58 |
||
|
59369
7090199d3f78
more informative build_theories_result: cumulative Runtime.exn_message;
wenzelm
parents:
59367
diff
changeset
|
59 |
class Batch_Session private(val session: Session) |
|
7090199d3f78
more informative build_theories_result: cumulative Runtime.exn_message;
wenzelm
parents:
59367
diff
changeset
|
60 |
{
|
| 65304 | 61 |
val session_result = Future.promise[Int] |
|
59369
7090199d3f78
more informative build_theories_result: cumulative Runtime.exn_message;
wenzelm
parents:
59367
diff
changeset
|
62 |
@volatile var build_theories_result: Option[Promise[XML.Body]] = None |
|
7090199d3f78
more informative build_theories_result: cumulative Runtime.exn_message;
wenzelm
parents:
59367
diff
changeset
|
63 |
} |
|
7090199d3f78
more informative build_theories_result: cumulative Runtime.exn_message;
wenzelm
parents:
59367
diff
changeset
|
64 |