author | wenzelm |
Sun, 30 Jan 2011 20:47:26 +0100 | |
changeset 42534 | 0ec66d976f5b |
parent 41875 | 0040e0ea02e7 |
child 45688 | 44db3e309060 |
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 |
## diagnostics |
wenzelm@33923 | 6 |
|
wenzelm@33923 | 7 |
PRG=$(basename "$0") |
wenzelm@33923 | 8 |
|
wenzelm@33923 | 9 |
function usage() |
wenzelm@33923 | 10 |
{ |
wenzelm@33923 | 11 |
echo |
wenzelm@37333 | 12 |
echo "Usage: $PRG ARCHIVE PLATFORM" |
wenzelm@33923 | 13 |
echo |
wenzelm@37333 | 14 |
echo " Re-package Isabelle source distribution with add-on components" |
wenzelm@37343 | 15 |
echo " and heap images" |
wenzelm@33923 | 16 |
echo |
wenzelm@33923 | 17 |
exit 1 |
wenzelm@33923 | 18 |
} |
wenzelm@33923 | 19 |
|
wenzelm@33923 | 20 |
function fail() |
wenzelm@33923 | 21 |
{ |
wenzelm@33923 | 22 |
echo "$1" >&2 |
wenzelm@33923 | 23 |
exit 2 |
wenzelm@33923 | 24 |
} |
wenzelm@33923 | 25 |
|
wenzelm@33923 | 26 |
|
wenzelm@37333 | 27 |
## implicit and explicit arguments |
wenzelm@33923 | 28 |
|
wenzelm@37333 | 29 |
TMP="/var/tmp/isabelle-makebundle$$" |
wenzelm@37333 | 30 |
mkdir "$TMP" || fail "Cannot create directory $TMP" |
wenzelm@37333 | 31 |
|
wenzelm@37333 | 32 |
[ "$#" -ne 2 ] && usage |
wenzelm@33923 | 33 |
|
wenzelm@33923 | 34 |
ARCHIVE="$1"; shift |
wenzelm@37333 | 35 |
PLATFORM="$1"; shift |
wenzelm@33923 | 36 |
|
wenzelm@37333 | 37 |
[ -f "$ARCHIVE" ] || fail "Bad source archive: $ARCHIVE" |
wenzelm@33923 | 38 |
|
wenzelm@33923 | 39 |
|
wenzelm@33923 | 40 |
## main |
wenzelm@33923 | 41 |
|
wenzelm@33923 | 42 |
ARCHIVE_DIR="$(cd $(dirname "$ARCHIVE"); echo "$PWD")" |
wenzelm@33923 | 43 |
ISABELLE_NAME="$(basename "$ARCHIVE" .tar.gz)" |
wenzelm@33923 | 44 |
ISABELLE_HOME="$TMP/$ISABELLE_NAME" |
wenzelm@33923 | 45 |
|
wenzelm@33923 | 46 |
tar -C "$TMP" -x -z -f "$ARCHIVE" |
wenzelm@33923 | 47 |
|
wenzelm@37333 | 48 |
|
wenzelm@33923 | 49 |
echo "#bundled components" >> "$ISABELLE_HOME/etc/components" |
wenzelm@33923 | 50 |
|
wenzelm@37333 | 51 |
for CONTRIB in "$ARCHIVE_DIR"/contrib/*.tar.gz |
wenzelm@33923 | 52 |
do |
wenzelm@37333 | 53 |
tar -C "$ISABELLE_HOME/contrib" -x -z -f "$CONTRIB" |
wenzelm@37333 | 54 |
NAME="$(basename "$CONTRIB" .tar.gz)" |
wenzelm@37333 | 55 |
[ -d "$ISABELLE_HOME/contrib/$NAME" ] || fail "Bad archive content $CONTRIB" |
wenzelm@33923 | 56 |
|
wenzelm@33923 | 57 |
if [ -e "$ISABELLE_HOME/contrib/$NAME/etc/settings" ]; then |
wenzelm@33923 | 58 |
echo "component $NAME" |
wenzelm@33923 | 59 |
echo "contrib/$NAME" >> "$ISABELLE_HOME/etc/components" |
wenzelm@33923 | 60 |
else |
wenzelm@33923 | 61 |
echo "package $NAME" |
wenzelm@33923 | 62 |
fi |
wenzelm@33923 | 63 |
done |
wenzelm@33923 | 64 |
|
wenzelm@37333 | 65 |
|
wenzelm@37343 | 66 |
HEAPS_ARCHIVE="$ARCHIVE_DIR/${ISABELLE_NAME}_heaps_${PLATFORM}.tar.gz" |
wenzelm@37343 | 67 |
[ -f "$HEAPS_ARCHIVE" ] || fail "Bad heaps archive: $HEAPS_ARCHIVE" |
wenzelm@37343 | 68 |
echo "heaps" |
wenzelm@37460 | 69 |
tar -C "$TMP" -x -z -f "$HEAPS_ARCHIVE" |
wenzelm@37333 | 70 |
|
wenzelm@37333 | 71 |
|
wenzelm@42534 | 72 |
( |
wenzelm@42534 | 73 |
cd "$TMP/$ISABELLE_NAME/contrib/ProofGeneral" |
wenzelm@42534 | 74 |
find . -name "*.elc" -exec rm {} ";" |
wenzelm@42534 | 75 |
) |
wenzelm@42534 | 76 |
|
wenzelm@41875 | 77 |
case "$PLATFORM" in |
wenzelm@41875 | 78 |
x86-cygwin) |
wenzelm@41875 | 79 |
rm "$TMP/$ISABELLE_NAME/contrib/ProofGeneral" |
wenzelm@41875 | 80 |
ln -s ProofGeneral-3.7.1.1 "$TMP/$ISABELLE_NAME/contrib/ProofGeneral" |
wenzelm@41875 | 81 |
;; |
wenzelm@41875 | 82 |
*) |
wenzelm@41875 | 83 |
;; |
wenzelm@41875 | 84 |
esac |
wenzelm@41860 | 85 |
|
wenzelm@37333 | 86 |
BUNDLE_ARCHIVE="${ARCHIVE_DIR}/${ISABELLE_NAME}_bundle_${PLATFORM}.tar.gz" |
wenzelm@37333 | 87 |
|
wenzelm@37333 | 88 |
echo "$(basename "$BUNDLE_ARCHIVE")" |
wenzelm@41803 | 89 |
tar -C "$TMP" -c -z -f "$BUNDLE_ARCHIVE" "$ISABELLE_NAME" |
wenzelm@33923 | 90 |
|
wenzelm@33923 | 91 |
|
wenzelm@33923 | 92 |
# clean up |
wenzelm@33923 | 93 |
cd /tmp |
wenzelm@33923 | 94 |
rm -rf "$TMP" |