Admin/java/build
author wenzelm
Sun, 13 Jan 2013 20:30:33 +0100
changeset 51878 8f6046b7f850
parent 51309 dceb1daa185c
child 51905 097e38daa03a
permissions -rwxr-xr-x
some attempts to avoid "._" files on Mac OS X;
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@51309
    14
ARCHIVE_LINUX32="jdk-7u9-linux-i586.tar.gz"
wenzelm@51309
    15
ARCHIVE_LINUX64="jdk-7u9-linux-x64.tar.gz"
wenzelm@51309
    16
ARCHIVE_DARWIN="jdk1.7.0_09.jdk.tar.gz"
wenzelm@51309
    17
ARCHIVE_WINDOWS="jdk1.7.0_09.tar.gz"
wenzelm@48985
    18
wenzelm@51309
    19
VERSION="7u9"
wenzelm@48985
    20
wenzelm@49840
    21
wenzelm@49840
    22
## variations on version
wenzelm@48985
    23
wenzelm@48985
    24
case "$VERSION" in
wenzelm@48985
    25
  *u?)
wenzelm@48985
    26
    MAJOR="$(echo "$VERSION" | cut -du -f1)"
wenzelm@48985
    27
    MINOR="0$(echo "$VERSION" | cut -du -f2)"
wenzelm@48985
    28
    ;;
wenzelm@48985
    29
  *u??)
wenzelm@48985
    30
    MAJOR="$(echo "$VERSION" | cut -du -f1)"
wenzelm@48985
    31
    MINOR="$(echo "$VERSION" | cut -du -f2)"
wenzelm@48985
    32
    ;;
wenzelm@48985
    33
  *)
wenzelm@48985
    34
    fail "Bad version identifier: \"$VERSION\""
wenzelm@48985
    35
    ;;
wenzelm@48985
    36
esac
wenzelm@48985
    37
wenzelm@48985
    38
FULL_VERSION="1.${MAJOR}.0_${MINOR}"
wenzelm@48985
    39
wenzelm@48985
    40
wenzelm@48985
    41
## main
wenzelm@48985
    42
wenzelm@49840
    43
DIR="jdk-${VERSION}"
wenzelm@48985
    44
mkdir "$DIR" || fail "Cannot create fresh directory: \"$DIR\""
wenzelm@48985
    45
wenzelm@48985
    46
wenzelm@48985
    47
# README
wenzelm@48985
    48
wenzelm@48985
    49
cat >> "$DIR/README" << EOF
wenzelm@51309
    50
This is JDK $FULL_VERSION as required for Isabelle.
wenzelm@48985
    51
wenzelm@48985
    52
See http://www.oracle.com/technetwork/java/javase/downloads/index.html
wenzelm@48985
    53
for the original downloads, which are covered by the Oracle Binary
wenzelm@48985
    54
Code License Agreement for Java SE.
wenzelm@49840
    55
wenzelm@51309
    56
Linux, Mac OS X, Windows work uniformly, depending on certain
wenzelm@51309
    57
platform-specific subdirectories.
wenzelm@51309
    58
wenzelm@51309
    59
Note that Java 1.7 on Mac OS X requires 64bit hardware!
wenzelm@48985
    60
EOF
wenzelm@48985
    61
wenzelm@48985
    62
wenzelm@48985
    63
# settings
wenzelm@48985
    64
wenzelm@48985
    65
mkdir "$DIR/etc"
wenzelm@48985
    66
cat >> "$DIR/etc/settings" << EOF
wenzelm@48985
    67
# -*- shell-script -*- :mode=shellscript:
wenzelm@48985
    68
wenzelm@49840
    69
case "\${ISABELLE_PLATFORM64:-\$ISABELLE_PLATFORM32}" in
wenzelm@49840
    70
  x86-darwin)
wenzelm@49840
    71
    echo "### Java 1.7 unavailable on 32bit Macintosh!" >&2
wenzelm@49840
    72
    ;;
wenzelm@49840
    73
  x86_64-darwin)
