lib/Tools/usedir
author wenzelm
Mon, 04 Dec 2000 23:21:09 +0100
changeset 10585 58a1ed1edb65
parent 10562 fcd29e58c40c
child 11535 7f4c5cdea239
permissions -rwxr-xr-x
proper order of modes;
wenzelm@10555
     1
#!/usr/bin/env bash
wenzelm@2808
     2
#
wenzelm@2808
     3
# $Id$
wenzelm@9788
     4
# Author: Markus Wenzel, TU Muenchen
wenzelm@9788
     5
# License: GPL (GNU GENERAL PUBLIC LICENSE)
wenzelm@2808
     6
#
wenzelm@2808
     7
# DESCRIPTION: build object-logic or run examples
wenzelm@2808
     8
wenzelm@2808
     9
wenzelm@2808
    10
## diagnostics
wenzelm@2808
    11
wenzelm@10511
    12
PRG="$(basename "$0")"
wenzelm@2808
    13
wenzelm@2808
    14
function usage()
wenzelm@2808
    15
{
wenzelm@2808
    16
  echo
wenzelm@9237
    17
  echo "Usage: $PRG [OPTIONS] LOGIC NAME"
wenzelm@2808
    18
  echo
wenzelm@2808
    19
  echo "  Options are:"
wenzelm@8197
    20
  echo "    -D PATH      dump generated document sources into PATH"
wenzelm@6940
    21
  echo "    -P PATH      set path for remote theory browsing information"
wenzelm@6212
    22
  echo "    -b           build mode (output heap image, using current dir)"
wenzelm@8359
    23
  echo "    -c BOOL      tell ML system to compress output image (default true)"
wenzelm@7737
    24
  echo "    -d FORMAT    build document as FORMAT (default false)"
wenzelm@10562
    25
  echo "    -i BOOL      generate theory browser information (default false)"
wenzelm@10562
    26
  echo "    -m MODE      add print mode for output"
wenzelm@6212
    27
  echo "    -r           reset session path"
wenzelm@2808
    28
  echo "    -s NAME      override session NAME"
wenzelm@2808
    29
  echo
wenzelm@2808
    30
  echo "  Build object-logic or run examples. Also creates browsing"
wenzelm@2808
    31
  echo "  information (HTML etc.) according to settings."
wenzelm@2808
    32
  echo
wenzelm@7461
    33
  echo "  ISABELLE_USEDIR_OPTIONS=$ISABELLE_USEDIR_OPTIONS"
wenzelm@7461
    34
  echo
wenzelm@2808
    35
  exit 1
wenzelm@2808
    36
}
wenzelm@2808
    37
wenzelm@2808
    38
wenzelm@2808
    39
## process command line
wenzelm@2808
    40
wenzelm@2808
    41
# options
wenzelm@2808
    42
wenzelm@8197
    43
DUMP=""
wenzelm@8197
    44
RPATH=""
wenzelm@2808
    45
BUILD=""
wenzelm@8747
    46
COMPRESS=true
wenzelm@7737
    47
DOCUMENT=false
berghofe@3747
    48
INFO=false
wenzelm@10562
    49
MODES=""
wenzelm@6212
    50
RESET=false
wenzelm@2808
    51
SESSION=""
wenzelm@2808
    52
wenzelm@2917
    53
function getoptions()
wenzelm@2917
    54
{
wenzelm@2917
    55
  OPTIND=1
wenzelm@10562
    56
  while getopts "D:P:bc:d:i:m:rs:" OPT
wenzelm@2917
    57
  do
wenzelm@2917
    58
    case "$OPT" in
wenzelm@8197
    59
      D)
wenzelm@8197
    60
        DUMP="$OPTARG"
wenzelm@8197
    61
        ;;
wenzelm@8197
    62
      P)
wenzelm@8197
    63
        RPATH="$OPTARG"
wenzelm@8197
    64
        ;;
wenzelm@2917
    65
      b)
wenzelm@2917
    66
        BUILD=true
wenzelm@2917
    67
        ;;
wenzelm@8359
    68
      c)
wenzelm@8359
    69
        COMPRESS="$OPTARG"
wenzelm@8359
    70
        ;;
wenzelm@7737
    71
      d)
wenzelm@7737
    72
        DOCUMENT="$OPTARG"
wenzelm@7737
    73
        ;;
berghofe@3747
    74
      i)
berghofe@3747
    75
        INFO="$OPTARG"
wenzelm@2917
    76
        ;;
wenzelm@10562
    77
      m)
wenzelm@10562
    78
        if [ -z "$MODES" ]; then
wenzelm@10562
    79
          MODES="\"$OPTARG\""
wenzelm@10562
    80
        else
wenzelm@10585
    81
          MODES="\"$OPTARG\", $MODES"
wenzelm@10562
    82
        fi
wenzelm@10562
    83
        ;;
wenzelm@6212
    84
      r)
wenzelm@6212
    85
        RESET=true
wenzelm@6212
    86
        ;;
wenzelm@2917
    87
      s)
wenzelm@2917
    88
        SESSION="$OPTARG"
wenzelm@2917
    89
        ;;
wenzelm@2917
    90
      \?)
wenzelm@2917
    91
        usage
wenzelm@2917
    92
        ;;
wenzelm@2917
    93
    esac
wenzelm@2917
    94
  done
wenzelm@2917
    95
}
wenzelm@2808
    96
wenzelm@2917
    97
