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