equal
deleted
inserted
replaced
145 def cancelled(name: String): Boolean = results(name)._1.isEmpty |
145 def cancelled(name: String): Boolean = results(name)._1.isEmpty |
146 def apply(name: String): Process_Result = results(name)._1.getOrElse(Process_Result(1)) |
146 def apply(name: String): Process_Result = results(name)._1.getOrElse(Process_Result(1)) |
147 def info(name: String): Sessions.Info = results(name)._2 |
147 def info(name: String): Sessions.Info = results(name)._2 |
148 val rc: Int = |
148 val rc: Int = |
149 results.iterator.map({ case (_, (Some(r), _)) => r.rc case (_, (None, _)) => 1 }). |
149 results.iterator.map({ case (_, (Some(r), _)) => r.rc case (_, (None, _)) => 1 }). |
150 foldLeft(0)(_ max _) |
150 foldLeft(Process_Result.RC.ok)(_ max _) |
151 def ok: Boolean = rc == 0 |
151 def ok: Boolean = rc == Process_Result.RC.ok |
152 |
152 |
153 override def toString: String = rc.toString |
153 override def toString: String = rc.toString |
154 } |
154 } |
155 |
155 |
156 def session_finished(session_name: String, process_result: Process_Result): String = |
156 def session_finished(session_name: String, process_result: Process_Result): String = |
284 info: Sessions.Info) |
284 info: Sessions.Info) |
285 { |
285 { |
286 def ok: Boolean = |
286 def ok: Boolean = |
287 process match { |
287 process match { |
288 case None => false |
288 case None => false |
289 case Some(res) => res.rc == 0 |
289 case Some(res) => res.ok |
290 } |
290 } |
291 } |
291 } |
292 |
292 |
293 def sleep(): Unit = |
293 def sleep(): Unit = |
294 Isabelle_Thread.interrupt_handler(_ => progress.stop()) { Time.seconds(0.5).sleep() } |
294 Isabelle_Thread.interrupt_handler(_ => progress.stop()) { Time.seconds(0.5).sleep() } |
472 } |
472 } |
473 } |
473 } |
474 } |
474 } |
475 } |
475 } |
476 |
476 |
477 if (results.rc != 0 && (verbose || !no_build)) { |
477 if (results.rc != Process_Result.RC.ok && (verbose || !no_build)) { |
478 val unfinished = |
478 val unfinished = |
479 (for { |
479 (for { |
480 name <- results.sessions.iterator |
480 name <- results.sessions.iterator |
481 if !results(name).ok |
481 if !results(name).ok |
482 } yield name).toList.sorted |
482 } yield name).toList.sorted |
674 strict: Boolean = false): Int = |
674 strict: Boolean = false): Int = |
675 { |
675 { |
676 val selection = Sessions.Selection.session(logic) |
676 val selection = Sessions.Selection.session(logic) |
677 val rc = |
677 val rc = |
678 if (!fresh && build(options, selection = selection, |
678 if (!fresh && build(options, selection = selection, |
679 build_heap = build_heap, no_build = true, dirs = dirs).ok) 0 |
679 build_heap = build_heap, no_build = true, dirs = dirs).ok) Process_Result.RC.ok |
680 else { |
680 else { |
681 progress.echo("Build started for Isabelle/" + logic + " ...") |
681 progress.echo("Build started for Isabelle/" + logic + " ...") |
682 Build.build(options, selection = selection, progress = progress, |
682 Build.build(options, selection = selection, progress = progress, |
683 build_heap = build_heap, fresh_build = fresh, dirs = dirs).rc |
683 build_heap = build_heap, fresh_build = fresh, dirs = dirs).rc |
684 } |
684 } |
685 if (strict && rc != 0) error("Failed to build Isabelle/" + logic) else rc |
685 if (strict && rc != Process_Result.RC.ok) error("Failed to build Isabelle/" + logic) else rc |
686 } |
686 } |
687 } |
687 } |