equal
deleted
inserted
replaced
1 #!/usr/bin/env bash |
|
2 # |
|
3 # build Isabelle HTML library from platform bundle |
|
4 |
|
5 ## diagnostics |
|
6 |
|
7 PRG=$(basename "$0") |
|
8 |
|
9 function usage() |
|
10 { |
|
11 echo |
|
12 echo "Usage: $PRG [OPTIONS] ARCHIVE" |
|
13 echo |
|
14 echo " Options are:" |
|
15 echo " -j INT maximum number of parallel jobs (default 1)" |
|
16 echo |
|
17 echo " Build Isabelle HTML library from platform bundle." |
|
18 echo |
|
19 exit 1 |
|
20 } |
|
21 |
|
22 function fail() |
|
23 { |
|
24 echo "$1" >&2 |
|
25 exit 2 |
|
26 } |
|
27 |
|
28 |
|
29 ## process command line |
|
30 |
|
31 # options |
|
32 |
|
33 JOBS="" |
|
34 |
|
35 while getopts "j:" OPT |
|
36 do |
|
37 case "$OPT" in |
|
38 j) |
|
39 JOBS="-j $OPTARG" |
|
40 ;; |
|
41 \?) |
|
42 usage |
|
43 ;; |
|
44 esac |
|
45 done |
|
46 |
|
47 shift $(($OPTIND - 1)) |
|
48 |
|
49 |
|
50 # args |
|
51 |
|
52 [ "$#" -ne 1 ] && usage |
|
53 |
|
54 ARCHIVE="$1"; shift |
|
55 |
|
56 [ ! -f "$ARCHIVE" ] && fail "Bad archive file $ARCHIVE" |
|
57 ARCHIVE_BASE="$(basename "$ARCHIVE")" |
|
58 ARCHIVE_DIR="$(cd "$(dirname "$ARCHIVE")"; echo "$PWD")" |
|
59 ARCHIVE_FULL="$ARCHIVE_DIR/$ARCHIVE_BASE" |
|
60 |
|
61 |
|
62 ## main |
|
63 |
|
64 #GNU tar (notably on Mac OS X) |
|
65 type -p gnutar >/dev/null && function tar() { gnutar "$@"; } |
|
66 |
|
67 TMP="/var/tmp/isabelle-makedist$$" |
|
68 mkdir "$TMP" || fail "Cannot create directory: \"$TMP\"" |
|
69 |
|
70 cd "$TMP" |
|
71 tar -x -z -f "$ARCHIVE_FULL" |
|
72 |
|
73 cd * |
|
74 ISABELLE_NAME="$(basename "$PWD")" |
|
75 |
|
76 env ISABELLE_IDENTIFIER="${ISABELLE_NAME}-build" \ |
|
77 ./bin/isabelle build $JOBS -s -c -a -d '~~/src/Benchmarks' -o browser_info \ |
|
78 -o "document=pdf" -o "document_variants=document:outline=/proof,/ML" |
|
79 RC="$?" |
|
80 |
|
81 cd .. |
|
82 |
|
83 if [ "$RC" = 0 ]; then |
|
84 chmod -R a+r "$ISABELLE_NAME" |
|
85 chmod -R g=o "$ISABELLE_NAME" |
|
86 tar -c -z -f "$ARCHIVE_DIR/${ISABELLE_NAME}_library.tar.gz" "$ISABELLE_NAME/browser_info" |
|
87 fi |
|
88 |
|
89 # clean up |
|
90 cd /tmp |
|
91 rm -rf "$TMP" |
|
92 |
|
93 exit "$RC" |
|