Admin/makebin
author wenzelm
Wed, 23 May 2012 11:53:17 +0200
changeset 48901 7d30534e545b
parent 45997 fc3bb3a42369
permissions -rwxr-xr-x
removed obsolete RC tags;
wenzelm@12721
     1
#!/usr/bin/env bash
wenzelm@10082
     2
#
wenzelm@30862
     3
# makebin -- make Isabelle logic images for current platform
wenzelm@10082
     4
wenzelm@10082
     5
wenzelm@10082
     6
## global settings
wenzelm@10082
     7
wenzelm@12427
     8
TMP="/var/tmp/isabelle-makebin$$"
wenzelm@10082
     9
wenzelm@10082
    10
wenzelm@10082
    11
## diagnostics
wenzelm@10082
    12
wenzelm@10082
    13
PRG=$(basename "$0")
wenzelm@10082
    14
wenzelm@10082
    15
function usage()
wenzelm@10082
    16
{
wenzelm@10082
    17
  echo
wenzelm@12827
    18
  echo "Usage: $PRG [OPTIONS] ARCHIVE"
wenzelm@10082
    19
  echo
wenzelm@12827
    20
  echo "  Options are:"
wenzelm@13001
    21
  echo "    -l           produce library"
wenzelm@12827
    22
  echo
wenzelm@12827
    23
  echo "  Precompile Isabelle for the current platform."
wenzelm@10082
    24
  echo
wenzelm@10082
    25
  exit 1
wenzelm@10082
    26
}
wenzelm@10082
    27
wenzelm@10082
    28
function fail()
wenzelm@10082
    29
{
wenzelm@10082
    30
  echo "$1" >&2
wenzelm@10082
    31
  exit 2
wenzelm@10082
    32
}
wenzelm@10082
    33
wenzelm@10082
    34
wenzelm@10082
    35
## process command line
wenzelm@10082
    36
wenzelm@12827
    37
# options
wenzelm@12827
    38
wenzelm@12827
    39
DO_LIBRARY=""
wenzelm@12827
    40
wenzelm@45748
    41
while getopts "l" OPT
wenzelm@12827
    42
do
wenzelm@12827
    43
  case "$OPT" in
wenzelm@12827
    44
    l)
wenzelm@12827
    45
      DO_LIBRARY=true
wenzelm@12827
    46
      ;;
wenzelm@12827
    47
    \?)
wenzelm@12827
    48
      usage
wenzelm@12827
    49
      ;;
wenzelm@12827
    50
  esac
wenzelm@12827
    51
done
wenzelm@12827
    52
wenzelm@12827
    53
shift $(($OPTIND - 1))
wenzelm@12827
    54
wenzelm@12827
    55
wenzelm@12827
    56
# args
wenzelm@12827
    57
wenzelm@10082
    58
[ "$#" -gt 1 ] && usage
wenzelm@10082
    59
wenzelm@10082
    60
ARCHIVE="$1"; shift
wenzelm@10082
    61
wenzelm@10082
    62
wenzelm@10082
    63
## main
wenzelm@10082
    64
wenzelm@10082
    65
[ ! -f "$ARCHIVE" ] && fail "Bad archive file $ARCHIVE"
wenzelm@30862
    66
ARCHIVE_BASE="$(basename "$ARCHIVE")"
wenzelm@30862
    67
ARCHIVE_DIR="$(cd $(dirname "$ARCHIVE"); echo "$PWD")"
wenzelm@10082
    68
ARCHIVE_FULL="$ARCHIVE_DIR/$ARCHIVE_BASE"
wenzelm@10082
    69
wenzelm@30862
    70
ISABELLE_NAME="$(basename "$ARCHIVE_BASE" .tar.gz)"
wenzelm@10082
    71
ISABELLE_HOME="$TMP/$ISABELLE_NAME"
wenzelm@10082
    72
wenzelm@10082
    73
wenzelm@10082
    74
# build logics
wenzelm@10082
    75
wenzelm@10082
    76
mkdir "$TMP" || fail "Cannot create directory $TMP"
wenzelm@10082
    77
wenzelm@10082
    78
cd "$TMP"
wenzelm@30862
    79
tar xzf "$ARCHIVE_FULL"
wenzelm@10082
    80
cd "$ISABELLE_NAME"
wenzelm@10082
    81
wenzelm@17575
    82
perl -pi \
wenzelm@37286
    83
  -e 's:^ISABELLE_USEDIR_OPTIONS=.*$:ISABELLE_USEDIR_OPTIONS="-M 1":;' \
wenzelm@17575
    84
  etc/settings
wenzelm@17575
    85
wenzelm@13001
    86
if [ -n "$DO_LIBRARY" ]; then
wenzelm@37286
    87
  perl -pi -e 's:^ISABELLE_USEDIR_OPTIONS=.*$:ISABELLE_USEDIR_OPTIONS="-M 1 -i true -d pdf -V outline=/proof,/ML":;' \
wenzelm@13001
    88
    etc/settings
wenzelm@13001
    89
fi
wenzelm@11576
    90
wenzelm@28504
    91
ISABELLE_HOME_USER=$(./bin/isabelle getenv -b ISABELLE_HOME_USER)
wenzelm@10082
    92
wenzelm@28504
    93
COMPILER=$(./bin/isabelle getenv -b ML_IDENTIFIER)
wenzelm@28504
    94
PLATFORM=$(./bin/isabelle getenv -b ML_PLATFORM)
wenzelm@10082
    95
wenzelm@37340
    96
if [ -n "$DO_LIBRARY" ]; then
wenzelm@45997
    97
  ./build -bait -m all
wenzelm@10082
    98
else
wenzelm@41804
    99
  ./build -b HOL
wenzelm@10082
   100
fi
wenzelm@10082
   101
wenzelm@10082
   102
wenzelm@10082
   103
# prepare result
wenzelm@10082
   104
wenzelm@10082
   105
cd "$TMP"
wenzelm@10082
   106
wenzelm@10082
   107
chmod -R g=o "$TMP"
wenzelm@10082
   108
chgrp -R isabelle "$TMP"
wenzelm@10082
   109
wenzelm@13001
   110
if [ -n "$DO_LIBRARY" ]; then
wenzelm@37340
   111
  tar -c -z -f "$ARCHIVE_DIR/${ISABELLE_NAME}_library.tar.gz" "$ISABELLE_NAME/browser_info"
wenzelm@13001
   112
else
wenzelm@37340
   113
  tar -c -z -f "$ARCHIVE_DIR/${ISABELLE_NAME}_heaps_${PLATFORM}.tar.gz" "$ISABELLE_NAME/heaps"
wenzelm@13001
   114
fi
wenzelm@10082
   115
wenzelm@10082
   116
wenzelm@10082
   117
# clean up
wenzelm@10082
   118
rm -rf "$TMP"