lib/Tools/usedir
author wenzelm
Wed, 20 Oct 1999 11:06:47 +0200
changeset 7888 6e9669c311ae
parent 7796 624f609e10d7
child 8197 baab8e487fad
permissions -rwxr-xr-x
removed -B option;
     1 #!/bin/bash
     2 #
     3 # $Id$
     4 #
     5 # DESCRIPTION: build object-logic or run examples
     6 
     7 
     8 ## diagnostics
     9 
    10 PRG=$(basename $0)
    11 
    12 function usage()
    13 {
    14   echo
    15   echo "Usage: $PRG LOGIC NAME"
    16   echo
    17   echo "  Options are:"
    18   echo "    -P PATH      set path for remote theory browsing information"
    19   echo "    -b           build mode (output heap image, using current dir)"
    20   echo "    -d FORMAT    build document as FORMAT (default false)"
    21   echo "    -i BOOL      generate theory browsing information,"
    22   echo "                 i.e. HTML / graph data (default false)"
    23   echo "    -r           reset session path"
    24   echo "    -s NAME      override session NAME"
    25   echo
    26   echo "  Build object-logic or run examples. Also creates browsing"
    27   echo "  information (HTML etc.) according to settings."
    28   echo
    29   echo "  ISABELLE_USEDIR_OPTIONS=$ISABELLE_USEDIR_OPTIONS"
    30   echo
    31   exit 1
    32 }
    33 
    34 
    35 ## process command line
    36 
    37 # options
    38 
    39 BUILD=""
    40 DOCUMENT=false
    41 INFO=false
    42 RESET=false
    43 SESSION=""
    44 RPATH=""
    45 
    46 function getoptions()
    47 {
    48   OPTIND=1
    49   while getopts "P:bc:d:i:rs:" OPT
    50   do
    51     case "$OPT" in
    52       b)
    53         BUILD=true
    54         ;;
    55       d)
    56         DOCUMENT="$OPTARG"
    57         ;;
    58       i)
    59         INFO="$OPTARG"
    60         ;;
    61       r)
    62         RESET=true
    63         ;;
    64       s)
    65         SESSION="$OPTARG"
    66         ;;
    67       P)
    68         RPATH="$OPTARG"
    69         ;;
    70       \?)
    71         usage
    72         ;;
    73     esac
    74   done
    75 }
    76 
    77 getoptions $ISABELLE_USEDIR_OPTIONS
    78 
    79 getoptions "$@"
    80 shift $(($OPTIND - 1))
    81 
    82 
    83 # args
    84 
    85 [ $# -ne 2 ] && usage
    86 
    87 LOGIC="$1"; shift
    88 NAME="$1"; shift
    89 
    90 [ -z "$SESSION" ] && SESSION=$(basename $NAME)
    91 
    92 
    93 
    94 ## main
    95 
    96 # prepare browser info dir
    97 
    98 if [ "$INFO" = "true" -a ! -f $ISABELLE_BROWSER_INFO/index.html ]; then
    99 
   100   mkdir -p $ISABELLE_BROWSER_INFO/gif
   101   cp $ISABELLE_HOME/lib/logo/isabelle.gif $ISABELLE_BROWSER_INFO/gif/isabelle.gif
   102   cp $ISABELLE_HOME/lib/html/index1.html $ISABELLE_BROWSER_INFO/index.html
   103 
   104   mkdir -p $ISABELLE_BROWSER_INFO/graph
   105   cp $ISABELLE_HOME/lib/html/index2.html $ISABELLE_BROWSER_INFO/graph/index.html
   106   mkdir $ISABELLE_BROWSER_INFO/graph/GraphBrowser
   107   mkdir $ISABELLE_BROWSER_INFO/graph/awtUtilities
   108   cp $ISABELLE_HOME/lib/browser/GraphBrowser/*.class $ISABELLE_BROWSER_INFO/graph/GraphBrowser
   109   cp $ISABELLE_HOME/lib/browser/awtUtilities/*.class $ISABELLE_BROWSER_INFO/graph/awtUtilities
   110 
   111 fi
   112 
   113 
   114 # prepare log dir
   115 
   116 LOGDIR="$ISABELLE_OUTPUT/log"
   117 mkdir -p "$LOGDIR"
   118 
   119 
   120 # run isabelle
   121 
   122 PARENT=$(basename "$LOGIC")
   123 
   124 [ -z "$BUILD" ] && cd "$NAME"
   125 
   126 DOC=""
   127 [ "$DOCUMENT" != false -a -d document ] && DOC="$DOCUMENT"
   128 
   129 
   130 SECONDS=0
   131 
   132 if [ -n "$BUILD" ]; then
   133   ITEM="$SESSION"
   134   echo "Building $ITEM ..."
   135   LOG="$LOGDIR/$ITEM"
   136 
   137   $ISABELLE \
   138     -e "Session.use_dir $RESET $INFO \"$DOC\" \"$PARENT\" \"$SESSION\" \"$RPATH\";" \
   139     -q -w $LOGIC $NAME > $LOG 2>&1
   140   RC=$?
   141 else
   142   ITEM=$(basename $LOGIC)-"$SESSION"
   143   echo "Running $ITEM ..."
   144   LOG="$LOGDIR/$ITEM"
   145 
   146   $ISABELLE \
   147     -e "Session.use_dir $RESET $INFO \"$DOC\" \"$PARENT\" \"$SESSION\" \"$RPATH\"; quit();" \
   148     -r -q $LOGIC > $LOG 2>&1
   149   RC=$?
   150   cd ..
   151 fi
   152 
   153 ELAPSED=$($ISABELLE_HOME/lib/scripts/showtime $SECONDS)
   154 
   155 
   156 # exit status
   157 
   158 if [ $RC -eq 0 ]; then
   159   echo "Finished $ITEM ($ELAPSED elapsed time)"
   160   gzip --force "$LOG"
   161 else
   162   echo "$ITEM FAILED"
   163   echo "(see also $LOG)"
   164   echo; tail $LOG; echo
   165 fi
   166 
   167 exit $RC