| author | wenzelm | 
| Sun, 07 May 2017 13:20:24 +0200 | |
| changeset 65751 | 426d4bf3b9bb | 
| parent 65743 | 4847ca570454 | 
| child 65770 | fb8a7962f2ae | 
| permissions | -rwxr-xr-x | 
| 34282 
549969a7f582
simplified build/bootstrap of Isabelle/Scala components -- avoid make;
 wenzelm parents: diff
changeset | 1 | #!/usr/bin/env bash | 
| 
549969a7f582
simplified build/bootstrap of Isabelle/Scala components -- avoid make;
 wenzelm parents: diff
changeset | 2 | # | 
| 
549969a7f582
simplified build/bootstrap of Isabelle/Scala components -- avoid make;
 wenzelm parents: diff
changeset | 3 | # Author: Makarius | 
| 
549969a7f582
simplified build/bootstrap of Isabelle/Scala components -- avoid make;
 wenzelm parents: diff
changeset | 4 | # | 
| 42899 | 5 | # build-jars - build Isabelle/Scala | 
| 34282 
549969a7f582
simplified build/bootstrap of Isabelle/Scala components -- avoid make;
 wenzelm parents: diff
changeset | 6 | # | 
| 
549969a7f582
simplified build/bootstrap of Isabelle/Scala components -- avoid make;
 wenzelm parents: diff
changeset | 7 | # Requires proper Isabelle settings environment. | 
| 
549969a7f582
simplified build/bootstrap of Isabelle/Scala components -- avoid make;
 wenzelm parents: diff
