Admin/makebundle
author wenzelm
Sat, 17 Sep 2011 16:53:01 +0200
changeset 45822 3aa3aeb4980f
parent 45688 44db3e309060
child 45835 23dbab7f8cf4
permissions -rwxr-xr-x
specific bundle for x86_64-linux, which is especially important for JRE due to its extra library dependencies;
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@45822
    51
for CONTRIB in "$ARCHIVE_DIR/contrib/"*.tar.gz "$ARCHIVE_DIR/contrib/$PLATFORM"/*.tar.gz
wenzelm@33923
    52
do
wenzelm@45822
    53
  if [ -f "$CONTRIB" ]; then
wenzelm@45822
    54
    tar -C "$ISABELLE_HOME/contrib" -x -z -f "$CONTRIB"
wenzelm@45822
    55
    NAME="$(basename "$CONTRIB" .tar.gz)"
wenzelm@45822
    56
    [ -d "$ISABELLE_HOME/contrib/$NAME" ] || fail "Bad archive content $CONTRIB"
wenzelm@33923
    57
wenzelm@45822
    58
    if [ -e "$ISABELLE_HOME/contrib/$NAME/etc/settings" ]; then
wenzelm@45822
    59
      echo "component $NAME"
wenzelm@45822
    60
      echo "contrib/$NAME" >> "$ISABELLE_HOME/etc/components"
wenzelm@45822
    61
    else
wenzelm@45822
    62
      echo "package $NAME"
wenzelm@45822
    63
    fi
wenzelm@33923
    64
  fi
wenzelm@33923
    65
done
wenzelm@33923
    66
wenzelm@37333
    67
wenzelm@37343
    68
HEAPS_ARCHIVE="$ARCHIVE_DIR/${ISABELLE_NAME}_heaps_${PLATFORM}.tar.gz"
wenzelm@37343
    69
[ -f "$HEAPS_ARCHIVE" ] || fail "Bad heaps archive: $HEAPS_ARCHIVE"
wenzelm@37343
    70
echo "heaps"
wenzelm@37460
    71
tar -C "$TMP" -x -z -f "$HEAPS_ARCHIVE"
wenzelm@37333
    72
wenzelm@37333
    73
wenzelm@42534
    74
(
wenzelm@42534
    75
  cd "$TMP/$ISABELLE_NAME/contrib/ProofGeneral"
wenzelm@42534
    76
  find . -name "*.elc" -exec rm {} ";"
wenzelm@42534
    77
)
wenzelm@42534
    78
wenzelm@41875
    79
case "$PLATFORM" in
wenzelm@45822
    80
  x86_64-linux)
wenzelm@45822
    81
    perl -pi -e 's,^ML_PLATFORM=.*$,ML_PLATFORM="\$ISABELLE_PLATFORM64",g;' "$TMP/$ISABELLE_NAME/etc/settings"
wenzelm@45822
    82
    perl -pi -e "s,^ML_OPTIONS=.*$,ML_OPTIONS=\"-H 400\",g;" "$TMP/$ISABELLE_NAME/etc/settings"
wenzelm@45822
    83
    ;;
wenzelm@45688
    84
  *-darwin)
wenzelm@45688
    85
    perl -pi -e "s,lookAndFeel=.*,lookAndFeel=com.apple.laf.AquaLookAndFeel,g;" \
wenzelm@45688
    86
      "$TMP/$ISABELLE_NAME/src/Tools/jEdit/dist/properties/jEdit.props"
wenzelm@45688
    87
    ;;
wenzelm@45688
    88
  *-cygwin)
wenzelm@45688
    89
    perl -pi -e "s,lookAndFeel=.*,lookAndFeel=com.sun.java.swing.plaf.windows.WindowsLookAndFeel,g;" \
wenzelm@45688
    90
      "$TMP/$ISABELLE_NAME/src/Tools/jEdit/dist/properties/jEdit.props"
wenzelm@41875
    91
    rm "$TMP/$ISABELLE_NAME/contrib/ProofGeneral"
wenzelm@41875
    92
    ln -s ProofGeneral-3.7.1.1 "$TMP/$ISABELLE_NAME/contrib/ProofGeneral"
wenzelm@41875
    93
    ;;
wenzelm@41875
    94
  *)
wenzelm@41875
    95
    ;;
wenzelm@41875
    96
esac
wenzelm@41860
    97
wenzelm@37333
    98
BUNDLE_ARCHIVE="${ARCHIVE_DIR}/${ISABELLE_NAME}_bundle_${PLATFORM}.tar.gz"
wenzelm@37333
    99
wenzelm@37333
   100
echo "$(basename "$BUNDLE_ARCHIVE")"
wenzelm@41803
   101
tar -C "$TMP" -c -z -f "$BUNDLE_ARCHIVE" "$ISABELLE_NAME"
wenzelm@33923
   102
wenzelm@33923
   103
wenzelm@33923
   104
# clean up
wenzelm@33923
   105
cd /tmp
wenzelm@33923
   106
rm -rf "$TMP"