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
+}

Attachment: signature.asc
Description: Digital signature

Reply via email to