From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by finch.gentoo.org (Postfix) with ESMTPS id 5293C138334 for ; Thu, 8 Nov 2018 23:11:49 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id A95E2E0B67; Thu, 8 Nov 2018 23:11:47 +0000 (UTC) Received: from smtp.gentoo.org (dev.gentoo.org [IPv6:2001:470:ea4a:1:5054:ff:fec7:86e4]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id 6BC5AE0B67 for ; Thu, 8 Nov 2018 23:11:47 +0000 (UTC) Received: from oystercatcher.gentoo.org (oystercatcher.gentoo.org [148.251.78.52]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id 6D866335CDA for ; Thu, 8 Nov 2018 23:11:45 +0000 (UTC) Received: from localhost.localdomain (localhost [IPv6:::1]) by oystercatcher.gentoo.org (Postfix) with ESMTP id C2F08462 for ; Thu, 8 Nov 2018 23:11:43 +0000 (UTC) From: "James Le Cuirot" To: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: 8bit Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "James Le Cuirot" Message-ID: <1541718669.369063cc1474a9a6bc49b2012e8fe08469a477cc.chewi@gentoo> Subject: [gentoo-commits] repo/gentoo:master commit in: dev-java/openjdk/files/, dev-java/openjdk/ X-VCS-Repository: repo/gentoo X-VCS-Files: dev-java/openjdk/Manifest dev-java/openjdk/files/openjdk-11.env.sh dev-java/openjdk/metadata.xml dev-java/openjdk/openjdk-11.0.1_p13.ebuild X-VCS-Directories: dev-java/openjdk/files/ dev-java/openjdk/ X-VCS-Committer: chewi X-VCS-Committer-Name: James Le Cuirot X-VCS-Revision: 369063cc1474a9a6bc49b2012e8fe08469a477cc X-VCS-Branch: master Date: Thu, 8 Nov 2018 23:11:43 +0000 (UTC) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-commits@lists.gentoo.org X-Archives-Salt: 20fabb40-453d-4e0c-be8d-b356edb61aef X-Archives-Hash: 849c87c46ea774ae59a76401ce79b7b7 commit: 369063cc1474a9a6bc49b2012e8fe08469a477cc Author: James Le Cuirot gentoo org> AuthorDate: Sun Nov 4 15:10:39 2018 +0000 Commit: James Le Cuirot gentoo org> CommitDate: Thu Nov 8 23:11:09 2018 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=369063cc dev-java/openjdk: New package to provide Java 11 from source I'm not sure if this will build on hardened. There used to be an upstream mechanism to handle PaX markings but this disappeared in an earlier version. It might build with USE=-jbootstrap though. Please let us know. Thanks to Alex Dubov for the initial ebuild attempt. Closes: https://github.com/gentoo/gentoo/pull/9835 Signed-off-by: James Le Cuirot gentoo.org> Package-Manager: Portage-2.3.51, Repoman-2.3.11 dev-java/openjdk/Manifest | 1 + dev-java/openjdk/files/openjdk-11.env.sh | 16 ++ dev-java/openjdk/metadata.xml | 16 ++ dev-java/openjdk/openjdk-11.0.1_p13.ebuild | 234 +++++++++++++++++++++++++++++ 4 files changed, 267 insertions(+) diff --git a/dev-java/openjdk/Manifest b/dev-java/openjdk/Manifest new file mode 100644 index 00000000000..351991ab4ea --- /dev/null +++ b/dev-java/openjdk/Manifest @@ -0,0 +1 @@ +DIST jdk-11.0.1+13.tar.bz2 90134818 BLAKE2B c79f32dc5b531a06317afb87ef15495267e914b9b292a1d434514a90298d8234e7e0ba92659416b15d9392c7513d976a0c81411953cb6706a27ee57c965e36fb SHA512 c534c2fa8dcd4fdebef6f00473d5ceaae4a33bd1e1a417846508e25f154b1ded649a73468c8c71ac0c1e27bab5f641a3b480a264b532a0c30be2869c3d11a15d diff --git a/dev-java/openjdk/files/openjdk-11.env.sh b/dev-java/openjdk/files/openjdk-11.env.sh new file mode 100644 index 00000000000..96c4be79c33 --- /dev/null +++ b/dev-java/openjdk/files/openjdk-11.env.sh @@ -0,0 +1,16 @@ +# Copyright 1999-2018 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +VERSION="OpenJDK ${PV}" +JAVA_HOME="${EPREFIX}/usr/$(get_libdir)/${PN}-${SLOT}" +JDK_HOME="${EPREFIX}/usr/$(get_libdir)/${PN}-${SLOT}" +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/openjdk/metadata.xml b/dev-java/openjdk/metadata.xml new file mode 100644 index 00000000000..c76b9ca5d45 --- /dev/null +++ b/dev-java/openjdk/metadata.xml @@ -0,0 +1,16 @@ + + + + + java@gentoo.org + Java + + Java™ is the world's leading programming language and platform. The code for Java is open source and available at OpenJDK™. + + Don't install the X backend for AWT, needed by some GUIs + Allow this JDK to be recognised by Gentoo (package manager, eselect, java-config, EXPERIMENTAL!) + Build OpenJDK twice, the second time using the result of the first + Install JVM sources + Provide javaws command through symlink to icedtea-web + + diff --git a/dev-java/openjdk/openjdk-11.0.1_p13.ebuild b/dev-java/openjdk/openjdk-11.0.1_p13.ebuild new file mode 100644 index 00000000000..8bc5d1fa01e --- /dev/null +++ b/dev-java/openjdk/openjdk-11.0.1_p13.ebuild @@ -0,0 +1,234 @@ +# Copyright 1999-2018 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=6 + +inherit autotools check-reqs flag-o-matic java-pkg-2 java-vm-2 multiprocessing pax-utils toolchain-funcs + +MY_PV=${PV/_p/+} +SLOT=${MY_PV%%[.+]*} + +DESCRIPTION="Open source implementation of the Java programming language" +HOMEPAGE="https://openjdk.java.net" +SRC_URI="https://hg.${PN}.java.net/jdk-updates/jdk${SLOT}u/archive/jdk-${MY_PV}.tar.bz2" +LICENSE="GPL-2" +KEYWORDS="~amd64 ~arm64 ~ppc64" + +# Default variant must be first! +# The rest do not matter. +JVM_VARIANTS=" + server + client + core + minimal + zero +" + +IUSE=+$(printf "jvm_variant_%s " ${JVM_VARIANTS}) +IUSE+="alsa debug doc examples gentoo-vm headless-awt +jbootstrap nsplugin +pch selinux source +webstart" + +REQUIRED_USE=" + ^^ ( + || ( jvm_variant_server jvm_variant_client jvm_variant_minimal ) + jvm_variant_core + jvm_variant_zero + ) +" + +CDEPEND=" + media-libs/freetype:2= + net-print/cups + sys-libs/zlib + !headless-awt? ( + x11-libs/libX11 + x11-libs/libXext + x11-libs/libXi + x11-libs/libXrender + x11-libs/libXt + x11-libs/libXtst + ) +" + +RDEPEND=" + ${CDEPEND} + alsa? ( media-libs/alsa-lib ) + selinux? ( sec-policy/selinux-java ) +" + +DEPEND=" + ${CDEPEND} + app-arch/zip + media-libs/alsa-lib + !headless-awt? ( + x11-base/xorg-proto + ) + || ( + dev-java/openjdk-bin:${SLOT} + dev-java/openjdk:${SLOT} + ) +" + +PDEPEND="webstart? ( >=dev-java/icedtea-web-1.6.1:0 ) + nsplugin? ( >=dev-java/icedtea-web-1.6.1:0[nsplugin] )" + +S="${WORKDIR}/jdk${SLOT}u-jdk-${MY_PV}" + +# The space required to build varies wildly depending on USE flags, +# ranging from 2GB to 24GB. This function is certainly not exact but +# should be close enough to be useful. +openjdk_check_requirements() { + local M variant count=0 + + for variant in ${JVM_VARIANTS}; do + use jvm_variant_${variant} && + count=$(( $count + 1 )) + done + + M=$(usex debug 2600 875) + M=$(( $(usex debug 2900 375) * $count + $M )) + M=$(( $(usex jbootstrap 2 1) * $M )) + M=$(( $(usex doc 300 0) + $(usex source 120 0) + 820 + $M )) + + CHECKREQS_DISK_BUILD=${M}M check-reqs_pkg_${EBUILD_PHASE} +} + +pkg_pretend() { + openjdk_check_requirements +} + +pkg_setup() { + openjdk_check_requirements + java-vm-2_pkg_setup + + JAVA_PKG_WANT_BUILD_VM="openjdk-${SLOT} openjdk-bin-${SLOT}" + JAVA_PKG_WANT_SOURCE="${SLOT}" + JAVA_PKG_WANT_TARGET="${SLOT}" + + # The nastiness below is necessary while the gentoo-vm USE flag is + # masked. First we call java-pkg-2_pkg_setup if it looks like the + # flag was unmasked against one of the possible build VMs. If not, + # we try finding one of them in their expected locations. This would + # have been slightly less messy if openjdk-bin had been installed to + # /opt/${PN}-${SLOT} or if there was a mechanism to install a VM env + # file but disable it so that it would not normally be selectable. + + local vm + for vm in ${JAVA_PKG_WANT_BUILD_VM}; do + if [[ -d ${EPREFIX}/usr/$(get_libdir)/jvm/${vm} ]]; then + java-pkg-2_pkg_setup + return + fi + done + + if has_version --host-root dev-java/openjdk:${SLOT}; then + export JDK_HOME=${EPREFIX}/usr/$(get_libdir)/openjdk-${SLOT} + else + JDK_HOME=$(best_version --host-root dev-java/openjdk-bin:${SLOT}) + [[ -n ${JDK_HOME} ]] || die "Build VM not found!" + JDK_HOME=${JDK_HOME#*/} + JDK_HOME=${EPREFIX}/opt/${JDK_HOME%-r*} + export JDK_HOME + fi +} + +src_configure() { + # Work around stack alignment issue, bug #647954. + use x86 && append-flags -mincoming-stack-boundary=2 + + chmod +x configure || die + + local variant build_variants + for variant in ${JVM_VARIANTS}; do + use jvm_variant_${variant} && + build_variants+=${variant}, + done + + local myconf=() + + # PaX breaks pch, bug #601016 + if use pch && ! host-is-pax; then + myconf+=( --enable-precompiled-headers ) + else + myconf+=( --disable-precompiled-headers ) + fi + + # Enabling full docs appears to break doc building. If not + # explicitly disabled, the flag will get auto-enabled if pandoc and + # graphviz are detected. pandoc has loads of dependencies anyway. + + ( + unset JAVA JAVAC XARGS + CFLAGS= CXXFLAGS= LDFLAGS= \ + CONFIG_SITE=/dev/null \ + econf \ + --with-boot-jdk="${JDK_HOME}" \ + --with-extra-cflags="${CFLAGS}" \ + --with-extra-cxxflags="${CXXFLAGS}" \ + --with-extra-ldflags="${LDFLAGS}" \ + --with-jvm-variants=${build_variants%,} \ + --with-native-debug-symbols=$(usex debug internal none) \ + --with-version-pre=gentoo \ + --with-version-string=${MY_PV%+*} \ + --with-version-build=${MY_PV#*+} \ + --enable-headless-only=$(usex headless-awt yes no) \ + --enable-full-docs=no \ + --disable-ccache \ + "${myconf[@]}" + ) +} + +src_compile() { + emake -j1 \ + $(usex jbootstrap bootcycle-images product-images) $(usex doc docs '') \ + JOBS=$(makeopts_jobs) LOG=debug CFLAGS_WARNINGS_ARE_ERRORS= # No -Werror +} + +src_install() { + local dest="/usr/$(get_libdir)/${PN}-${SLOT}" + local ddest="${ED}${dest#/}" + + cd "${S}"/build/*-release/images/jdk || die + + # Oracle and IcedTea have libjsoundalsa.so depending on + # libasound.so.2 but OpenJDK only has libjsound.so. Weird. + if ! use alsa ; then + rm -v lib/libjsound.* || die + fi + + if ! use examples ; then + rm -vr demo/ || die + fi + + if ! use source ; then + rm -v lib/src.zip || die + fi + + dodir "${dest}" + cp -pPR * "${ddest}" || die + + use gentoo-vm && java-vm_install-env "${FILESDIR}"/${PN}-${SLOT}.env.sh + java-vm_set-pax-markings "${ddest}" + java-vm_revdep-mask + java-vm_sandbox-predict /dev/random /proc/self/coredump_filter + + if use doc ; then + insinto /usr/share/doc/${PF}/html + doins -r "${S}"/build/*-release/images/docs/* + dosym ${PF} /usr/share/doc/${PN}-${SLOT} + fi +} + +pkg_postinst() { + java-vm-2_pkg_postinst + + 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 ${SLOT}. This JDK must therefore be invoked using its" + ewarn "absolute location under ${EPREFIX}/usr/$(get_libdir)/${PN}-${SLOT}." + fi +}