# HG changeset patch # User wenzelm # Date 1707993216 -3600 # Node ID 12bb31d015108c3f46ec39f07fe9ccb33c0c17fd # Parent a01f4cf202fd5cada14b9e39994fea65e526b7bc more robust type, with explicit default; diff -r a01f4cf202fd -r 12bb31d01510 src/HOL/Tools/Mirabelle/mirabelle.scala --- a/src/HOL/Tools/Mirabelle/mirabelle.scala Thu Feb 15 10:32:36 2024 +0100 +++ b/src/HOL/Tools/Mirabelle/mirabelle.scala Thu Feb 15 11:33:36 2024 +0100 @@ -42,7 +42,7 @@ dirs: List[Path] = Nil, select_dirs: List[Path] = Nil, numa_shuffling: Boolean = false, - max_jobs: Int = 1, + max_jobs: Option[Int] = None, ): Build.Results = { require(!selection.requirements) Isabelle_System.make_directory(output_dir) @@ -123,7 +123,7 @@ var all_sessions = false var dirs: List[Path] = Nil var session_groups: List[String] = Nil - var max_jobs = 1 + var max_jobs: Option[Int] = None var verbose = false var exclude_sessions: List[String] = Nil @@ -174,7 +174,7 @@ "a" -> (_ => all_sessions = true), "d:" -> (arg => dirs = dirs ::: List(Path.explode(arg))), "g:" -> (arg => session_groups = session_groups ::: List(arg)), - "j:" -> (arg => max_jobs = Value.Int.parse(arg)), + "j:" -> (arg => max_jobs = Some(Value.Nat.parse(arg))), "m:" -> (arg => options = options + ("mirabelle_max_calls=" + arg)), "o:" -> (arg => options = options + arg), "r:" -> (arg => options = options + ("mirabelle_randomize=" + arg)), diff -r a01f4cf202fd -r 12bb31d01510 src/Pure/Admin/build_doc.scala --- a/src/Pure/Admin/build_doc.scala Thu Feb 15 10:32:36 2024 +0100 +++ b/src/Pure/Admin/build_doc.scala Thu Feb 15 11:33:36 2024 +0100 @@ -14,7 +14,7 @@ options: Options, progress: Progress = new Progress, all_docs: Boolean = false, - max_jobs: Int = 1, + max_jobs: Option[Int] = None, sequential: Boolean = false, docs: List[String] = Nil, view: Boolean = false @@ -85,7 +85,7 @@ { args => var view = false var all_docs = false - var max_jobs = 1 + var max_jobs: Option[Int] = None var sequential = false var options = Options.init() @@ -105,7 +105,7 @@ """, "V" -> (_ => view = true), "a" -> (_ => all_docs = true), - "j:" -> (arg => max_jobs = Value.Int.parse(arg)), + "j:" -> (arg => max_jobs = Some(Value.Nat.parse(arg))), "o:" -> (arg => options = options + arg), "s" -> (_ => sequential = true)) diff -r a01f4cf202fd -r 12bb31d01510 src/Pure/Admin/ci_build.scala --- a/src/Pure/Admin/ci_build.scala Thu Feb 15 10:32:36 2024 +0100 +++ b/src/Pure/Admin/ci_build.scala Thu Feb 15 11:33:36 2024 +0100 @@ -179,7 +179,7 @@ progress = progress, clean_build = config.clean, numa_shuffling = profile.numa, - max_jobs = profile.jobs, + max_jobs = Some(profile.jobs), dirs = config.include, select_dirs = config.select) } diff -r a01f4cf202fd -r 12bb31d01510 src/Pure/Build/build.scala --- a/src/Pure/Build/build.scala Thu Feb 15 10:32:36 2024 +0100 +++ b/src/Pure/Build/build.scala Thu Feb 15 11:33:36 2024 +0100 @@ -35,7 +35,7 @@ hostname: String = Isabelle_System.hostname(), numa_shuffling: Boolean = false, build_heap: Boolean = false, - max_jobs: Int = 1, + max_jobs: Option[Int] = None, fresh_build: Boolean = false, no_build: Boolean = false, session_setup: (String, Session) => Unit = (_, _) => (), @@ -49,7 +49,8 @@ def sessions_structure: isabelle.Sessions.Structure = build_deps.sessions_structure - def worker_active: Boolean = max_jobs > 0 + def jobs: Int = max_jobs.getOrElse(1) + def worker_active: Boolean = jobs > 0 } @@ -160,7 +161,7 @@ select_dirs: List[Path] = Nil, infos: List[Sessions.Info] = Nil, numa_shuffling: Boolean = false, - max_jobs: Int = 1, + max_jobs: Option[Int] = None, list_files: Boolean = false, check_keywords: Set[String] = Set.empty, fresh_build: Boolean = false, @@ -328,7 +329,7 @@ var export_files = false var fresh_build = false val session_groups = new mutable.ListBuffer[String] - var max_jobs = 1 + var max_jobs: Option[Int] = None var check_keywords: Set[String] = Set.empty var list_files = false var no_build = false @@ -391,7 +392,7 @@ "e" -> (_ => export_files = true), "f" -> (_ => fresh_build = true), "g:" -> (arg => session_groups += arg), - "j:" -> (arg => max_jobs = Value.Int.parse(arg)), + "j:" -> (arg => max_jobs = Some(Value.Nat.parse(arg))), "k:" -> (arg => check_keywords = check_keywords + arg), "l" -> (_ => list_files = true), "n" -> (_ => no_build = true), @@ -601,7 +602,7 @@ afp_root: Option[Path] = None, dirs: List[Path] = Nil, numa_shuffling: Boolean = false, - max_jobs: Int = 1 + max_jobs: Option[Int] = None ): Results = { val build_engine = Engine(engine_name(options)) val store = build_engine.build_store(options) @@ -637,7 +638,7 @@ var build_id = "" var numa_shuffling = false val dirs = new mutable.ListBuffer[Path] - var max_jobs = 1 + var max_jobs: Option[Int] = None var options = Options.init(specs = Options.Spec.ISABELLE_BUILD_OPTIONS ::: List( @@ -663,7 +664,7 @@ "B:" -> (arg => build_id = arg), "N" -> (_ => numa_shuffling = true), "d:" -> (arg => dirs += Path.explode(arg)), - "j:" -> (arg => max_jobs = Value.Int.parse(arg)), + "j:" -> (arg => max_jobs = Some(Value.Nat.parse(arg))), "o:" -> (arg => options = options + arg), "q" -> (_ => quiet = true), "v" -> (_ => verbose = true)) diff -r a01f4cf202fd -r 12bb31d01510 src/Pure/Build/build_process.scala --- a/src/Pure/Build/build_process.scala Thu Feb 15 10:32:36 2024 +0100 +++ b/src/Pure/Build/build_process.scala Thu Feb 15 11:33:36 2024 +0100 @@ -977,7 +977,7 @@ protected def next_jobs(state: Build_Process.State): List[String] = { val limit = { if (progress.stopped) { if (build_context.master) Int.MaxValue else 0 } - else build_context.max_jobs - state.build_running.length + else build_context.jobs - state.build_running.length } if (limit > 0) state.next_ready.sortBy(_.name)(state.sessions.ordering).take(limit).map(_.name) else Nil diff -r a01f4cf202fd -r 12bb31d01510 src/Pure/Build/build_schedule.scala --- a/src/Pure/Build/build_schedule.scala Thu Feb 15 10:32:36 2024 +0100 +++ b/src/Pure/Build/build_schedule.scala Thu Feb 15 11:33:36 2024 +0100 @@ -922,11 +922,11 @@ private val timing_data: Timing_Data = { val cluster_hosts: List[Build_Cluster.Host] = - if (build_context.max_jobs == 0) build_context.build_hosts + if (build_context.jobs == 0) build_context.build_hosts else { val local_build_host = Build_Cluster.Host( - hostname, jobs = build_context.max_jobs, numa = build_context.numa_shuffling) + hostname, jobs = build_context.jobs, numa = build_context.numa_shuffling) local_build_host :: build_context.build_hosts } @@ -1037,7 +1037,7 @@ override def run(): Build.Results = { Benchmark.benchmark_requirements(build_options) - if (build_context.max_jobs > 0) { + if (build_context.jobs > 0) { val benchmark_options = build_options.string("build_hostname") = hostname Benchmark.benchmark(benchmark_options, progress) } @@ -1306,7 +1306,7 @@ val build_context = Build.Context(store, build_engine, build_deps, afp_root = afp_root, build_hosts = build_hosts, hostname = Build.hostname(build_options), - numa_shuffling = numa_shuffling, max_jobs = 0, session_setup = session_setup, + numa_shuffling = numa_shuffling, max_jobs = Some(0), session_setup = session_setup, master = true) val cluster_hosts = build_context.build_hosts diff -r a01f4cf202fd -r 12bb31d01510 src/Pure/Tools/profiling.scala --- a/src/Pure/Tools/profiling.scala Thu Feb 15 10:32:36 2024 +0100 +++ b/src/Pure/Tools/profiling.scala Thu Feb 15 11:33:36 2024 +0100 @@ -225,7 +225,7 @@ dirs: List[Path] = Nil, select_dirs: List[Path] = Nil, numa_shuffling: Boolean = false, - max_jobs: Int = 1 + max_jobs: Option[Int] = None ): Results = { /* sessions structure */ @@ -313,7 +313,7 @@ var all_sessions = false var dirs: List[Path] = Nil var session_groups: List[String] = Nil - var max_jobs = 1 + var max_jobs: Option[Int] = None var options = Options.init(specs = Options.Spec.ISABELLE_BUILD_OPTIONS) var verbose = false var exclude_sessions: List[String] = Nil @@ -345,7 +345,7 @@ "a" -> (_ => all_sessions = true), "d:" -> (arg => dirs = dirs ::: List(Path.explode(arg))), "g:" -> (arg => session_groups = session_groups ::: List(arg)), - "j:" -> (arg => max_jobs = Value.Int.parse(arg)), + "j:" -> (arg => max_jobs = Some(Value.Nat.parse(arg))), "o:" -> (arg => options = options + arg), "v" -> (_ => verbose = true), "x:" -> (arg => exclude_sessions = exclude_sessions ::: List(arg))) diff -r a01f4cf202fd -r 12bb31d01510 src/Pure/Tools/update.scala --- a/src/Pure/Tools/update.scala Thu Feb 15 10:32:36 2024 +0100 +++ b/src/Pure/Tools/update.scala Thu Feb 15 11:33:36 2024 +0100 @@ -52,7 +52,7 @@ dirs: List[Path] = Nil, select_dirs: List[Path] = Nil, numa_shuffling: Boolean = false, - max_jobs: Int = 1, + max_jobs: Option[Int] = None, fresh_build: Boolean = false, no_build: Boolean = false ): Build.Results = { @@ -148,7 +148,7 @@ var dirs: List[Path] = Nil var fresh_build = false var session_groups: List[String] = Nil - var max_jobs = 1 + var max_jobs: Option[Int] = None var base_logics: List[String] = List(default_base_logic) var no_build = false var options = Options.init() @@ -192,7 +192,7 @@ "d:" -> (arg => dirs = dirs ::: List(Path.explode(arg))), "f" -> (_ => fresh_build = true), "g:" -> (arg => session_groups = session_groups ::: List(arg)), - "j:" -> (arg => max_jobs = Value.Int.parse(arg)), + "j:" -> (arg => max_jobs = Some(Value.Nat.parse(arg))), "l:" -> (arg => base_logics = space_explode(',', arg)), "n" -> (_ => no_build = true), "o:" -> (arg => options = options + arg),