| author | huffman | 
| Tue, 27 Mar 2012 22:10:26 +0200 | |
| changeset 47171 | 80c432404204 | 
| parent 44964 | 23dbab7f8cf4 | 
| child 47522 | f74da4658bd1 | 
| permissions | -rwxr-xr-x | 
| 33907 
473f859e1c29
re-package Isabelle distribution with add-on components;
 wenzelm parents: diff
changeset | 1 | #!/usr/bin/env bash | 
| 
473f859e1c29
re-package Isabelle distribution with add-on components;
 wenzelm parents: diff
changeset | 2 | # | 
| 
473f859e1c29
re-package Isabelle distribution with add-on components;
 wenzelm parents: diff
changeset | 3 | # makebundle -- re-package with add-on components | 
| 
473f859e1c29
re-package Isabelle distribution with add-on components;
 wenzelm parents: diff
changeset | 4 | |
| 
473f859e1c29
re-package Isabelle distribution with add-on components;
 wenzelm parents: diff
changeset | 5 | ## diagnostics | 
| 
473f859e1c29
re-package Isabelle distribution with add-on components;
 wenzelm parents: diff
changeset | 6 | |
| 
473f859e1c29
re-package Isabelle distribution with add-on components;
 wenzelm parents: diff
changeset | 7 | PRG=$(basename "$0") | 
| 
473f859e1c29
re-package Isabelle distribution with add-on components;
 wenzelm parents: diff
changeset | 8 | |
| 
473f859e1c29
re-package Isabelle distribution with add-on components;
 wenzelm parents: diff
changeset | 9 | function usage() | 
| 
473f859e1c29
re-package Isabelle distribution with add-on components;
 wenzelm parents: diff
changeset | 10 | {
 | 
| 
473f859e1c29
re-package Isabelle distribution with add-on components;
 wenzelm parents: diff
changeset | 11 | echo | 
| 37315 | 12 | echo "Usage: $PRG ARCHIVE PLATFORM" | 
| 33907 
473f859e1c29
re-package Isabelle distribution with add-on components;
 wenzelm parents: diff
changeset | 13 | echo | 
| 37315 | 14 | echo " Re-package Isabelle source distribution with add-on components" | 
| 37343 | 15 | echo " and heap images" | 
| 33907 
473f859e1c29
re-package Isabelle distribution with add-on components;
 wenzelm parents: diff
changeset | 16 | echo | 
| 
473f859e1c29
re-package Isabelle distribution with add-on components;
 wenzelm parents: diff
changeset | 17 | exit 1 | 
| 
473f859e1c29
re-package Isabelle distribution with add-on components;
 wenzelm parents: diff
changeset | 18 | } | 
| 
473f859e1c29
re-package Isabelle distribution with add-on components;
 wenzelm parents: diff
changeset | 19 | |
| 
473f859e1c29
re-package Isabelle distribution with add-on components;
 wenzelm parents: diff
changeset | 20 | function fail() | 
| 
473f859e1c29
re-package Isabelle distribution with add-on components;
 wenzelm parents: diff
changeset | 21 | {
 | 
| 
473f859e1c29
re-package Isabelle distribution with add-on components;
 wenzelm parents: diff
changeset | 22 | echo "$1" >&2 | 
| 
473f859e1c29
re-package Isabelle distribution with add-on components;
 wenzelm parents: diff
changeset | 23 | exit 2 | 
| 
473f859e1c29
re-package Isabelle distribution with add-on components;
 wenzelm parents: diff
changeset | 24 | } | 
| 
473f859e1c29
re-package Isabelle distribution with add-on components;
 wenzelm parents: diff
changeset | 25 | |
| 
473f859e1c29
re-package Isabelle distribution with add-on components;
 wenzelm parents: diff
changeset | 26 | |
| 37315 | 27 | ## implicit and explicit arguments | 
| 33907 
473f859e1c29
re-package Isabelle distribution with add-on components;
 wenzelm parents: diff
changeset | 28 | |
| 37315 | 29 | TMP="/var/tmp/isabelle-makebundle$$" | 
| 30 | mkdir "$TMP" || fail "Cannot create directory $TMP" | |
| 31 | ||
| 32 | [ "$#" -ne 2 ] && usage | |
| 33907 
473f859e1c29
re-package Isabelle distribution with add-on components;
 wenzelm parents: diff
