commit:     937c31f1bc6f6631a1291fa093e82bd2140278ad
Author:     James Le Cuirot <chewi <AT> gentoo <DOT> org>
AuthorDate: Sun Dec 17 22:10:35 2017 +0000
Commit:     James Le Cuirot <chewi <AT> gentoo <DOT> org>
CommitDate: Sun Dec 17 22:14:34 2017 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=937c31f1

dev-java/oracle-jre-bin: Version bump to 9.0.1 (Java 9)

Gentoo is not yet ready for Java 9 so a gentoo-vm USE flag has been
added and masked to potentially allow but deny by default the ability
for the system to recognise this JRE.

Oracle has dropped support for many platforms, including 32-bit x86,
so we may as well support x64-macos and sparc64-solaris in the JRE
package as well as the JDK package.

Many thanks to Craig Andrews and Manuel Ullmann for providing the
initial ebuild that I based this on.

Closes: https://bugs.gentoo.org/634698
Closes: https://github.com/gentoo/gentoo/pull/6033
Package-Manager: Portage-2.3.19, Repoman-2.3.6

 dev-java/oracle-jre-bin/Manifest                   |   3 +
 .../oracle-jre-bin/files/oracle-jre-bin-9.env.sh   |  16 ++
 .../oracle-jre-bin/files/oracle-jre-bin.env.sh     |   4 +-
 dev-java/oracle-jre-bin/metadata.xml               |   3 +
 .../oracle-jre-bin/oracle-jre-bin-9.0.1.ebuild     | 229 +++++++++++++++++++++
 5 files changed, 253 insertions(+), 2 deletions(-)

diff --git a/dev-java/oracle-jre-bin/Manifest b/dev-java/oracle-jre-bin/Manifest
index 0360e103981..07521f5956a 100644
--- a/dev-java/oracle-jre-bin/Manifest
+++ b/dev-java/oracle-jre-bin/Manifest
@@ -1,2 +1,5 @@
 DIST jre-8u152-linux-i586.tar.gz 83131659 BLAKE2B 
5f0619eb8c0f5937d2c5da573f40daaf46d1fad27fd57fab7b422017dadc2ae51399c3a99ba6044443d535f12b2a891a7b767d7da06f8567ef19eb74f7c92b33
 SHA512 
8bd655ae97c333ed57991ed6d13d2c2647f85e5a1c853dd76031b8e7689db9a1b183bc665acc5b9f989139b34300ac65ab65c80e18234d6d1b06a4512fc4e542
 DIST jre-8u152-linux-x64.tar.gz 80061016 BLAKE2B 
5aa25c152aae5e106bd9cb3b1b14125437531991f082548faf0b12f7e52a77e9dd01f178806d48d71d99c718358798b214a64acdfd1afa55e3791c6d78aabf95
 SHA512 
7c58ff2c3ac9af423ffab0ebfbfa7b4842072f6554569d76a99f8c82fa6935e36dbcf811f9c5510d71fc87db9520e684d877d99cae95f4874578ba42157ce85d
+DIST jre-9.0.1_linux-x64_bin.tar.gz 86986075 BLAKE2B 
cf9bc51097d3e22a8adc2296cd2e6f3680db228ba549b66b7c2a01b002ed8f376daa97d07552e52b24b6de0c751303e3f52fe179aa986d6a1a0a3140e466fcb7
 SHA512 
6d0cb54fa2500936bf3e9d37c9f86c5c259afc88df04aa5e8b151fdaf90ac0665eeaa5f7f50281fe8c73a5697075e139ff7b3dd9f3af60eb84635d4dac4696cb
+DIST jre-9.0.1_osx-x64_bin.tar.gz 74606780 BLAKE2B 
825189d9da379defc472e98f9953e1c2c1cb908b578883e71a95e78bc6c338ac862f4493a79aad55cc90f520a8d6a27fafd30ccc300940dfada6ac29811595c1
 SHA512 
2751ac8b1f9098990047624aba6e764fe783170c95a99755244c233c331ffc52606c334151a1aced504dd12a84cffe0ba1050ed8482df24fc4a6fffc72b18b20
+DIST jre-9.0.1_solaris-sparcv9_bin.tar.gz 54821972 BLAKE2B 
979296c5ed8917acc70655da72a00c0b771f40c18da4ca2b403cf4a2c5361f0a09821aa487e5f3c9d2cd057e6d8cbd7efdd48ac22fa2fc36352e8a6cc051f84f
 SHA512 
