src/Pure/Tools/build.scala
changeset 66737 2edc0c42c883
parent 66736 148891036469
child 66744 fec1504e5f03
--- a/src/Pure/Tools/build.scala	Sun Oct 01 12:28:52 2017 +0200
+++ b/src/Pure/Tools/build.scala	Sun Oct 01 13:07:31 2017 +0200
@@ -357,6 +357,7 @@
     pide: Boolean = false,
     requirements: Boolean = false,
     all_sessions: Boolean = false,
+    base_sessions: List[String] = Nil,
     exclude_session_groups: List[String] = Nil,
     exclude_sessions: List[String] = Nil,
     session_groups: List[String] = Nil,
@@ -371,7 +372,7 @@
 
     val (selected, selected_sessions) =
       full_sessions.selection(
-          Sessions.Selection(requirements, all_sessions, exclude_session_groups,
+          Sessions.Selection(requirements, all_sessions, base_sessions, exclude_session_groups,
             exclude_sessions, session_groups, sessions) ++ selection)
 
     val deps =
@@ -627,6 +628,7 @@
   {
     val build_options = Word.explode(Isabelle_System.getenv("ISABELLE_BUILD_OPTIONS"))
 
+    var base_sessions: List[String] = Nil
     var select_dirs: List[Path] = Nil
     var numa_shuffling = false
     var pide = false
@@ -650,6 +652,7 @@
 Usage: isabelle build [OPTIONS] [SESSIONS ...]
 
   Options are:
+    -B NAME      include session NAME and all descendants
     -D DIR       include session directory and select its sessions
     -N           cyclic shuffling of NUMA CPU nodes (performance tuning)
     -P           build via PIDE protocol
@@ -672,6 +675,7 @@
   Build and manage Isabelle sessions, depending on implicit settings:
 
 """ + Library.prefix_lines("  ", Build_Log.Settings.show()) + "\n",
+      "B:" -> (arg => base_sessions = base_sessions ::: List(arg)),
       "D:" -> (arg => select_dirs = select_dirs ::: List(Path.explode(arg))),
       "N" -> (_ => numa_shuffling = true),
       "P" -> (_ => pide = true),
@@ -722,6 +726,7 @@
           pide = pide,
           requirements = requirements,
           all_sessions = all_sessions,
+          base_sessions = base_sessions,
           exclude_session_groups = exclude_session_groups,
           exclude_sessions = exclude_sessions,
           session_groups = session_groups,