changeset | 33 | |
| 
473f859e1c29
re-package Isabelle distribution with add-on components;
 wenzelm parents: diff
changeset | 34 | ARCHIVE="$1"; shift | 
| 37315 | 35 | PLATFORM="$1"; shift | 
| 33907 
473f859e1c29
re-package Isabelle distribution with add-on components;
 wenzelm parents: diff
changeset | 36 | |
| 37315 | 37 | [ -f "$ARCHIVE" ] || fail "Bad source archive: $ARCHIVE" | 
| 33907 
473f859e1c29
re-package Isabelle distribution with add-on components;
 wenzelm parents: diff
changeset | 38 | |
| 
473f859e1c29
re-package Isabelle distribution with add-on components;
 wenzelm parents: diff
changeset | 39 | |
| 
473f859e1c29
re-package Isabelle distribution with add-on components;
 wenzelm parents: diff
changeset | 40 | ## main | 
| 
473f859e1c29
re-package Isabelle distribution with add-on components;
 wenzelm parents: diff
changeset | 41 | |
| 
473f859e1c29
re-package Isabelle distribution with add-on components;
 wenzelm parents: diff
changeset | 42 | ARCHIVE_DIR="$(cd $(dirname "$ARCHIVE"); echo "$PWD")" | 
| 
473f859e1c29
re-package Isabelle distribution with add-on components;
 wenzelm parents: diff
changeset | 43 | ISABELLE_NAME="$(basename "$ARCHIVE" .tar.gz)" | 
| 
473f859e1c29
re-package Isabelle distribution with add-on components;
 wenzelm parents: diff
changeset | 44 | ISABELLE_HOME="$TMP/$ISABELLE_NAME" | 
| 
473f859e1c29
re-package Isabelle distribution with add-on components;
 wenzelm parents: diff
changeset | 45 | |
| 
473f859e1c29
re-package Isabelle distribution with add-on components;
 wenzelm parents: diff
changeset | 46 | tar -C "$TMP" -x -z -f "$ARCHIVE" | 
| 
473f859e1c29
re-package Isabelle distribution with add-on components;
 wenzelm parents: diff
changeset | 47 | |
| 37315 | 48 | |
| 33907 
473f859e1c29
re-package Isabelle distribution with add-on components;
 wenzelm parents: diff
changeset | 49 | echo "#bundled components" >> "$ISABELLE_HOME/etc/components" | 
| 
473f859e1c29
re-package Isabelle distribution with add-on components;
 wenzelm parents: diff
changeset | 50 | |
| 44951 
3aa3aeb4980f
specific bundle for x86_64-linux, which is especially important for JRE due to its extra library dependencies;
 wenzelm parents: 
