src/Doc/System/Sessions.thy
author wenzelm
Wed, 04 Nov 2015 14:40:18 +0100
changeset 61568 26c76e143b77
parent 61503 28e788ca2c5d
child 61572 ddb3ac3fef45
permissions -rw-r--r--
tuned;
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
48578
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
     1
theory Sessions
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
     2
imports Base
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
     3
begin
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
     4
58618
782f0b662cae more cartouches;
wenzelm
parents: 58553
diff changeset
     5
chapter \<open>Isabelle sessions and build management \label{ch:session}\<close>
48584
8026c852cc10 some introduction on sessions;
wenzelm
parents: 48582
diff changeset
     6
61477
e467ae7aa808 more control symbols;
wenzelm
parents: 61458
diff changeset
     7
text \<open>An Isabelle \<^emph>\<open>session\<close> consists of a collection of related
51055
5c4be88f8747 some explanations of important build options;
wenzelm
parents: 50546
diff changeset
     8
  theories that may be associated with formal documents
61477
e467ae7aa808 more control symbols;
wenzelm
parents: 61458
diff changeset
     9
  (\chref{ch:present}).  There is also a notion of \<^emph>\<open>persistent
e467ae7aa808 more control symbols;
wenzelm
parents: 61458
diff changeset
    10
  heap\<close> image to capture the state of a session, similar to
48604
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
    11
  object-code in compiled programming languages.  Thus the concept of
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
    12
  session resembles that of a ``project'' in common IDE environments,
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
    13
  but the specific name emphasizes the connection to interactive
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
    14
  theorem proving: the session wraps-up the results of
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
    15
  user-interaction with the prover in a persistent form.
48584
8026c852cc10 some introduction on sessions;
wenzelm
parents: 48582
diff changeset
    16
48604
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
    17
  Application sessions are built on a given parent session, which may
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
    18
  be built recursively on other parents.  Following this path in the
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
    19
  hierarchy eventually leads to some major object-logic session like
61493
0debd22f0c0e isabelle update_cartouches -t;
wenzelm
parents: 61477
diff changeset
    20
  \<open>HOL\<close>, which itself is based on \<open>Pure\<close> as the common
48604
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
    21
  root of all sessions.
48584
8026c852cc10 some introduction on sessions;
wenzelm
parents: 48582
diff changeset
    22
48604
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
    23
  Processing sessions may take considerable time.  Isabelle build
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
    24
  management helps to organize this efficiently.  This includes
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
    25
  support for parallel build jobs, in addition to the multithreaded
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
    26
  theory and proof checking that is already provided by the prover
58618
782f0b662cae more cartouches;
wenzelm
parents: 58553
diff changeset
    27
  process itself.\<close>
48604
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
    28
48578
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
    29
58618
782f0b662cae more cartouches;
wenzelm
parents: 58553
diff changeset
    30
section \<open>Session ROOT specifications \label{sec:session-root}\<close>
48578
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
    31
61503
28e788ca2c5d more control symbols;
wenzelm
parents: 61493
diff changeset
    32
text \<open>Session specifications reside in files called \<^verbatim>\<open>ROOT\<close>
48579
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
    33
  within certain directories, such as the home locations of registered
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
    34
  Isabelle components or additional project directories given by the
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
    35
  user.
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
    36
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
    37
  The ROOT file format follows the lexical conventions of the
61477
e467ae7aa808 more control symbols;
wenzelm
parents: 61458
diff changeset
    38
  \<^emph>\<open>outer syntax\<close> of Isabelle/Isar, see also
58553
3876a1a9ee42 prefer @{cite} antiquotation;
wenzelm
parents: 57320
diff changeset
    39
  @{cite "isabelle-isar-ref"}.  This defines common forms like
48579
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
    40
  identifiers, names, quoted strings, verbatim text, nested comments
51417
d266f9329368 sessions may be organized via 'chapter' in ROOT;
wenzelm
parents: 51055
diff changeset
    41
  etc.  The grammar for @{syntax session_chapter} and @{syntax
d266f9329368 sessions may be organized via 'chapter' in ROOT;
wenzelm
parents: 51055
diff changeset
    42
  session_entry} is given as syntax diagram below; each ROOT file may
d266f9329368 sessions may be organized via 'chapter' in ROOT;
wenzelm
parents: 51055
diff changeset
    43
  contain multiple specifications like this.  Chapters help to
d266f9329368 sessions may be organized via 'chapter' in ROOT;
wenzelm
parents: 51055
diff changeset
    44
  organize browser info (\secref{sec:info}), but have no formal
61493
0debd22f0c0e isabelle update_cartouches -t;
wenzelm
parents: 61477
diff changeset
    45
  meaning.  The default chapter is ``\<open>Unsorted\<close>''.
48579
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
    46
58553
3876a1a9ee42 prefer @{cite} antiquotation;
wenzelm
parents: 57320
diff changeset
    47
  Isabelle/jEdit @{cite "isabelle-jedit"} includes a simple editing
61503
28e788ca2c5d more control symbols;
wenzelm
parents: 61493
diff changeset
    48
  mode \<^verbatim>\<open>isabelle-root\<close> for session ROOT files, which is
51055
5c4be88f8747 some explanations of important build options;
wenzelm
parents: 50546
diff changeset
    49
  enabled by default for any file of that name.
48579
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
    50
55112
b1a5d603fd12 prefer rail cartouche -- avoid back-slashed quotes;
wenzelm
parents: 54705
diff changeset
    51
  @{rail \<open>
51417
d266f9329368 sessions may be organized via 'chapter' in ROOT;
wenzelm
parents: 51055
diff changeset
    52
    @{syntax_def session_chapter}: @'chapter' @{syntax name}
d266f9329368 sessions may be organized via 'chapter' in ROOT;
wenzelm
parents: 51055
diff changeset
    53
    ;
d266f9329368 sessions may be organized via 'chapter' in ROOT;
wenzelm
parents: 51055
diff changeset
    54
48579
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
    55
    @{syntax_def session_entry}: @'session' spec '=' (@{syntax name} '+')? body
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
    56
    ;
56533
cd8b6d849b6a explicit 'document_files' in session ROOT specifications;
wenzelm
parents: 55112
diff changeset
    57
    body: description? options? (theories+) \<newline> files? (document_files*)
48579
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
    58
    ;
48738
f8c1a5b9488f simplified session specifications: names are taken verbatim and current directory is default;
wenzelm
parents: 48737
diff changeset
    59
    spec: @{syntax name} groups? dir?
48579
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
    60
    ;
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
    61
    groups: '(' (@{syntax name} +) ')'
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
    62
    ;
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
    63
    dir: @'in' @{syntax name}
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
    64
    ;
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
    65
    description: @'description' @{syntax text}
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
    66
    ;
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
    67
    options: @'options' opts
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
    68
    ;
48605
e777363440d6 allow negative int values as well, according to real = int | float;
wenzelm
parents: 48604
diff changeset
    69
    opts: '[' ( (@{syntax name} '=' value | @{syntax name}) + ',' ) ']'
e777363440d6 allow negative int values as well, according to real = int | float;
wenzelm
parents: 48604
diff changeset
    70
    ;
e777363440d6 allow negative int values as well, according to real = int | float;
wenzelm
parents: 48604
diff changeset
    71
    value: @{syntax name} | @{syntax real}
48579
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
    72
    ;
48739
3a6c03b15916 refined isabelle mkroot;
wenzelm
parents: 48738
diff changeset
    73
    theories: @'theories' opts? ( @{syntax name} * )
48579
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
    74
    ;
56533
cd8b6d849b6a explicit 'document_files' in session ROOT specifications;
wenzelm
parents: 55112
diff changeset
    75
    files: @'files' (@{syntax name}+)
cd8b6d849b6a explicit 'document_files' in session ROOT specifications;
wenzelm
parents: 55112
diff changeset
    76
    ;
cd8b6d849b6a explicit 'document_files' in session ROOT specifications;
wenzelm
parents: 55112
diff changeset
    77
    document_files: @'document_files' ('(' dir ')')? (@{syntax name}+)
55112
b1a5d603fd12 prefer rail cartouche -- avoid back-slashed quotes;
wenzelm
parents: 54705
diff changeset
    78
  \<close>}