changeset | 8 | |
| 43320 | 9 | ## sources | 
| 10 | ||
| 11 | declare -a SOURCES=( | |
| 65071 | 12 | Admin/build_cygwin.scala | 
| 64161 | 13 | Admin/build_doc.scala | 
| 64890 
d8ccbd5305bf
build docker image from Isabelle application bundle for Linux;
 wenzelm parents: 
64872diff
changeset | 14 | Admin/build_docker.scala | 
| 64160 | 15 | Admin/build_history.scala | 
| 64929 | 16 | Admin/build_jdk.scala | 
| 64160 | 17 | Admin/build_log.scala | 
| 64483 | 18 | Admin/build_polyml.scala | 
| 64202 | 19 | Admin/build_release.scala | 
| 65734 | 20 | Admin/build_stats_legacy.scala | 
| 65743 | 21 | Admin/build_status.scala | 
| 64161 | 22 | Admin/check_sources.scala | 
| 64160 | 23 | Admin/ci_profile.scala | 
| 64148 | 24 | Admin/isabelle_cronjob.scala | 
| 65650 | 25 | Admin/jenkins.scala | 
| 64369 | 26 | Admin/news.scala | 
| 64188 | 27 | Admin/other_isabelle.scala | 
| 64161 | 28 | Admin/remote_dmg.scala | 
| 56695 
963732291084
consumer thread with unbounded queueing of requests (similar to Message_Channel in ML);
 wenzelm parents: 
56693diff
changeset | 29 | Concurrent/consumer_thread.scala | 
| 43660 | 30 | Concurrent/counter.scala | 
| 56768 | 31 | Concurrent/event_timer.scala | 
| 43320 | 32 | Concurrent/future.scala | 
| 56693 | 33 | Concurrent/mailbox.scala | 
| 59136 
c2b23cb8a677
added Par_List in Scala, in accordance to ML version;
 wenzelm parents: 
58928diff
changeset | 34 | Concurrent/par_list.scala | 
| 61556 | 35 | Concurrent/standard_thread.scala | 
| 56685 | 36 | Concurrent/synchronized.scala | 
| 57647 | 37 | GUI/color_value.scala | 
| 38 | GUI/gui.scala | |
| 39 | GUI/gui_thread.scala | |
| 40 | GUI/html5_panel.scala | |
| 57908 
1937603dbdf2
separate Java FX modules -- no need to include jfxrt.jar by default;
 wenzelm parents: 
57905diff
changeset | 41 | GUI/jfx_gui.scala | 
| 57647 | 42 | GUI/popup.scala | 
| 43 | GUI/wrap_panel.scala | |
| 55511 
984e210d412e
antiquotations within plain text: Scala version in accordance to ML;
 wenzelm parents: 
55497diff
changeset | 44 | General/antiquote.scala | 
| 54439 | 45 | General/bytes.scala | 
| 64610 | 46 | General/codepoint.scala | 
| 55673 
0286219c1261
clarified module location (again, see 763d35697338);
 wenzelm parents: 
55511diff
changeset | 47 | General/completion.scala | 
| 64056 | 48 | General/date.scala | 
| 62508 
d0b68218ea55
discontinued RAW session: bootstrap directly from isabelle_process RAW_ML_SYSTEM;
 wenzelm parents: 
62452diff
changeset | 49 | General/exn.scala | 
| 48411 
5b3440850d36
more abstract file system operations in Scala, corresponding to ML version;
 wenzelm parents: 
48410diff
changeset | 50 | General/file.scala | 
| 64699 | 51 | General/file_watcher.scala | 
| 46611 | 52 | General/graph.scala | 
| 59244 
19b5fc4b2b38
more uniform support for graph display in ML/Scala;
 wenzelm parents: 
59232diff
changeset | 53 | General/graph_display.scala | 
| 51098 | 54 | General/graphics_file.scala | 
| 65077 | 55 | General/http.scala | 
| 63644 | 56 | General/json.scala | 
| 43320 | 57 | General/linear_set.scala | 
| 64606 | 58 | General/logger.scala | 
| 56800 | 59 | General/long_name.scala | 
| 63997 
e11ccb5aa82f
more formal Mercurial support (with the potential to upgrade to command server);
 wenzelm parents: 
63823diff
changeset | 60 | General/mercurial.scala | 
| 52975 | 61 | General/multi_map.scala | 
| 56782 
433cf57550fa
more systematic Isabelle output, like in classic Isabelle/ML (without markup);
 wenzelm parents: 
56768diff
changeset | 62 | General/output.scala | 
| 43600 
4ac04bf9ff89
abstract algebra of file paths in Scala (cf. path.ML);
 wenzelm parents: 
43523diff
changeset | 63 | General/path.scala | 
| 43320 | 64 | General/position.scala | 
| 65 | General/pretty.scala | |
| 43780 | 66 | General/properties.scala | 
| 43320 | 67 | General/scan.scala | 
| 68 | General/sha1.scala | |
| 63788 | 69 | General/sql.scala | 
| 64123 | 70 | General/ssh.scala | 
| 43320 | 71 | General/symbol.scala | 
| 45674 | 72 | General/time.scala | 
| 45666 | 73 | General/timing.scala | 
| 57647 | 74 | General/untyped.scala | 
| 56501 
5fda9e5c5874
basic URL operations (with Isabelle/Scala error handling);
 wenzelm parents: 
56429diff
changeset | 75 | General/url.scala | 
| 64639 | 76 | General/utf8.scala | 
| 63805 | 77 | General/value.scala | 
| 56599 | 78 | General/word.scala | 
| 64000 | 79 | General/xz.scala | 
| 63604 | 80 | Isar/document_structure.scala | 
| 43320 | 81 | Isar/keyword.scala | 
| 63603 | 82 | Isar/line_structure.scala | 
| 43320 | 83 | Isar/outer_syntax.scala | 
| 84 | Isar/parse.scala | |
| 85 | Isar/token.scala | |
| 65477 | 86 | ML/ml_console.scala | 
| 55497 | 87 | ML/ml_lex.scala | 
| 65477 | 88 | ML/ml_process.scala | 
| 89 | ML/ml_statistics.scala | |
| 62528 | 90 | ML/ml_syntax.scala | 
| 43320 | 91 | PIDE/command.scala | 
| 57905 
c0c5652e796e
separate module Command_Span: mostly syntactic representation;
 wenzelm parents: 
57900diff
changeset | 92 | PIDE/command_span.scala | 
| 43320 | 93 | PIDE/document.scala | 
| 52530 
99dd8b4ef3fe
explicit module Document_ID as source of globally unique identifiers across ML/Scala;
 wenzelm parents: 
52444diff
changeset | 94 | PIDE/document_id.scala | 
| 52971 
31926d2c04ee
tuned signature -- more abstract PIDE editor operations;
 wenzelm parents: 
52671diff
changeset | 95 | PIDE/editor.scala | 
| 64611 | 96 | PIDE/line.scala | 
| 45670 | 97 | PIDE/markup.scala | 
| 43320 | 98 | PIDE/markup_tree.scala | 
| 45709 
87017fcbad83
clarified modules (again) -- NB: both Document and Protocol are specific to this particular prover;
 wenzelm parents: 
45674diff
changeset | 99 | PIDE/protocol.scala | 
| 65214 | 100 | PIDE/protocol_handlers.scala | 
| 59713 | 101 | PIDE/protocol_message.scala | 
| 56385 | 102 | PIDE/prover.scala | 
| 52981 | 103 | PIDE/query_operation.scala | 
| 64622 
529bbb8977c7
more uniform rendering for Isabelle/jEdit and Isabelle/VSCode;
 wenzelm parents: 
64617diff
changeset | 104 | PIDE/rendering.scala | 
| 56208 | 105 | PIDE/resources.scala | 
| 56210 | 106 | PIDE/session.scala | 
| 43320 | 107 | PIDE/text.scala | 
| 44698 | 108 | PIDE/xml.scala | 
| 109 | PIDE/yxml.scala | |
| 57647 | 110 | ROOT.scala | 
| 62584 | 111 | System/bash.scala | 
| 61925 | 112 | System/command_line.scala | 
| 61282 | 113 | System/cygwin.scala | 
| 62845 | 114 | System/distribution.scala | 
| 62431 | 115 | System/getopts.scala | 
| 43744 
2c7e1565b4a3
some support to invoke Scala methods under program control;
 wenzelm parents: 
43730diff
changeset | 116 | System/invoke_scala.scala | 
| 43517 | 117 | System/isabelle_charset.scala | 
| 43320 | 118 | System/isabelle_process.scala | 
| 119 | System/isabelle_system.scala | |
| 62829 
4141c2a8458b
clarified Isabelle tool wrapper: bash, Scala, no perl, no ML;
 wenzelm parents: 
62631diff
changeset | 120 | System/isabelle_tool.scala | 
| 64264 
42138702d6ec
support for Non-Uniform Memory Access of separate CPU nodes;
 wenzelm parents: 
64202diff
changeset | 121 | System/numa.scala | 
| 48365 
d88aefda01c4
basic support for stand-alone options with external string representation;
 wenzelm parents: 
48346diff
changeset | 122 | System/options.scala | 
| 43320 | 123 | System/platform.scala | 
| 56860 | 124 | System/posix_interrupt.scala | 
| 62400 | 125 | System/process_result.scala | 
| 61276 | 126 | System/progress.scala | 
| 45027 
f459e93a038e
more abstract wrapping of fifos as System_Channel;
 wenzelm parents: 
44698diff
changeset | 127 | System/system_channel.scala | 
| 43320 | 128 | Thy/html.scala | 
| 50707 
5b2bf7611662
maintain session index on Scala side, for more determistic results;
 wenzelm parents: 
50689diff
changeset | 129 | Thy/present.scala | 
| 62631 | 130 | Thy/sessions.scala | 
| 43320 | 131 | Thy/thy_header.scala | 
| 43651 
511df47bcadc
some support for theory files within Isabelle/Scala session;
 wenzelm parents: 
43600diff
changeset | 132 | Thy/thy_info.scala | 
| 43320 | 133 | Thy/thy_syntax.scala | 
| 58523 | 134 | Tools/bibtex.scala | 
| 57647 | 135 | Tools/build.scala | 
| 59891 
9ce697050455
added isabelle build option -k, for fast off-line checking of theory sources;
 wenzelm parents: 
59713diff
changeset | 136 | Tools/check_keywords.scala | 
| 60749 | 137 | Tools/debugger.scala | 
| 52444 
2cfe6656d6d6
slightly improved "isabelle doc" based on Isabelle/Scala;
 wenzelm parents: 
52439diff
changeset | 138 | Tools/doc.scala | 
| 65557 | 139 | Tools/imports.scala | 
| 50687 | 140 | Tools/main.scala | 
| 56864 | 141 | Tools/print_operation.scala | 
| 64342 | 142 | Tools/profiling_report.scala | 
| 54730 | 143 | Tools/simplifier_trace.scala | 
| 65139 | 144 | Tools/spell_checker.scala | 
| 50980 | 145 | Tools/task_statistics.scala | 
| 58610 | 146 | Tools/update_cartouches.scala | 
| 58872 | 147 | Tools/update_header.scala | 
| 61216 | 148 | Tools/update_then.scala | 
| 61337 | 149 | Tools/update_theorems.scala | 
| 43320 | 150 | library.scala | 
| 43730 
a0ed7bc688b5
lambda terms with XML data representation in Scala;
 wenzelm parents: 
43715diff
changeset | 151 | term.scala | 
| 43779 | 152 | term_xml.scala | 
| 64609 | 153 | ../Tools/Graphview/graph_file.scala | 
| 154 | ../Tools/Graphview/graph_panel.scala | |
| 155 | ../Tools/Graphview/graphview.scala | |
| 156 | ../Tools/Graphview/layout.scala | |
| 157 | ../Tools/Graphview/main_panel.scala | |
| 158 | ../Tools/Graphview/metrics.scala | |
| 159 | ../Tools/Graphview/model.scala | |
| 160 | ../Tools/Graphview/mutator.scala | |
| 161 | ../Tools/Graphview/mutator_dialog.scala | |
| 162 | ../Tools/Graphview/mutator_event.scala | |
| 163 | ../Tools/Graphview/popups.scala | |
| 164 | ../Tools/Graphview/shapes.scala | |
| 165 | ../Tools/Graphview/tree_panel.scala | |
| 65138 | 166 | ../Tools/VSCode/src/build_vscode.scala | 
| 64609 | 167 | ../Tools/VSCode/src/channel.scala | 
| 168 | ../Tools/VSCode/src/document_model.scala | |
| 65191 
4c9c83311cad
dynamic output, depending on caret focus (see also Tools/jEdit/src/output_dockable.scala);
 wenzelm parents: 
65139diff
changeset | 169 | ../Tools/VSCode/src/dynamic_output.scala | 
| 64738 
bcdecd466cb2
generate static TextMate grammar for VSCode editor;
 wenzelm parents: 
64699diff
changeset | 170 | ../Tools/VSCode/src/grammar.scala | 
| 64609 | 171 | ../Tools/VSCode/src/protocol.scala | 
| 172 | ../Tools/VSCode/src/server.scala | |
| 64622 
529bbb8977c7
more uniform rendering for Isabelle/jEdit and Isabelle/VSCode;
 wenzelm parents: 
64617diff
changeset | 173 | ../Tools/VSCode/src/vscode_rendering.scala | 
| 64623 | 174 | ../Tools/VSCode/src/vscode_resources.scala | 
| 43320 | 175 | ) | 
| 176 | ||
| 34282 
549969a7f582
simplified build/bootstrap of Isabelle/Scala components -- avoid make;
 wenzelm parents: diff
