src/Pure/Tools/build.scala
changeset 74306 a117c076aa22
parent 73826 72900f34dbb3
child 74677 0d30ea76756c
equal deleted inserted replaced
74305:28a582aa25dd 74306:a117c076aa22
   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 }