48579
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
    79
61493
0debd22f0c0e isabelle update_cartouches -t;
wenzelm
parents: 61477
diff changeset
    80
  \<^descr> \isakeyword{session}~\<open>A = B + body\<close> defines a new
0debd22f0c0e isabelle update_cartouches -t;
wenzelm
parents: 61477
diff changeset
    81
  session \<open>A\<close> based on parent session \<open>B\<close>, with its
0debd22f0c0e isabelle update_cartouches -t;
wenzelm
parents: 61477
diff changeset
    82
  content given in \<open>body\<close> (theories and auxiliary source files).
0debd22f0c0e isabelle update_cartouches -t;
wenzelm
parents: 61477
diff changeset
    83
  Note that a parent (like \<open>HOL\<close>) is mandatory in practical
48579
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
    84
  applications: only Isabelle/Pure can bootstrap itself from nothing.
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
    85
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
    86
  All such session specifications together describe a hierarchy (tree)
48738
f8c1a5b9488f simplified session specifications: names are taken verbatim and current directory is default;
wenzelm
parents: 48737
diff changeset
    87
  of sessions, with globally unique names.  The new session name
61493
0debd22f0c0e isabelle update_cartouches -t;
wenzelm
parents: 61477
diff changeset
    88
  \<open>A\<close> should be sufficiently long and descriptive to stand on
51055
5c4be88f8747 some explanations of important build options;
wenzelm
parents: 50546
diff changeset
    89
  its own in a potentially large library.
48579
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
    90
61493
0debd22f0c0e isabelle update_cartouches -t;
wenzelm
parents: 61477
diff changeset
    91
  \<^descr> \isakeyword{session}~\<open>A (groups)\<close> indicates a
48579
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
    92
  collection of groups where the new session is a member.  Group names
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
    93
  are uninterpreted and merely follow certain conventions.  For
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
    94
  example, the Isabelle distribution tags some important sessions by
61493
0debd22f0c0e isabelle update_cartouches -t;
wenzelm
parents: 61477
diff changeset
    95
  the group name called ``\<open>main\<close>''.  Other projects may invent
48604
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
    96
  their own conventions, but this requires some care to avoid clashes
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
    97
  within this unchecked name space.
48579
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
    98
61493
0debd22f0c0e isabelle update_cartouches -t;
wenzelm
parents: 61477
diff changeset
    99
  \<^descr> \isakeyword{session}~\<open>A\<close>~\isakeyword{in}~\<open>dir\<close>
48738
f8c1a5b9488f simplified session specifications: names are taken verbatim and current directory is default;
wenzelm
parents: 48737
diff changeset
   100
  specifies an explicit directory for this session; by default this is
61503
28e788ca2c5d more control symbols;
wenzelm
parents: 61493
diff changeset
   101
  the current directory of the \<^verbatim>\<open>ROOT\<close> file.
48579
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
   102
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
   103
  All theories and auxiliary source files are located relatively to
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
   104
  the session directory.  The prover process is run within the same as
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
   105
  its current working directory.
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
   106
61493
0debd22f0c0e isabelle update_cartouches -t;
wenzelm
parents: 61477
diff changeset
   107
  \<^descr> \isakeyword{description}~\<open>text\<close> is a free-form
48579
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
   108
  annotation for this session.
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
   109
61493
0debd22f0c0e isabelle update_cartouches -t;
wenzelm
parents: 61477
diff changeset
   110
  \<^descr> \isakeyword{options}~\<open>[x = a, y = b, z]\<close> defines
48604
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
   111
  separate options (\secref{sec:system-options}) that are used when
61477
e467ae7aa808 more control symbols;
wenzelm
parents: 61458
diff changeset
   112
  processing this session, but \<^emph>\<open>without\<close> propagation to child
61493
0debd22f0c0e isabelle update_cartouches -t;
wenzelm
parents: 61477
diff changeset
   113
  sessions.  Note that \<open>z\<close> abbreviates \<open>z = true\<close> for
48604
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
   114
  Boolean options.
48579
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
   115
61493
0debd22f0c0e isabelle update_cartouches -t;
wenzelm
parents: 61477
diff changeset
   116
  \<^descr> \isakeyword{theories}~\<open>options names\<close> specifies a
48579
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
   117
  block of theories that are processed within an environment that is
48604
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
   118
  augmented by the given options, in addition to the global session
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
   119
  options given before.  Any number of blocks of \isakeyword{theories}
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
   120
  may be given.  Options are only active for each
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
   121
  \isakeyword{theories} block separately.
48579
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
   122
61493
0debd22f0c0e isabelle update_cartouches -t;
wenzelm
parents: 61477
diff changeset
   123
  \<^descr> \isakeyword{files}~\<open>files\<close> lists additional source
48604
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
   124
  files that are involved in the processing of this session.  This
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
   125
  should cover anything outside the formal content of the theory
56533
cd8b6d849b6a explicit 'document_files' in session ROOT specifications;
wenzelm
parents: 55112
diff changeset
   126
  sources.  In contrast, files that are loaded formally
58931
3097ec653547 clarified keyword categories;
wenzelm
parents: 58618
diff changeset
   127
  within a theory, e.g.\ via @{command "ML_file"}, need not be
51055
5c4be88f8747 some explanations of important build options;
wenzelm
parents: 50546
diff changeset
   128
  declared again.
48579
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
   129
61493
0debd22f0c0e isabelle update_cartouches -t;
wenzelm
parents: 61477
diff changeset
   130
  \<^descr> \isakeyword{document_files}~\<open>(\<close>\isakeyword{in}~\<open>base_dir) files\<close> lists source files for document preparation,
