# HG changeset patch # User wenzelm # Date 1259277116 -3600 # Node ID 473f859e1c29c9ebcbacd352519f3f95d20bd312 # Parent 1eebf19b773ef9b74491111a39cdce25f796b9c9 re-package Isabelle distribution with add-on components; diff -r 1eebf19b773e -r 473f859e1c29 Admin/makebundle --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Admin/makebundle Fri Nov 27 00:11:56 2009 +0100 @@ -0,0 +1,75 @@ +#!/usr/bin/env bash +# +# makebundle -- re-package with add-on components + +## global settings + +TMP="/var/tmp/isabelle-makebundle$$" + + +## diagnostics + +PRG=$(basename "$0") + +function usage() +{ + echo + echo "Usage: $PRG ARCHIVE COMPONENTS" + echo + echo " Re-package Isabelle distribution with add-on components." + echo + exit 1 +} + +function fail() +{ + echo "$1" >&2 + exit 2 +} + + +## process command line + +[ "$#" -lt 1 ] && usage + +ARCHIVE="$1"; shift + +declare -a COMPONENTS +COMPONENTS=("$@") + + +## main + +mkdir "$TMP" || fail "Cannot create directory $TMP" + +ARCHIVE_DIR="$(cd $(dirname "$ARCHIVE"); echo "$PWD")" +ISABELLE_NAME="$(basename "$ARCHIVE" .tar.gz)" +ISABELLE_HOME="$TMP/$ISABELLE_NAME" + +[ ! -f "$ARCHIVE" ] && fail "Bad archive file $ARCHIVE" +tar -C "$TMP" -x -z -f "$ARCHIVE" + +echo "#bundled components" >> "$ISABELLE_HOME/etc/components" + +for COMPONENT in "${COMPONENTS[@]}" +do + tar -C "$ISABELLE_HOME/contrib" -x -z -f "$COMPONENT" + NAME="$(basename "$COMPONENT" .tar.gz)" + [ -d "$ISABELLE_HOME/contrib/$NAME" ] || fail "Bad archive content $COMPONENT" + + if [ -e "$ISABELLE_HOME/contrib/$NAME/etc/settings" ]; then + echo "component $NAME" + echo "contrib/$NAME" >> "$ISABELLE_HOME/etc/components" + else + echo "package $NAME" + fi +done + +tar -C "$TMP" -c -z \ + -f "${ARCHIVE_DIR}/${ISABELLE_NAME}_bundle.tar.gz" \ + Isabelle "$ISABELLE_NAME" + + +# clean up +cd /tmp +rm -rf "$TMP"