]> git.sven.stormbind.net Git - sven/java-package.git/blob - lib/oracle-jdk.sh
Basic support for Java 10
[sven/java-package.git] / lib / oracle-jdk.sh
1 # Detect product
2 j2se_detect_oracle_j2sdk=oracle_j2sdk_detect
3 oracle_j2sdk_detect() {
4   j2se_release=0
5
6   # JDK 10 release candidate (jdk-10+46_linux-x64_bin.tar.gz)
7   if [[ $archive_name =~ jdk-10(\.([0-9]+)\.([0-9]+)|\+[0-9]+)?_linux-x64_bin\.tar\.gz ]]
8   then
9       j2se_release=10
10       j2se_update=${BASH_REMATCH[1]:-.0.0}
11       j2se_arch=x64
12       j2se_version_name="${j2se_release} version ${j2se_release}${j2se_update}"
13       j2se_version=${j2se_release}${j2se_update}${revision}
14       j2se_expected_min_size=340 #Mb
15       j2se_binary_subdir="/bin"
16       oracle_no_man_jre_bin_jre="appletviewer idlj jaotc jar jarsigner java javac javadoc javap javapackager javaws jcmd jconsole jcontrol jdb jdeprscan jdeps jhsdb jimage jinfo jjs jlink jmap jmod jps jrunscript jshell jstack jstat jstatd jweblauncher keytool orbd pack200 rmic rmid rmiregistry schemagen serialver servertool tnameserv unpack200 wsgen wsimport xjc"
17       oracle_bin_jdk=" "
18       oracle_jre_bin_hl=" "
19       oracle_jre_bin_jre=" "
20   fi
21
22   # JDK 9 GA release (jdk-9.0.1_linux-x64_bin.tar.gz)
23   if [[ $archive_name =~ jdk-9(\.([0-9]+)\.([0-9]+))?_linux-x64_bin\.tar\.gz ]]
24   then
25       j2se_release=9
26       j2se_update=${BASH_REMATCH[1]:-.0.0}
27       j2se_arch=x64
28       j2se_version_name="${j2se_release} version ${j2se_release}${j2se_update}" 
29       j2se_version=${j2se_release}${j2se_update}${revision}
30       j2se_expected_min_size=340 #Mb
31       j2se_binary_subdir="/bin"
32       oracle_no_man_jre_bin_jre="appletviewer idlj jaotc jar jarsigner java javac javadoc javah javap javapackager javaws jcmd jconsole jcontrol jdb jdeprscan jdeps jhsdb jimage jinfo jjs jlink jmap jmc jmod jps jrunscript jshell jstack jstat jstatd jweblauncher keytool orbd pack200 policytool rmic rmid rmiregistry schemagen serialver servertool tnameserv unpack200 wsgen wsimport xjc"
33       oracle_bin_jdk=" "
34       oracle_jre_bin_hl=" "
35       oracle_jre_bin_jre=" "
36   fi
37
38   # Update or GA release (jdk-7u15-linux-i586.tar.gz)
39   if [[ $archive_name =~ jdk-([0-8]+)(u([0-9]+))?-linux-(i586|x64|amd64|arm-vfp-hflt)\.(bin|tar\.gz) ]]
40   then
41     j2se_release=${BASH_REMATCH[1]}
42     j2se_update=${BASH_REMATCH[3]}
43     j2se_arch=${BASH_REMATCH[4]}
44     if [[ $j2se_update != "" ]]
45     then
46       j2se_version_name="$j2se_release Update $j2se_update"
47       j2se_version=${j2se_release}u${j2se_update}${revision}
48     else
49       j2se_version_name="$j2se_release GA"
50       j2se_version=${j2se_release}${revision}
51     fi
52   fi
53
54   # Early Access Release (jdk-8-ea-bin-b103-linux-i586-15_aug_2013.tar.gz)
55   if [[ $archive_name =~ jdk-([0-8]+)(u([0-9]+))?-(ea|fcs)(-bin)?-(b[0-9]+)-linux-(i586|x64|amd64|arm-vfp-hflt).*\.(bin|tar\.gz) ]]
56   then
57     j2se_release=${BASH_REMATCH[1]}
58     j2se_update=${BASH_REMATCH[3]}
59     j2se_build=${BASH_REMATCH[6]}
60     j2se_arch=${BASH_REMATCH[7]}
61     if [[ $j2se_update != "" ]]
62     then
63       j2se_version_name="$j2se_release Update $j2se_update Early Access Release Build $j2se_build"
64       j2se_version=${j2se_release}u${j2se_update}~ea-build-${j2se_build}${revision}
65     else
66       j2se_version_name="$j2se_release Early Access Release Build $j2se_build"
67       j2se_version=${j2se_release}~ea-build-${j2se_build}${revision}
68     fi
69   fi
70
71   if [[ $j2se_release > 0 ]]
72   then
73     j2se_priority=$((310 + $j2se_release))
74     j2se_expected_min_size=${j2se_expected_min_size:-180} #Mb  
75
76     # check if the architecture matches
77     let compatible=1
78
79     case "${DEB_BUILD_ARCH:-$DEB_BUILD_GNU_TYPE}" in
80       i386|i486-linux-gnu)
81         if [[ "$j2se_arch" != "i586" ]]; then compatible=0; fi
82         ;;
83       amd64|x86_64-linux-gnu)
84         if [[ "$j2se_arch" != "x64" && "$j2se_arch" != "amd64" ]]; then compatible=0; fi
85         ;;
86       armhf|armel|arm-linux-gnueabihf|arm-linux-gnueabi)
87       case "$archive_name" in
88         "jdk-7u"[0-9]"-linux-arm-sfp.tar.gz") # SUPPORTED
89             j2se_version=1.7.0+update${archive_name:6:1}${revision}
90             j2se_expected_min_size=100 #Mb
91             j2se_priority=317
92             found=true
93             ;;
94         "jdk-7u"[0-9][0-9]"-linux-arm-sfp.tar.gz") # SUPPORTED
95             j2se_version=1.7.0+update${archive_name:6:2}${revision}
96             j2se_expected_min_size=60 #Mb
97             j2se_priority=317
98             found=true
99             ;;
100       esac
101       ;;
102     esac
103
104     if [[ $compatible == 0 ]]
105     then
106       echo "The archive $archive_name is not supported on the ${DEB_BUILD_ARCH} architecture"
107       return
108     fi
109
110
111     cat << EOF
112
113 Detected product:
114     Java(TM) Development Kit (JDK)
115     Standard Edition, Version $j2se_version_name
116     Oracle(TM)
117 EOF
118     if read_yn "Is this correct [Y/n]: "; then
119       j2se_found=true
120       j2se_required_space=$(( $j2se_expected_min_size * 2 + 20 ))
121       j2se_vendor="oracle"
122       j2se_title="Java Platform, Standard Edition $j2se_release Development Kit"
123
124       j2se_install=oracle_j2sdk_install
125       j2se_remove=oracle_j2sdk_remove
126       j2se_jinfo=oracle_j2sdk_jinfo
127       j2se_control=oracle_j2sdk_control
128       if [ "${DEB_BUILD_ARCH:0:3}" = "arm" ]; then
129         # javaws is not available for ARM
130         oracle_jre_bin_hl="java keytool orbd pack200 rmid rmiregistry servertool tnameserv unpack200 policytool"
131         oracle_jre_bin_jre="policytool"
132       else
133         oracle_jre_bin_hl="${oracle_jre_bin_hl:-java javaws keytool orbd pack200 rmid rmiregistry servertool tnameserv unpack200 policytool}"
134         oracle_jre_bin_jre="${oracle_jre_bin_jre:-javaws policytool}"
135       fi
136       if [ "${DEB_BUILD_ARCH:0:3}" != "arm" ]; then
137         oracle_no_man_jre_bin_jre="${oracle_no_man_jre_bin_jre:-ControlPanel jcontrol}"
138       fi
139       oracle_jre_lib_hl="jexec"
140       oracle_bin_jdk="${oracle_bin_jdk:-appletviewer extcheck idlj jar jarsigner javac javadoc javah javap jcmd jconsole jdb jdeps jhat jinfo jmap jmc jps jrunscript jsadebugd jstack jstat jstatd jvisualvm native2ascii rmic schemagen serialver wsgen wsimport xjc}"
141       j2se_package="$j2se_vendor-java$j2se_release-jdk"
142       j2se_binary_subdir="${j2se_binary_subdir:-/jre/bin}"
143       j2se_run
144     fi
145   fi
146 }
147
148 oracle_j2sdk_install() {
149     cat << EOF
150 if [ ! -e "$jvm_base$j2se_name/debian/info" ]; then
151     exit 0
152 fi
153
154 install_alternatives $jvm_base$j2se_name${j2se_binary_subdir} $oracle_jre_bin_hl
155 install_alternatives $jvm_base$j2se_name${j2se_binary_subdir} $oracle_jre_bin_jre
156 if [ -n "$oracle_no_man_jre_bin_jre" ]; then
157     install_no_man_alternatives $jvm_base$j2se_name${j2se_binary_subdir} $oracle_no_man_jre_bin_jre
158 fi
159 install_no_man_alternatives $jvm_base$j2se_name/jre/lib $oracle_jre_lib_hl
160 install_alternatives $jvm_base$j2se_name/bin $oracle_bin_jdk
161
162 # No plugin for ARM architecture yet and no plugin in Java 10 later
163 if [[ "${DEB_BUILD_ARCH:0:3}" != "arm" && "${j2se_release}" -lt "10" ]]; then
164 plugin_dir="$jvm_base$j2se_name/jre/lib/$DEB_BUILD_ARCH"
165 for b in $browser_plugin_dirs;do
166     install_browser_plugin "/usr/lib/\$b/plugins" "libjavaplugin.so" "\$b-javaplugin.so" "\$plugin_dir/libnpjp2.so"
167 done
168 fi
169 EOF
170 }
171
172 oracle_j2sdk_remove() {
173     cat << EOF
174 if [ ! -e "$jvm_base$j2se_name/debian/info" ]; then
175     exit 0
176 fi
177
178 remove_alternatives $jvm_base$j2se_name${j2se_binary_subdir} $oracle_jre_bin_hl
179 remove_alternatives $jvm_base$j2se_name${j2se_binary_subdir} $oracle_jre_bin_jre
180 if [ -n "$oracle_no_man_jre_bin_jre" ]; then
181     remove_alternatives $jvm_base$j2se_name${j2se_binary_subdir} $oracle_no_man_jre_bin_jre
182 fi
183 remove_alternatives $jvm_base$j2se_name/jre/lib $oracle_jre_lib_hl
184 remove_alternatives $jvm_base$j2se_name/bin $oracle_bin_jdk
185
186 # No plugin for ARM architecture yet and no plugin in Java 10 and later
187 if [[ "${DEB_BUILD_ARCH:0:3}" != "arm" && "${j2se_release}" -lt "10" ]]; then
188 plugin_dir="$jvm_base$j2se_name/jre/lib/$DEB_BUILD_ARCH"
189 for b in $browser_plugin_dirs;do
190     remove_browser_plugin "\$b-javaplugin.so" "\$plugin_dir/libnpjp2.so"
191 done
192 fi
193 EOF
194 }
195
196 oracle_j2sdk_jinfo() {
197     cat << EOF
198 name=$j2se_name
199 priority=${priority_override:-$j2se_priority}
200 section=main
201 EOF
202     jinfos "hl" $jvm_base$j2se_name${j2se_binary_subdir}/ $oracle_jre_bin_hl
203     jinfos "jre" $jvm_base$j2se_name${j2se_binary_subdir}/ $oracle_jre_bin_jre
204     if [ -n "$oracle_no_man_jre_bin_jre" ]; then
205         jinfos "jre" $jvm_base$j2se_name${j2se_binary_subdir}/ $oracle_no_man_jre_bin_jre
206     fi
207     jinfos "hl" $jvm_base$j2se_name/jre/lib/ $oracle_jre_lib_hl
208     jinfos "jdk" $jvm_base$j2se_name/bin/ $oracle_bin_jdk
209     if [ "${DEB_BUILD_ARCH:0:3}" != "arm" ]; then
210         for b in $browser_plugin_dirs;do
211             echo "plugin iceweasel-javaplugin.so $jvm_base$j2se_name/jre/lib/$DEB_BUILD_ARCH/libnpjp2.so"
212         done
213     fi
214 }
215
216 oracle_j2sdk_control() {
217     build_depends="libasound2, libgl1-mesa-glx, libgtk2.0-0, libxslt1.1, libxtst6, libxxf86vm1"
218     j2se_control
219     java_browser_plugin="java-browser-plugin, "
220     depends="\${shlibs:Depends}"
221     if [ "${DEB_BUILD_ARCH:0:3}" = "arm" -a "${j2se_arch}" != "arm-vfp-hflt" ]; then
222         # ARM is only softfloat ATM so if building on armhf
223         # force the dependencies to pickup cross platform fu
224         if [ "${DEB_BUILD_ARCH}" == "armhf" ]; then
225             depends="libc6-armel, libsfgcc1, libsfstdc++6"
226         fi
227         # No browser on ARM yet
228         java_browser_plugin=""
229     fi
230     if [ "$create_cert_softlinks" == "true" ]; then
231         depends="$depends, ca-certificates-java"
232     fi
233     for i in `seq 5 ${j2se_release}`;
234     do
235         provides_runtime="${provides_runtime} java${i}-runtime,"
236         provides_headless="${provides_headless} java${i}-runtime-headless,"
237         provides_sdk="${provides_sdk} java${i}-sdk,"
238     done
239     cat << EOF
240 Package: $j2se_package
241 Architecture: $j2se_debian_arch
242 Depends: \${misc:Depends}, java-common, $depends
243 Recommends: netbase
244 Provides: java-virtual-machine, java-runtime, java2-runtime, $provides_runtime $java_browser_plugin java-compiler, java2-compiler, java-runtime-headless, java2-runtime-headless, $provides_headless java-sdk, java2-sdk, $provides_sdk
245 Description: $j2se_title
246  The Java(TM) SE JDK is a development environment for building
247  applications, applets, and components that can be deployed on the
248  Java(TM) platform.
249  .
250  The Java(TM) SE JDK software includes tools useful for developing and
251  testing programs written in the Java programming language and running
252  on the Java platform. These tools are designed to be used from the
253  command line. Except for appletviewer, these tools do not provide a
254  graphical user interface.
255  .
256  This package has been automatically created with java-package ($version).
257 EOF
258 }