61503
28e788ca2c5d more control symbols;
wenzelm
parents: 61493
diff changeset
   131
  typically \<^verbatim>\<open>.tex\<close> and \<^verbatim>\<open>.sty\<close> for {\LaTeX}.
56533
cd8b6d849b6a explicit 'document_files' in session ROOT specifications;
wenzelm
parents: 55112
diff changeset
   132
  Only these explicitly given files are copied from the base directory
cd8b6d849b6a explicit 'document_files' in session ROOT specifications;
wenzelm
parents: 55112
diff changeset
   133
  to the document output directory, before formal document processing
cd8b6d849b6a explicit 'document_files' in session ROOT specifications;
wenzelm
parents: 55112
diff changeset
   134
  is started (see also \secref{sec:tool-document}).  The local path
61493
0debd22f0c0e isabelle update_cartouches -t;
wenzelm
parents: 61477
diff changeset
   135
  structure of the \<open>files\<close> is preserved, which allows to
0debd22f0c0e isabelle update_cartouches -t;
wenzelm
parents: 61477
diff changeset
   136
  reconstruct the original directory hierarchy of \<open>base_dir\<close>.
56533
cd8b6d849b6a explicit 'document_files' in session ROOT specifications;
wenzelm
parents: 55112
diff changeset
   137
61493
0debd22f0c0e isabelle update_cartouches -t;
wenzelm
parents: 61477
diff changeset
   138
  \<^descr> \isakeyword{document_files}~\<open>files\<close> abbreviates
0debd22f0c0e isabelle update_cartouches -t;
wenzelm
parents: 61477
diff changeset
   139
  \isakeyword{document_files}~\<open>(\<close>\isakeyword{in}~\<open>document) files\<close>, i.e.\ document sources are taken from the base
61503
28e788ca2c5d more control symbols;
wenzelm
parents: 61493
diff changeset
   140
  directory \<^verbatim>\<open>document\<close> within the session root directory.
58618
782f0b662cae more cartouches;
wenzelm
parents: 58553
diff changeset
   141
\<close>
48579
0b95a13ed90a more on "Session ROOT specifications";
wenzelm
parents: 48578
diff changeset
   142
51055
5c4be88f8747 some explanations of important build options;
wenzelm
parents: 50546
diff changeset
   143
58618
782f0b662cae more cartouches;
wenzelm
parents: 58553
diff changeset
   144
subsubsection \<open>Examples\<close>
48580
9df76dd45900 some description of main build options;
wenzelm
parents: 48579
diff changeset
   145
58618
782f0b662cae more cartouches;
wenzelm
parents: 58553
diff changeset
   146
text \<open>See @{file "~~/src/HOL/ROOT"} for a diversity of practically
51055
5c4be88f8747 some explanations of important build options;
wenzelm
parents: 50546
diff changeset
   147
  relevant situations, although it uses relatively complex
61568
wenzelm
parents: 61503
diff changeset
   148
  quasi-hierarchic naming conventions like \<^verbatim>\<open>HOL-SPARK\<close>,
wenzelm
parents: 61503
diff changeset
   149
  \<^verbatim>\<open>HOL-SPARK-Examples\<close>.  An alternative is to use
48738
f8c1a5b9488f simplified session specifications: names are taken verbatim and current directory is default;
wenzelm
parents: 48737
diff changeset
   150
  unqualified names that are relatively long and descriptive, as in
54704
wenzelm
parents: 54703
diff changeset
   151
  the Archive of Formal Proofs (@{url "http://afp.sourceforge.net"}), for
58618
782f0b662cae more cartouches;
wenzelm
parents: 58553
diff changeset
   152
  example.\<close>
48578
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   153
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   154
58618
782f0b662cae more cartouches;
wenzelm
parents: 58553
diff changeset
   155
section \<open>System build options \label{sec:system-options}\<close>
48578
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   156
58618
782f0b662cae more cartouches;
wenzelm
parents: 58553
diff changeset
   157
text \<open>See @{file "~~/etc/options"} for the main defaults provided by
58553
3876a1a9ee42 prefer @{cite} antiquotation;
wenzelm
parents: 57320
diff changeset
   158
  the Isabelle distribution.  Isabelle/jEdit @{cite "isabelle-jedit"}
61503
28e788ca2c5d more control symbols;
wenzelm
parents: 61493
diff changeset
   159
  includes a simple editing mode \<^verbatim>\<open>isabelle-options\<close> for
48582
wenzelm
parents: 48580
diff changeset
   160
  this file-format.
48693
ceeea46bdeba "isabelle options" prints Isabelle system options;
wenzelm
parents: 48684
diff changeset
   161
56604
1b153b989860 tuned spelling;
wenzelm
parents: 56533
diff changeset
   162
  The following options are particularly relevant to build Isabelle
51055
5c4be88f8747 some explanations of important build options;
wenzelm
parents: 50546
diff changeset
   163
  sessions, in particular with document preparation
5c4be88f8747 some explanations of important build options;
wenzelm
parents: 50546
diff changeset
   164
  (\chref{ch:present}).
5c4be88f8747 some explanations of important build options;
wenzelm
parents: 50546
diff changeset
   165
61406
eb2463fc4d7b more symbols;
wenzelm
parents: 60106
diff changeset
   166
  \<^item> @{system_option_def "browser_info"} controls output of HTML
51055
5c4be88f8747 some explanations of important build options;
wenzelm
parents: 50546
diff changeset
   167
  browser info, see also \secref{sec:info}.
5c4be88f8747 some explanations of important build options;
wenzelm
parents: 50546
diff changeset
   168
61406
eb2463fc4d7b more symbols;
wenzelm
parents: 60106
diff changeset
   169
  \<^item> @{system_option_def "document"} specifies the document output
61503
28e788ca2c5d more control symbols;
wenzelm
parents: 61493
diff changeset
   170
  format, see @{tool document} option \<^verbatim>\<open>-o\<close> in
51055
5c4be88f8747 some explanations of important build options;
wenzelm
parents: 50546
diff changeset
   171
  \secref{sec:tool-document}.  In practice, the most relevant values
61503
28e788ca2c5d more control symbols;
wenzelm
parents: 61493
diff changeset
   172
  are \<^verbatim>\<open>document=false\<close> or \<^verbatim>\<open>document=pdf\<close>.
51055
5c4be88f8747 some explanations of important build options;
wenzelm
parents: 50546
diff changeset
   173
61406
eb2463fc4d7b more symbols;
wenzelm
parents: 60106
diff changeset
   174
  \<^item> @{system_option_def "document_output"} specifies an
51055
5c4be88f8747 some explanations of important build options;
wenzelm
parents: 50546
diff changeset
   175
  alternative directory for generated output of the document