getoptions $ISABELLE_USEDIR_OPTIONS
wenzelm@2917
    98
wenzelm@2917
    99
getoptions "$@"
wenzelm@2808
   100
shift $(($OPTIND - 1))
wenzelm@2808
   101
wenzelm@2808
   102
wenzelm@2808
   103
# args
wenzelm@2808
   104
wenzelm@9788
   105
[ "$#" -ne 2 ] && usage
wenzelm@2808
   106
wenzelm@2808
   107
LOGIC="$1"; shift
wenzelm@2808
   108
NAME="$1"; shift
wenzelm@2808
   109
wenzelm@9788
   110
[ -z "$SESSION" ] && SESSION=$(basename "$NAME")
wenzelm@2808
   111
berghofe@3636
   112
wenzelm@4419
   113
wenzelm@4419
   114
## main
wenzelm@4419
   115
wenzelm@4451
   116
# prepare browser info dir
wenzelm@4419
   117
wenzelm@9788
   118
if [ "$INFO" = "true" -a ! -f "$ISABELLE_BROWSER_INFO/index.html" ]; then
wenzelm@9788
   119
  mkdir -p "$ISABELLE_BROWSER_INFO"
wenzelm@9788
   120
  cp "$ISABELLE_HOME/lib/logo/isabelle.gif" "$ISABELLE_BROWSER_INFO/isabelle.gif"
wenzelm@9788
   121
  cp "$ISABELLE_HOME/lib/html/index.html" "$ISABELLE_BROWSER_INFO/index.html"
berghofe@3636
   122
fi
berghofe@3636
   123
wenzelm@2808
   124
wenzelm@4451
   125
# prepare log dir
wenzelm@4451
   126
wenzelm@4451
   127
LOGDIR="$ISABELLE_OUTPUT/log"
wenzelm@4451
   128
mkdir -p "$LOGDIR"
wenzelm@4451
   129
wenzelm@4451
   130
wenzelm@4451
   131
# run isabelle
wenzelm@4451
   132
wenzelm@7737
   133
PARENT=$(basename "$LOGIC")
wenzelm@7737
   134
wenzelm@7737
   135
[ -z "$BUILD" ] && cd "$NAME"
wenzelm@7737
   136
wenzelm@8568
   137
if [ "$DOCUMENT" != false -a -d document ]; then
wenzelm@8568
   138
  DOC="$DOCUMENT"
wenzelm@9788
   139
  [ -n "$DUMP" -a -d "$DUMP" ] && "$ISATOOL" latex -o sty "$DUMP/root.tex" >/dev/null
wenzelm@8568
   140
else
wenzelm@8568
   141
  DOC=""
wenzelm@8568
   142
fi
wenzelm@7737
   143
wenzelm@7737
   144
wenzelm@4451
   145
SECONDS=0
wenzelm@4451
   146
wenzelm@2808
   147
if [ -n "$BUILD" ]; then
wenzelm@4451
   148
  ITEM="$SESSION"
wenzelm@7275
   149
  echo "Building $ITEM ..."
wenzelm@4451
   150
  LOG="$LOGDIR/$ITEM"
wenzelm@4451
   151
wenzelm@8359
   152
  OPT_C=""
wenzelm@8359
   153
  [ "$COMPRESS" = true ] && OPT_C="-c"
wenzelm@8359
   154
wenzelm@9788
   155
  "$ISABELLE" \
wenzelm@10562
   156
    -e "Session.use_dir [$MODES] $RESET $INFO \"$DOC\" \"$PARENT\" \"$SESSION\" \"$DUMP\" \"$RPATH\";" \
wenzelm@9788
   157
    $OPT_C -q -w $LOGIC $NAME > "$LOG" 2>&1
wenzelm@9788
   158
  RC="$?"
wenzelm@2808
   159
else
wenzelm@9788
   160
  ITEM=$(basename "$LOGIC")-"$SESSION"
wenzelm@7275
   161
  echo "Running $ITEM ..."
wenzelm@4451
   162
  LOG="$LOGDIR/$ITEM"
wenzelm@4451
   163
wenzelm@9788
   164
  "$ISABELLE" \
wenzelm@10562
   165
    -e "Session.use_dir [$MODES] $RESET $INFO \"$DOC\" \"$PARENT\" \"$SESSION\" \"$DUMP\" \"$RPATH\"; quit();" \
wenzelm@9788
   166
    -r -q "$LOGIC" > "$LOG" 2>&1
wenzelm@9788
   167
  RC="$?"
wenzelm@6212
   168
  cd ..
wenzelm@2808
   169
fi
wenzelm@4451
   170
wenzelm@9788
   171
ELAPSED=$("$ISABELLE_HOME/lib/scripts/showtime" "$SECONDS")
wenzelm@4451
   172
wenzelm@4451
   173
wenzelm@4451
   174
# exit status
wenzelm@4451
   175
wenzelm@9788
   176
if [ "$RC" -eq 0 ]; then
wenzelm@7275
   177
  echo "Finished $ITEM ($ELAPSED elapsed time)"
wenzelm@4451
   178
  gzip --force "$LOG"
wenzelm@4451
   179
else
wenzelm@7259
   180
  echo "$ITEM FAILED"
wenzelm@4451
   181
  echo "(see also $LOG)"
wenzelm@9788
   182
  echo; tail "$LOG"; echo
wenzelm@4451
   183
fi
wenzelm@4451
   184
wenzelm@9788
   185
exit "$RC"