Admin/makebundle
author wenzelm
Wed, 02 Jun 2010 14:55:37 +0200
changeset 37283 9e7a4d4bba54
parent 33923 473f859e1c29
child 37333 af2adf0ae97d
permissions -rwxr-xr-x
Added tag isa2009-2-test0 for changeset 935c75359742
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
## global settings
wenzelm@33923
     6
wenzelm@33923
     7
TMP="/var/tmp/isabelle-makebundle$$"
wenzelm@33923
     8
wenzelm@33923
     9
wenzelm@33923
    10
## diagnostics
wenzelm@33923
    11
wenzelm@33923
    12
PRG=$(basename "$0")
wenzelm@33923
    13
wenzelm@33923
    14
function usage()
wenzelm@33923
    15
{
wenzelm@33923
    16
  echo
wenzelm@33923
    17
  echo "Usage: $PRG ARCHIVE COMPONENTS"
wenzelm@33923
    18
  echo
wenzelm@33923
    19
  echo "  Re-package Isabelle distribution with add-on components."
wenzelm@33923
    20
  echo
wenzelm@33923
    21
  exit 1
wenzelm@33923
    22
}
wenzelm@33923
    23
wenzelm@33923
    24
function fail()
wenzelm@33923
    25
{
wenzelm@33923
    26
  echo "$1" >&2
wenzelm@33923
    27
  exit 2
wenzelm@33923
    28
}
wenzelm@33923
    29
wenzelm@33923
    30
wenzelm@33923
    31
## process command line
wenzelm@33923
    32
wenzelm@33923
    33
[ "$#" -lt 1 ] && usage
wenzelm@33923
    34
wenzelm@33923
    35
ARCHIVE="$1"; shift
wenzelm@33923
    36
wenzelm@33923
    37
declare -a COMPONENTS
wenzelm@33923
    38
COMPONENTS=("$@")
wenzelm@33923
    39
wenzelm@33923
    40
wenzelm@33923
    41
## main
wenzelm@33923
    42
wenzelm@33923
    43
mkdir "$TMP" || fail "Cannot create directory $TMP"
wenzelm@33923
    44
wenzelm@33923
    45
ARCHIVE_DIR="$(cd $(dirname "$ARCHIVE"); echo "$PWD")"
wenzelm@33923
    46
ISABELLE_NAME="$(basename "$ARCHIVE" .tar.gz)"
wenzelm@33923
    47
ISABELLE_HOME="$TMP/$ISABELLE_NAME"
wenzelm@33923
    48
wenzelm@33923
    49
[ ! -f "$ARCHIVE" ] && fail "Bad archive file $ARCHIVE"
wenzelm@33923
    50
tar -C "$TMP" -x -z -f "$ARCHIVE"
wenzelm@33923
    51
wenzelm@33923
    52
echo "#bundled components" >> "$ISABELLE_HOME/etc/components"
wenzelm@33923
    53
wenzelm@33923
    54
for COMPONENT in "${COMPONENTS[@]}"
wenzelm@33923
    55
do
wenzelm@33923
    56
  tar -C "$ISABELLE_HOME/contrib" -x -z -f "$COMPONENT"
wenzelm@33923
    57
  NAME="$(basename "$COMPONENT" .tar.gz)"
wenzelm@33923
    58
  [ -d "$ISABELLE_HOME/contrib/$NAME" ] || fail "Bad archive content $COMPONENT"
wenzelm@33923
    59
wenzelm@33923
    60
  if [ -e "$ISABELLE_HOME/contrib/$NAME/etc/settings" ]; then
wenzelm@33923
    61
    echo "component $NAME"
wenzelm@33923
    62
    echo "contrib/$NAME" >> "$ISABELLE_HOME/etc/components"
wenzelm@33923
    63
  else
wenzelm@33923
    64
    echo "package $NAME"
wenzelm@33923
    65
  fi
wenzelm@33923
    66
done
wenzelm@33923
    67
wenzelm@33923
    68
tar -C "$TMP" -c -z \
wenzelm@33923
    69
  -f "${ARCHIVE_DIR}/${ISABELLE_NAME}_bundle.tar.gz" \
wenzelm@33923
    70
  Isabelle "$ISABELLE_NAME"
wenzelm@33923
    71
wenzelm@33923
    72
wenzelm@33923
    73
# clean up
wenzelm@33923
    74
cd /tmp
wenzelm@33923
    75
rm -rf "$TMP"