tag 876426 + patch thanks Hi,
I'll very likely use java-package produced oracle-java9-jre_9.0.4_amd64.deb for one of our customers soonish. I've created java-package_0.63~uvt0_all.deb from lib/oracle-jdk9.sh, lib/oracle-jre9.sh, lib/oracle-server-jre9.sh as contributed by Constantin Makshin here and based upon previous work by Tim Van Holder. I've published the generated java-package on deb{,-src} http://non-gnu.uvt.nl/debian stretch java-package . Use that, or run "dget https://non-gnu.uvt.nl/debian/stretch/java-package/java-package_0.63~uvt0.dsc". I've summed Contantin's and Tim's worked up in the attached full patch. Thanks, Bye, Joost BTW/PS: Is Java 9 still supported by Oracle? On their main website they list java 8 and earlier, and java 10. Java 9 is abandoned to some archive...
commit f33b209914837f2cdb9a89dd6f49d9d847b44f47 Author: Joost van Baal-Ilić <joos...@perun.mdcc.cx> Date: Tue May 29 11:19:06 2018 +0200 lib/oracle-jdk9.sh, lib/oracle-jre9.sh, lib/oracle-server-jre9.sh: added in order to support for Oracle's Java 9. Contributed by Constantin Makshin <cmaks...@gmail.com> on 8 Jan 2018 in https://bugs.debian.org/876426 , based upon previous work by Tim Van Holder <tim.vanhol...@gmail.com>, Oct 2017. (Closes: #876426) diff --git a/debian/changelog b/debian/changelog index 15ae206..30a60c5 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,7 +1,13 @@ -java-package (0.63) UNRELEASED; urgency=medium +java-package (0.63~uvt0) UNRELEASED; urgency=medium * Team upload. * Suggest openjdk-8-jre instead of openjdk-7-jre + [ Joost van Baal-Ilić ] + * lib/oracle-jdk9.sh, lib/oracle-jre9.sh, lib/oracle-server-jre9.sh: + added in order to support for Oracle's Java 9. Contributed by + Constantin Makshin <cmaks...@gmail.com> on 8 Jan 2018 in + https://bugs.debian.org/876426 , based upon previous work by Tim Van + Holder <tim.vanhol...@gmail.com>, Oct 2017. (Closes: #876426) -- Emmanuel Bourg <ebo...@apache.org> Wed, 04 Jan 2017 16:07:59 +0100 diff --git a/lib/oracle-jdk9.sh b/lib/oracle-jdk9.sh new file mode 100644 index 0000000..4af6290 --- /dev/null +++ b/lib/oracle-jdk9.sh @@ -0,0 +1,152 @@ +# Detect product +j2se_detect_oracle_j9sdk=oracle_j9sdk_detect +oracle_j9sdk_detect() { + j2se_release=0 + + # GA release (jdk-9_linux-x64_bin.tar.gz, jdk-9.0.1-x64_bin.tar.gz) + if [[ $archive_name =~ jdk-(9|([1-9][0-9]+))((\.[0-9]+)*)_linux-(x64)_bin\.tar\.gz ]] + then + j2se_release=${BASH_REMATCH[1]} + j2se_update=${BASH_REMATCH[3]} + j2se_arch=${BASH_REMATCH[5]} + j2se_version_name="$j2se_release$j2se_update" + j2se_version=${j2se_release}${j2se_update}${revision} + fi + + # Early Access Release (jdk-9-ea+162_linux-x64_bin.tar.gz) + if [[ $archive_name =~ jdk-(9)()-ea[+]([0-9]+)_linux-(x86|x64)_bin\.tar\.gz ]] + then + j2se_release=${BASH_REMATCH[1]} + j2se_update=${BASH_REMATCH[2]} + j2se_build=${BASH_REMATCH[3]} + j2se_arch=${BASH_REMATCH[4]} + if [[ $j2se_update != "" ]] + then + j2se_version_name="$j2se_release Update $j2se_update Early Access Release Build $j2se_build" + j2se_version=${j2se_release}u${j2se_update}~ea-build-${j2se_build}${revision} + else + j2se_version_name="$j2se_release Early Access Release Build $j2se_build" + j2se_version=${j2se_release}~ea-build-${j2se_build}${revision} + fi + fi + + if [[ $j2se_release > 0 ]] + then + j2se_priority=$((310 + $j2se_release)) + j2se_expected_min_size=130 #Mb + + # check if the architecture matches + let compatible=1 + + case "${DEB_BUILD_ARCH:-$DEB_BUILD_GNU_TYPE}" in + amd64|x86_64-linux-gnu) + if [[ "$j2se_arch" != "x64" ]]; then compatible=0; fi + ;; + *) + compatible=0 + ;; + esac + + if [[ $compatible == 0 ]] + then + echo "The archive $archive_name is not supported on the ${DEB_BUILD_ARCH} architecture" + return + fi + + + cat << EOF + +Detected product: + Java(TM) Development Kit (JDK) + Standard Edition, Version $j2se_version_name + Oracle(TM) +EOF + if read_yn "Is this correct [Y/n]: "; then + j2se_found=true + j2se_required_space=$(( $j2se_expected_min_size * 2 + 20 )) + j2se_vendor="oracle" + j2se_title="Java Platform, Standard Edition $j2se_release Development Kit" + + j2se_install=oracle_j9sdk_install + j2se_remove=oracle_j9sdk_remove + j2se_jinfo=oracle_j9sdk_jinfo + j2se_control=oracle_j9sdk_control + + oracle_bin_hl="appletviewer idlj java javaws jcontrol jjs jrunscript jweblauncher keytool orbd pack200 rmid rmiregistry servertool tnameserv unpack200" + oracle_lib_hl="jexec" + oracle_bin_jdk="jaotc jar jarsigner javac javadoc javah javap javapackager jcmd jconsole jdb jdeprscan jdeps jhsdb jinfo jlink jmap jmod jps jshell jstack jstat jstatd policytool rmic schemagen serialver wsgen wsimport xjc" + + j2se_package="$j2se_vendor-java$j2se_release-jdk" + j2se_run + fi + fi +} + +oracle_j9sdk_install() { + cat << EOF +if [ ! -e "$jvm_base$j2se_name/debian/info" ]; then + exit 0 +fi + +install_no_man_alternatives $jvm_base$j2se_name/bin $oracle_bin_hl +install_no_man_alternatives $jvm_base$j2se_name/lib $oracle_lib_hl +install_no_man_alternatives $jvm_base$j2se_name/bin $oracle_bin_jdk +EOF +} + +oracle_j9sdk_remove() { + cat << EOF +if [ ! -e "$jvm_base$j2se_name/debian/info" ]; then + exit 0 +fi + +remove_alternatives $jvm_base$j2se_name/bin $oracle_bin_hl +remove_alternatives $jvm_base$j2se_name/lib $oracle_lib_hl +remove_alternatives $jvm_base$j2se_name/bin $oracle_bin_jdk +EOF +} + +oracle_j9sdk_jinfo() { + cat << EOF +name=$j2se_name +priority=${priority_override:-$j2se_priority} +section=main +EOF + jinfos "hl" $jvm_base$j2se_name/bin/ $oracle_bin_hl + jinfos "hl" $jvm_base$j2se_name/lib/ $oracle_lib_hl + jinfos "jdk" $jvm_base$j2se_name/bin/ $oracle_bin_jdk +} + +oracle_j9sdk_control() { + build_depends="libasound2, libgl1-mesa-glx, libgtk2.0-0, libxslt1.1, libxtst6, libxxf86vm1" + j2se_control + depends="\${shlibs:Depends}" + if [ "$create_cert_softlinks" == "true" ]; then + depends="$depends, ca-certificates-java" + fi + for i in `seq 5 ${j2se_release}`; + do + provides_runtime="${provides_runtime} java${i}-runtime," + provides_headless="${provides_headless} java${i}-runtime-headless," + provides_sdk="${provides_sdk} java${i}-sdk," + done + cat << EOF +Package: $j2se_package +Architecture: $j2se_debian_arch +Depends: \${misc:Depends}, java-common, $depends +Recommends: netbase +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 +Description: $j2se_title + The Java(TM) SE JDK is a development environment for building + applications, applets, and components that can be deployed on the + Java(TM) platform. + . + The Java(TM) SE JDK software includes tools useful for developing and + testing programs written in the Java programming language and running + on the Java platform. These tools are designed to be used from the + command line. Except for appletviewer, these tools do not provide a + graphical user interface. + . + This package has been automatically created with java-package ($version). +EOF +} diff --git a/lib/oracle-jre9.sh b/lib/oracle-jre9.sh new file mode 100644 index 0000000..d2dbec8 --- /dev/null +++ b/lib/oracle-jre9.sh @@ -0,0 +1,150 @@ +# Detect product +j2se_detect_oracle_j9re=oracle_j9re_detect +oracle_j9re_detect() { + j2se_release=0 + + # GA release (jre-9_linux-x64_bin.tar.gz, jre-9.0.1_linux-x64_bin.tar.gz) + if [[ $archive_name =~ ^jre-(9|([1-9][0-9]+))((\.[0-9]+)*)_linux-(x64)_bin\.tar\.gz ]] + then + j2se_release=${BASH_REMATCH[1]} + j2se_update=${BASH_REMATCH[3]} + j2se_arch=${BASH_REMATCH[5]} + if [[ $j2se_update != "" ]] + then + j2se_version_name="$j2se_release$j2se_update" + j2se_version=${j2se_release}${j2se_update}${revision} + else + j2se_version_name="$j2se_release GA" + j2se_version=${j2se_release}${revision} + fi + fi + + # Early Access Release (jre-9-ea+123_linux-x64_bin.tar.gz) + if [[ $archive_name =~ ^jre-(9)()-ea\+([0-9]+)_linux-(x86|x64)_bin\.tar\.gz ]] + then + j2se_release=${BASH_REMATCH[1]} + j2se_update=${BASH_REMATCH[2]} + j2se_build=${BASH_REMATCH[3]} + j2se_arch=${BASH_REMATCH[4]} + if [[ $j2se_update != "" ]] + then + j2se_version_name="$j2se_release Update $j2se_update Early Access Release Build $j2se_build" + j2se_version=${j2se_release}u${j2se_update}~ea-build-${j2se_build}${revision} + else + j2se_version_name="$j2se_release Early Access Release Build $j2se_build" + j2se_version=${j2se_release}~ea-build-${j2se_build}${revision} + fi + fi + + if [[ $j2se_release > 0 ]] + then + j2se_priority=$((310 + $j2se_release - 1)) + j2se_expected_min_size=85 #Mb + + # check if the architecture matches + let compatible=1 + + case "${DEB_BUILD_ARCH:-$DEB_BUILD_GNU_TYPE}" in + amd64|x86_64-linux-gnu) + if [[ "$j2se_arch" != "x64" ]]; then compatible=0; fi + ;; + *) + compatible=0 + ;; + esac + + if [[ $compatible == 0 ]] + then + echo "The archive $archive_name is not supported on the ${DEB_BUILD_ARCH} architecture" + return + fi + + + cat << EOF + +Detected product: + Java(TM) Runtime Environment (JRE) + Standard Edition, Version $j2se_version_name + Oracle(TM) +EOF + if read_yn "Is this correct [Y/n]: "; then + j2se_found=true + j2se_required_space=$(( $j2se_expected_min_size * 2 + 20 )) + j2se_vendor="oracle" + j2se_title="Java Platform, Standard Edition $j2se_release Runtime Environment" + + j2se_install=oracle_j9re_install + j2se_remove=oracle_j9re_remove + j2se_jinfo=oracle_j9re_jinfo + j2se_control=oracle_j9re_control + + oracle_bin_hl="appletviewer idlj java javaws jcontrol jjs jrunscript jweblauncher keytool orbd pack200 rmid rmiregistry servertool tnameserv unpack200" + oracle_lib_hl="jexec" + + j2se_package="$j2se_vendor-java$j2se_release-jre" + j2se_run + fi + fi +} + +oracle_j9re_install() { + cat << EOF +if [ ! -e "$jvm_base$j2se_name/debian/info" ]; then + exit 0 +fi + +install_no_man_alternatives $jvm_base$j2se_name/bin $oracle_bin_hl +install_no_man_alternatives $jvm_base$j2se_name/lib $oracle_lib_hl +EOF +} + +oracle_j9re_remove() { + cat << EOF +if [ ! -e "$jvm_base$j2se_name/debian/info" ]; then + exit 0 +fi + +remove_alternatives $jvm_base$j2se_name/bin $oracle_bin_hl +remove_alternatives $jvm_base$j2se_name/lib $oracle_lib_hl +EOF +} + +oracle_j9re_jinfo() { + cat << EOF +name=$j2se_name +priority=${priority_override:-$j2se_priority} +section=main +EOF + jinfos "hl" $jvm_base$j2se_name/bin/ $oracle_bin_hl + jinfos "hl" $jvm_base$j2se_name/lib/ $oracle_lib_hl + jinfos "jre" $jvm_base$j2se_name/bin/ $oracle_bin_jre + jinfos "jdk" $jvm_base$j2se_name/bin/ $oracle_bin_jdk +} + +oracle_j9re_control() { + j2se_control + if [ "$create_cert_softlinks" == "true" ]; then + depends="ca-certificates-java" + fi + for i in `seq 5 ${j2se_release}`; + do + provides_runtime="${provides_runtime} java${i}-runtime," + provides_headless="${provides_headless} java${i}-runtime-headless," + done + cat << EOF +Package: $j2se_package +Architecture: $j2se_debian_arch +Depends: \${misc:Depends}, \${shlibs:Depends}, java-common, $depends +Recommends: netbase +Provides: java-virtual-machine, java-runtime, java2-runtime, $provides_runtime java-runtime-headless, java2-runtime-headless, $provides_headless java-browser-plugin +Description: $j2se_title + The Java(TM) SE Runtime Environment contains the Java virtual machine, + runtime class libraries, and Java application launcher that are + necessary to run programs written in the Java programming language. + It is not a development environment and does not contain development + tools such as compilers or debuggers. For development tools, see the + Java SE Development Kit (JDK). + . + This package has been automatically created with java-package ($version). +EOF +} diff --git a/lib/oracle-server-jre9.sh b/lib/oracle-server-jre9.sh new file mode 100644 index 0000000..4c44eab --- /dev/null +++ b/lib/oracle-server-jre9.sh @@ -0,0 +1,153 @@ +# Detect product +j2se_detect_oracle_server_j9re=oracle_server_j9re_detect +oracle_server_j9re_detect() { + j2se_release=0 + + # Update or GA release (serverjre-9_linux-x64_bin.tar.gz) + if [[ $archive_name =~ serverjre-(9|([1-9][0-9]+))((\.[0-9]+)*)_linux-(x64)_bin\.tar\.gz ]] + then + j2se_release=${BASH_REMATCH[1]} + j2se_update=${BASH_REMATCH[3]} + j2se_arch=${BASH_REMATCH[5]} + if [[ $j2se_update != "" ]] + then + j2se_version_name="$j2se_release$j2se_update" + j2se_version=${j2se_release}${j2se_update}${revision} + else + j2se_version_name="$j2se_release GA" + j2se_version=${j2se_release}${revision} + fi + fi + + # Early Access Release (serverjre-9-ea+123_linux-x64_bin.tar.gz) + if [[ $archive_name =~ serverjre-(9)()-ea\+([0-9]+)_linux-(x86|x64)_bin\.tar\.gz ]] + then + j2se_release=${BASH_REMATCH[1]} + j2se_update=${BASH_REMATCH[2]} + j2se_build=${BASH_REMATCH[3]} + j2se_arch=${BASH_REMATCH[4]} + if [[ $j2se_update != "" ]] + then + j2se_version_name="$j2se_release Update $j2se_update Early Access Release Build $j2se_build" + j2se_version=${j2se_release}u${j2se_update}~ea-build-${j2se_build}${revision} + else + j2se_version_name="$j2se_release Early Access Release Build $j2se_build" + j2se_version=${j2se_release}~ea-build-${j2se_build}${revision} + fi + fi + + if [[ $j2se_release > 0 ]] + then + j2se_priority=$((310 + $j2se_release - 1)) + j2se_expected_min_size=85 #Mb + + # check if the architecture matches + let compatible=1 + + case "${DEB_BUILD_ARCH:-$DEB_BUILD_GNU_TYPE}" in + amd64|x86_64-linux-gnu) + if [[ "$j2se_arch" != "x64" ]]; then compatible=0; fi + ;; + *) + compatible=0 + ;; + esac + + if [[ $compatible == 0 ]] + then + echo "The archive $archive_name is not supported on the ${DEB_BUILD_ARCH} architecture" + return + fi + + + cat << EOF + +Detected product: + Server Java(TM) Runtime Environment (JRE) + Standard Edition, Version $j2se_version_name + Oracle(TM) +EOF + if read_yn "Is this correct [Y/n]: "; then + j2se_found=true + j2se_required_space=$(( $j2se_expected_min_size * 2 + 20 )) + j2se_vendor="oracle" + j2se_title="Java Platform, Standard Edition $j2se_release Server Runtime Environment" + + j2se_install=oracle_server_j9re_install + j2se_remove=oracle_server_j9re_remove + j2se_jinfo=oracle_server_j9re_jinfo + j2se_control=oracle_server_j9re_control + + oracle_bin_hl="java jrunscript keytool rmid rmiregistry" + oracle_lib_hl="jexec" + oracle_bin_jdk="jar jarsigner javac jcmd jdb jinfo jmap jps jstack jstat jstatd schemagen serialver wsgen wsimport xjc" + + j2se_package="$j2se_vendor-java$j2se_release-server-jre" + exlude_libs="appletviewer libawt_xawt.so libsplashscreen.so policytool" + j2se_run + fi + fi +} + +oracle_server_j9re_install() { + cat << EOF +if [ ! -e "$jvm_base$j2se_name/debian/info" ]; then + exit 0 +fi + +install_no_man_alternatives $jvm_base$j2se_name/bin $oracle_bin_hl +install_no_man_alternatives $jvm_base$j2se_name/lib $oracle_lib_hl +install_no_man_alternatives $jvm_base$j2se_name/bin $oracle_bin_jdk +EOF +} + +oracle_server_j9re_remove() { + cat << EOF +if [ ! -e "$jvm_base$j2se_name/debian/info" ]; then + exit 0 +fi + +remove_alternatives $jvm_base$j2se_name/bin $oracle_bin_hl +remove_alternatives $jvm_base$j2se_name/lib $oracle_lib_hl +remove_alternatives $jvm_base$j2se_name/bin $oracle_bin_jdk +EOF +} + +oracle_server_j9re_jinfo() { + cat << EOF +name=$j2se_name +priority=${priority_override:-$j2se_priority} +section=main +EOF + jinfos "hl" $jvm_base$j2se_name/bin/ $oracle_bin_hl + jinfos "hl" $jvm_base$j2se_name/lib/ $oracle_lib_hl + jinfos "jre" $jvm_base$j2se_name/bin/ $oracle_bin_jre + jinfos "jdk" $jvm_base$j2se_name/bin/ $oracle_bin_jdk +} + +oracle_server_j9re_control() { + j2se_control + if [ "$create_cert_softlinks" == "true" ]; then + depends="ca-certificates-java" + fi + for i in `seq 5 ${j2se_release}`; + do + provides_headless="${provides_headless} java${i}-runtime-headless," + done + cat << EOF +Package: $j2se_package +Architecture: $j2se_debian_arch +Depends: \${misc:Depends}, \${shlibs:Depends}, java-common, $depends +Recommends: netbase +Provides: java-runtime-headless, java2-runtime-headless, $provides_headless +Description: $j2se_title + The Java(TM) SE Server Runtime Environment contains the Java virtual machine, + runtime class libraries, and Java application launcher that are necessary to + run programs written in the Java programming language. It includes tools for + JVM monitoring and tools commonly required for server applications, but does + not include browser integration (the Java plug-in), auto-update, nor an + installer. + . + This package has been automatically created with java-package ($version). +EOF +}
signature.asc
Description: Digital signature