246 val resources = new Resources(sessions_structure, deps(parent)) |
246 val resources = new Resources(sessions_structure, deps(parent)) |
247 val session = new Session(options, resources) |
247 val session = new Session(options, resources) |
248 val handler = new Handler(progress, session, name) |
248 val handler = new Handler(progress, session, name) |
249 session.init_protocol_handler(handler) |
249 session.init_protocol_handler(handler) |
250 |
250 |
251 val session_result = Future.promise[Process_Result] |
251 val process = |
252 session.phase_changed += Session.Consumer("build_session") |
252 Isabelle_Process(session, options, sessions_structure, store, |
253 { |
253 logic = parent, cwd = info.dir.file, env = env).await_startup |
254 case Session.Ready => session.protocol_command("build_session", args_yxml) |
254 |
255 case Session.Terminated(result) => session_result.fulfill(result) |
255 session.protocol_command("build_session", args_yxml) |
256 case _ => |
256 |
257 } |
257 val result = process.join |
258 Isabelle_Process(session, options, sessions_structure, store, |
|
259 logic = parent, cwd = info.dir.file, env = env) |
|
260 |
|
261 val result = session_result.join |
|
262 handler.result_error.join match { |
258 handler.result_error.join match { |
263 case "" => result |
259 case "" => result |
264 case msg => |
260 case msg => |
265 result.copy( |
261 result.copy( |
266 rc = result.rc max 1, |
262 rc = result.rc max 1, |