clarified error output vs. process_result stored in build_database (see also 13a0f537e232 and bff56eae3ec5);
authorwenzelm
Mon, 27 Feb 2023 11:02:07 +0100
changeset 77391 cb3f5361fbca
parent 77390 ff43a524aa5d
child 77392 467a8f987b5a
clarified error output vs. process_result stored in build_database (see also 13a0f537e232 and bff56eae3ec5);
src/Pure/Tools/build_process.scala
--- a/src/Pure/Tools/build_process.scala	Mon Feb 27 10:26:36 2023 +0100
+++ b/src/Pure/Tools/build_process.scala	Mon Feb 27 11:02:07 2023 +0100
@@ -557,13 +557,6 @@
     val output_heap = job.finish
 
     val log_lines = process_result.out_lines.filterNot(Protocol_Message.Marker.test)
-    val process_result_tail = {
-      val tail = job.info.options.int("process_output_tail")
-      process_result.copy(
-        out_lines =
-          "(more details via \"isabelle log -H Error " + session_name + "\")" ::
-          (if (tail == 0) log_lines else log_lines.drop(log_lines.length - tail max 0)))
-    }
 
     val build_log =
       Build_Log.Log_File(session_name, process_result.out_lines).
@@ -597,14 +590,19 @@
     }
     else {
       progress.echo(session_name + " FAILED")
-      if (!process_result.interrupted) progress.echo(process_result_tail.out)
+      if (!process_result.interrupted) {
+        progress.echo("(more details via \"isabelle log -H Error " + session_name + "\")")
+        val tail = job.info.options.int("process_output_tail")
+        val suffix = if (tail == 0) log_lines else log_lines.drop(log_lines.length - tail max 0)
+        progress.echo(Library.trim_line(cat_lines(suffix)))
+      }
     }
 
     synchronized {
       _state = _state.
         remove_pending(session_name).
         remove_running(session_name).
-        make_result(session_name, false, output_heap, process_result_tail, node_info = job.node_info)
+        make_result(session_name, false, output_heap, process_result, node_info = job.node_info)
     }
   }