commit:     94c0e74924bdbae2ac4e7968b3d955fff97f78fa
Author:     James Le Cuirot <chewi <AT> gentoo <DOT> org>
AuthorDate: Sun Dec 17 22:11:50 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=94c0e749

dev-java/oracle-jdk-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 JDK.

Oracle has dropped support for many platforms, including 32-bit x86.

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-jdk-bin/Manifest                   |   3 +
 .../oracle-jdk-bin/files/oracle-jdk-bin-9.env.sh   |  16 ++
 dev-java/oracle-jdk-bin/metadata.xml               |   3 +
 .../oracle-jdk-bin/oracle-jdk-bin-9.0.1.ebuild     | 239 +++++++++++++++++++++
 4 files changed, 261 insertions(+)

diff --git a/dev-java/oracle-jdk-bin/Manifest b/dev-java/oracle-jdk-bin/Manifest
index 44ca4f553d7..154334c80a5 100644
--- a/dev-java/oracle-jdk-bin/Manifest
+++ b/dev-java/oracle-jdk-bin/Manifest
@@ -12,3 +12,6 @@ DIST jdk-8u152-solaris-sparcv9-demos.tar.gz 9769313 BLAKE2B 
a811ceae2a7ee8d6081b
 DIST jdk-8u152-solaris-sparcv9.tar.gz 104117809 BLAKE2B 
1dc8e1297594bdd84186d4422dfc8fff94a78e0316f8873920c79342e7d0ab504794296622f0357acf137a3170f263acd0b2c1dd7179e50ff538b5648abf5a4b
 SHA512 
9b87d11325e22bfb5f8e852ef4dcd182f091dcedfe71e5b19cc5a7d82f9f7ccb060b53512bc938d0e617648a8aa766bb722690751521b9a2cc3820507342548d
 DIST jdk-8u152-solaris-x64-demos.tar.gz 9756596 BLAKE2B 
4a5ca101e20d1693eaca23120bc3244412276d51dcf7700dd5142b9d23b90a7ff0d3599dce7862e38a183ea9e1ea67afbc075bdfe84908811bec700a928f46f6
 SHA512 
1aeaf732ad3956ede4baa005f34024750e03919ef81b608229a3df556b47db1255ce027e4278891644433db0c360225a3e81e9a547d298a4b958beb8691f8ff2
 DIST jdk-8u152-solaris-x64.tar.gz 101758540 BLAKE2B 
18b04a0eebc618148bdb215d4ca286fce141fb91dc9c0f05de2520eb073a819161af7a1533b3ecdab9961080ad52acd523b771c23a8a3da8797f0adaf974164e
 SHA512 
4dd9606be347a61a03c0f670915c4e790d4f5eef80a67922342b539dcae7132b3157df04cd33e5f72fdc7e6fcb43e21b3b387e2da159cdfea0feb01183c68aa0
+DIST jdk-9.0.1_linux-x64_bin.tar.gz 354531775 BLAKE2B 
c8b81f2286a0c3c4aa8f617f4638fb0dfd70a318acb31ff6a650f566aaa0752a8bc0023ec2e4af99e2a0b6f63f30b21ac1e46d920beec486966f498a37e49cea
 SHA512 
c62ae164553830ef2ab8fbeb6d8674ac0db3e845cabe969f33acf79beb66a16ca5096f4c3d5712d87a55b1a791ac0908b4909e8276661ee24900ad8e0a983a55
+DIST jdk-9.0.1_osx-x64_bin.dmg 400669840 BLAKE2B 
1fbdbc46c2771a8d7c0d38074e4d145ad3ed32bc1f9ad6bbadecb232e5d96f8bb607839309a7fffcf9fa6731c9f43586033ab96ff1a2761c44a1d19618fc0999
 SHA512 
f84ea7be92b3cb219fb3b2c642e0ea088cacd252a7a795f9b65483eba7cc15bfa2ff139112d18c3eae1e7618b6aa457aca3aaaec8218581a54c81f263ab02a22
+DIST jdk-9.0.1_solaris-sparcv9_bin.tar.gz 216899843 BLAKE2B 
54d5f6d903722f805d9d471aec40b8ac5bb74fa316caf81cd7e1b32f20263f2417b7edcfd6415708b9abee04cba5ad350417af3649f6c5a2c7f71fc5dd5f2639
 SHA512 