5c4be88f8747 some explanations of important build options;
wenzelm
parents: 50546
diff changeset
   176
  preparation system; the default is within the @{setting
5c4be88f8747 some explanations of important build options;
wenzelm
parents: 50546
diff changeset
   177
  "ISABELLE_BROWSER_INFO"} hierarchy as explained in
5c4be88f8747 some explanations of important build options;
wenzelm
parents: 50546
diff changeset
   178
  \secref{sec:info}.  See also @{tool mkroot}, which generates a
5c4be88f8747 some explanations of important build options;
wenzelm
parents: 50546
diff changeset
   179
  default configuration with output readily available to the author of
5c4be88f8747 some explanations of important build options;
wenzelm
parents: 50546
diff changeset
   180
  the document.
5c4be88f8747 some explanations of important build options;
wenzelm
parents: 50546
diff changeset
   181
61406
eb2463fc4d7b more symbols;
wenzelm
parents: 60106
diff changeset
   182
  \<^item> @{system_option_def "document_variants"} specifies document
61493
0debd22f0c0e isabelle update_cartouches -t;
wenzelm
parents: 61477
diff changeset
   183
  variants as a colon-separated list of \<open>name=tags\<close> entries,
61503
28e788ca2c5d more control symbols;
wenzelm
parents: 61493
diff changeset
   184
  corresponding to @{tool document} options \<^verbatim>\<open>-n\<close> and
28e788ca2c5d more control symbols;
wenzelm
parents: 61493
diff changeset
   185
  \<^verbatim>\<open>-t\<close>.
51055
5c4be88f8747 some explanations of important build options;
wenzelm
parents: 50546
diff changeset
   186
61503
28e788ca2c5d more control symbols;
wenzelm
parents: 61493
diff changeset
   187
  For example, \<^verbatim>\<open>document_variants=document:outline=/proof,/ML\<close> indicates
28e788ca2c5d more control symbols;
wenzelm
parents: 61493
diff changeset
   188
  two documents: the one called \<^verbatim>\<open>document\<close> with default tags,
28e788ca2c5d more control symbols;
wenzelm
parents: 61493
diff changeset
   189
  and the other called \<^verbatim>\<open>outline\<close> where proofs and ML
51055
5c4be88f8747 some explanations of important build options;
wenzelm
parents: 50546
diff changeset
   190
  sections are folded.
5c4be88f8747 some explanations of important build options;
wenzelm
parents: 50546
diff changeset
   191
5c4be88f8747 some explanations of important build options;
wenzelm
parents: 50546
diff changeset
   192
  Document variant names are just a matter of conventions.  It is also
5c4be88f8747 some explanations of important build options;
wenzelm
parents: 50546
diff changeset
   193
  possible to use different document variant names (without tags) for
5c4be88f8747 some explanations of important build options;
wenzelm
parents: 50546
diff changeset
   194
  different document root entries, see also
5c4be88f8747 some explanations of important build options;
wenzelm
parents: 50546
diff changeset
   195
  \secref{sec:tool-document}.
5c4be88f8747 some explanations of important build options;
wenzelm
parents: 50546
diff changeset
   196
61406
eb2463fc4d7b more symbols;
wenzelm
parents: 60106
diff changeset
   197
  \<^item> @{system_option_def "threads"} determines the number of worker
51055
5c4be88f8747 some explanations of important build options;
wenzelm
parents: 50546
diff changeset
   198
  threads for parallel checking of theories and proofs.  The default
61493
0debd22f0c0e isabelle update_cartouches -t;
wenzelm
parents: 61477
diff changeset
   199
  \<open>0\<close> means that a sensible maximum value is determined by the
51055
5c4be88f8747 some explanations of important build options;
wenzelm
parents: 50546
diff changeset
   200
  underlying hardware.  For machines with many cores or with
5c4be88f8747 some explanations of important build options;
wenzelm
parents: 50546
diff changeset
   201
  hyperthreading, this is often requires manual adjustment (on the
5c4be88f8747 some explanations of important build options;
wenzelm
parents: 50546
diff changeset
   202
  command-line or within personal settings or preferences, not within
61503
28e788ca2c5d more control symbols;
wenzelm
parents: 61493
diff changeset
   203
  a session \<^verbatim>\<open>ROOT\<close>).
51055
5c4be88f8747 some explanations of important build options;
wenzelm
parents: 50546
diff changeset
   204
61406
eb2463fc4d7b more symbols;
wenzelm
parents: 60106
diff changeset
   205
  \<^item> @{system_option_def "condition"} specifies a comma-separated
51055
5c4be88f8747 some explanations of important build options;
wenzelm
parents: 50546
diff changeset
   206
  list of process environment variables (or Isabelle settings) that
5c4be88f8747 some explanations of important build options;
wenzelm
parents: 50546
diff changeset
   207
  are required for the subsequent theories to be processed.
5c4be88f8747 some explanations of important build options;
wenzelm
parents: 50546
diff changeset
   208
  Conditions are considered ``true'' if the corresponding environment
5c4be88f8747 some explanations of important build options;
wenzelm
parents: 50546
diff changeset
   209
  value is defined and non-empty.
5c4be88f8747 some explanations of important build options;
wenzelm
parents: 50546
diff changeset
   210
61503
28e788ca2c5d more control symbols;
wenzelm
parents: 61493
diff changeset
   211
  For example, the \<^verbatim>\<open>condition=ISABELLE_FULL_TEST\<close> may be
51055
5c4be88f8747 some explanations of important build options;
wenzelm
parents: 50546
diff changeset
   212
  used to guard extraordinary theories, which are meant to be enabled
61503
28e788ca2c5d more control symbols;
wenzelm
parents: 61493
diff changeset
   213
  explicitly via some shell prefix \<^verbatim>\<open>env ISABELLE_FULL_TEST=true\<close>
51055
5c4be88f8747 some explanations of important build options;
wenzelm
parents: 50546
diff changeset
   214
  before invoking @{tool build}.
5c4be88f8747 some explanations of important build options;
wenzelm
parents: 50546
diff changeset
   215
61406
eb2463fc4d7b more symbols;
wenzelm
parents: 60106
diff changeset
   216
  \<^item> @{system_option_def "timeout"} specifies a real wall-clock
51055
5c4be88f8747 some explanations of important build options;
wenzelm
parents: 50546
diff changeset
   217
  timeout (in seconds) for the session as a whole.  The timer is
5c4be88f8747 some explanations of important build options;
wenzelm
parents: 50546
diff changeset
   218
  controlled outside the ML process by the JVM that runs
5c4be88f8747 some explanations of important build options;
wenzelm
parents: 50546
diff changeset
   219
  Isabelle/Scala.  Thus it is relatively reliable in canceling
5c4be88f8747 some explanations of important build options;
wenzelm
parents: 50546
diff changeset
   220
  processes that get out of control, even if there is a deadlock
5c4be88f8747 some explanations of important build options;
wenzelm
parents: 50546
diff changeset
   221
  without CPU time usage.