changeset | 177 | |
| 
549969a7f582
simplified build/bootstrap of Isabelle/Scala components -- avoid make;
 wenzelm parents: diff
changeset | 178 | ## diagnostics | 
| 
549969a7f582
simplified build/bootstrap of Isabelle/Scala components -- avoid make;
 wenzelm parents: diff
changeset | 179 | |
| 43280 | 180 | PRG="$(basename "$0")" | 
| 181 | ||
| 182 | function usage() | |
| 183 | {
 | |
| 184 | echo | |
| 185 | echo "Usage: isabelle $PRG [OPTIONS]" | |
| 186 | echo | |
| 187 | echo " Options are:" | |
| 188 | echo " -f fresh build" | |
| 189 | echo | |
| 190 | exit 1 | |
| 191 | } | |
| 192 | ||
| 34282 
549969a7f582
simplified build/bootstrap of Isabelle/Scala components -- avoid make;
 wenzelm parents: diff
changeset | 193 | function fail() | 
| 
549969a7f582
simplified build/bootstrap of Isabelle/Scala components -- avoid make;
 wenzelm parents: diff
changeset | 194 | {
 | 
| 
549969a7f582
simplified build/bootstrap of Isabelle/Scala components -- avoid make;
 wenzelm parents: diff
changeset | 195 | echo "$1" >&2 | 
| 
549969a7f582
simplified build/bootstrap of Isabelle/Scala components -- avoid make;
 wenzelm parents: diff
changeset | 196 | exit 2 | 
| 
549969a7f582
simplified build/bootstrap of Isabelle/Scala components -- avoid make;
 wenzelm parents: diff
changeset | 197 | } | 
| 
549969a7f582
simplified build/bootstrap of Isabelle/Scala components -- avoid make;
 wenzelm parents: diff
