added build option -f;
authorwenzelm
Sun, 29 Jul 2012 21:40:46 +0200
changeset 49607a125b8040ada
parent 49606 38e225bd53e4
child 49608 c895e334162c
added build option -f;
doc-src/System/Thy/Sessions.thy
doc-src/System/Thy/document/Sessions.tex
lib/Tools/build
src/Pure/System/build.scala
     1.1 --- a/doc-src/System/Thy/Sessions.thy	Sat Jul 28 22:01:21 2012 +0200
     1.2 +++ b/doc-src/System/Thy/Sessions.thy	Sun Jul 29 21:40:46 2012 +0200
     1.3 @@ -168,6 +168,7 @@
     1.4      -a           select all sessions
     1.5      -b           build heap images
     1.6      -d DIR       include session directory with ROOT file
     1.7 +    -f           fresh build
     1.8      -g NAME      select session group NAME
     1.9      -j INT       maximum number of parallel jobs (default 1)
    1.10      -n           no build -- test dependencies only
    1.11 @@ -221,6 +222,9 @@
    1.12    saved for inner nodes of the hierarchy of sessions, as required for
    1.13    other sessions to continue later on.
    1.14  
    1.15 +  \medskip Option @{verbatim "-f"} ensures a fresh build, even if all
    1.16 +  results are up-to-date wrt.\ the current set of sources.
    1.17 +
    1.18    \medskip Option @{verbatim "-j"} specifies the maximum number of
    1.19    parallel build jobs (prover processes).  Note that each process is
    1.20    subject to a separate limit of parallel threads, cf.\ system option
     2.1 --- a/doc-src/System/Thy/document/Sessions.tex	Sat Jul 28 22:01:21 2012 +0200
     2.2 +++ b/doc-src/System/Thy/document/Sessions.tex	Sun Jul 29 21:40:46 2012 +0200
     2.3 @@ -278,6 +278,7 @@
     2.4      -a           select all sessions
     2.5      -b           build heap images
     2.6      -d DIR       include session directory with ROOT file
     2.7 +    -f           fresh build
     2.8      -g NAME      select session group NAME
     2.9      -j INT       maximum number of parallel jobs (default 1)
    2.10      -n           no build -- test dependencies only
    2.11 @@ -327,6 +328,9 @@
    2.12    saved for inner nodes of the hierarchy of sessions, as required for
    2.13    other sessions to continue later on.
    2.14  
    2.15 +  \medskip Option \verb|-f| ensures a fresh build, even if all
    2.16 +  results are up-to-date wrt.\ the current set of sources.
    2.17 +
    2.18    \medskip Option \verb|-j| specifies the maximum number of
    2.19    parallel build jobs (prover processes).  Note that each process is
    2.20    subject to a separate limit of parallel threads, cf.\ system option
     3.1 --- a/lib/Tools/build	Sat Jul 28 22:01:21 2012 +0200
     3.2 +++ b/lib/Tools/build	Sun Jul 29 21:40:46 2012 +0200
     3.3 @@ -29,6 +29,7 @@
     3.4    echo "    -a           select all sessions"
     3.5    echo "    -b           build heap images"
     3.6    echo "    -d DIR       include session directory with ROOT file"
     3.7 +  echo "    -f           fresh build"
     3.8    echo "    -g NAME      select session group NAME"
     3.9    echo "    -j INT       maximum number of parallel jobs (default 1)"
    3.10    echo "    -n           no build -- test dependencies only"
    3.11 @@ -59,6 +60,7 @@
    3.12  ALL_SESSIONS=false
    3.13  BUILD_HEAP=false
    3.14  declare -a MORE_DIRS=()
    3.15 +FRESH_BUILD=false
    3.16  declare -a SESSION_GROUPS=()
    3.17  MAX_JOBS=1
    3.18  NO_BUILD=false
    3.19 @@ -66,7 +68,7 @@
    3.20  SYSTEM_MODE=false
    3.21  VERBOSE=false
    3.22  
    3.23 -while getopts "abd:g:j:no:sv" OPT
    3.24 +while getopts "abd:fg:j:no:sv" OPT
    3.25  do
    3.26    case "$OPT" in
    3.27      a)
    3.28 @@ -78,6 +80,9 @@
    3.29      d)
    3.30        MORE_DIRS["${#MORE_DIRS[@]}"]="$OPTARG"
    3.31        ;;
    3.32 +    f)
    3.33 +      FRESH_BUILD="true"
    3.34 +      ;;
    3.35      g)
    3.36        SESSION_GROUPS["${#SESSION_GROUPS[@]}"]="$OPTARG"
    3.37        ;;
    3.38 @@ -121,7 +126,7 @@
    3.39  fi
    3.40  
    3.41  "$ISABELLE_TOOL" java isabelle.Build \
    3.42 -  "$ALL_SESSIONS" "$BUILD_HEAP" "$MAX_JOBS" "$NO_BUILD" "$SYSTEM_MODE" "$VERBOSE" \
    3.43 +  "$ALL_SESSIONS" "$BUILD_HEAP" "$FRESH_BUILD" "$MAX_JOBS" "$NO_BUILD" "$SYSTEM_MODE" "$VERBOSE" \
    3.44    "${MORE_DIRS[@]}" $'\n' "${SESSION_GROUPS[@]}" $'\n' "${BUILD_OPTIONS[@]}" $'\n' "$@"
    3.45  RC="$?"
    3.46  
     4.1 --- a/src/Pure/System/build.scala	Sat Jul 28 22:01:21 2012 +0200
     4.2 +++ b/src/Pure/System/build.scala	Sun Jul 29 21:40:46 2012 +0200
     4.3 @@ -440,6 +440,7 @@
     4.4      all_sessions: Boolean = false,
     4.5      build_heap: Boolean = false,
     4.6      more_dirs: List[Path] = Nil,
     4.7 +    fresh_build: Boolean,
     4.8      session_groups: List[String] = Nil,
     4.9      max_jobs: Int = 1,
    4.10      no_build: Boolean = false,
    4.11 @@ -523,7 +524,7 @@
    4.12                      case None => false
    4.13                    }
    4.14                  }
    4.15 -                val all_current = current && parent_current
    4.16 +                val all_current = current && parent_current && !fresh_build
    4.17  
    4.18                  if (all_current)
    4.19                    loop(pending - name, running, results + (name -> (true, 0)))
    4.20 @@ -571,13 +572,14 @@
    4.21          case
    4.22            Properties.Value.Boolean(all_sessions) ::
    4.23            Properties.Value.Boolean(build_heap) ::
    4.24 +          Properties.Value.Boolean(fresh_build) ::
    4.25            Properties.Value.Int(max_jobs) ::
    4.26            Properties.Value.Boolean(no_build) ::
    4.27            Properties.Value.Boolean(system_mode) ::
    4.28            Properties.Value.Boolean(verbose) ::
    4.29            Command_Line.Chunks(more_dirs, session_groups, build_options, sessions) =>
    4.30 -            build(all_sessions, build_heap, more_dirs.map(Path.explode), session_groups,
    4.31 -              max_jobs, no_build, build_options, system_mode, verbose, sessions)
    4.32 +            build(all_sessions, build_heap, more_dirs.map(Path.explode), fresh_build,
    4.33 +              session_groups, max_jobs, no_build, build_options, system_mode, verbose, sessions)
    4.34          case _ => error("Bad arguments:\n" + cat_lines(args))
    4.35        }
    4.36      }