236 session.init_protocol_handler(handler) |
236 session.init_protocol_handler(handler) |
237 |
237 |
238 val session_result = Future.promise[Process_Result] |
238 val session_result = Future.promise[Process_Result] |
239 |
239 |
240 Isabelle_Process.start(session, options, logic = parent, cwd = info.dir.file, env = env, |
240 Isabelle_Process.start(session, options, logic = parent, cwd = info.dir.file, env = env, |
241 sessions_structure = Some(deps.sessions_structure), store = store, |
241 sessions_structure = Some(deps.sessions_structure), store = Some(store), |
242 phase_changed = |
242 phase_changed = |
243 { |
243 { |
244 case Session.Ready => session.protocol_command("build_session", args_yxml) |
244 case Session.Ready => session.protocol_command("build_session", args_yxml) |
245 case Session.Terminated(result) => session_result.fulfill(result) |
245 case Session.Terminated(result) => session_result.fulfill(result) |
246 case _ => |
246 case _ => |
269 if (Sessions.is_pure(name)) { |
269 if (Sessions.is_pure(name)) { |
270 ML_Process(options, raw_ml_system = true, cwd = info.dir.file, |
270 ML_Process(options, raw_ml_system = true, cwd = info.dir.file, |
271 args = |
271 args = |
272 (for ((root, _) <- Thy_Header.ml_roots) yield List("--use", root)).flatten ::: |
272 (for ((root, _) <- Thy_Header.ml_roots) yield List("--use", root)).flatten ::: |
273 List("--eval", eval), |
273 List("--eval", eval), |
274 env = env, sessions_structure = Some(deps.sessions_structure), store = store, |
274 env = env, sessions_structure = Some(deps.sessions_structure), store = Some(store), |
275 cleanup = () => args_file.delete) |
275 cleanup = () => args_file.delete) |
276 } |
276 } |
277 else { |
277 else { |
278 ML_Process(options, parent, List("--eval", eval), cwd = info.dir.file, |
278 ML_Process(options, parent, List("--eval", eval), cwd = info.dir.file, |
279 env = env, sessions_structure = Some(deps.sessions_structure), store = store, |
279 env = env, sessions_structure = Some(deps.sessions_structure), store = Some(store), |
280 cleanup = () => args_file.delete) |
280 cleanup = () => args_file.delete) |
281 } |
281 } |
282 |
282 |
283 process.result( |
283 process.result( |
284 progress_stdout = (line: String) => |
284 progress_stdout = (line: String) => |
391 sessions: List[String] = Nil, |
391 sessions: List[String] = Nil, |
392 selection: Sessions.Selection = Sessions.Selection.empty): Results = |
392 selection: Sessions.Selection = Sessions.Selection.empty): Results = |
393 { |
393 { |
394 val build_options = options.int.update("completion_limit", 0).bool.update("ML_statistics", true) |
394 val build_options = options.int.update("completion_limit", 0).bool.update("ML_statistics", true) |
395 |
395 |
396 val store = Sessions.store(system_mode) |
396 val store = Sessions.store(build_options, system_mode) |
397 |
397 |
398 |
398 |
399 /* session selection and dependencies */ |
399 /* session selection and dependencies */ |
400 |
400 |
401 val full_sessions = |
401 val full_sessions = |