5c4be88f8747 some explanations of important build options;
wenzelm
parents: 50546
diff changeset
   222
5c4be88f8747 some explanations of important build options;
wenzelm
parents: 50546
diff changeset
   223
48693
ceeea46bdeba "isabelle options" prints Isabelle system options;
wenzelm
parents: 48684
diff changeset
   224
  The @{tool_def options} tool prints Isabelle system options.  Its
ceeea46bdeba "isabelle options" prints Isabelle system options;
wenzelm
parents: 48684
diff changeset
   225
  command-line usage is:
61407
7ba7b8103565 @{verbatim [display]} supersedes old alltt/ttbox;
wenzelm
parents: 61406
diff changeset
   226
  @{verbatim [display]
7ba7b8103565 @{verbatim [display]} supersedes old alltt/ttbox;
wenzelm
parents: 61406
diff changeset
   227
\<open>Usage: isabelle options [OPTIONS] [MORE_OPTIONS ...]
48693
ceeea46bdeba "isabelle options" prints Isabelle system options;
wenzelm
parents: 48684
diff changeset
   228
ceeea46bdeba "isabelle options" prints Isabelle system options;
wenzelm
parents: 48684
diff changeset
   229
  Options are:
ceeea46bdeba "isabelle options" prints Isabelle system options;
wenzelm
parents: 48684
diff changeset
   230
    -b           include $ISABELLE_BUILD_OPTIONS
52735
842b5e7dcac8 support isabelle options -g;
wenzelm
parents: 52056
diff changeset
   231
    -g OPTION    get value of OPTION
50531
f841ac0cb757 clarified "isabelle options" command line, to make it more close to "isabelle components";
wenzelm
parents: 50406
diff changeset
   232
    -l           list options
48693
ceeea46bdeba "isabelle options" prints Isabelle system options;
wenzelm
parents: 48684
diff changeset
   233
    -x FILE      export to FILE in YXML format
ceeea46bdeba "isabelle options" prints Isabelle system options;
wenzelm
parents: 48684
diff changeset
   234
50531
f841ac0cb757 clarified "isabelle options" command line, to make it more close to "isabelle components";
wenzelm
parents: 50406
diff changeset
   235
  Report Isabelle system options, augmented by MORE_OPTIONS given as
61407
7ba7b8103565 @{verbatim [display]} supersedes old alltt/ttbox;
wenzelm
parents: 61406
diff changeset
   236
  arguments NAME=VAL or NAME.\<close>}
48693
ceeea46bdeba "isabelle options" prints Isabelle system options;
wenzelm
parents: 48684
diff changeset
   237
ceeea46bdeba "isabelle options" prints Isabelle system options;
wenzelm
parents: 48684
diff changeset
   238
  The command line arguments provide additional system options of the
61503
28e788ca2c5d more control symbols;
wenzelm
parents: 61493
diff changeset
   239
  form \<open>name\<close>\<^verbatim>\<open>=\<close>\<open>value\<close> or \<open>name\<close>
48693
ceeea46bdeba "isabelle options" prints Isabelle system options;
wenzelm
parents: 48684
diff changeset
   240
  for Boolean options.
ceeea46bdeba "isabelle options" prints Isabelle system options;
wenzelm
parents: 48684
diff changeset
   241
61503
28e788ca2c5d more control symbols;
wenzelm
parents: 61493
diff changeset
   242
  Option \<^verbatim>\<open>-b\<close> augments the implicit environment of system
48693
ceeea46bdeba "isabelle options" prints Isabelle system options;
wenzelm
parents: 48684
diff changeset
   243
  options by the ones of @{setting ISABELLE_BUILD_OPTIONS}, cf.\
ceeea46bdeba "isabelle options" prints Isabelle system options;
wenzelm
parents: 48684
diff changeset
   244
  \secref{sec:tool-build}.
ceeea46bdeba "isabelle options" prints Isabelle system options;
wenzelm
parents: 48684
diff changeset
   245
61503
28e788ca2c5d more control symbols;
wenzelm
parents: 61493
diff changeset
   246
  Option \<^verbatim>\<open>-g\<close> prints the value of the given option.
28e788ca2c5d more control symbols;
wenzelm
parents: 61493
diff changeset
   247
  Option \<^verbatim>\<open>-l\<close> lists all options with their declaration and
54347
d5589530f3ba clarified isabelle options -l;
wenzelm
parents: 53519
diff changeset
   248
  current value.
52735
842b5e7dcac8 support isabelle options -g;
wenzelm
parents: 52056
diff changeset
   249
61503
28e788ca2c5d more control symbols;
wenzelm
parents: 61493
diff changeset
   250
  Option \<^verbatim>\<open>-x\<close> specifies a file to export the result in
48693
ceeea46bdeba "isabelle options" prints Isabelle system options;
wenzelm
parents: 48684
diff changeset
   251
  YXML format, instead of printing it in human-readable form.
58618
782f0b662cae more cartouches;
wenzelm
parents: 58553
diff changeset
   252
\<close>
48578
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   253
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   254
58618
782f0b662cae more cartouches;
wenzelm
parents: 58553
diff changeset
   255
section \<open>Invoking the build process \label{sec:tool-build}\<close>
48578
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   256
58618
782f0b662cae more cartouches;
wenzelm
parents: 58553
diff changeset
   257
text \<open>The @{tool_def build} tool invokes the build process for
48578
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   258
  Isabelle sessions.  It manages dependencies between sessions,
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   259
  related sources of theories and auxiliary files, and target heap
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   260
  images.  Accordingly, it runs instances of the prover process with
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   261
  optional document preparation.  Its command-line usage
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   262
  is:\footnote{Isabelle/Scala provides the same functionality via
61503
28e788ca2c5d more control symbols;
wenzelm
parents: 61493
diff changeset
   263
  \<^verbatim>\<open>isabelle.Build.build\<close>.}
