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