--- a/src/Pure/Tools/build.scala Tue Feb 07 14:10:15 2023 +0000
+++ b/src/Pure/Tools/build.scala Wed Feb 08 10:18:30 2023 +0100
@@ -315,7 +315,13 @@
case Some((session_name, (input_heaps, job))) =>
//{{{ finish job
- val (process_result, output_heap) = job.join
+ val process_result = job.join
+
+ val output_heap =
+ if (process_result.ok && job.do_store && store.output_heap(session_name).is_file) {
+ SHA1.shasum(ML_Heap.write_digest(store.output_heap(session_name)), session_name)
+ }
+ else SHA1.no_shasum
val log_lines = process_result.out_lines.filterNot(Protocol_Message.Marker.test)
val process_result_tail = {
--- a/src/Pure/Tools/build_job.scala Tue Feb 07 14:10:15 2023 +0000
+++ b/src/Pure/Tools/build_job.scala Wed Feb 08 10:18:30 2023 +0100
@@ -238,7 +238,7 @@
class Build_Job(progress: Progress,
session_background: Sessions.Background,
store: Sessions.Store,
- do_store: Boolean,
+ val do_store: Boolean,
log: Logger,
session_setup: (String, Session) => Unit,
val numa_node: Option[Int],
@@ -570,8 +570,8 @@
else Some(Event_Timer.request(Time.now() + info.timeout) { terminate() })
}
- def join: (Process_Result, SHA1.Shasum) = {
- val result1 = future_result.join
+ def join: Process_Result = {
+ val result = future_result.join
val was_timeout =
timeout_request match {
@@ -579,18 +579,9 @@
case Some(request) => !request.cancel()
}
- val result2 =
- if (result1.ok) result1
- else if (was_timeout) result1.error(Output.error_message_text("Timeout")).timeout_rc
- else if (result1.interrupted) result1.error(Output.error_message_text("Interrupt"))
- else result1
-
- val heap_shasum =
- if (result2.ok && do_store && store.output_heap(session_name).is_file) {
- SHA1.shasum(ML_Heap.write_digest(store.output_heap(session_name)), session_name)
- }
- else SHA1.no_shasum
-
- (result2, heap_shasum)
+ if (result.ok) result
+ else if (was_timeout) result.error(Output.error_message_text("Timeout")).timeout_rc
+ else if (result.interrupted) result.error(Output.error_message_text("Interrupt"))
+ else result
}
}