Skip to content

Commit

Permalink
dev-java/oracle-jdk-bin: Version bump to 9.0.1 (Java 9)
Browse files Browse the repository at this point in the history
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: gentoo#6033
Package-Manager: Portage-2.3.19, Repoman-2.3.6
  • Loading branch information
chewi committed Dec 17, 2017
1 parent 937c31f commit 94c0e74
Show file tree
Hide file tree
Showing 4 changed files with 261 additions and 0 deletions.
3 changes: 3 additions & 0 deletions dev-java/oracle-jdk-bin/Manifest
Original file line number Diff line number Diff line change
Expand Up @@ -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
16 changes: 16 additions & 0 deletions dev-java/oracle-jdk-bin/files/oracle-jdk-bin-9.env.sh
Original file line number Diff line number Diff line change
@@ -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"
3 changes: 3 additions & 0 deletions dev-java/oracle-jdk-bin/metadata.xml
Original file line number Diff line number Diff line change
Expand Up @@ -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>
Expand Down
239 changes: 239 additions & 0 deletions dev-java/oracle-jdk-bin/oracle-jdk-bin-9.0.1.ebuild
Original file line number Diff line number Diff line change
@@ -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
}

0 comments on commit 94c0e74

Please sign in to comment.