diff options
author | James Le Cuirot <chewi@gentoo.org> | 2017-12-17 22:10:35 +0000 |
---|---|---|
committer | James Le Cuirot <chewi@gentoo.org> | 2017-12-17 22:14:34 +0000 |
commit | 937c31f1bc6f6631a1291fa093e82bd2140278ad (patch) | |
tree | 0d766f6a300ca1cdf45660ef1ef7382f1488787f /dev-java | |
parent | profiles: Mask dev-java/oracle-(jdk|jre)-bin:9[gentoo-vm] (diff) | |
download | gentoo-937c31f1bc6f6631a1291fa093e82bd2140278ad.tar.gz gentoo-937c31f1bc6f6631a1291fa093e82bd2140278ad.tar.bz2 gentoo-937c31f1bc6f6631a1291fa093e82bd2140278ad.zip |
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
Diffstat (limited to 'dev-java')
-rw-r--r-- | dev-java/oracle-jre-bin/Manifest | 3 | ||||
-rw-r--r-- | dev-java/oracle-jre-bin/files/oracle-jre-bin-9.env.sh | 16 | ||||
-rw-r--r-- | dev-java/oracle-jre-bin/files/oracle-jre-bin.env.sh | 4 | ||||
-rw-r--r-- | dev-java/oracle-jre-bin/metadata.xml | 3 | ||||
-rw-r--r-- | dev-java/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 0360e1039819..07521f5956ac 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 000000000000..7e6f9a0e6684 --- /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 eaf356787d8d..a52547ca506f 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 edb6ab75a53c..b9fe447b1280 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 000000000000..81ca64dc5cc8 --- /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 +} |