changeset | 198 | |
| 42899 | 199 | [ -z "$ISABELLE_HOME" ] && fail "Missing Isabelle settings environment" | 
| 34282 
549969a7f582
simplified build/bootstrap of Isabelle/Scala components -- avoid make;
 wenzelm parents: diff
changeset | 200 | |
| 
549969a7f582
simplified build/bootstrap of Isabelle/Scala components -- avoid make;
 wenzelm parents: diff
changeset | 201 | |
| 43280 | 202 | ## process command line | 
| 203 | ||
| 204 | # options | |
| 205 | ||
| 206 | FRESH="" | |
| 207 | ||
| 64370 
865b39487b5d
discontinued unused / untested distinction of separate PIDE modules;
 wenzelm parents: 
64369diff
changeset | 208 | while getopts "f" OPT | 
| 43280 | 209 | do | 
| 210 | case "$OPT" in | |
| 211 | f) | |
| 212 | FRESH=true | |
| 213 | ;; | |
| 214 | \?) | |
| 215 | usage | |
| 216 | ;; | |
| 217 | esac | |
| 218 | done | |
| 219 | ||
| 220 | shift $(($OPTIND - 1)) | |
| 221 | ||
| 222 | ||
| 223 | # args | |
| 224 | ||
| 225 | [ "$#" -ne 0 ] && usage | |
| 226 | ||
| 227 | ||
| 49558 | 228 | ## build | 
| 34282 
549969a7f582
simplified build/bootstrap of Isabelle/Scala components -- avoid make;
 wenzelm parents: diff