76ed079f2adb7b922dbfb56feb2c6aa3e30e745328b5beab4f67966b42dde509cc0e92c80bf7e5e43b1415d24350e49e3f229d15ddac3ecaa8f8a500b2f6bb79

diff --git a/dev-java/oracle-jdk-bin/files/oracle-jdk-bin-9.env.sh 
b/dev-java/oracle-jdk-bin/files/oracle-jdk-bin-9.env.sh
new file mode 100644
index 00000000000..503707550e2
--- /dev/null
+++ b/dev-java/oracle-jdk-bin/files/oracle-jdk-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 JDK ${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="JDK JRE"
+PROVIDES_VERSION="${SLOT}"
+BOOTCLASSPATH=""
+GENERATION="2"
+ENV_VARS="JAVA_HOME JDK_HOME JAVAC PATH ROOTPATH LDPATH MANPATH"

diff --git a/dev-java/oracle-jdk-bin/metadata.xml 
b/dev-java/oracle-jdk-bin/metadata.xml
index 165190f3d7e..1951d0d6124 100644
--- a/dev-java/oracle-jdk-bin/metadata.xml
+++ b/dev-java/oracle-jdk-bin/metadata.xml
@@ -10,6 +10,9 @@
     <flag name="commercial">Install features requiring a commercial license 
for production use</flag>
     <flag name="derby">Install bundled Derby (Java database)</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 JDK 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>
     <flag name="source">Install JVM (and optionally JavaFX) sources</flag>

diff --git a/dev-java/oracle-jdk-bin/oracle-jdk-bin-9.0.1.ebuild 
b/dev-java/oracle-jdk-bin/oracle-jdk-bin-9.0.1.ebuild
new file mode 100644
index 00000000000..f86453303c6
--- /dev/null
+++ b/dev-java/oracle-jdk-bin/oracle-jdk-bin-9.0.1.ebuild
@@ -0,0 +1,239 @@
+# 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]="jdk-${PV}_linux-x64_bin.tar.gz"
+ARCH_FILES[sparc64-solaris]="jdk-${PV}_solaris-sparcv9_bin.tar.gz"
+ARCH_FILES[x64-macos]="jdk-${PV}_osx-x64_bin.dmg"
+
+for keyword in ${KEYWORDS//-\*} ; do
+       SRC_URI+=" ${keyword#\~}? ( ${ARCH_FILES[${keyword#\~}]} )"
+done
+
+DESCRIPTION="Oracle's Java SE Development Kit"
+HOMEPAGE="http://www.oracle.com/technetwork/java/javase/";
+LICENSE="Oracle-BCLA-JavaSE"
+SLOT="${PV%%.*}"
+IUSE="alsa commercial cups doc +fontconfig +gentoo-vm gtk2 gtk3 headless-awt 
javafx nsplugin selinux source"
+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 )
+       doc? ( dev-java/java-sdk-docs:${SLOT} )
+       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/jdk9-downloads-3848520.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}/Contents/Home"
+               mkdir -p "${T}"/dmgmount || die
+               hdiutil attach "${DISTDIR}/${A}" -mountpoint "${T}"/dmgmount || 
die
+               xar -Oxf "${T}"/dmgmount/JDK\ ${PV}.pkg jdk${PV//.}.pkg/Payload 
| zcat | cpio -idv || die
+               hdiutil detach "${T}"/dmgmount || die
+       else
+               S="${WORKDIR}/jdk-${PV}"
+               default
+       fi
+}
+
+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 jmods/*.jfr.* lib/jfr* \
+                       lib/missioncontrol || die
+       fi
+
+       if use headless-awt ; then
+               rm -vf lib/lib*{[jx]awt,splashscreen}* \
+                  bin/{appletviewer,javaws,policytool} || die
+       fi
+
+       if ! use javafx ; then
+               rm -vf lib/lib*{decora,fx,glass,prism}* \
+                  lib/libgstreamer-lite.* lib/*fx* \
+                  bin/javapackager jmods/javafx* || 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
+
+       if ! use source ; then
+               rm -v lib/src.zip || die
+       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 JRE 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 JDK ${SLOT}" \
+                       sun-jcontrol-${PN}-${SLOT} \
+                       "Settings;Java;"
+       fi
+
+       dodir "${dest}"
+       cp -pPR bin conf include jmods 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 JDK"
+               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 JDK"
+               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 JDK 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