c3ab0837acda00cdc532a528ee648c8e5334ee263fabaf7b2e86488f84615779431ccaf8d421e10cc00aa46fafebb0d52ed6358541de21c42cc801e7bac17bf4

diff --git a/dev-java/oracle-jre-bin/files/oracle-jre-bin-9.env.sh 
b/dev-java/oracle-jre-bin/files/oracle-jre-bin-9.env.sh
new file mode 100644
index 00000000000..7e6f9a0e668
--- /dev/null
+++ b/dev-java/oracle-jre-bin/files/oracle-jre-bin-9.env.sh
@@ -0,0 +1,16 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+VERSION="Oracle JRE ${PV}"
+JAVA_HOME="${EPREFIX}/opt/${P}"
+JDK_HOME="${EPREFIX}/opt/${P}"
+JAVAC="\${JAVA_HOME}/bin/javac"
+PATH="\${JAVA_HOME}/bin"
+ROOTPATH="\${JAVA_HOME}/bin"
+LDPATH="\${JAVA_HOME}/lib/:\${JAVA_HOME}/lib/server/"
+MANPATH=""
+PROVIDES_TYPE="JRE"
+PROVIDES_VERSION="${SLOT}"
+BOOTCLASSPATH=""
+GENERATION="2"
+ENV_VARS="JAVA_HOME JDK_HOME JAVAC PATH ROOTPATH LDPATH MANPATH"

diff --git a/dev-java/oracle-jre-bin/files/oracle-jre-bin.env.sh 
b/dev-java/oracle-jre-bin/files/oracle-jre-bin.env.sh
index eaf356787d8..a52547ca506 100644
--- a/dev-java/oracle-jre-bin/files/oracle-jre-bin.env.sh
+++ b/dev-java/oracle-jre-bin/files/oracle-jre-bin.env.sh
@@ -5,8 +5,8 @@ VERSION="Oracle JRE ${PV}"
 JAVA_HOME="${EPREFIX}/opt/${P}"
 JDK_HOME="${EPREFIX}/opt/${P}"
 JAVAC="\${JAVA_HOME}/bin/javac"
-PATH="\${JAVA_HOME}/bin:\${JAVA_HOME}/bin"
-ROOTPATH="\${JAVA_HOME}/bin:\${JAVA_HOME}/bin"
+PATH="\${JAVA_HOME}/bin"
+ROOTPATH="\${JAVA_HOME}/bin"
 
LDPATH="\${JAVA_HOME}/lib/$(get_system_arch)/:\${JAVA_HOME}/lib/$(get_system_arch)/server/"
 MANPATH="${EPREFIX}/opt/${P}/man"
 PROVIDES_TYPE="JRE"

diff --git a/dev-java/oracle-jre-bin/metadata.xml 
b/dev-java/oracle-jre-bin/metadata.xml
index edb6ab75a53..b9fe447b128 100644
--- a/dev-java/oracle-jre-bin/metadata.xml
+++ b/dev-java/oracle-jre-bin/metadata.xml
@@ -9,6 +9,9 @@
   <use>
     <flag name="commercial">Install features requiring a commercial license 
for production use</flag>
     <flag name="headless-awt">Don't install the X backend for AWT, needed by 
some GUIs (used to be X flag)</flag>
+    <flag name="gentoo-vm">Allow this JRE to be recognised by Gentoo (package 
manager, eselect, java-config, EXPERIMENTAL!)</flag>
+    <flag name="gtk2">Enable GTK+ 2 support in JavaFX</flag>
+    <flag name="gtk3">Enable GTK+ 3 support in JavaFX</flag>
     <flag name="javafx">Install JavaFX libraries</flag>
     <flag name="jce">Install Java Cryptographic Extension Unlimited Strength 
Jurisdiction Policy Files</flag>
   </use>

