wenzelm@33907: #!/usr/bin/env bash wenzelm@33907: # wenzelm@33907: # makebundle -- re-package with add-on components wenzelm@33907: wenzelm@33907: ## diagnostics wenzelm@33907: wenzelm@33907: PRG=$(basename "$0") wenzelm@33907: wenzelm@33907: function usage() wenzelm@33907: { wenzelm@33907: echo wenzelm@37315: echo "Usage: $PRG ARCHIVE PLATFORM" wenzelm@33907: echo wenzelm@37315: echo " Re-package Isabelle source distribution with add-on components" wenzelm@37343: echo " and heap images" wenzelm@33907: echo wenzelm@33907: exit 1 wenzelm@33907: } wenzelm@33907: wenzelm@33907: function fail() wenzelm@33907: { wenzelm@33907: echo "$1" >&2 wenzelm@33907: exit 2 wenzelm@33907: } wenzelm@33907: wenzelm@33907: wenzelm@37315: ## implicit and explicit arguments wenzelm@33907: wenzelm@37315: TMP="/var/tmp/isabelle-makebundle$$" wenzelm@37315: mkdir "$TMP" || fail "Cannot create directory $TMP" wenzelm@37315: wenzelm@37315: [ "$#" -ne 2 ] && usage wenzelm@33907: wenzelm@33907: ARCHIVE="$1"; shift wenzelm@37315: PLATFORM="$1"; shift wenzelm@33907: wenzelm@37315: [ -f "$ARCHIVE" ] || fail "Bad source archive: $ARCHIVE" wenzelm@33907: wenzelm@33907: wenzelm@33907: ## main wenzelm@33907: wenzelm@33907: ARCHIVE_DIR="$(cd $(dirname "$ARCHIVE"); echo "$PWD")" wenzelm@33907: ISABELLE_NAME="$(basename "$ARCHIVE" .tar.gz)" wenzelm@33907: ISABELLE_HOME="$TMP/$ISABELLE_NAME" wenzelm@33907: wenzelm@33907: tar -C "$TMP" -x -z -f "$ARCHIVE" wenzelm@33907: wenzelm@37315: wenzelm@33907: echo "#bundled components" >> "$ISABELLE_HOME/etc/components" wenzelm@33907: wenzelm@37315: for CONTRIB in "$ARCHIVE_DIR"/contrib/*.tar.gz wenzelm@33907: do wenzelm@37315: tar -C "$ISABELLE_HOME/contrib" -x -z -f "$CONTRIB" wenzelm@37315: NAME="$(basename "$CONTRIB" .tar.gz)" wenzelm@37315: [ -d "$ISABELLE_HOME/contrib/$NAME" ] || fail "Bad archive content $CONTRIB" wenzelm@33907: wenzelm@33907: if [ -e "$ISABELLE_HOME/contrib/$NAME/etc/settings" ]; then wenzelm@33907: echo "component $NAME" wenzelm@33907: echo "contrib/$NAME" >> "$ISABELLE_HOME/etc/components" wenzelm@33907: else wenzelm@33907: echo "package $NAME" wenzelm@33907: fi wenzelm@33907: done wenzelm@33907: wenzelm@37315: wenzelm@37343: HEAPS_ARCHIVE="$ARCHIVE_DIR/${ISABELLE_NAME}_heaps_${PLATFORM}.tar.gz" wenzelm@37343: [ -f "$HEAPS_ARCHIVE" ] || fail "Bad heaps archive: $HEAPS_ARCHIVE" wenzelm@37343: echo "heaps" wenzelm@37357: tar -C "$TMP" -x -z -f "$HEAPS_ARCHIVE" wenzelm@37315: wenzelm@37315: wenzelm@37315: BUNDLE_ARCHIVE="${ARCHIVE_DIR}/${ISABELLE_NAME}_bundle_${PLATFORM}.tar.gz" wenzelm@37315: wenzelm@37315: echo "$(basename "$BUNDLE_ARCHIVE")" wenzelm@37315: tar -C "$TMP" -c -z -f "$BUNDLE_ARCHIVE" Isabelle "$ISABELLE_NAME" wenzelm@33907: wenzelm@33907: wenzelm@33907: # clean up wenzelm@33907: cd /tmp wenzelm@33907: rm -rf "$TMP"