src/Pure/ML/ml_process.scala
changeset 76656 a8f452f7c503
parent 76655 b3d458a90aeb
child 76657 a8d85b4a588c
equal deleted inserted replaced
76655:b3d458a90aeb 76656:a8f452f7c503
    11 import java.io.{File => JFile}
    11 import java.io.{File => JFile}
    12 
    12 
    13 
    13 
    14 object ML_Process {
    14 object ML_Process {
    15   def apply(options: Options,
    15   def apply(options: Options,
    16     base_info: Sessions.Base_Info,
    16     background: Sessions.Background,
    17     store: Sessions.Store,
    17     store: Sessions.Store,
    18     logic: String = "",
    18     logic: String = "",
    19     raw_ml_system: Boolean = false,
    19     raw_ml_system: Boolean = false,
    20     use_prelude: List[String] = Nil,
    20     use_prelude: List[String] = Nil,
    21     eval_main: String = "",
    21     eval_main: String = "",
    29     val logic_name = Isabelle_System.default_logic(logic)
    29     val logic_name = Isabelle_System.default_logic(logic)
    30 
    30 
    31     val heaps: List[String] =
    31     val heaps: List[String] =
    32       if (raw_ml_system) Nil
    32       if (raw_ml_system) Nil
    33       else {
    33       else {
    34         base_info.sessions_structure.selection(logic_name).
    34         background.sessions_structure.selection(logic_name).
    35           build_requirements(List(logic_name)).
    35           build_requirements(List(logic_name)).
    36           map(a => File.platform_path(store.the_heap(a)))
    36           map(a => File.platform_path(store.the_heap(a)))
    37       }
    37       }
    38 
    38 
    39     val eval_init =
    39     val eval_init =
    78 
    78 
    79     // session resources
    79     // session resources
    80     val eval_init_session = if (raw_ml_system) Nil else List("Resources.init_session_env ()")
    80     val eval_init_session = if (raw_ml_system) Nil else List("Resources.init_session_env ()")
    81     val init_session = Isabelle_System.tmp_file("init_session")
    81     val init_session = Isabelle_System.tmp_file("init_session")
    82     Isabelle_System.chmod("600", File.path(init_session))
    82     Isabelle_System.chmod("600", File.path(init_session))
    83     val resources = new Resources(base_info.sessions_structure, base_info.base)
    83     val resources = new Resources(background.sessions_structure, background.base)
    84     File.write(init_session, resources.init_session_yxml)
    84     File.write(init_session, resources.init_session_yxml)
    85 
    85 
    86     // process
    86     // process
    87     val eval_process =
    87     val eval_process =
    88       proper_string(eval_main).getOrElse(
    88       proper_string(eval_main).getOrElse(
   167         "o:" -> (arg => options = options + arg))
   167         "o:" -> (arg => options = options + arg))
   168 
   168 
   169       val more_args = getopts(args)
   169       val more_args = getopts(args)
   170       if (args.isEmpty || more_args.nonEmpty) getopts.usage()
   170       if (args.isEmpty || more_args.nonEmpty) getopts.usage()
   171 
   171 
   172       val base_info = Sessions.base_info(options, logic, dirs = dirs).check_errors
   172       val background = Sessions.background(options, logic, dirs = dirs).check_errors
   173       val store = Sessions.store(options)
   173       val store = Sessions.store(options)
   174       val result =
   174       val result =
   175         ML_Process(options, base_info, store, logic = logic, args = eval_args, modes = modes)
   175         ML_Process(options, background, store, logic = logic, args = eval_args, modes = modes)
   176           .result(
   176           .result(
   177             progress_stdout = Output.writeln(_, stdout = true),
   177             progress_stdout = Output.writeln(_, stdout = true),
   178             progress_stderr = Output.writeln(_))
   178             progress_stderr = Output.writeln(_))
   179 
   179 
   180       sys.exit(result.rc)
   180       sys.exit(result.rc)