Admin/makebundle
author wenzelm
Wed, 07 Sep 2011 22:00:41 +0200
changeset 45688 44db3e309060
parent 42534 0ec66d976f5b
child 45822 3aa3aeb4980f
permissions -rwxr-xr-x
platform-specific look and feel;
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@45688
    78
  *-darwin)
wenzelm@45688
    79
    perl -pi -e "s,lookAndFeel=.*,lookAndFeel=com.apple.laf.AquaLookAndFeel,g;" \
wenzelm@45688
    80
      "$TMP/$ISABELLE_NAME/src/Tools/jEdit/dist/properties/jEdit.props"
wenzelm@45688
    81
    ;;
wenzelm@45688
    82
  *-cygwin)
wenzelm@45688
    83
    perl -pi -e "s,lookAndFeel=.*,lookAndFeel=com.sun.java.swing.plaf.windows.WindowsLookAndFeel,g;" \
wenzelm@45688
    84
      "$TMP/$ISABELLE_NAME/src/Tools/jEdit/dist/properties/jEdit.props"
wenzelm@41875
    85
    rm "$TMP/$ISABELLE_NAME/contrib/ProofGeneral"
wenzelm@41875
    86
    ln -s ProofGeneral-3.7.1.1 "$TMP/$ISABELLE_NAME/contrib/ProofGeneral"
wenzelm@41875
    87
    ;;
wenzelm@41875
    88
  *)
wenzelm@41875
    89
    ;;
wenzelm@41875
    90
esac
wenzelm@41860
    91
wenzelm@37333
    92
BUNDLE_ARCHIVE="${ARCHIVE_DIR}/${ISABELLE_NAME}_bundle_${PLATFORM}.tar.gz"
wenzelm@37333
    93
wenzelm@37333
    94
echo "$(basename "$BUNDLE_ARCHIVE")"
wenzelm@41803
    95
tar -C "$TMP" -c -z -f "$BUNDLE_ARCHIVE" "$ISABELLE_NAME"
wenzelm@33923
    96
wenzelm@33923
    97
wenzelm@33923
    98
# clean up
wenzelm@33923
    99
cd /tmp
wenzelm@33923
   100
rm -rf "$TMP"