61407
7ba7b8103565 @{verbatim [display]} supersedes old alltt/ttbox;
wenzelm
parents: 61406
diff changeset
   264
  @{verbatim [display]
7ba7b8103565 @{verbatim [display]} supersedes old alltt/ttbox;
wenzelm
parents: 61406
diff changeset
   265
\<open>Usage: isabelle build [OPTIONS] [SESSIONS ...]
48578
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   266
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   267
  Options are:
48737
f3bbb9ca57d6 added build option -D: include session directory and select its sessions;
wenzelm
parents: 48693
diff changeset
   268
    -D DIR       include session directory and select its sessions
49131
aa1e2ba3c697 added build option -R;
wenzelm
parents: 48985
diff changeset
   269
    -R           operate on requirements of selected sessions
60106
e0d1d9203275 allow to exclude session groups;
wenzelm
parents: 59892
diff changeset
   270
    -X NAME      exclude sessions from group NAME and all descendants
48578
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   271
    -a           select all sessions
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   272
    -b           build heap images
48595
231e6fa96dbb added build option -c;
wenzelm
parents: 48594
diff changeset
   273
    -c           clean build
48737
f3bbb9ca57d6 added build option -D: include session directory and select its sessions;
wenzelm
parents: 48693
diff changeset
   274
    -d DIR       include session directory
48578
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   275
    -g NAME      select session group NAME
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   276
    -j INT       maximum number of parallel jobs (default 1)
59891
9ce697050455 added isabelle build option -k, for fast off-line checking of theory sources;
wenzelm
parents: 59446
diff changeset
   277
    -k KEYWORD   check theory sources for conflicts with proposed keywords
48903
1621b3f26095 added build option -l (list files);
wenzelm
parents: 48814
diff changeset
   278
    -l           list session source files
48578
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   279
    -n           no build -- test dependencies only
52056
fc458f304f93 added isabelle-process option -o;
wenzelm
parents: 51417
diff changeset
   280
    -o OPTION    override Isabelle system OPTION (via NAME=VAL or NAME)
48578
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   281
    -s           system build mode: produce output in ISABELLE_HOME
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   282
    -v           verbose
60106
e0d1d9203275 allow to exclude session groups;
wenzelm
parents: 59892
diff changeset
   283
    -x NAME      exclude session NAME and all descendants
48578
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   284
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   285
  Build and manage Isabelle sessions, depending on implicit
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   286
  ISABELLE_BUILD_OPTIONS="..."
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   287
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   288
  ML_PLATFORM="..."
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   289
  ML_HOME="..."
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   290
  ML_SYSTEM="..."
61407
7ba7b8103565 @{verbatim [display]} supersedes old alltt/ttbox;
wenzelm
parents: 61406
diff changeset
   291
  ML_OPTIONS="..."\<close>}
48578
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   292
61406
eb2463fc4d7b more symbols;
wenzelm
parents: 60106
diff changeset
   293
  \<^medskip>
eb2463fc4d7b more symbols;
wenzelm
parents: 60106
diff changeset
   294
  Isabelle sessions are defined via session ROOT files as
48578
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   295
  described in (\secref{sec:session-root}).  The totality of sessions
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   296
  is determined by collecting such specifications from all Isabelle
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   297
  component directories (\secref{sec:components}), augmented by more
61503
28e788ca2c5d more control symbols;
wenzelm
parents: 61493
diff changeset
   298
  directories given via options \<^verbatim>\<open>-d\<close>~\<open>DIR\<close> on the
48578
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   299
  command line.  Each such directory may contain a session
61503
28e788ca2c5d more control symbols;
wenzelm
parents: 61493
diff changeset
   300
  \<^verbatim>\<open>ROOT\<close> file with several session specifications.
48578
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   301
48684
9170e10c651e re-introduced ROOTS catalog files (cf. 47330b712f8f) which help to organize AFP or make -d options persistent;
wenzelm
parents: 48683
diff changeset
   302
  Any session root directory may refer recursively to further
9170e10c651e re-introduced ROOTS catalog files (cf. 47330b712f8f) which help to organize AFP or make -d options persistent;
wenzelm
parents: 48683
diff changeset
   303
  directories of the same kind, by listing them in a catalog file
61503
28e788ca2c5d more control symbols;
wenzelm
parents: 61493
diff changeset
   304
  \<^verbatim>\<open>ROOTS\<close> line-by-line.  This helps to organize large
28e788ca2c5d more control symbols;
wenzelm
parents: 61493
diff changeset
   305
  collections of session specifications, or to make \<^verbatim>\<open>-d\<close>
28e788ca2c5d more control symbols;
wenzelm
parents: 61493
diff changeset
   306
  command line options persistent (say within
28e788ca2c5d more control symbols;
wenzelm
parents: 61493
diff changeset
   307
  \<^verbatim>\<open>$ISABELLE_HOME_USER/ROOTS\<close>).
48684
9170e10c651e re-introduced ROOTS catalog files (cf. 47330b712f8f) which help to organize AFP or make -d options persistent;
wenzelm
parents: 48683
diff changeset
   308
61406
eb2463fc4d7b more symbols;
wenzelm
parents: 60106
diff changeset
   309
  \<^medskip>
eb2463fc4d7b more symbols;
wenzelm
parents: 60106
diff changeset
   310
  The subset of sessions to be managed is determined via
61493
0debd22f0c0e isabelle update_cartouches -t;
wenzelm
parents: 61477
diff changeset
   311
  individual \<open>SESSIONS\<close> given as command-line arguments, or
61503
28e788ca2c5d more control symbols;
wenzelm
parents: 61493
diff changeset
   312
  session groups that are given via one or more options \<^verbatim>\<open>-g\<close>~\<open>NAME\<close>.
28e788ca2c5d more control symbols;
wenzelm
parents: 61493
diff changeset
   313
  Option \<^verbatim>\<open>-a\<close> selects all sessions.
48604
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
   314
  The build tool takes session dependencies into account: the set of
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
   315
  selected sessions is completed by including all ancestors.
48578
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   316
61406
eb2463fc4d7b more symbols;
wenzelm
parents: 60106
diff changeset
   317
  \<^medskip>
61503
28e788ca2c5d more control symbols;
wenzelm
parents: 61493
diff changeset
   318
  One or more options \<^verbatim>\<open>-x\<close>~\<open>NAME\<close> specify
59892
2a616319c171 added isabelle build option -x, to exclude sessions;
wenzelm
parents: 59891
diff changeset
   319
  sessions to be excluded. All descendents of excluded sessions are removed
61503
28e788ca2c5d more control symbols;
wenzelm
parents: 61493
diff changeset
   320
  from the selection as specified above. Option \<^verbatim>\<open>-X\<close> is
60106
e0d1d9203275 allow to exclude session groups;
wenzelm
parents: 59892
diff changeset
   321
  analogous to this, but excluded sessions are specified by session group
e0d1d9203275 allow to exclude session groups;
wenzelm
parents: 59892
diff changeset
   322
  membership.
59892
2a616319c171 added isabelle build option -x, to exclude sessions;
wenzelm
parents: 59891
diff changeset
   323
61406
eb2463fc4d7b more symbols;
wenzelm
parents: 60106
diff changeset
   324
  \<^medskip>
61503
28e788ca2c5d more control symbols;
wenzelm
parents: 61493
diff changeset
   325
  Option \<^verbatim>\<open>-R\<close> reverses the selection in the sense
49131
aa1e2ba3c697 added build option -R;
wenzelm
parents: 48985
diff changeset
   326
  that it refers to its requirements: all ancestor sessions excluding
aa1e2ba3c697 added build option -R;
wenzelm
parents: 48985
diff changeset
   327
  the original selection.  This allows to prepare the stage for some
aa1e2ba3c697 added build option -R;
wenzelm
parents: 48985
diff changeset
   328
  build process with different options, before running the main build
