updated makebundles as Admin isabelle tool;
authorwenzelm
Wed, 09 Jan 2013 18:12:21 +0100
changeset 518050088e0805b10
parent 51804 e988d44e04d7
child 51806 ef950fad7807
updated makebundles as Admin isabelle tool;
Admin/Release/makebundle
Admin/components/bundled
Admin/lib/Tools/makebundles
     1.1 --- a/Admin/Release/makebundle	Wed Jan 09 17:04:59 2013 +0100
     1.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.3 @@ -1,147 +0,0 @@
     1.4 -#!/usr/bin/env bash
     1.5 -#
     1.6 -# makebundle -- re-package with add-on components
     1.7 -
     1.8 -## diagnostics
     1.9 -
    1.10 -PRG=$(basename "$0")
    1.11 -
    1.12 -function usage()
    1.13 -{
    1.14 -  echo
    1.15 -  echo "Usage: $PRG ARCHIVE PLATFORM"
    1.16 -  echo
    1.17 -  echo "  Re-package Isabelle source distribution with add-on components"
    1.18 -  echo "  and heap images"
    1.19 -  echo
    1.20 -  exit 1
    1.21 -}
    1.22 -
    1.23 -function fail()
    1.24 -{
    1.25 -  echo "$1" >&2
    1.26 -  exit 2
    1.27 -}
    1.28 -
    1.29 -
    1.30 -## implicit and explicit arguments
    1.31 -
    1.32 -TMP="/var/tmp/isabelle-makebundle$$"
    1.33 -mkdir "$TMP" || fail "Cannot create directory $TMP"
    1.34 -
    1.35 -[ "$#" -ne 2 ] && usage
    1.36 -
    1.37 -ARCHIVE="$1"; shift
    1.38 -PLATFORM="$1"; shift
    1.39 -
    1.40 -[ -f "$ARCHIVE" ] || fail "Bad source archive: $ARCHIVE"
    1.41 -
    1.42 -
    1.43 -## main
    1.44 -
    1.45 -ARCHIVE_DIR="$(cd $(dirname "$ARCHIVE"); echo "$PWD")"
    1.46 -ISABELLE_NAME="$(basename "$ARCHIVE" .tar.gz)"
    1.47 -ISABELLE_HOME="$TMP/$ISABELLE_NAME"
    1.48 -
    1.49 -tar -C "$TMP" -x -z -f "$ARCHIVE"
    1.50 -
    1.51 -
    1.52 -echo "#bundled components" >> "$ISABELLE_HOME/etc/components"
    1.53 -
    1.54 -for CONTRIB in "$ARCHIVE_DIR/contrib/"*.tar.gz "$ARCHIVE_DIR/contrib/$PLATFORM"/*.tar.gz
    1.55 -do
    1.56 -  if [ -f "$CONTRIB" ]; then
    1.57 -    tar -C "$ISABELLE_HOME/contrib" -x -z -f "$CONTRIB"
    1.58 -    NAME="$(basename "$CONTRIB" .tar.gz)"
    1.59 -    [ -d "$ISABELLE_HOME/contrib/$NAME" ] || fail "Bad archive content $CONTRIB"
    1.60 -
    1.61 -    if [ -e "$ISABELLE_HOME/contrib/$NAME/etc/settings" ]; then
    1.62 -      echo "component $NAME"
    1.63 -      if [ "$PLATFORM" != x86-cygwin -a "$NAME" = ProofGeneral-3.7.1.1 ]; then
    1.64 -        echo "#contrib/$NAME" >> "$ISABELLE_HOME/etc/components"
    1.65 -      elif [ "$PLATFORM" = x86-cygwin -a "$NAME" = ProofGeneral-4.1 ]; then
    1.66 -        echo "#contrib/$NAME" >> "$ISABELLE_HOME/etc/components"
    1.67 -      else
    1.68 -        echo "contrib/$NAME" >> "$ISABELLE_HOME/etc/components"
    1.69 -      fi
    1.70 -    else
    1.71 -      echo "package $NAME"
    1.72 -    fi
    1.73 -  fi
    1.74 -done
    1.75 -
    1.76 -if [ "$PLATFORM" = x86-cygwin ]; then
    1.77 -  TAR="$ARCHIVE_DIR/contrib/x86-cygwin/Isabelle.tar"
    1.78 -  [ -e "$TAR" ] || fail "Missing $TAR"
    1.79 -  rm -f "$ISABELLE_HOME/Isabelle"
    1.80 -  tar -C "$ISABELLE_HOME" -xv -f "$TAR"
    1.81 -
    1.82 -  (
    1.83 -    cd "$ISABELLE_HOME"
    1.84 -    for DIR in $(find contrib -name x86-linux -o -name x86_64-linux -o -name x86-darwin -o -name x86_64-darwin | sort)
    1.85 -    do
    1.86 -      echo "removing $DIR"
    1.87 -      rm -rf "$DIR"
    1.88 -    done
    1.89 -  )
    1.90 -
    1.91 -  mv "$ISABELLE_HOME/contrib"/polyml* "$ISABELLE_HOME/contrib/cygwin-1.7.9/usr/local/"
    1.92 -  (
    1.93 -    cd "$ISABELLE_HOME/contrib/cygwin-1.7.9"
    1.94 -    find usr/local/polyml-*/x86-cygwin | gzip > etc/setup/polyml.lst.gz
    1.95 -  )
    1.96 -
    1.97 -  for NAME in ANNOUNCE README NEWS COPYRIGHT CONTRIBUTORS contrib/README
    1.98 -  do
    1.99 -    FILE="$ISABELLE_HOME/$NAME"
   1.100 -    {
   1.101 -      echo '<?xml version="1.0" encoding="utf-8" ?>'
   1.102 -      echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">'
   1.103 -      echo '<html xmlns="http://www.w3.org/1999/xhtml">'
   1.104 -      echo '<head>'
   1.105 -      echo '<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>'
   1.106 -      echo "<title>${NAME}</title>"
   1.107 -      echo '</head>'
   1.108 -      echo '<body>'
   1.109 -      echo '<pre>'
   1.110 -      perl -w -p -e "s/&/&amp;/g; s/</&lt;/g; s/>/&gt;/g; s/'/&apos;/g; s/\"/&quot;/g;" "$FILE"
   1.111 -      echo '</pre>'
   1.112 -      echo '</body>'
   1.113 -    } > "${FILE}.html"
   1.114 -  done
   1.115 -fi
   1.116 -
   1.117 -
   1.118 -HEAPS_ARCHIVE="$ARCHIVE_DIR/${ISABELLE_NAME}_heaps_${PLATFORM}.tar.gz"
   1.119 -[ -f "$HEAPS_ARCHIVE" ] || fail "Bad heaps archive: $HEAPS_ARCHIVE"
   1.120 -echo "heaps"
   1.121 -tar -C "$TMP" -x -z -f "$HEAPS_ARCHIVE"
   1.122 -
   1.123 -case "$PLATFORM" in
   1.124 -  x86_64-linux)
   1.125 -    perl -pi -e 's,^ML_PLATFORM=.*$,ML_PLATFORM="\$ISABELLE_PLATFORM64",g;' "$TMP/$ISABELLE_NAME/etc/settings"
   1.126 -    perl -pi -e "s,^ML_OPTIONS=.*$,ML_OPTIONS=\"-H 400\",g;" "$TMP/$ISABELLE_NAME/etc/settings"
   1.127 -    ;;
   1.128 -  *-darwin)
   1.129 -    perl -pi -e "s,lookAndFeel=.*,lookAndFeel=com.apple.laf.AquaLookAndFeel,g;" \
   1.130 -      -e "s,delete-line.shortcut=.*,delete-line.shortcut=C+d,g;" \
   1.131 -      -e "s,delete.shortcut2=.*,delete.shortcut2=A+d,g;" \
   1.132 -      "$TMP/$ISABELLE_NAME/src/Tools/jEdit/dist/properties/jEdit.props"
   1.133 -    ;;
   1.134 -  *-cygwin)
   1.135 -    perl -pi -e "s,lookAndFeel=.*,lookAndFeel=com.sun.java.swing.plaf.windows.WindowsLookAndFeel,g;" \
   1.136 -      "$TMP/$ISABELLE_NAME/src/Tools/jEdit/dist/properties/jEdit.props"
   1.137 -    ;;
   1.138 -  *)
   1.139 -    ;;
   1.140 -esac
   1.141 -
   1.142 -BUNDLE_ARCHIVE="${ARCHIVE_DIR}/${ISABELLE_NAME}_bundle_${PLATFORM}.tar.gz"
   1.143 -
   1.144 -echo "$(basename "$BUNDLE_ARCHIVE")"
   1.145 -tar -C "$TMP" -c -z -f "$BUNDLE_ARCHIVE" "$ISABELLE_NAME"
   1.146 -
   1.147 -
   1.148 -# clean up
   1.149 -cd /tmp
   1.150 -rm -rf "$TMP"
     2.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     2.2 +++ b/Admin/components/bundled	Wed Jan 09 18:12:21 2013 +0100
     2.3 @@ -0,0 +1,3 @@
     2.4 +#additional components to be bundled for release
     2.5 +ProofGeneral-4.1
     2.6 +
     3.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     3.2 +++ b/Admin/lib/Tools/makebundles	Wed Jan 09 18:12:21 2013 +0100
     3.3 @@ -0,0 +1,181 @@
     3.4 +#!/usr/bin/env bash
     3.5 +#
     3.6 +# DESCRIPTION: re-package Isabelle distribution with add-on components
     3.7 +
     3.8 +## diagnostics
     3.9 +
    3.10 +PRG=$(basename "$0")
    3.11 +
    3.12 +function usage()
    3.13 +{
    3.14 +  echo
    3.15 +  echo "Usage: isabelle $PRG ARCHIVE"
    3.16 +  echo
    3.17 +  echo "  Re-package Isabelle source distribution with add-on components"
    3.18 +  echo "  and post-hoc patches for platform families linux, macos, windows."
    3.19 +  echo
    3.20 +  echo "  Add-on components are that of the running Isabelle version!"
    3.21 +  echo
    3.22 +  exit 1
    3.23 +}
    3.24 +
    3.25 +function fail()
    3.26 +{
    3.27 +  echo "$1" >&2
    3.28 +  exit 2
    3.29 +}
    3.30 +
    3.31 +
    3.32 +## arguments
    3.33 +
    3.34 +[ "$#" -ne 1 ] && usage
    3.35 +
    3.36 +ARCHIVE="$1"; shift
    3.37 +
    3.38 +[ -f "$ARCHIVE" ] || fail "Bad source archive: $ARCHIVE"
    3.39 +
    3.40 +ARCHIVE_DIR="$(cd $(dirname "$ARCHIVE"); echo "$PWD")"
    3.41 +ISABELLE_NAME="$(basename "$ARCHIVE" .tar.gz)"
    3.42 +
    3.43 +
    3.44 +## main
    3.45 +
    3.46 +for PLATFORM_FAMILY in linux macos windows
    3.47 +do
    3.48 +
    3.49 +echo
    3.50 +echo "*** $PLATFORM_FAMILY ***"
    3.51 +
    3.52 +TMP="/var/tmp/isabelle-makebundle$$"
    3.53 +mkdir "$TMP" || fail "Cannot create directory $TMP"
    3.54 +
    3.55 +ISABELLE_TARGET="$TMP/$ISABELLE_NAME"
    3.56 +
    3.57 +tar -C "$TMP" -x -z -f "$ARCHIVE"
    3.58 +
    3.59 +
    3.60 +# bundled components
    3.61 +
    3.62 +mkdir -p "$ARCHIVE_DIR/contrib"
    3.63 +
    3.64 +echo "#bundled components" >> "$ISABELLE_TARGET/etc/components"
    3.65 +
    3.66 +for CATALOG in main bundled "$PLATFORM_FAMILY"
    3.67 +do
    3.68 +  CATALOG_FILE="$ISABELLE_HOME/Admin/components/$CATALOG"
    3.69 +  if [ -f "$CATALOG_FILE" ]
    3.70 +  then
    3.71 +    echo "catalog ${CATALOG}"
    3.72 +    {
    3.73 +      while { unset REPLY; read -r; test "$?" = 0 -o -n "$REPLY"; }
    3.74 +      do
    3.75 +        case "$REPLY" in
    3.76 +          \#* | "") ;;
    3.77 +          *)
    3.78 +            COMPONENT="$REPLY"
    3.79 +            case "$COMPONENT" in
    3.80 +              jedit_build*) ;;
    3.81 +              *)
    3.82 +                echo "  component $COMPONENT"
    3.83 +                CONTRIB="$ARCHIVE_DIR/contrib/${COMPONENT}.tar.gz"
    3.84 +                if [ ! -f "$CONTRIB" ]; then
    3.85 +                  REMOTE="$ISABELLE_COMPONENT_REPOSITORY/${COMPONENT}.tar.gz"
    3.86 +                  echo "  download $REMOTE"
    3.87 +                  perl -MLWP::Simple -e "getprint '$REMOTE';" > "$CONTRIB"
    3.88 +                  perl -e "exit((stat('${CONTRIB}'))[7] == 0 ? 0 : 1);" && exit 2
    3.89 +                fi
    3.90 +
    3.91 +                tar -C "$ISABELLE_TARGET/contrib" -x -z -f "$CONTRIB"
    3.92 +                echo "contrib/$COMPONENT" >> "$ISABELLE_TARGET/etc/components"
    3.93 +                ;;
    3.94 +            esac
    3.95 +            ;;
    3.96 +        esac
    3.97 +      done
    3.98 +    } < "$CATALOG_FILE"
    3.99 +  fi
   3.100 +done
   3.101 +
   3.102 +
   3.103 +# platform patches
   3.104 +
   3.105 +case "$PLATFORM_FAMILY" in
   3.106 +  linux)
   3.107 +    (
   3.108 +      cd "$ISABELLE_TARGET"
   3.109 +      for DIR in contrib/jdk*/*-darwin contrib/jdk*/*-cygwin
   3.110 +      do
   3.111 +        echo "removing $DIR"
   3.112 +        rm -rf "$DIR"
   3.113 +      done
   3.114 +    )
   3.115 +    ;;
   3.116 +  macos)
   3.117 +    (
   3.118 +      cd "$ISABELLE_TARGET"
   3.119 +      for DIR in contrib/jdk*/*-linux contrib/jdk*/*-cygwin
   3.120 +      do
   3.121 +        echo "removing $DIR"
   3.122 +        rm -rf "$DIR"
   3.123 +      done
   3.124 +    )
   3.125 +    perl -pi -e "s,lookAndFeel=.*,lookAndFeel=com.apple.laf.AquaLookAndFeel,g;" \
   3.126 +      -e "s,delete-line.shortcut=.*,delete-line.shortcut=C+d,g;" \
   3.127 +      -e "s,delete.shortcut2=.*,delete.shortcut2=A+d,g;" \
   3.128 +      "$TMP/$ISABELLE_NAME/src/Tools/jEdit/dist/properties/jEdit.props"
   3.129 +    ;;
   3.130 +  windows)
   3.131 +    (
   3.132 +      cd "$ISABELLE_TARGET"
   3.133 +      for DIR in \
   3.134 +        $(find contrib -name x86-linux -o -name x86_64-linux -o -name x86-darwin -o -name x86_64-darwin | sort)
   3.135 +      do
   3.136 +        echo "removing $DIR"
   3.137 +        rm -rf "$DIR"
   3.138 +      done
   3.139 +    )
   3.140 +
   3.141 +    perl -pi -e "s,lookAndFeel=.*,lookAndFeel=com.sun.java.swing.plaf.windows.WindowsLookAndFeel,g;" \
   3.142 +      "$TMP/$ISABELLE_NAME/src/Tools/jEdit/dist/properties/jEdit.props"
   3.143 +
   3.144 +# FIXME include cygwin.tar.gz etc.
   3.145 +#
   3.146 +#    TAR="$ARCHIVE_DIR/contrib/windows/Isabelle.tar"
   3.147 +#    [ -e "$TAR" ] || fail "Missing $TAR"
   3.148 +#    rm -f "$ISABELLE_TARGET/Isabelle"
   3.149 +#    tar -C "$ISABELLE_TARGET" -xv -f "$TAR"
   3.150 +
   3.151 +    for NAME in ANNOUNCE README NEWS COPYRIGHT CONTRIBUTORS contrib/README
   3.152 +    do
   3.153 +      FILE="$ISABELLE_TARGET/$NAME"
   3.154 +      {
   3.155 +        echo '<?xml version="1.0" encoding="utf-8" ?>'
   3.156 +        echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">'
   3.157 +        echo '<html xmlns="http://www.w3.org/1999/xhtml">'
   3.158 +        echo '<head>'
   3.159 +        echo '<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>'
   3.160 +        echo "<title>${NAME}</title>"
   3.161 +        echo '</head>'
   3.162 +        echo '<body>'
   3.163 +        echo '<pre>'
   3.164 +        perl -w -p -e "s/&/&amp;/g; s/</&lt;/g; s/>/&gt;/g; s/'/&apos;/g; s/\"/&quot;/g;" "$FILE"
   3.165 +        echo '</pre>'
   3.166 +        echo '</body>'
   3.167 +      } > "${FILE}.html"
   3.168 +    done
   3.169 +    ;;
   3.170 +  *)
   3.171 +    ;;
   3.172 +esac
   3.173 +
   3.174 +BUNDLE_ARCHIVE="${ARCHIVE_DIR}/${ISABELLE_NAME}_bundle_${PLATFORM_FAMILY}.tar.gz"
   3.175 +
   3.176 +echo "packaging $(basename "$BUNDLE_ARCHIVE")"
   3.177 +tar -C "$TMP" -c -z -f "$BUNDLE_ARCHIVE" "$ISABELLE_NAME"
   3.178 +
   3.179 +
   3.180 +# clean up
   3.181 +rm -rf "$TMP"
   3.182 +
   3.183 +done
   3.184 +