44807diff
changeset | 51 | for CONTRIB in "$ARCHIVE_DIR/contrib/"*.tar.gz "$ARCHIVE_DIR/contrib/$PLATFORM"/*.tar.gz | 
| 33907 
473f859e1c29
re-package Isabelle distribution with add-on components;
 wenzelm parents: diff
changeset | 52 | do | 
| 44951 
3aa3aeb4980f
specific bundle for x86_64-linux, which is especially important for JRE due to its extra library dependencies;
 wenzelm parents: 
44807diff
changeset | 53 | if [ -f "$CONTRIB" ]; then | 
| 
3aa3aeb4980f
specific bundle for x86_64-linux, which is especially important for JRE due to its extra library dependencies;
 wenzelm parents: 
44807diff
changeset | 54 | tar -C "$ISABELLE_HOME/contrib" -x -z -f "$CONTRIB" | 
| 
3aa3aeb4980f
specific bundle for x86_64-linux, which is especially important for JRE due to its extra library dependencies;
 wenzelm parents: 
44807diff
changeset | 55 | NAME="$(basename "$CONTRIB" .tar.gz)" | 
| 
3aa3aeb4980f
specific bundle for x86_64-linux, which is especially important for JRE due to its extra library dependencies;
 wenzelm parents: 
44807diff
changeset | 56 | [ -d "$ISABELLE_HOME/contrib/$NAME" ] || fail "Bad archive content $CONTRIB" | 
| 33907 
473f859e1c29
re-package Isabelle distribution with add-on components;
 wenzelm parents: diff
changeset | 57 | |
| 44951 
3aa3aeb4980f
specific bundle for x86_64-linux, which is especially important for JRE due to its extra library dependencies;
 wenzelm parents: 
44807diff
changeset | 58 | if [ -e "$ISABELLE_HOME/contrib/$NAME/etc/settings" ]; then | 
| 
3aa3aeb4980f
specific bundle for x86_64-linux, which is especially important for JRE due to its extra library dependencies;
 wenzelm parents: 
44807diff
changeset | 59 | echo "component $NAME" | 
| 
3aa3aeb4980f
specific bundle for x86_64-linux, which is especially important for JRE due to its extra library dependencies;
 wenzelm parents: 
44807diff
changeset | 60 | echo "contrib/$NAME" >> "$ISABELLE_HOME/etc/components" | 
| 
3aa3aeb4980f
specific bundle for x86_64-linux, which is especially important for JRE due to its extra library dependencies;
 wenzelm parents: 
44807diff
changeset | 61 | else | 
| 
3aa3aeb4980f
specific bundle for x86_64-linux, which is especially important for JRE due to its extra library dependencies;
 wenzelm parents: 
44807diff
changeset | 62 | echo "package $NAME" | 
| 
3aa3aeb4980f
specific bundle for x86_64-linux, which is especially important for JRE due to its extra library dependencies;
 wenzelm parents: 
44807diff
changeset | 63 | fi | 
| 33907 
473f859e1c29
re-package Isabelle distribution with add-on components;
 wenzelm parents: diff
changeset | 64 | fi | 
| 
473f859e1c29
re-package Isabelle distribution with add-on components;
 wenzelm parents: diff
changeset | 65 | done | 
| 
473f859e1c29
re-package Isabelle distribution with add-on components;
 wenzelm parents: diff
changeset | 66 | |
| 37315 | 67 | |
| 37343 | 68 | HEAPS_ARCHIVE="$ARCHIVE_DIR/${ISABELLE_NAME}_heaps_${PLATFORM}.tar.gz"
 | 
| 69 | [ -f "$HEAPS_ARCHIVE" ] || fail "Bad heaps archive: $HEAPS_ARCHIVE" | |
| 70 | echo "heaps" | |
| 37357 | 71 | tar -C "$TMP" -x -z -f "$HEAPS_ARCHIVE" | 
| 37315 | 72 | |
| 73 | ||
| 41650 
0ec66d976f5b
delete .elc files unconditionally -- they cause too many incompatibilities;
 wenzelm parents: 
41627diff
changeset | 74 | ( | 
| 
0ec66d976f5b
delete .elc files unconditionally -- they cause too many incompatibilities;
 wenzelm parents: 
41627diff
changeset | 75 | cd "$TMP/$ISABELLE_NAME/contrib/ProofGeneral" | 
| 
0ec66d976f5b
delete .elc files unconditionally -- they cause too many incompatibilities;
 wenzelm parents: 
41627diff
changeset | 76 |   find . -name "*.elc" -exec rm {} ";"
 | 
| 
0ec66d976f5b
delete .elc files unconditionally -- they cause too many incompatibilities;
 wenzelm parents: 
41627diff
changeset | 77 | ) | 
| 
0ec66d976f5b
delete .elc files unconditionally -- they cause too many incompatibilities;
 wenzelm parents: 
41627diff
changeset | 78 | |
| 41627 
0040e0ea02e7
delete compiled .elc files to improve portability on Linux, notably for GNU Emacs 23.1.x instead of 23.2.x;
 wenzelm parents: 
41611diff
changeset | 79 | case "$PLATFORM" in | 
| 44951 
3aa3aeb4980f
specific bundle for x86_64-linux, which is especially important for JRE due to its extra library dependencies;
 wenzelm parents: 
44807diff
changeset | 80 | x86_64-linux) | 
| 
3aa3aeb4980f
specific bundle for x86_64-linux, which is especially important for JRE due to its extra library dependencies;
 wenzelm parents: 
44807diff
changeset | 81 | perl -pi -e 's,^ML_PLATFORM=.*$,ML_PLATFORM="\$ISABELLE_PLATFORM64",g;' "$TMP/$ISABELLE_NAME/etc/settings" | 
| 
3aa3aeb4980f
specific bundle for x86_64-linux, which is especially important for JRE due to its extra library dependencies;
 wenzelm parents: 
44807diff
changeset | 82 | perl -pi -e "s,^ML_OPTIONS=.*$,ML_OPTIONS=\"-H 400\",g;" "$TMP/$ISABELLE_NAME/etc/settings" | 
| 
3aa3aeb4980f
specific bundle for x86_64-linux, which is especially important for JRE due to its extra library dependencies;
 wenzelm parents: 
44807diff
changeset | 83 | ;; | 
| 44807 | 84 | *-darwin) | 
| 85 | perl -pi -e "s,lookAndFeel=.*,lookAndFeel=com.apple.laf.AquaLookAndFeel,g;" \ | |
| 44964 | 86 | -e "s,delete-line.shortcut=.*,delete-line.shortcut=C+d,g;" \ | 
| 87 | -e "s,delete.shortcut2=.*,delete.shortcut2=A+d,g;" \ | |
| 44807 | 88 | "$TMP/$ISABELLE_NAME/src/Tools/jEdit/dist/properties/jEdit.props" | 
| 89 | ;; | |
| 90 | *-cygwin) | |
| 91 | perl -pi -e "s,lookAndFeel=.*,lookAndFeel=com.sun.java.swing.plaf.windows.WindowsLookAndFeel,g;" \ | |
| 92 | "$TMP/$ISABELLE_NAME/src/Tools/jEdit/dist/properties/jEdit.props" | |
| 41627 
0040e0ea02e7
delete compiled .elc files to improve portability on Linux, notably for GNU Emacs 23.1.x instead of 23.2.x;
 wenzelm parents: 
41611diff
changeset | 93 | rm "$TMP/$ISABELLE_NAME/contrib/ProofGeneral" | 
| 
0040e0ea02e7
delete compiled .elc files to improve portability on Linux, notably for GNU Emacs 23.1.x instead of 23.2.x;
 wenzelm parents: 
41611diff
changeset | 94 | ln -s ProofGeneral-3.7.1.1 "$TMP/$ISABELLE_NAME/contrib/ProofGeneral" | 
| 
0040e0ea02e7
delete compiled .elc files to improve portability on Linux, notably for GNU Emacs 23.1.x instead of 23.2.x;
 wenzelm parents: 
41611diff
changeset | 95 | ;; | 
| 
0040e0ea02e7
delete compiled .elc files to improve portability on Linux, notably for GNU Emacs 23.1.x instead of 23.2.x;
 wenzelm parents: 
41611diff
changeset | 96 | *) | 
| 
0040e0ea02e7
delete compiled .elc files to improve portability on Linux, notably for GNU Emacs 23.1.x instead of 23.2.x;
 wenzelm parents: 
41611diff
changeset | 97 | ;; | 
| 
0040e0ea02e7
delete compiled .elc files to improve portability on Linux, notably for GNU Emacs 23.1.x instead of 23.2.x;
 wenzelm parents: 
41611diff
changeset | 98 | esac | 
| 41611 
f23ce44fbaec
Cygwin: back to ProofGeneral-3.7.1.1 with XEmacs, since PG 4.x with GNU Emacs 23 is painfully slow;
 wenzelm parents: 
41555diff
changeset | 99 | |
| 37315 | 100 | BUNDLE_ARCHIVE="${ARCHIVE_DIR}/${ISABELLE_NAME}_bundle_${PLATFORM}.tar.gz"
 | 
| 101 | ||
| 102 | echo "$(basename "$BUNDLE_ARCHIVE")" | |
| 41555 | 103 | tar -C "$TMP" -c -z -f "$BUNDLE_ARCHIVE" "$ISABELLE_NAME" | 
| 33907 
473f859e1c29
re-package Isabelle distribution with add-on components;
 wenzelm parents: diff
changeset | 104 | |
| 
473f859e1c29
re-package Isabelle distribution with add-on components;
 wenzelm parents: diff
changeset | 105 | |
| 
473f859e1c29
re-package Isabelle distribution with add-on components;
 wenzelm parents: diff
changeset | 106 | # clean up | 
| 
473f859e1c29
re-package Isabelle distribution with add-on components;
 wenzelm parents: diff
changeset | 107 | cd /tmp | 
| 
473f859e1c29
re-package Isabelle distribution with add-on components;
 wenzelm parents: diff
changeset | 108 | rm -rf "$TMP" |