61503
28e788ca2c5d more control symbols;
wenzelm
parents: 61493
diff changeset
   329
  itself (without option \<^verbatim>\<open>-R\<close>).
49131
aa1e2ba3c697 added build option -R;
wenzelm
parents: 48985
diff changeset
   330
61406
eb2463fc4d7b more symbols;
wenzelm
parents: 60106
diff changeset
   331
  \<^medskip>
61503
28e788ca2c5d more control symbols;
wenzelm
parents: 61493
diff changeset
   332
  Option \<^verbatim>\<open>-D\<close> is similar to \<^verbatim>\<open>-d\<close>, but
48737
f3bbb9ca57d6 added build option -D: include session directory and select its sessions;
wenzelm
parents: 48693
diff changeset
   333
  selects all sessions that are defined in the given directories.
f3bbb9ca57d6 added build option -D: include session directory and select its sessions;
wenzelm
parents: 48693
diff changeset
   334
61406
eb2463fc4d7b more symbols;
wenzelm
parents: 60106
diff changeset
   335
  \<^medskip>
eb2463fc4d7b more symbols;
wenzelm
parents: 60106
diff changeset
   336
  The build process depends on additional options
48604
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
   337
  (\secref{sec:system-options}) that are passed to the prover
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
   338
  eventually.  The settings variable @{setting_ref
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
   339
  ISABELLE_BUILD_OPTIONS} allows to provide additional defaults, e.g.\
61503
28e788ca2c5d more control symbols;
wenzelm
parents: 61493
diff changeset
   340
  \<^verbatim>\<open>ISABELLE_BUILD_OPTIONS="document=pdf threads=4"\<close>. Moreover,
48604
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
   341
  the environment of system build options may be augmented on the
61503
28e788ca2c5d more control symbols;
wenzelm
parents: 61493
diff changeset
   342
  command line via \<^verbatim>\<open>-o\<close>~\<open>name\<close>\<^verbatim>\<open>=\<close>\<open>value\<close> or \<^verbatim>\<open>-o\<close>~\<open>name\<close>, which
28e788ca2c5d more control symbols;
wenzelm
parents: 61493
diff changeset
   343
  abbreviates \<^verbatim>\<open>-o\<close>~\<open>name\<close>\<^verbatim>\<open>=true\<close> for
28e788ca2c5d more control symbols;
wenzelm
parents: 61493
diff changeset
   344
  Boolean options.  Multiple occurrences of \<^verbatim>\<open>-o\<close> on the
48604
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
   345
  command-line are applied in the given order.
48578
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   346
61406
eb2463fc4d7b more symbols;
wenzelm
parents: 60106
diff changeset
   347
  \<^medskip>
61503
28e788ca2c5d more control symbols;
wenzelm
parents: 61493
diff changeset
   348
  Option \<^verbatim>\<open>-b\<close> ensures that heap images are
48578
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   349
  produced for all selected sessions.  By default, images are only
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   350
  saved for inner nodes of the hierarchy of sessions, as required for
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   351
  other sessions to continue later on.
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   352
61406
eb2463fc4d7b more symbols;
wenzelm
parents: 60106
diff changeset
   353
  \<^medskip>
61503
28e788ca2c5d more control symbols;
wenzelm
parents: 61493
diff changeset
   354
  Option \<^verbatim>\<open>-c\<close> cleans all descendants of the
48595
231e6fa96dbb added build option -c;
wenzelm
parents: 48594
diff changeset
   355
  selected sessions before performing the specified build operation.
231e6fa96dbb added build option -c;
wenzelm
parents: 48594
diff changeset
   356
61406
eb2463fc4d7b more symbols;
wenzelm
parents: 60106
diff changeset
   357
  \<^medskip>
61503
28e788ca2c5d more control symbols;
wenzelm
parents: 61493
diff changeset
   358
  Option \<^verbatim>\<open>-n\<close> omits the actual build process
48595
231e6fa96dbb added build option -c;
wenzelm
parents: 48594
diff changeset
   359
  after the preparatory stage (including optional cleanup).  Note that
231e6fa96dbb added build option -c;
wenzelm
parents: 48594
diff changeset
   360
  the return code always indicates the status of the set of selected
231e6fa96dbb added build option -c;
wenzelm
parents: 48594
diff changeset
   361
  sessions.
231e6fa96dbb added build option -c;
wenzelm
parents: 48594
diff changeset
   362
61406
eb2463fc4d7b more symbols;
wenzelm
parents: 60106
diff changeset
   363
  \<^medskip>
61503
28e788ca2c5d more control symbols;
wenzelm
parents: 61493
diff changeset
   364
  Option \<^verbatim>\<open>-j\<close> specifies the maximum number of
48604
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
   365
  parallel build jobs (prover processes).  Each prover process is
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
   366
  subject to a separate limit of parallel worker threads, cf.\ system
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
   367
  option @{system_option_ref threads}.
48578
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   368
61406
eb2463fc4d7b more symbols;
wenzelm
parents: 60106
diff changeset
   369
  \<^medskip>
61503
28e788ca2c5d more control symbols;
wenzelm
parents: 61493
diff changeset
   370
  Option \<^verbatim>\<open>-s\<close> enables \<^emph>\<open>system mode\<close>, which
48578
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   371
  means that resulting heap images and log files are stored in
54705
0dff3326d12a provide @{file_unchecked} in Isabelle/Pure;
wenzelm
parents: 54704
diff changeset
   372
  @{file_unchecked "$ISABELLE_HOME/heaps"} instead of the default location
