Admin/makebundle
author Walther Neuper <neuper@ist.tugraz.at>
Wed, 08 Sep 2010 12:25:58 +0200
branchisac-update-Isa09-2
changeset 37987 bf83d30839c7
parent 37460 b7a55231065a
child 41803 178fdd4cca46
permissions -rwxr-xr-x
tuned
wenzelm@33923
     1
#!/usr/bin/env bash
wenzelm@33923
     2
#
wenzelm@33923
     3
# makebundle -- re-package with add-on components
wenzelm@33923
     4
wenzelm@33923
     5
## diagnostics
wenzelm@33923
     6
wenzelm@33923
     7
PRG=$(basename "$0")
wenzelm@33923
     8
wenzelm@33923
     9
function usage()
wenzelm@33923
    10
{
wenzelm@33923
    11
  echo
wenzelm@37333
    12
  echo "Usage: $PRG ARCHIVE PLATFORM"
wenzelm@33923
    13
  echo
wenzelm@37333
    14
  echo "  Re-package Isabelle source distribution with add-on components"
wenzelm@37343
    15
  echo "  and heap images"
wenzelm@33923
    16
  echo
wenzelm@33923
    17
  exit 1
wenzelm@33923
    18
}
wenzelm@33923
    19
wenzelm@33923
    20
function fail()
wenzelm@33923
    21
{
wenzelm@33923
    22
  echo "$1" >&2
wenzelm@33923
    23
  exit 2
wenzelm@33923
    24
}
wenzelm@33923
    25
wenzelm@33923
    26
wenzelm@37333
    27
## implicit and explicit arguments
wenzelm@33923
    28
wenzelm@37333
    29
TMP="/var/tmp/isabelle-makebundle$$"
wenzelm@37333
    30
mkdir "$TMP" || fail "Cannot create directory $TMP"
wenzelm@37333
    31
wenzelm@37333
    32
[ "$#" -ne 2 ] && usage
wenzelm@33923
    33
wenzelm@33923
    34
ARCHIVE="$1"; shift
wenzelm@37333
    35
PLATFORM="$1"; shift
wenzelm@33923
    36
wenzelm@37333
    37
[ -f "$ARCHIVE" ] || fail "Bad source archive: $ARCHIVE"
wenzelm@33923
    38
wenzelm@33923
    39
wenzelm@33923
    40
## main
wenzelm@33923
    41
wenzelm@33923
    42
ARCHIVE_DIR="$(cd $(dirname "$ARCHIVE"); echo "$PWD")"
wenzelm@33923
    43
ISABELLE_NAME="$(basename "$ARCHIVE" .tar.gz)"
wenzelm@33923
    44
ISABELLE_HOME="$TMP/$ISABELLE_NAME"
wenzelm@33923
    45
wenzelm@33923
    46
tar -C "$TMP" -x -z -f "$ARCHIVE"
wenzelm@33923
    47
wenzelm@37333
    48
wenzelm@33923
    49
echo "#bundled components" >> "$ISABELLE_HOME/etc/components"
wenzelm@33923
    50
wenzelm@37333
    51
for CONTRIB in "$ARCHIVE_DIR"/contrib/*.tar.gz
wenzelm@33923
    52
do
wenzelm@37333
    53
  tar -C "$ISABELLE_HOME/contrib" -x -z -f "$CONTRIB"
wenzelm@37333
    54
  NAME="$(basename "$CONTRIB" .tar.gz)"
wenzelm@37333
    55
  [ -d "$ISABELLE_HOME/contrib/$NAME" ] || fail "Bad archive content $CONTRIB"
wenzelm@33923
    56
wenzelm@33923
    57
  if [ -e "$ISABELLE_HOME/contrib/$NAME/etc/settings" ]; then
wenzelm@33923
    58
    echo "component $NAME"
wenzelm@33923
    59
    echo "contrib/$NAME" >> "$ISABELLE_HOME/etc/components"
wenzelm@33923
    60
  else
wenzelm@33923
    61
    echo "package $NAME"
wenzelm@33923
    62
  fi
wenzelm@33923
    63
done
wenzelm@33923
    64
wenzelm@37333
    65
wenzelm@37343
    66
HEAPS_ARCHIVE="$ARCHIVE_DIR/${ISABELLE_NAME}_heaps_${PLATFORM}.tar.gz"
wenzelm@37343
    67
[ -f "$HEAPS_ARCHIVE" ] || fail "Bad heaps archive: $HEAPS_ARCHIVE"
wenzelm@37343
    68
echo "heaps"
wenzelm@37460
    69
tar -C "$TMP" -x -z -f "$HEAPS_ARCHIVE"
wenzelm@37333
    70
wenzelm@37333
    71
wenzelm@37333
    72
BUNDLE_ARCHIVE="${ARCHIVE_DIR}/${ISABELLE_NAME}_bundle_${PLATFORM}.tar.gz"
wenzelm@37333
    73
wenzelm@37333
    74
echo "$(basename "$BUNDLE_ARCHIVE")"
wenzelm@37333
    75
tar -C "$TMP" -c -z -f "$BUNDLE_ARCHIVE" Isabelle "$ISABELLE_NAME"
wenzelm@33923
    76
wenzelm@33923
    77
wenzelm@33923
    78
# clean up
wenzelm@33923
    79
cd /tmp
wenzelm@33923
    80
rm -rf "$TMP"