src/Pure/Tools/build_job.scala
changeset 77410 cb2c19481fe7
parent 77399 375c6b9ce9ea
child 77414 0d5994eef9e6
equal deleted inserted replaced
77409:d2711c9ffa51 77410:cb2c19481fe7
    60     val session_sources: Sessions.Sources =
    60     val session_sources: Sessions.Sources =
    61       Sessions.Sources.load(session_background.base, cache = store.cache.compress)
    61       Sessions.Sources.load(session_background.base, cache = store.cache.compress)
    62 
    62 
    63     private lazy val future_result: Future[Process_Result] =
    63     private lazy val future_result: Future[Process_Result] =
    64       Future.thread("build", uninterruptible = true) {
    64       Future.thread("build", uninterruptible = true) {
    65         Exn.Interrupt.expose()
       
    66 
       
    67         val parent = info.parent.getOrElse("")
    65         val parent = info.parent.getOrElse("")
    68 
    66 
    69         val env =
    67         val env =
    70           Isabelle_System.settings(
    68           Isabelle_System.settings(
    71             List("ISABELLE_ML_DEBUGGER" -> options.bool("ML_debugger").toString))
    69             List("ISABELLE_ML_DEBUGGER" -> options.bool("ML_debugger").toString))
   269         session_setup(session_name, session)
   267         session_setup(session_name, session)
   270 
   268 
   271         val eval_main = Command_Line.ML_tool("Isabelle_Process.init_build ()" :: eval_store)
   269         val eval_main = Command_Line.ML_tool("Isabelle_Process.init_build ()" :: eval_store)
   272 
   270 
   273         val process =
   271         val process =
   274           Isabelle_Thread.uninterruptible {
   272           Isabelle_Process.start(store, options, session, session_background,
   275             Isabelle_Process.start(store, options, session, session_background,
   273             logic = parent, raw_ml_system = is_pure,
   276               logic = parent, raw_ml_system = is_pure,
   274             use_prelude = use_prelude, eval_main = eval_main,
   277               use_prelude = use_prelude, eval_main = eval_main,
   275             cwd = info.dir.file, env = env)
   278               cwd = info.dir.file, env = env)
       
   279           }
       
   280 
   276 
   281         val build_errors =
   277         val build_errors =
   282           Isabelle_Thread.interrupt_handler(_ => process.terminate()) {
   278           Isabelle_Thread.interrupt_handler(_ => process.terminate()) {
   283             Exn.capture { process.await_startup() } match {
   279             Exn.capture { process.await_startup() } match {
   284               case Exn.Res(_) =>
   280               case Exn.Res(_) =>