48578
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   373
  @{setting ISABELLE_OUTPUT} (which is normally in @{setting
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   374
  ISABELLE_HOME_USER}, i.e.\ the user's home directory).
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   375
61406
eb2463fc4d7b more symbols;
wenzelm
parents: 60106
diff changeset
   376
  \<^medskip>
61503
28e788ca2c5d more control symbols;
wenzelm
parents: 61493
diff changeset
   377
  Option \<^verbatim>\<open>-v\<close> increases the general level of
28e788ca2c5d more control symbols;
wenzelm
parents: 61493
diff changeset
   378
  verbosity.  Option \<^verbatim>\<open>-l\<close> lists the source files that
48903
1621b3f26095 added build option -l (list files);
wenzelm
parents: 48814
diff changeset
   379
  contribute to a session.
59891
9ce697050455 added isabelle build option -k, for fast off-line checking of theory sources;
wenzelm
parents: 59446
diff changeset
   380
61406
eb2463fc4d7b more symbols;
wenzelm
parents: 60106
diff changeset
   381
  \<^medskip>
61503
28e788ca2c5d more control symbols;
wenzelm
parents: 61493
diff changeset
   382
  Option \<^verbatim>\<open>-k\<close> specifies a newly proposed keyword for
59891
9ce697050455 added isabelle build option -k, for fast off-line checking of theory sources;
wenzelm
parents: 59446
diff changeset
   383
  outer syntax (multiple uses allowed). The theory sources are checked for
9ce697050455 added isabelle build option -k, for fast off-line checking of theory sources;
wenzelm
parents: 59446
diff changeset
   384
  conflicts wrt.\ this hypothetical change of syntax, e.g.\ to reveal
9ce697050455 added isabelle build option -k, for fast off-line checking of theory sources;
wenzelm
parents: 59446
diff changeset
   385
  occurrences of identifiers that need to be quoted.\<close>
9ce697050455 added isabelle build option -k, for fast off-line checking of theory sources;
wenzelm
parents: 59446
diff changeset
   386
48578
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   387
58618
782f0b662cae more cartouches;
wenzelm
parents: 58553
diff changeset
   388
subsubsection \<open>Examples\<close>
48578
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   389
58618
782f0b662cae more cartouches;
wenzelm
parents: 58553
diff changeset
   390
text \<open>
48578
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   391
  Build a specific logic image:
61407
7ba7b8103565 @{verbatim [display]} supersedes old alltt/ttbox;
wenzelm
parents: 61406
diff changeset
   392
  @{verbatim [display] \<open>isabelle build -b HOLCF\<close>}
48578
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   393
61406
eb2463fc4d7b more symbols;
wenzelm
parents: 60106
diff changeset
   394
  \<^smallskip>
eb2463fc4d7b more symbols;
wenzelm
parents: 60106
diff changeset
   395
  Build the main group of logic images:
61407
7ba7b8103565 @{verbatim [display]} supersedes old alltt/ttbox;
wenzelm
parents: 61406
diff changeset
   396
  @{verbatim [display] \<open>isabelle build -b -g main\<close>}
48578
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   397
61406
eb2463fc4d7b more symbols;
wenzelm
parents: 60106
diff changeset
   398
  \<^smallskip>
eb2463fc4d7b more symbols;
wenzelm
parents: 60106
diff changeset
   399
  Provide a general overview of the status of all Isabelle
48595
231e6fa96dbb added build option -c;
wenzelm
parents: 48594
diff changeset
   400
  sessions, without building anything:
61407
7ba7b8103565 @{verbatim [display]} supersedes old alltt/ttbox;
wenzelm
parents: 61406
diff changeset
   401
  @{verbatim [display] \<open>isabelle build -a -n -v\<close>}
48578
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   402
61406
eb2463fc4d7b more symbols;
wenzelm
parents: 60106
diff changeset
   403
  \<^smallskip>
eb2463fc4d7b more symbols;
wenzelm
parents: 60106
diff changeset
   404
  Build all sessions with HTML browser info and PDF
48595
231e6fa96dbb added build option -c;
wenzelm
parents: 48594
diff changeset
   405
  document preparation:
61407
7ba7b8103565 @{verbatim [display]} supersedes old alltt/ttbox;
wenzelm
parents: 61406
diff changeset
   406
  @{verbatim [display] \<open>isabelle build -a -o browser_info -o document=pdf\<close>}
48578
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   407
61406
eb2463fc4d7b more symbols;
wenzelm
parents: 60106
diff changeset
   408
  \<^smallskip>
eb2463fc4d7b more symbols;
wenzelm
parents: 60106
diff changeset
   409
  Build all sessions with a maximum of 8 parallel prover
48604
f651323139f0 misc tuning;
wenzelm
parents: 48602
diff changeset
   410
  processes and 4 worker threads each (on a machine with many cores):
61407
7ba7b8103565 @{verbatim [display]} supersedes old alltt/ttbox;
wenzelm
parents: 61406
diff changeset
   411
  @{verbatim [display] \<open>isabelle build -a -j8 -o threads=4\<close>}
48595
231e6fa96dbb added build option -c;
wenzelm
parents: 48594
diff changeset
   412
61406
eb2463fc4d7b more symbols;
wenzelm
parents: 60106
diff changeset
   413
  \<^smallskip>
eb2463fc4d7b more symbols;
wenzelm
parents: 60106
diff changeset
   414
  Build some session images with cleanup of their
48595
231e6fa96dbb added build option -c;
wenzelm
parents: 48594
diff changeset
   415
  descendants, while retaining their ancestry:
61407
7ba7b8103565 @{verbatim [display]} supersedes old alltt/ttbox;
wenzelm
parents: 61406
diff changeset
   416
  @{verbatim [display] \<open>isabelle build -b -c HOL-Algebra HOL-Word\<close>}
48595
231e6fa96dbb added build option -c;
wenzelm
parents: 48594
diff changeset
   417
61406
eb2463fc4d7b more symbols;
wenzelm
parents: 60106
diff changeset
   418
  \<^smallskip>
eb2463fc4d7b more symbols;
wenzelm
parents: 60106
diff changeset
   419
  Clean all sessions without building anything:
61407
7ba7b8103565 @{verbatim [display]} supersedes old alltt/ttbox;
wenzelm
parents: 61406
diff changeset
   420
  @{verbatim [display] \<open>isabelle build -a -n -c\<close>}
48737
f3bbb9ca57d6 added build option -D: include session directory and select its sessions;
wenzelm
parents: 48693
diff changeset
   421
61406
eb2463fc4d7b more symbols;
wenzelm
parents: 60106
diff changeset
   422
  \<^smallskip>
eb2463fc4d7b more symbols;
wenzelm
parents: 60106
diff changeset
   423
  Build all sessions from some other directory hierarchy,
61503
28e788ca2c5d more control symbols;
wenzelm
parents: 61493
diff changeset
   424
  according to the settings variable \<^verbatim>\<open>AFP\<close> that happens to
48737
f3bbb9ca57d6 added build option -D: include session directory and select its sessions;
wenzelm
parents: 48693
diff changeset
   425
  be defined inside the Isabelle environment:
61407
7ba7b8103565 @{verbatim [display]} supersedes old alltt/ttbox;
wenzelm
parents: 61406
diff changeset
   426
  @{verbatim [display] \<open>isabelle build -D '$AFP'\<close>}
49131
aa1e2ba3c697 added build option -R;
wenzelm
parents: 48985
diff changeset
   427
61406
eb2463fc4d7b more symbols;
wenzelm
parents: 60106
diff changeset
   428
  \<^smallskip>
eb2463fc4d7b more symbols;
wenzelm
parents: 60106
diff changeset
   429
  Inform about the status of all sessions required for AFP,
49131
aa1e2ba3c697 added build option -R;
wenzelm
parents: 48985
diff changeset
   430
  without building anything yet:
61407
7ba7b8103565 @{verbatim [display]} supersedes old alltt/ttbox;
wenzelm
parents: 61406
diff changeset
   431
  @{verbatim [display] \<open>isabelle build -D '$AFP' -R -v -n\<close>}
58618
782f0b662cae more cartouches;
wenzelm
parents: 58553
diff changeset
   432
\<close>
48578
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   433
21361b6189a6 some description of isabelle build;
wenzelm
parents:
diff changeset
   434
end