proper init_settings for init_component (before generated ML_OPTIONS etc.);
authorwenzelm
Tue, 16 May 2017 15:37:07 +0200
changeset 65843 d547173212d2
parent 65842 42420ae446a2
child 65844 76e60a142ca1
proper init_settings for init_component (before generated ML_OPTIONS etc.); fresh start for "Poly/ML 5.7 Linux", suppressing old builds with ML_OPTIONS="-H 500";
src/Pure/Admin/build_history.scala
src/Pure/Admin/isabelle_cronjob.scala
--- a/src/Pure/Admin/build_history.scala	Tue May 16 11:40:08 2017 +0200
+++ b/src/Pure/Admin/build_history.scala	Tue May 16 15:37:07 2017 +0200
@@ -26,9 +26,10 @@
   def augment_settings(
     other_isabelle: Other_Isabelle,
     threads: Int,
-    arch_64: Boolean = false,
-    heap: Int = default_heap,
-    max_heap: Option[Int] = None,
+    arch_64: Boolean,
+    heap: Int,
+    max_heap: Option[Int],
+    init_settings: List[String],
     more_settings: List[String]): String =
   {
     val (ml_platform, ml_settings) =
@@ -84,8 +85,9 @@
         "ISABELLE_BUILD_OPTIONS=\"threads=" + threads + "\"")
 
     val settings =
+      (if (init_settings.isEmpty) Nil else List(init_settings)) :::
       List(ml_settings, thread_settings) :::
-        (if (more_settings.isEmpty) Nil else List(more_settings))
+      (if (more_settings.isEmpty) Nil else List(more_settings))
 
     File.append(other_isabelle.etc_settings, "\n" + cat_lines(settings.map(terminate_lines(_))))
 
@@ -114,6 +116,7 @@
     arch_64: Boolean = false,
     heap: Int = default_heap,
     max_heap: Option[Int] = None,
+    init_settings: List[String] = Nil,
     more_settings: List[String] = Nil,
     verbose: Boolean = false,
     build_tags: List[String] = Nil,
@@ -163,7 +166,8 @@
       other_isabelle.init_settings(components_base, nonfree)
       other_isabelle.resolve_components(verbose)
       val ml_platform =
-        augment_settings(other_isabelle, threads, arch_64, heap, max_heap, more_settings)
+        augment_settings(other_isabelle, threads, arch_64, heap, max_heap,
+          init_settings, more_settings)
 
       val isabelle_output = Path.explode(other_isabelle("getenv -b ISABELLE_OUTPUT").check.out)
       val isabelle_output_log = isabelle_output + Path.explode("log")
@@ -298,6 +302,7 @@
       var isabelle_identifier = default_isabelle_identifier
       var more_settings: List[String] = Nil
       var fresh = false
+      var init_settings: List[String] = Nil
       var arch_64 = false
       var nonfree = false
       var rev = default_rev
@@ -310,12 +315,14 @@
   Options are:
     -B           first multicore build serves as base for scheduling information
     -C DIR       base directory for Isabelle components (default: $ISABELLE_HOME_USER/../contrib)
-    -H SIZE      minimal ML heap in MB (default: """ + default_heap + """ for x86, """ + default_heap * 2 + """ for x86_64)
+    -H SIZE      minimal ML heap in MB (default: """ + default_heap + """ for x86, """ +
+      default_heap * 2 + """ for x86_64)
     -M MULTICORE multicore configurations (see below)
     -N NAME      alternative ISABELLE_IDENTIFIER (default: """ + default_isabelle_identifier + """)
     -U SIZE      maximal ML heap in MB (default: unbounded)
     -e TEXT      additional text for generated etc/settings
     -f           fresh build of Isabelle/Scala components (recommended)
+    -i TEXT      initial text for generated etc/settings
     -m ARCH      processor architecture (32=x86, 64=x86_64, default: x86)
     -n           include nonfree components
     -r REV       update to revision (default: """ + default_rev + """)
@@ -336,6 +343,7 @@
         "U:" -> (arg => max_heap = Some(Value.Int.parse(arg))),
         "e:" -> (arg => more_settings = more_settings ::: List(arg)),
         "f" -> (_ => fresh = true),
+        "i:" -> (arg => init_settings = init_settings ::: List(arg)),
         "m:" ->
           {
             case "32" | "x86" => arch_64 = false
@@ -362,8 +370,8 @@
           components_base = components_base, fresh = fresh, nonfree = nonfree,
           multicore_base = multicore_base, multicore_list = multicore_list, arch_64 = arch_64,
           heap = heap.getOrElse(if (arch_64) default_heap * 2 else default_heap),
-          max_heap = max_heap, more_settings = more_settings, verbose = verbose,
-          build_tags = build_tags, build_args = build_args)
+          max_heap = max_heap, init_settings = init_settings, more_settings = more_settings,
+          verbose = verbose, build_tags = build_tags, build_args = build_args)
 
       for ((_, log_path) <- results) Output.writeln(log_path.implode, stdout = true)
 
--- a/src/Pure/Admin/isabelle_cronjob.scala	Tue May 16 11:40:08 2017 +0200
+++ b/src/Pure/Admin/isabelle_cronjob.scala	Tue May 16 15:37:07 2017 +0200
@@ -165,7 +165,7 @@
   val remote_builds_old: List[Remote_Build] =
     List(
       Remote_Build("Poly/ML test", "lxbroy8",
-        options = "-m32 -B -M1x2,2 -t polyml-test -e 'init_component /home/isabelle/contrib/polyml-5.7-20170217'",
+        options = "-m32 -B -M1x2,2 -t polyml-test -i 'init_component /home/isabelle/contrib/polyml-5.7-20170217'",
         args = "-N -g timing",
         detect = Build_Log.Prop.build_tags + " = " + SQL.string("polyml-test")),
       Remote_Build("Mac OS X 10.8 Mountain Lion", "macbroy30", options = "-m32 -M2", args = "-a",
@@ -177,9 +177,10 @@
     List(
       List(Remote_Build("Poly/ML 5.7 Linux", "lxbroy8",
         history_base = "37074e22e8be",
-        options = "-m32 -B -M1x2,2 -t polyml-5.7 -e 'init_component /home/isabelle/contrib/polyml-5.7'",
+        options = "-m32 -B -M1x2,2 -t polyml-5.7 -i 'init_component /home/isabelle/contrib/polyml-5.7'",
         args = "-N -g timing",
-        detect = Build_Log.Prop.build_tags + " = " + SQL.string("polyml-5.7"))),
+        detect = Build_Log.Prop.build_tags + " = " + SQL.string("polyml-5.7") + " AND " +
+          Build_Log.Settings.ML_OPTIONS + " <> " + SQL.string("-H 500"))),
       List(Remote_Build("Linux A", "lxbroy9",
         options = "-m32 -B -M1x2,2", args = "-N -g timing")),
       List(Remote_Build("Linux B", "lxbroy10", historic = true, history = 90,