559 /* structured tasks */ |
559 /* structured tasks */ |
560 |
560 |
561 def SEQ(tasks: List[Logger_Task]): Logger_Task = Logger_Task(body = _ => |
561 def SEQ(tasks: List[Logger_Task]): Logger_Task = Logger_Task(body = _ => |
562 for (task <- tasks.iterator if !exclude_task(task.name) || task.name == "") run_now(task)) |
562 for (task <- tasks.iterator if !exclude_task(task.name) || task.name == "") run_now(task)) |
563 |
563 |
|
564 def SEQUENTIAL(tasks: Logger_Task*): Logger_Task = |
|
565 SEQ(tasks.toList) |
|
566 |
564 def PAR(tasks: List[Logger_Task]): Logger_Task = |
567 def PAR(tasks: List[Logger_Task]): Logger_Task = |
565 Logger_Task(body = |
568 Logger_Task(body = |
566 { _ => |
569 { _ => |
567 @tailrec def join(running: List[Task]): Unit = { |
570 @tailrec def join(running: List[Task]): Unit = { |
568 running.partition(_.is_finished) match { |
571 running.partition(_.is_finished) match { |
610 Build_Log.build_log_database(logger.options, build_log_dirs, |
613 Build_Log.build_log_database(logger.options, build_log_dirs, |
611 vacuum = true, ml_statistics = true, |
614 vacuum = true, ml_statistics = true, |
612 snapshot = Some(Isabelle_Devel.build_log_snapshot))))), |
615 snapshot = Some(Isabelle_Devel.build_log_snapshot))))), |
613 PAR( |
616 PAR( |
614 List(remote_builds1, remote_builds2).map(remote_builds => |
617 List(remote_builds1, remote_builds2).map(remote_builds => |
615 SEQ(List( |
618 SEQUENTIAL( |
616 PAR(remote_builds.map(_.filter(_.active())).map(seq => |
619 PAR(remote_builds.map(_.filter(_.active())).map(seq => |
617 SEQ( |
620 SEQ( |
618 for { |
621 for { |
619 (r, i) <- (if (seq.length <= 1) seq.map((_, -1)) else seq.zipWithIndex) |
622 (r, i) <- (if (seq.length <= 1) seq.map((_, -1)) else seq.zipWithIndex) |
620 (rev, afp_rev) <- r.pick(logger.options, hg.id(), history_base_filter(r)) |
623 (rev, afp_rev) <- r.pick(logger.options, hg.id(), history_base_filter(r)) |
621 } yield remote_build_history(rev, afp_rev, i, r)))), |
624 } yield remote_build_history(rev, afp_rev, i, r)))), |
622 Logger_Task("build_status", |
625 Logger_Task("build_status", |
623 logger => Isabelle_Devel.build_status(logger.options)))))), |
626 logger => Isabelle_Devel.build_status(logger.options))))), |
624 exit))))) |
627 exit)))) |
625 |
628 |
626 log_service.shutdown() |
629 log_service.shutdown() |
627 |
630 |
628 main_state_file.file.delete |
631 main_state_file.file.delete |
629 } |
632 } |