Admin/makebundle
author blanchet
Thu, 28 Jul 2011 16:32:39 +0200
changeset 44872 2b75760fa75e
parent 42534 0ec66d976f5b
child 45688 44db3e309060
permissions -rwxr-xr-x
no needless mangling
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@42534
    72
(
wenzelm@42534
    73
  cd "$TMP/$ISABELLE_NAME/contrib/ProofGeneral"
wenzelm@42534
    74
  find . -name "*.elc" -exec rm {} ";"
wenzelm@42534
    75
)
wenzelm@42534
    76
wenzelm@41875
    77
case "$PLATFORM" in
wenzelm@41875
    78
  x86-cygwin)
wenzelm@41875
    79
    rm "$TMP/$ISABELLE_NAME/contrib/ProofGeneral"
wenzelm@41875
    80
    ln -s ProofGeneral-3.7.1.1 "$TMP/$ISABELLE_NAME/contrib/ProofGeneral"
wenzelm@41875
    81
    ;;
wenzelm@41875
    82
  *)
wenzelm@41875
    83
    ;;
wenzelm@41875
    84
esac
wenzelm@41860
    85
wenzelm@37333
    86
BUNDLE_ARCHIVE="${ARCHIVE_DIR}/${ISABELLE_NAME}_bundle_${PLATFORM}.tar.gz"
wenzelm@37333
    87
wenzelm@37333
    88
echo "$(basename "$BUNDLE_ARCHIVE")"
wenzelm@41803
    89
tar -C "$TMP" -c -z -f "$BUNDLE_ARCHIVE" "$ISABELLE_NAME"
wenzelm@33923
    90
wenzelm@33923
    91
wenzelm@33923
    92
# clean up
wenzelm@33923
    93
cd /tmp
wenzelm@33923
    94
rm -rf "$TMP"