diff --git a/dev-java/oracle-jre-bin/oracle-jre-bin-9.0.1.ebuild 
b/dev-java/oracle-jre-bin/oracle-jre-bin-9.0.1.ebuild
new file mode 100644
index 00000000000..81ca64dc5cc
--- /dev/null
+++ b/dev-java/oracle-jre-bin/oracle-jre-bin-9.0.1.ebuild
@@ -0,0 +1,229 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+inherit desktop gnome2-utils java-vm-2 prefix
+
+KEYWORDS="-* ~amd64 ~x64-macos ~sparc64-solaris"
+
+declare -A ARCH_FILES
+ARCH_FILES[amd64]="jre-${PV}_linux-x64_bin.tar.gz"
+ARCH_FILES[sparc64-solaris]="jre-${PV}_solaris-sparcv9_bin.tar.gz"
+ARCH_FILES[x64-macos]="jre-${PV}_osx-x64_bin.tar.gz"
+
+for keyword in ${KEYWORDS//-\*} ; do
+       SRC_URI+=" ${keyword#\~}? ( ${ARCH_FILES[${keyword#\~}]} )"
+done
+
+DESCRIPTION="Oracle's Java SE Runtime Environment"
+HOMEPAGE="http://www.oracle.com/technetwork/java/javase/";
+LICENSE="Oracle-BCLA-JavaSE"
+SLOT="${PV%%.*}"
+IUSE="alsa commercial cups +fontconfig +gentoo-vm gtk2 gtk3 headless-awt 
javafx nsplugin selinux"
+REQUIRED_USE="javafx? ( alsa fontconfig ^^ ( gtk2 gtk3 ) )"
+RESTRICT="fetch preserve-libs strip"
+QA_PREBUILT="*"
+
+# NOTES:
+#
+# * cups is dlopened.
+#
+# * libpng is also dlopened but only by libsplashscreen, which isn't
+#   important, so we can exclude that.
+#
+# * We still need to work out the exact AWT and JavaFX dependencies
+#   under MacOS. It doesn't appear to use many, if any, of the
+#   dependencies below.
+#
+RDEPEND="!x64-macos? (
+               !headless-awt? (
+                       x11-libs/libX11
+                       x11-libs/libXext
+                       x11-libs/libXi
+                       x11-libs/libXrender
+                       x11-libs/libXtst
+               )
+               javafx? (
+                       dev-libs/atk
+                       dev-libs/glib:2
+                       dev-libs/libxml2:2
+                       dev-libs/libxslt
+                       media-libs/freetype:2
+                       x11-libs/gdk-pixbuf
+                       x11-libs/libX11
+                       x11-libs/libXtst
+                       x11-libs/libXxf86vm
+                       x11-libs/pango
+                       virtual/opengl
+
+                       gtk2? (
+                               x11-libs/cairo
+                               x11-libs/gtk+:2
+                       )
+                       gtk3? (
+                               x11-libs/cairo[glib]
+                               x11-libs/gtk+:3
+                       )
+               )
+       )
+       alsa? ( media-libs/alsa-lib )
+       cups? ( net-print/cups )
+       fontconfig? ( media-libs/fontconfig:1.0 )
+       !prefix? ( sys-libs/glibc:* )
+       selinux? ( sec-policy/selinux-java )"
+
+pkg_nofetch() {
+       einfo "Please download ${ARCH_FILES[${ARCH}]} and move it to"
+       einfo "${DISTDIR}:"
+       einfo
+       einfo "  
http://www.oracle.com/technetwork/java/javase/downloads/jre9-downloads-3848532.html";
+       einfo
+       einfo "If the above mentioned URL does not point to the correct version 
anymore,"
+       einfo "please download the file from Oracle's Java download archive:"
+       einfo
+       einfo "  
http://www.oracle.com/technetwork/java/javase/downloads/java-archive-javase9-3934878.html";
+       einfo
+}
+
+src_unpack() {
+       if use x64-macos ; then
+               S="${WORKDIR}/jre-${PV}.jre/Contents/Home"
+       else
+               S="${WORKDIR}/jre-${PV}"
+       fi
+
+       default
+}
+
+src_install() {
+       local dest="/opt/${P}"
+       local ddest="${ED}${dest#/}"
+
+       # Create files used as storage for system preferences.
+       mkdir .systemPrefs || die
+       touch .systemPrefs/.system.lock || die
+       touch .systemPrefs/.systemRootModFile || die
+
+       if ! use alsa ; then
+               rm -vf lib/libjsoundalsa.* || die
+       fi
+
+       if ! use commercial ; then
+               rm -vfr lib/jfr* || die
+       fi
+
+       if use headless-awt ; then
+               rm -vf lib/lib*{[jx]awt,splashscreen}* \
+                  bin/javaws || die
+       fi
+
+       if ! use javafx ; then
+               rm -vf lib/lib*{decora,fx,glass,prism}* \
+                  lib/libgstreamer-lite.* lib/*fx* || die
+       else
+               if ! use gtk2 ; then
+                       rm -vf lib/libglassgtk2.* || die
+               elif ! use gtk3 ; then
+                       rm -vf lib/libglassgtk3.* || die
+               fi
+       fi
+
+       if ! use nsplugin ; then
+               rm -vf lib/libnpjp2.* || die
+       else
+               local nsplugin=$(echo lib/libnpjp2.*)
+               local nsplugin_link=${nsplugin##*/}
+               nsplugin_link=${nsplugin_link/./-${PN}-${SLOT}.}
+               dosym "${dest}/${nsplugin}" 
"/usr/$(get_libdir)/nsbrowser/plugins/${nsplugin_link}"
+       fi
+
+       # Even though plugins linked against multiple ffmpeg versions are
+       # provided, they generally lag behind what Gentoo has available.
+       rm -vf lib/libavplugin* || die
+
+       # Prune all fontconfig files so that libfontconfig will be used.
+       rm -v lib/fontconfig.* || die
+
+       # Install desktop file for the Java Control Panel. Using
+       # ${PN}-${SLOT} to prevent file collision with JDK and other slots.
+       if [[ -d lib/desktop/icons ]] ; then
+               local icon
+               pushd lib/desktop/icons >/dev/null || die
+               for icon in */*/apps/sun-jcontrol.png ; do
+                       insinto /usr/share/icons/"${icon%/*}"
+                       newins "${icon}" sun-jcontrol-${PN}-${SLOT}.png
+               done
+               popd >/dev/null || die
+               make_desktop_entry \
+                       "${dest}"/bin/jcontrol \
+                       "Java Control Panel for Oracle JRE ${SLOT}" \
+                       sun-jcontrol-${PN}-${SLOT} \
+                       "Settings;Java;"
+       fi
+
+       dodir "${dest}"
+       cp -pPR bin conf lib "${ddest}" || die
+
+       # Only install Gentoo-specific fontconfig if flag is disabled.
+       # 
https://docs.oracle.com/javase/8/docs/technotes/guides/intl/fontconfig.html
+       if ! use fontconfig ; then
+               insinto "${dest}"/lib/
+               doins "$(prefixify_ro 
"${FILESDIR}"/fontconfig.Gentoo.properties)"
+       fi
+
+       # Needs to be done before CDS, bug #215225.
+       java-vm_set-pax-markings "${ddest}"
+
+       # See bug #207282.
+       einfo "Creating the Class Data Sharing archives"
+       "${ddest}/bin/java" -server -Xshare:dump || die
+
+       # Remove empty dirs we might have copied.
+       find "${D}" -type d -empty -exec rmdir -v {} + || die
+
+       if use x64-macos ; then
+               local lib
+               for lib in lib{decora_sse,glass,prism_{common,es2,sw}}.dylib ; 
do
+                       ebegin "Fixing self-reference of ${lib}"
+                       install_name_tool \
+                               -id "${EPREFIX}${dest}"/lib/${lib} \
+                               "${ddest}"/lib/${lib} || die
+                       eend $?
+               done
+       fi
+
+       use gentoo-vm && java-vm_install-env "${FILESDIR}"/${PN}-9.env.sh
+       java-vm_revdep-mask
+       java-vm_sandbox-predict /dev/random /proc/self/coredump_filter
+}
+
+pkg_preinst() {
+       gnome2_icon_savelist
+}
+
+pkg_postinst() {
+       gnome2_icon_cache_update
+       java-vm-2_pkg_postinst
+
+       if ! use headless-awt && ! use javafx ; then
+               ewarn "You have disabled the javafx flag. Some modern desktop 
Java applications"
+               ewarn "require this and they may fail with a confusing error 
message."
+       fi
+
+       if use gentoo-vm ; then
+               ewarn "WARNING! You have enabled the gentoo-vm USE flag, making 
this JRE"
+               ewarn "recognised by the system. This will almost certainly 
break things."
+       else
+               ewarn "The experimental gentoo-vm USE flag has not been enabled 
so this JRE"
+               ewarn "will not be recognised by the system. For example, 
simply calling"
+               ewarn "\"java\" will launch a different JVM. This is necessary 
until Gentoo"
+               ewarn "fully supports Java 9. This JRE must therefore be 
invoked using its"
+               ewarn "absolute location under ${EPREFIX}/opt/${P}."
+       fi
+}
+
+pkg_postrm() {
+       gnome2_icon_cache_update
+       java-vm-2_pkg_postrm
+}

Reply via email to