changeset | 229 | |
| 34284 | 230 | TARGET_DIR="$ISABELLE_HOME/lib/classes" | 
| 53577 | 231 | TARGET="$TARGET_DIR/Pure.jar" | 
| 34282 
549969a7f582
simplified build/bootstrap of Isabelle/Scala components -- avoid make;
 wenzelm parents: diff
changeset | 232 | |
| 43405 | 233 | declare -a UPDATED=() | 
| 234 | ||
| 43280 | 235 | if [ -n "$FRESH" ]; then | 
| 236 | OUTDATED=true | |
| 237 | else | |
| 238 | OUTDATED=false | |
| 43523 | 239 | if [ ! -e "$TARGET" ]; then | 
| 240 | OUTDATED=true | |
| 241 | else | |
| 43405 | 242 |     for DEP in "${SOURCES[@]}"
 | 
| 43280 | 243 | do | 
| 43405 | 244 | [ ! -e "$DEP" ] && fail "Missing file: $DEP" | 
| 43523 | 245 |       [ "$DEP" -nt "$TARGET" ] && {
 | 
| 246 | OUTDATED=true | |
| 247 |         UPDATED["${#UPDATED[@]}"]="$DEP"
 | |
| 248 | } | |
| 43280 | 249 | done | 
| 43405 | 250 | fi | 
| 43280 | 251 | fi | 
| 34282 
549969a7f582
simplified build/bootstrap of Isabelle/Scala components -- avoid make;
 wenzelm parents: diff
changeset | 252 | |
| 34284 | 253 | if [ "$OUTDATED" = true ] | 
| 254 | then | |
| 49173 
fa01a202399c
eliminated potentially confusing terminology of Scala "layer";
 wenzelm parents: 
49068diff
changeset | 255 | echo "### Building Isabelle/Scala ..." | 
| 34282 
549969a7f582
simplified build/bootstrap of Isabelle/Scala components -- avoid make;
 wenzelm parents: diff
changeset | 256 | |
| 43405 | 257 |   [ "${#UPDATED[@]}" -gt 0 ] && {
 | 
| 258 | echo "Changed files:" | |
| 259 |     for FILE in "${UPDATED[@]}"
 | |
| 260 | do | |
| 261 | echo " $FILE" | |
| 262 | done | |
| 263 | } | |
| 264 | ||
| 64375 
74a2af7c5145
remove old target: it is on the classpath and may break scalac;
 wenzelm parents: 
