Admin/java/build
author wenzelm
Mon, 18 Aug 2014 12:15:11 +0200
changeset 59102 113b43b84412
parent 58929 af074bd6222e
permissions -rwxr-xr-x
updated to jdk-7u67;
wenzelm@48985
     1
#!/usr/bin/env bash
wenzelm@48985
     2
wenzelm@48985
     3
## diagnostics
wenzelm@48985
     4
wenzelm@48985
     5
function fail()
wenzelm@48985
     6
{
wenzelm@48985
     7
  echo "$1" >&2
wenzelm@48985
     8
  exit 2
wenzelm@48985
     9
}
wenzelm@48985
    10
wenzelm@48985
    11
wenzelm@49840
    12
## parameters
wenzelm@48985
    13
wenzelm@59102
    14
VERSION="7u67"
wenzelm@59102
    15
FULL_VERSION="1.7.0_67"
wenzelm@48985
    16
wenzelm@51905
    17
ARCHIVE_LINUX32="jdk-${VERSION}-linux-i586.tar.gz"
wenzelm@51905
    18
ARCHIVE_LINUX64="jdk-${VERSION}-linux-x64.tar.gz"
wenzelm@51905
    19
ARCHIVE_DARWIN="jdk${FULL_VERSION}.jdk.tar.gz"
wenzelm@51905
    20
ARCHIVE_WINDOWS="jdk${FULL_VERSION}.tar.gz"
wenzelm@48985
    21
wenzelm@48985
    22
wenzelm@48985
    23
## main
wenzelm@48985
    24
wenzelm@49840
    25
DIR="jdk-${VERSION}"
wenzelm@48985
    26
mkdir "$DIR" || fail "Cannot create fresh directory: \"$DIR\""
wenzelm@48985
    27
wenzelm@48985
    28
wenzelm@48985
    29
# README
wenzelm@48985
    30
wenzelm@48985
    31
cat >> "$DIR/README" << EOF
wenzelm@51309
    32
This is JDK $FULL_VERSION as required for Isabelle.
wenzelm@48985
    33
wenzelm@48985
    34
See http://www.oracle.com/technetwork/java/javase/downloads/index.html
wenzelm@48985
    35
for the original downloads, which are covered by the Oracle Binary
wenzelm@48985
    36
Code License Agreement for Java SE.
wenzelm@49840
    37
wenzelm@51309
    38
Linux, Mac OS X, Windows work uniformly, depending on certain
wenzelm@51309
    39
platform-specific subdirectories.
wenzelm@48985
    40
EOF
wenzelm@48985
    41
wenzelm@48985
    42
wenzelm@48985
    43
# settings
wenzelm@48985
    44
wenzelm@48985
    45
mkdir "$DIR/etc"
wenzelm@48985
    46
cat >> "$DIR/etc/settings" << EOF
wenzelm@48985
    47
# -*- shell-script -*- :mode=shellscript:
wenzelm@48985
    48
wenzelm@49840
    49
case "\${ISABELLE_PLATFORM64:-\$ISABELLE_PLATFORM32}" in
wenzelm@49840
    50
  x86-darwin)
wenzelm@58925
    51
    echo "### Java unavailable on 32bit Macintosh!" >&2
wenzelm@49840
    52
    ;;
wenzelm@49840
    53
  x86_64-darwin)
wenzelm@54554
    54
    ISABELLE_JDK_HOME="\$COMPONENT/\$ISABELLE_PLATFORM64/Contents/Home"
wenzelm@49840
    55
    ;;
wenzelm@49840
    56
  *)
wenzelm@54554
    57
    ISABELLE_JDK_HOME="\$COMPONENT/\${ISABELLE_PLATFORM64:-\$ISABELLE_PLATFORM32}"
wenzelm@49840
    58
    ;;
wenzelm@49840
    59
esac
wenzelm@49840
    60
wenzelm@49840
    61
if [ -n "\$ISABELLE_JDK_HOME" ]; then
wenzelm@51309
    62
  if [ -d "\$ISABELLE_JDK_HOME" ]; then
wenzelm@51309
    63
    ISABELLE_JAVA_EXT="\${ISABELLE_JDK_HOME}/jre/lib/ext"
