clarified signature: re-use store/cache from build results;
authorwenzelm
Thu, 22 Sep 2022 20:20:37 +0200
changeset 76206 769a7cd5a16a
parent 76205 005abcb34849
child 76207 8fcbce9f317c
clarified signature: re-use store/cache from build results;
src/HOL/Tools/Mirabelle/mirabelle.scala
src/Pure/Admin/build_doc.scala
src/Pure/Thy/document_build.scala
src/Pure/Tools/build.scala
--- a/src/HOL/Tools/Mirabelle/mirabelle.scala	Thu Sep 22 20:04:57 2022 +0200
+++ b/src/HOL/Tools/Mirabelle/mirabelle.scala	Thu Sep 22 20:20:37 2022 +0200
@@ -65,8 +65,6 @@
 
       progress.echo("Running Mirabelle on " + Isabelle_System.identification() + "...")
 
-      val store = Sessions.store(build_options)
-
       def session_setup(session_name: String, session: Session): Unit = {
         session.all_messages +=
           Session.Consumer[Prover.Message]("mirabelle_export") {
@@ -77,7 +75,7 @@
                     progress.echo(
                       "Mirabelle export " + quote(args.compound_name) + " (in " + session_name + ")")
                   }
-                  val yxml = YXML.parse_body(UTF8.decode_permissive(msg.chunk), cache = store.cache)
+                  val yxml = YXML.parse_body(UTF8.decode_permissive(msg.chunk), cache = build_results0.cache)
                   val lines = Pretty.string_of(yxml).trim()
                   val prefix =
                     Export.explode_name(args.name) match {
--- a/src/Pure/Admin/build_doc.scala	Thu Sep 22 20:04:57 2022 +0200
+++ b/src/Pure/Admin/build_doc.scala	Thu Sep 22 20:20:37 2022 +0200
@@ -18,8 +18,6 @@
     sequential: Boolean = false,
     docs: List[String] = Nil
   ): Unit = {
-    val store = Sessions.store(options)
-
     val sessions_structure = Sessions.load_structure(options)
     val selected =
       for {
@@ -39,8 +37,9 @@
     }
 
     progress.echo("Build started for sessions " + commas_quote(selection.sessions))
-    Build.build(options, selection = selection, progress = progress, max_jobs = max_jobs).ok ||
-      error("Build failed")
+    val build_results =
+      Build.build(options, selection = selection, progress = progress, max_jobs = max_jobs)
+    if (!build_results.ok) error("Build failed")
 
     progress.echo("Build started for documentation " + commas_quote(documents))
     val doc_options = options + "document=pdf"
@@ -54,7 +53,7 @@
             progress.expose_interrupt()
             progress.echo("Documentation " + quote(doc) + " ...")
 
-            using(Export.open_session_context(store, deps.base_info(session))) {
+            using(Export.open_session_context(build_results.store, deps.base_info(session))) {
               session_context =>
                 Document_Build.build_documents(
                   Document_Build.context(session_context),
--- a/src/Pure/Thy/document_build.scala	Thu Sep 22 20:04:57 2022 +0200
+++ b/src/Pure/Thy/document_build.scala	Thu Sep 22 20:20:37 2022 +0200
@@ -480,13 +480,12 @@
           }
 
         val progress = new Console_Progress(verbose = verbose_build)
-        val store = Sessions.store(options)
 
         progress.interrupt_handler {
-          val res =
+          val build_results =
             Build.build(options, selection = Sessions.Selection.session(session),
               dirs = dirs, progress = progress, verbose = verbose_build)
-          if (!res.ok) error("Failed to build session " + quote(session))
+          if (!build_results.ok) error("Failed to build session " + quote(session))
 
           val deps =
             Sessions.load_structure(options + "document=pdf", dirs = dirs).
@@ -498,11 +497,12 @@
             progress.echo_warning("No output directory")
           }
 
-          using(Export.open_session_context(store, session_base_info)) { session_context =>
-            build_documents(
-              context(session_context, progress = progress),
-              output_sources = output_sources, output_pdf = output_pdf,
-              verbose = verbose_latex)
+          using(Export.open_session_context(build_results.store, session_base_info)) {
+            session_context =>
+              build_documents(
+                context(session_context, progress = progress),
+                output_sources = output_sources, output_pdf = output_pdf,
+                verbose = verbose_latex)
           }
         }
       })
--- a/src/Pure/Tools/build.scala	Thu Sep 22 20:04:57 2022 +0200
+++ b/src/Pure/Tools/build.scala	Thu Sep 22 20:20:37 2022 +0200
@@ -137,9 +137,12 @@
   /** build with results **/
 
   class Results private[Build](
+    val store: Sessions.Store,
     results: Map[String, (Option[Process_Result], Sessions.Info)],
     val presentation_sessions: List[String]
   ) {
+    def cache: Term.Cache = store.cache
+
     def sessions: Set[String] = results.keySet
     def cancelled(name: String): Boolean = results(name)._1.isEmpty
     def info(name: String): Sessions.Info = results(name)._2
@@ -461,7 +464,7 @@
           if result.ok && browser_info.enabled(result.info)
         } yield name).toList
 
-      new Results(results, presentation_sessions)
+      new Results(store, results, presentation_sessions)
     }
 
     if (export_files) {