64370diff
changeset | 265 | rm -f "$TARGET" | 
| 34282 
549969a7f582
simplified build/bootstrap of Isabelle/Scala components -- avoid make;
 wenzelm parents: diff
changeset | 266 | rm -rf classes && mkdir classes | 
| 45673 
cd41e3903fbf
separate compilation of PIDE vs. Pure sources, which enables independent Scala library;
 wenzelm parents: 
45672diff
changeset | 267 | |
| 64900 | 268 | SCALAC_OPTIONS="$ISABELLE_SCALAC_OPTIONS -d classes" | 
| 45673 
cd41e3903fbf
separate compilation of PIDE vs. Pure sources, which enables independent Scala library;
 wenzelm parents: 
45672diff
changeset | 269 | |
| 50689 | 270 | ( | 
| 58791 | 271 | classpath "$JAVA_HOME/lib/jfxrt.jar" | 
| 53576 
793a429c63e7
maintain classpath in more elementary manner: turn ISABELLE_CLASSPATH into -classpath option, so that all jars are covered by sun.misc.Launcher.AppClassLoader (e.g. relevant for loading add-on resources);
 wenzelm parents: 
53519diff
changeset | 272 | classpath classes | 
| 61294 | 273 | export CLASSPATH="$(platform_path "$ISABELLE_CLASSPATH")" | 
| 50689 | 274 | |
| 64370 
865b39487b5d
discontinued unused / untested distinction of separate PIDE modules;
 wenzelm parents: 
64369diff
changeset | 275 |     isabelle_scala scalac $SCALAC_OPTIONS "${SOURCES[@]}" || \
 | 
| 
865b39487b5d
discontinued unused / untested distinction of separate PIDE modules;
 wenzelm parents: 
64369diff
changeset | 276 | fail "Failed to compile sources" | 
| 51508 | 277 | ) || exit "$?" | 
| 45673 
cd41e3903fbf
separate compilation of PIDE vs. Pure sources, which enables independent Scala library;
 wenzelm parents: 
45672diff
changeset | 278 | |
| 53577 | 279 | mkdir -p "$TARGET_DIR" || fail "Failed to create directory $TARGET_DIR" | 
| 43280 | 280 | |
| 43285 | 281 | pushd classes >/dev/null | 
| 43280 | 282 | |
| 43517 | 283 | CHARSET_SERVICE="META-INF/services/java.nio.charset.spi.CharsetProvider" | 
| 284 | mkdir -p "$(dirname "$CHARSET_SERVICE")" | |
| 285 | echo isabelle.Isabelle_Charset_Provider > "$CHARSET_SERVICE" | |
| 286 | ||
| 54676 
6b2ca4850b71
uniform use of transparent icons, as for main "apps";
 wenzelm parents: 
54671diff
changeset | 287 | cp "$ISABELLE_HOME/lib/logo/isabelle_transparent-32.gif" isabelle/. | 
| 54709 | 288 | cp "$ISABELLE_HOME/lib/logo/isabelle_transparent.gif" isabelle/. | 
| 53452 
8181bc357dc4
more portable access to icon -- avoid Isabelle_System which is not yet initialized in bootstrap;
 wenzelm parents: 
53279diff
changeset | 289 | |
| 61294 | 290 | isabelle_jdk jar cfe "$(platform_path "$TARGET")" isabelle.Main META-INF isabelle || \ | 
| 43523 | 291 | fail "Failed to produce $TARGET" | 
| 34282 
549969a7f582
simplified build/bootstrap of Isabelle/Scala components -- avoid make;
 wenzelm parents: diff
changeset | 292 | |
| 43280 | 293 | popd >/dev/null | 
| 294 | ||
| 34282 
549969a7f582
simplified build/bootstrap of Isabelle/Scala components -- avoid make;
 wenzelm parents: diff
changeset | 295 | rm -rf classes | 
| 
549969a7f582
simplified build/bootstrap of Isabelle/Scala components -- avoid make;
 wenzelm parents: diff
changeset | 296 | fi |