clarified build_dialog: regular up-to-date check (extra cost of approx. 5s startup for HOL);
authorwenzelm
Thu, 06 Dec 2012 21:16:46 +0100
changeset 50405 366c4a602500
parent 50404 898cac1dad5e
child 50406 c28753665b8e
clarified build_dialog: regular up-to-date check (extra cost of approx. 5s startup for HOL); added jedit option -n to bypass build_dialog;
lib/Tools/build_dialog
src/Pure/System/build_dialog.scala
src/Tools/jEdit/lib/Tools/jedit
--- a/lib/Tools/build_dialog	Thu Dec 06 20:26:14 2012 +0100
+++ b/lib/Tools/build_dialog	Thu Dec 06 21:16:46 2012 +0100
@@ -15,7 +15,6 @@
   echo "Usage: isabelle $PRG [OPTIONS] LOGIC"
   echo
   echo "  Options are:"
-  echo "    -C           check for existing image"
   echo "    -L OPTION    default logic via system option"
   echo "    -d DIR       include session directory"
   echo "    -s           system build mode: produce output in ISABELLE_HOME"
@@ -34,17 +33,13 @@
 
 ## process command line
 
-CHECK_EXISTING=false
 LOGIC_OPTION=""
 declare -a INCLUDE_DIRS=()
 SYSTEM_MODE=false
 
-while getopts "CL:d:s" OPT
+while getopts "L:d:s" OPT
 do
   case "$OPT" in
-    C)
-      CHECK_EXISTING="true"
-      ;;
     L)
       LOGIC_OPTION="$OPTARG"
       ;;
@@ -75,5 +70,5 @@
 [ -e "$ISABELLE_HOME/Admin/build" ] && { "$ISABELLE_HOME/Admin/build" jars || exit $?; }
 
 "$ISABELLE_TOOL" java isabelle.Build_Dialog \
-  "$CHECK_EXISTING" "$LOGIC_OPTION" "$SYSTEM_MODE" "$LOGIC" "${INCLUDE_DIRS[@]}"
+  "$LOGIC_OPTION" "$SYSTEM_MODE" "$LOGIC" "${INCLUDE_DIRS[@]}"
 
--- a/src/Pure/System/build_dialog.scala	Thu Dec 06 20:26:14 2012 +0100
+++ b/src/Pure/System/build_dialog.scala	Thu Dec 06 21:16:46 2012 +0100
@@ -21,29 +21,24 @@
     try {
       args.toList match {
         case
-          Properties.Value.Boolean(check_existing) ::
           logic_option ::
           Properties.Value.Boolean(system_mode) ::
           logic ::
           include_dirs =>
-            val dirs = include_dirs.map(Path.explode)
+            val more_dirs = include_dirs.map(s => ((false, Path.explode(s))))
 
             val options = Options.init()
             val session =
               Isabelle_System.default_logic(logic,
                 if (logic_option != "") options.string(logic_option) else "")
 
-            val no_dialog =  // FIXME full up-to-date test!?
-              check_existing &&
-                Isabelle_System.find_logics_dirs().exists(dir =>
-                  (dir + Path.basic(session)).is_file)
-
-            if (no_dialog) sys.exit(0)
+            if (Build.build(Build.Ignore_Progress, options, no_build = true,
+                more_dirs = more_dirs, sessions = List(session)) == 0) sys.exit(0)
             else
               Swing_Thread.later {
                 Platform.init_laf()
 
-                val top = build_dialog(options, system_mode, dirs, session)
+                val top = build_dialog(options, system_mode, more_dirs, session)
                 top.pack()
 
                 val point = GraphicsEnvironment.getLocalGraphicsEnvironment().getCenterPoint()
@@ -66,7 +61,7 @@
   def build_dialog(
     options: Options,
     system_mode: Boolean,
-    dirs: List[Path],
+    more_dirs: List[(Boolean, Path)],
     session: String): MainFrame = new MainFrame
   {
     /* GUI state */
@@ -126,7 +121,7 @@
       val (out, rc) =
         try {
           ("",
-            Build.build(progress, options, build_heap = true, more_dirs = dirs.map((false, _)),
+            Build.build(progress, options, build_heap = true, more_dirs = more_dirs,
               system_mode = system_mode, sessions = List(session)))
         }
         catch { case exn: Throwable => (Exn.message(exn) + "\n", 2) }
--- a/src/Tools/jEdit/lib/Tools/jedit	Thu Dec 06 20:26:14 2012 +0100
+++ b/src/Tools/jEdit/lib/Tools/jedit	Thu Dec 06 21:16:46 2012 +0100
@@ -70,6 +70,7 @@
   echo "                 (default JEDIT_OPTIONS=$JEDIT_OPTIONS)"
   echo "    -l NAME      logic session name"
   echo "    -m MODE      add print mode for output"
+  echo "    -n           no build dialog for session image on startup"
   echo "    -s           system build mode for session image"
   echo
   echo "Start jEdit with Isabelle plugin setup and opens theory FILES"
@@ -101,11 +102,12 @@
 JEDIT_SESSION_DIRS=""
 JEDIT_LOGIC=""
 JEDIT_PRINT_MODE=""
+NO_BUILD="false"
 
 function getoptions()
 {
   OPTIND=1
-  while getopts "J:bd:fj:l:m:s" OPT
+  while getopts "J:bd:fj:l:m:ns" OPT
   do
     case "$OPT" in
       J)
@@ -139,6 +141,9 @@
           JEDIT_PRINT_MODE="$JEDIT_PRINT_MODE,$OPTARG"
         fi
         ;;
+      n)
+        NO_BUILD="true"
+        ;;
       s)
         BUILD_DIALOG_OPTIONS["${#BUILD_DIALOG_OPTIONS[@]}"]="-s"
         ;;
@@ -313,9 +318,11 @@
 
 # build logic
 
-"$ISABELLE_TOOL" build_dialog "${BUILD_DIALOG_OPTIONS[@]}" -C -L jedit_logic "$JEDIT_LOGIC"
-RC="$?"
-[ "$RC" = 0 ] || exit "$RC"
+if [ "$NO_BUILD" = false ]; then
+  "$ISABELLE_TOOL" build_dialog "${BUILD_DIALOG_OPTIONS[@]}" -L jedit_logic "$JEDIT_LOGIC"
+  RC="$?"
+  [ "$RC" = 0 ] || exit "$RC"
+fi
 
 
 # main