diff options
author | James Le Cuirot <chewi@gentoo.org> | 2017-12-17 22:11:50 +0000 |
---|---|---|
committer | James Le Cuirot <chewi@gentoo.org> | 2017-12-17 22:14:34 +0000 |
commit | 94c0e74924bdbae2ac4e7968b3d955fff97f78fa (patch) | |
tree | acf03a1065ce2eaa76d5bc528bab8a2d494382c9 /dev-java | |
parent | dev-java/oracle-jre-bin: Version bump to 9.0.1 (Java 9) (diff) | |
download | gentoo-94c0e74924bdbae2ac4e7968b3d955fff97f78fa.tar.gz gentoo-94c0e74924bdbae2ac4e7968b3d955fff97f78fa.tar.bz2 gentoo-94c0e74924bdbae2ac4e7968b3d955fff97f78fa.zip |
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
Diffstat (limited to 'dev-java')
-rw-r--r-- | dev-java/oracle-jdk-bin/Manifest | 3 | ||||
-rw-r--r-- | dev-java/oracle-jdk-bin/files/oracle-jdk-bin-9.env.sh | 16 | ||||
-rw-r--r-- | dev-java/oracle-jdk-bin/metadata.xml | 3 | ||||
-rw-r--r-- | dev-java/oracle-jdk-bin/oracle-jdk-bin-9.0.1.ebuild | 239 |
4 files changed, 261 insertions, 0 deletions
diff --git a/dev-java/oracle-jdk-bin/Manifest b/dev-java/oracle-jdk-bin/Manifest index 44ca4f553d7a..154334c80a56 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 000000000000..503707550e23 --- /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 165190f3d7ec..1951d0d61240 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 000000000000..f86453303c61 --- /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 +} |