wenzelm@49840
    74
    ISABELLE_JDK_HOME="\$COMPONENT/\$ISABELLE_PLATFORM64/jdk${FULL_VERSION}.jdk/Contents/Home"
wenzelm@49840
    75
    ;;
wenzelm@49840
    76
  *)
wenzelm@49840
    77
    ISABELLE_JDK_HOME="\$COMPONENT/\${ISABELLE_PLATFORM64:-\$ISABELLE_PLATFORM32}/jdk${FULL_VERSION}"
wenzelm@49840
    78
    ;;
wenzelm@49840
    79
esac
wenzelm@49840
    80
wenzelm@49840
    81
if [ -n "\$ISABELLE_JDK_HOME" ]; then
wenzelm@51309
    82
  if [ -d "\$ISABELLE_JDK_HOME" ]; then
wenzelm@51309
    83
    ISABELLE_JAVA_EXT="\${ISABELLE_JDK_HOME}/jre/lib/ext"
wenzelm@51309
    84
  else
wenzelm@51309
    85
    echo "### Missing Java 1.7 platform directory: \"\$ISABELLE_JDK_HOME\"" >&2
wenzelm@51309
    86
    unset ISABELLE_JDK_HOME
wenzelm@51309
    87
  fi
wenzelm@49840
    88
fi
wenzelm@48985
    89
EOF
wenzelm@48985
    90
wenzelm@48985
    91
wenzelm@48985
    92
# content
wenzelm@48985
    93
wenzelm@51878
    94
export COPYFILE_DISABLE=true
wenzelm@51878
    95
wenzelm@49840
    96
mkdir "$DIR/x86-linux" "$DIR/x86_64-linux" "$DIR/x86_64-darwin" "$DIR/x86-cygwin"
wenzelm@48985
    97
wenzelm@49840
    98
tar -C "$DIR/x86-linux" -xf "$ARCHIVE_LINUX32"
wenzelm@49840
    99
tar -C "$DIR/x86_64-linux" -xf "$ARCHIVE_LINUX64"
wenzelm@49840
   100
tar -C "$DIR/x86_64-darwin" -xf "$ARCHIVE_DARWIN"
wenzelm@49840
   101
tar -C "$DIR/x86-cygwin" -xf "$ARCHIVE_WINDOWS"
wenzelm@49840
   102
wenzelm@49840
   103
chgrp -R isabelle "$DIR"
wenzelm@49840
   104
chmod -R a+r "$DIR"
wenzelm@49840
   105
chmod -R a+X "$DIR"
wenzelm@48985
   106
wenzelm@51309
   107
find "$DIR/x86_64-darwin" -name "._*" -exec rm -f {} ";"
wenzelm@51309
   108
wenzelm@48985
   109
(
wenzelm@49840
   110
  cd "$DIR/x86-linux/jdk${FULL_VERSION}"
wenzelm@48985
   111
  for FILE in $(find . -type f)
wenzelm@48985
   112
  do
wenzelm@49840
   113
    for OTHER in \
wenzelm@49840
   114
      "../../x86_64-linux/jdk${FULL_VERSION}/$FILE" \
wenzelm@49840
   115
      "../../x86_64-darwin/jdk${FULL_VERSION}.jdk/Contents/Home/$FILE" \
wenzelm@49840
   116
      "../../x86-cygwin/jdk${FULL_VERSION}/$FILE"
wenzelm@49840
   117
    do
wenzelm@49840
   118
      if cmp -s "$FILE" "$OTHER"
wenzelm@49840
   119
      then
wenzelm@49840
   120
        ln -f "$FILE" "$OTHER"
wenzelm@49840
   121
      fi
wenzelm@49840
   122
    done
wenzelm@48985
   123
  done
wenzelm@48985
   124
)
wenzelm@48985
   125
wenzelm@48985
   126
wenzelm@48985
   127
# create archive
wenzelm@48985
   128
wenzelm@49840
   129
tar -cz -f "${DIR}.tar.gz" "$DIR"