author | wenzelm |
Wed, 02 Jun 2010 14:55:37 +0200 | |
changeset 37283 | 9e7a4d4bba54 |
parent 33923 | 473f859e1c29 |
child 37333 | af2adf0ae97d |
permissions | -rwxr-xr-x |
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" |