wenzelm@51309
    64
  else
wenzelm@58925
    65
    echo "### Missing Java platform directory: \"\$ISABELLE_JDK_HOME\"" >&2
wenzelm@51309
    66
    unset ISABELLE_JDK_HOME
wenzelm@51309
    67
  fi
wenzelm@49840
    68
fi
wenzelm@48985
    69
EOF
wenzelm@48985
    70
wenzelm@48985
    71
wenzelm@48985
    72
# content
wenzelm@48985
    73
wenzelm@55050
    74
#GNU tar (notably on Mac OS X)
wenzelm@55050
    75
if [ -x /usr/bin/gnutar ]; then
wenzelm@55050
    76
  function tar() { /usr/bin/gnutar "$@"; }
wenzelm@55050
    77
fi
wenzelm@51878
    78
wenzelm@49840
    79
mkdir "$DIR/x86-linux" "$DIR/x86_64-linux" "$DIR/x86_64-darwin" "$DIR/x86-cygwin"
wenzelm@48985
    80
wenzelm@49840
    81
tar -C "$DIR/x86-linux" -xf "$ARCHIVE_LINUX32"
wenzelm@49840
    82
tar -C "$DIR/x86_64-linux" -xf "$ARCHIVE_LINUX64"
wenzelm@49840
    83
tar -C "$DIR/x86_64-darwin" -xf "$ARCHIVE_DARWIN"
wenzelm@49840
    84
tar -C "$DIR/x86-cygwin" -xf "$ARCHIVE_WINDOWS"
wenzelm@49840
    85
wenzelm@54554
    86
(
wenzelm@54554
    87
  cd "$DIR"
wenzelm@54554
    88
  for PLATFORM in x86-linux x86_64-linux x86-cygwin
wenzelm@54554
    89
  do
wenzelm@54554
    90
    mv "$PLATFORM/jdk${FULL_VERSION}"/* "$PLATFORM"/.
wenzelm@54554
    91
    rmdir "$PLATFORM/jdk${FULL_VERSION}"
wenzelm@54554
    92
  done
wenzelm@54554
    93
  PLATFORM=x86_64-darwin
wenzelm@54554
    94
  mv "$PLATFORM/jdk${FULL_VERSION}.jdk"/* "$PLATFORM"/.
wenzelm@54554
    95
  rmdir "$PLATFORM/jdk${FULL_VERSION}.jdk"
wenzelm@54554
    96
)
wenzelm@54554
    97
wenzelm@49840
    98
chgrp -R isabelle "$DIR"
wenzelm@49840
    99
chmod -R a+r "$DIR"
wenzelm@49840
   100
chmod -R a+X "$DIR"
wenzelm@48985
   101
wenzelm@51309
   102
find "$DIR/x86_64-darwin" -name "._*" -exec rm -f {} ";"
wenzelm@51309
   103
wenzelm@51905
   104
echo "Sharing ..."
wenzelm@48985
   105
(
wenzelm@54554
   106
  cd "$DIR/x86-linux"
wenzelm@48985
   107
  for FILE in $(find . -type f)
wenzelm@48985
   108
  do
wenzelm@49840
   109
    for OTHER in \
wenzelm@54768
   110
      "../x86_64-linux/$FILE" \
wenzelm@54768
   111
      "../x86_64-darwin/Contents/Home/$FILE" \
wenzelm@54768
   112
      "../x86-cygwin/$FILE"
wenzelm@49840
   113
    do
wenzelm@49840
   114
      if cmp -s "$FILE" "$OTHER"
wenzelm@49840
   115
      then
wenzelm@58929
   116
        echo -n "*"
wenzelm@49840
   117
        ln -f "$FILE" "$OTHER"
wenzelm@49840
   118
      fi
wenzelm@49840
   119
    done
wenzelm@48985
   120
  done
wenzelm@48985
   121
)
wenzelm@54768
   122
echo
wenzelm@48985
   123
wenzelm@48985
   124
wenzelm@48985
   125
# create archive
wenzelm@48985
   126
wenzelm@51905
   127
echo "Archiving ..."
wenzelm@51905
   128
tar -c -z -f "${DIR}.tar.gz" "$DIR" && echo "${DIR}.tar.gz"