Admin/isatest/annomaly
changeset 48454 808a5ba61991
parent 48453 2421ff8c57a5
parent 48452 4ad6182d5bb9
child 48455 a509f19d4cc6
child 48489 aff95a0212d8
equal deleted inserted replaced
48453:2421ff8c57a5 48454:808a5ba61991
     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