1 #!/bin/sh |
|
2 |
|
3 # Create AnnoMaLy documentation for Isabelle |
|
4 # See http://martin.von-gagern.net/projects/annomaly/ |
|
5 # 2007 Martin von Gagern (martin@von-gagern.net) |
|
6 |
|
7 # Abort on any error |
|
8 set -e -o pipefail |
|
9 |
|
10 BUILD_DIR="$HOME/isabelle.annomaly" |
|
11 ISABELLE_HOME="$BUILD_DIR/Isabelle" |
|
12 ISABELLE_CVS="$HOME/isabelle.cvs" |
|
13 ADMIN_CVS="$ISABELLE_CVS/Admin" |
|
14 # ISABELLE_HOME="$ISABELLE_CVS/Distribution" |
|
15 ISABELLE_SRC="$ISABELLE_HOME/src" |
|
16 HTML_DIR="$HOME/html-data/isabelle-doc" |
|
17 export CVS_RSH=ssh |
|
18 export SMLNJ_HOME="$HOME/annomaly" |
|
19 export PATH="$SMLNJ_HOME/bin:$PATH" |
|
20 export SML_DOC_DIR="$HTML_DIR.tmp" |
|
21 # export SML_DOC_DEBUG="all" |
|
22 TARGET=HOL |
|
23 CVSUP=true |
|
24 |
|
25 # Parse command line |
|
26 for ARG in "$@"; do case "$ARG" in |
|
27 -p) TARGET=Pure ;; |
|
28 -n) CVSUP=false ;; |
|
29 -l) export SML_LOG_DIR="$HOME/logs" ;; |
|
30 esac; done |
|
31 |
|
32 # Update CVS |
|
33 cd "$ADMIN_CVS" |
|
34 if $CVSUP; then |
|
35 echo "Updating CVS" |
|
36 cvs -q up -d |
|
37 fi |
|
38 |
|
39 # Find nightly isabelle tarball |
|
40 ISABELLE_TAR="" |
|
41 for i in /home/html/isatest/Isabelle_[0-9]*-20[0-9][0-9].tar.gz; do |
|
42 if [[ -r "$i" ]]; then ISABELLE_TAR="$i"; fi |
|
43 done |
|
44 if [[ -z $ISABELLE_TAR ]]; then |
|
45 echo "No isabelle tarball found!" >&2 |
|
46 exit 1 |
|
47 fi |
|
48 |
|
49 # Create build environemnt |
|
50 mkdir -p "$BUILD_DIR" |
|
51 cd "$BUILD_DIR" |
|
52 if [[ -d Isabelle ]]; then |
|
53 rm -rf * |
|
54 fi |
|
55 tar xzf "$ISABELLE_TAR" |
|
56 cd "$ISABELLE_HOME" |
|
57 cp "$ADMIN_CVS"/isatest/annomaly.ML src/Pure/ML-Systems/annomaly.ML |
|
58 ln -s run-smlnj lib/scripts/run-annomaly |
|
59 |
|
60 # Create clean output directory |
|
61 rm -rf "$SML_DOC_DIR" |
|
62 mkdir "$SML_DOC_DIR" |
|
63 cp "$SMLNJ_HOME/annomaly/resources/"* "$SML_DOC_DIR" |
|
64 cat > "$SML_DOC_DIR/.htaccess" <<EOF |
|
65 DirectoryIndex index.html source.html |
|
66 <IfModule mod_deflate> |
|
67 SetOutputFilter DEFLATE |
|
68 </IfModule> |
|
69 AddType text/plain .dot |
|
70 EOF |
|
71 |
|
72 # Build isabelle |
|
73 ISABELLE_HOME="$(cd "$ISABELLE_HOME"; pwd -P)" |
|
74 cd "$ISABELLE_HOME" |
|
75 export SML_DOC_REWRITE="isabelle=$(cd src; pwd -P)" |
|
76 rm -rf heaps |
|
77 ./build -b $TARGET |
|
78 cd "$BUILD_DIR" |
|
79 rm -rf * |
|
80 |
|
81 # Postprocess created files |
|
82 cd $SML_DOC_DIR |
|
83 dot -Tsvg depGraph.dot \ |
|
84 | perl -pe 's/(width|height)="(\d+)/sprintf("%s=\"%.2f",$1,$2*0.6)/ge' \ |
|
85 > depGraph.svg |
|
86 dot -Tps2 depGraph.dot > depGraph.ps |
|
87 ps2pdf depGraph.ps depGraph.pdf |
|
88 grep -rl "$ISABELLE_HOME" . | xargs sed -i "s@$ISABELLE_HOME@\$ISABELLE_HOME@g" |
|
89 |
|
90 # Install result by renaming, to be almost atomic |
|
91 rm -rf "$HTML_DIR.bac" |
|
92 if [[ -d $HTML_DIR ]]; then mv "$HTML_DIR" "$HTML_DIR.bac"; fi |
|
93 mv "$SML_DOC_DIR" "$HTML_DIR" |
|
94 rm -rf "$HTML_DIR.bac" |
|
95 |
|
96 # Done |
|
97 echo "Completed successfully" |
|
98 exit 0 |
|