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