|
1 #!/usr/bin/env bash |
|
2 |
|
3 ## diagnostics |
|
4 |
|
5 function fail() |
|
6 { |
|
7 echo "$1" >&2 |
|
8 exit 2 |
|
9 } |
|
10 |
|
11 |
|
12 ## parameters |
|
13 |
|
14 ARCHIVE_LINUX32="jdk-7u6-linux-i586.tar.gz" |
|
15 ARCHIVE_LINUX64="jdk-7u6-linux-x64.tar.gz" |
|
16 ARCHIVE_DARWIN="jdk1.7.0_06.jdk.tar.gz" |
|
17 ARCHIVE_WINDOWS="jdk1.7.0_06.tar.gz" |
|
18 |
|
19 VERSION="7u6" |
|
20 |
|
21 |
|
22 ## variations on version |
|
23 |
|
24 case "$VERSION" in |
|
25 *u?) |
|
26 MAJOR="$(echo "$VERSION" | cut -du -f1)" |
|
27 MINOR="0$(echo "$VERSION" | cut -du -f2)" |
|
28 ;; |
|
29 *u??) |
|
30 MAJOR="$(echo "$VERSION" | cut -du -f1)" |
|
31 MINOR="$(echo "$VERSION" | cut -du -f2)" |
|
32 ;; |
|
33 *) |
|
34 fail "Bad version identifier: \"$VERSION\"" |
|
35 ;; |
|
36 esac |
|
37 |
|
38 FULL_VERSION="1.${MAJOR}.0_${MINOR}" |
|
39 |
|
40 |
|
41 ## main |
|
42 |
|
43 DIR="jdk-${VERSION}" |
|
44 mkdir "$DIR" || fail "Cannot create fresh directory: \"$DIR\"" |
|
45 |
|
46 |
|
47 # README |
|
48 |
|
49 cat >> "$DIR/README" << EOF |
|
50 This is JDK $FULL_VERSION for Linux, Mac OS X, Windows. |
|
51 |
|
52 See http://www.oracle.com/technetwork/java/javase/downloads/index.html |
|
53 for the original downloads, which are covered by the Oracle Binary |
|
54 Code License Agreement for Java SE. |
|
55 |
|
56 Note that Java 1.7 requires 64bit hardware on Mac OS X. |
|
57 EOF |
|
58 |
|
59 |
|
60 # settings |
|
61 |
|
62 mkdir "$DIR/etc" |
|
63 cat >> "$DIR/etc/settings" << EOF |
|
64 # -*- shell-script -*- :mode=shellscript: |
|
65 |
|
66 case "\${ISABELLE_PLATFORM64:-\$ISABELLE_PLATFORM32}" in |
|
67 x86-darwin) |
|
68 echo "### Java 1.7 unavailable on 32bit Macintosh!" >&2 |
|
69 ;; |
|
70 x86_64-darwin) |
|
71 ISABELLE_JDK_HOME="\$COMPONENT/\$ISABELLE_PLATFORM64/jdk${FULL_VERSION}.jdk/Contents/Home" |
|
72 ;; |
|
73 *) |
|
74 ISABELLE_JDK_HOME="\$COMPONENT/\${ISABELLE_PLATFORM64:-\$ISABELLE_PLATFORM32}/jdk${FULL_VERSION}" |
|
75 ;; |
|
76 esac |
|
77 |
|
78 if [ -n "\$ISABELLE_JDK_HOME" ]; then |
|
79 ISABELLE_JAVA_EXT="\${ISABELLE_JDK_HOME}/jre/lib/ext" |
|
80 fi |
|
81 EOF |
|
82 |
|
83 |
|
84 # content |
|
85 |
|
86 mkdir "$DIR/x86-linux" "$DIR/x86_64-linux" "$DIR/x86_64-darwin" "$DIR/x86-cygwin" |
|
87 |
|
88 tar -C "$DIR/x86-linux" -xf "$ARCHIVE_LINUX32" |
|
89 tar -C "$DIR/x86_64-linux" -xf "$ARCHIVE_LINUX64" |
|
90 tar -C "$DIR/x86_64-darwin" -xf "$ARCHIVE_DARWIN" |
|
91 tar -C "$DIR/x86-cygwin" -xf "$ARCHIVE_WINDOWS" |
|
92 |
|
93 chgrp -R isabelle "$DIR" |
|
94 chmod -R a+r "$DIR" |
|
95 chmod -R a+X "$DIR" |
|
96 |
|
97 ( |
|
98 cd "$DIR/x86-linux/jdk${FULL_VERSION}" |
|
99 for FILE in $(find . -type f) |
|
100 do |
|
101 for OTHER in \ |
|
102 "../../x86_64-linux/jdk${FULL_VERSION}/$FILE" \ |
|
103 "../../x86_64-darwin/jdk${FULL_VERSION}.jdk/Contents/Home/$FILE" \ |
|
104 "../../x86-cygwin/jdk${FULL_VERSION}/$FILE" |
|
105 do |
|
106 if cmp -s "$FILE" "$OTHER" |
|
107 then |
|
108 ln -f "$FILE" "$OTHER" |
|
109 fi |
|
110 done |
|
111 done |
|
112 ) |
|
113 |
|
114 |
|
115 # create archive |
|
116 |
|
117 tar -cz -f "${DIR}.tar.gz" "$DIR" |