dev-java/openjdk: add 17.0.20_p8

Bug: https://bugs.gentoo.org/979647
Signed-off-by: Volkmar W. Pogatzki <gentoo@pogatzki.net>
Part-of: https://codeberg.org/gentoo/gentoo/pulls/1443
Signed-off-by: Sam James <sam@gentoo.org>
This commit is contained in:
Volkmar W. Pogatzki
2026-07-21 23:21:01 +02:00
committed by Sam James
parent 827188f3d5
commit da822485da
2 changed files with 335 additions and 0 deletions

View File

@@ -2,6 +2,7 @@ DIST openjdk-11.0.18-riscv.patch.xz 272672 BLAKE2B b079612032a5bf135b05bdd1da16f
DIST openjdk-11.0.31_p11.tar.gz 116714248 BLAKE2B 67e4dd3e3383a67c82e41d6ab66f415ac18833b3bbfad9741ee07c9b8b050bcba811aa4188075b26e465017355392851b2b5fd813ced2c37572b6d75c92ac22f SHA512 78e2e96395b0fa17f4565924abc3e034bb660763e6a3a278380232c17d0aff64d000bcec0e6ff0a37e24c5affcb0ffbdacb5565d52375f41dedfdc000e5c0dc6
DIST openjdk-11.0.32_p9.tar.gz 116752810 BLAKE2B e964c0afaf8720f93b3d7a643ae2d5ebc66746a4f7b9b6143e0704d25b01ab96c6b514dda5a97c00bcd06ed78cc80a4abd33d216b899dd2396d6e9c93af095b1 SHA512 e1305baf9dbf348ef4b8e68ca9e0104824bd09a746aa8700e5d789b1e8193d17aa3079923fb95a39d39252bb9ed5a995dcdac569a2425071ace1ffbcbe4b934c
DIST openjdk-17.0.19_p10.tar.gz 108200542 BLAKE2B 4a556fa52abc25457a8dab8d17002d2b60bef568bdab6052e91164c67097e4b25d65211024c15317f33cbe45474bfc84e75e64735b1d0f349c917a06dd5e9a5a SHA512 fb37c130bccaf1de37640a0cb0f74b8114c7c8756d28767972b57dedd6b2d86b9da71db57903659497a5e2f2a44b3eea634e551c75ba93a5ec896df1c637a463
DIST openjdk-17.0.20_p8.tar.gz 108361148 BLAKE2B b3fe2c0a33c6c5e90230a7b454f9cf8995205cdba73a765089d8444173beb61aca898fe8d0c31e60e240430491772a6dcf0dfedde585a575ad83c96dd333bcf8 SHA512 46c0e16890752b5a010f8c666b056f4ffa229e077c59a4a69255e30193d6d1d3a1dc9cc8b02bf4418bd3667fcc05ef287ce5609228e8d143dd3b70f020cd7dbd
DIST openjdk-21.0.11_p10.tar.gz 114063372 BLAKE2B 3c5542b2169c6aa9c597a0a20ae879ab4890e7e39466d01c639e05653e90aa8198378f6fe6d9daa6d9ad7237f09cdd2320db517b83d4886f292c25d15c1dba4e SHA512 a2283a4bb07018d89b45b8dfabb34b058a3279f3cc96cddbd17c351df3e137ada401d2940d55f59f75bc5483c645415542a3af01658fbc82754e5f454055956a
DIST openjdk-21.0.12_p8.tar.gz 114138339 BLAKE2B ec0757e617ff218eb3811e19b415d4ff92f33d5d5a10e09aa27ed658aff50f0d3ac3e953839c7a6a3c8ebf67c124ece10c1a638107cf7a91b2348c4f8bf03949 SHA512 47bd054adc8ca52ba68d212375a0d4f32b822dcbbf54bfde902b1ab09b7117cca03e5f54d07f62ed9b5be5b8b88aac225e0881a7a2b6ea653a89fa64193a937d
DIST openjdk-25.0.3_p9.tar.gz 119542671 BLAKE2B 51d04064ceb052cc09133f4f406ed04fe5d0bb72ada943ec663c9e6405dd6a5ac41e9edd2a5e7079282de717b62db437c41c75dd959ddfdb57852cec6f0f7f34 SHA512 3784667a41df9faf8e9da96a6f83f03372fb362a3c1878a4d368816996c20b2efddc3154ba42ab6e0b180b981f1202debcb93ef67117d96dcdfa1b8dd51f8709

View File

@@ -0,0 +1,334 @@
# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
# Avoid circular dependency
JAVA_DISABLE_DEPEND_ON_JAVA_DEP_CHECK="true"
inherit check-reqs dot-a flag-o-matic java-pkg-2 java-vm-2 multiprocessing toolchain-funcs
# variable name format: <UPPERCASE_KEYWORD>_XPAK
ARM64_XPAK="17.0.2_p8" # musl bootstrap install
PPC64_XPAK="17.0.1_p12" # big-endian bootstrap tarball
RISCV_XPAK="17.0.3_p7"
X86_XPAK="17.0.1_p12"
# Usage: bootstrap_uri <keyword> <version> [extracond]
# Example: $(bootstrap_uri ppc64 17.0.1_p12 big-endian)
# Output: ppc64? ( big-endian? ( https://...17.0.1_p12-ppc64.tar.xz ) )
bootstrap_uri() {
local baseuri="https://distfiles.gentoo.org/pub/dev/arthurzam@gentoo.org/dev-java/${PN}/${PN}-bootstrap"
local suff="tar.xz"
local kw="${1:?${FUNCNAME[0]}: keyword not specified}"
local ver="${2:?${FUNCNAME[0]}: version not specified}"
local cond="${3-}"
[[ ${cond} == elibc_musl* ]] && local musl=yes
# here be dragons
echo "${kw}? ( ${cond:+${cond}? (} ${baseuri}-${ver}-${kw}${musl:+-musl}.${suff} ${cond:+) })"
}
# don't change versioning scheme
# to find correct _p number, look at
# https://github.com/openjdk/jdk${SLOT}u/tags
# you will see, for example, jdk-17.0.4.1-ga and jdk-17.0.4.1+1, both point
# to exact same commit sha. we should always use the full version.
# -ga tag is just for humans to easily identify General Availability release tag.
MY_PV="${PV%_p*}-ga"
DESCRIPTION="Open source implementation of the Java programming language"
HOMEPAGE="https://openjdk.org"
SRC_URI="
https://github.com/${PN}/jdk17u/archive/jdk-${MY_PV}.tar.gz
-> ${P}.tar.gz
!system-bootstrap? (
$(bootstrap_uri arm64 ${ARM64_XPAK} elibc_musl)
$(bootstrap_uri ppc64 ${PPC64_XPAK} big-endian)
$(bootstrap_uri x86 ${X86_XPAK})
$(bootstrap_uri riscv ${RISCV_XPAK})
)
"
S="${WORKDIR}/jdk${SLOT}u-jdk-${MY_PV//+/-}"
LICENSE="GPL-2-with-classpath-exception"
SLOT="$(ver_cut 1)"
KEYWORDS="~amd64 ~arm ~arm64 ~ppc64 ~riscv ~x86"
IUSE="alsa big-endian cups debug doc examples headless-awt +jbootstrap selinux source static-libs system-bootstrap systemtap"
REQUIRED_USE="
!system-bootstrap? ( jbootstrap )
"
COMMON_DEPEND="
media-libs/freetype:2=
media-libs/giflib:0/7
media-libs/harfbuzz:=
media-libs/libpng:0=
media-libs/lcms:2=
virtual/zlib:=
media-libs/libjpeg-turbo:0=
systemtap? ( dev-debug/systemtap )
"
# Many libs are required to build, but not to run, make is possible to remove
# by listing conditionally in RDEPEND unconditionally in DEPEND
RDEPEND="
${COMMON_DEPEND}
>=sys-apps/baselayout-java-0.1.0-r1
!headless-awt? (
x11-libs/libX11
x11-libs/libXext
x11-libs/libXi
x11-libs/libXrandr
x11-libs/libXrender
x11-libs/libXt
x11-libs/libXtst
)
alsa? ( media-libs/alsa-lib )
cups? ( net-print/cups )
selinux? ( sec-policy/selinux-java )
"
DEPEND="
${COMMON_DEPEND}
app-arch/zip
media-libs/alsa-lib
net-print/cups
x11-base/xorg-proto
x11-libs/libX11
x11-libs/libXext
x11-libs/libXi
x11-libs/libXrandr
x11-libs/libXrender
x11-libs/libXt
x11-libs/libXtst
system-bootstrap? (
|| (
dev-java/openjdk-bin:${SLOT}
dev-java/openjdk:${SLOT}
)
)
"
PATCHES=(
"${FILESDIR}/openjdk-17.0.16_p8-lto-memory.patch"
)
# The space required to build varies wildly depending on USE flags,
# ranging from 2GB to 16GB. This function is certainly not exact but
# should be close enough to be useful.
openjdk_check_requirements() {
local M
M=2048
M=$(( $(usex jbootstrap 2 1) * $M ))
M=$(( $(usex debug 3 1) * $M ))
M=$(( $(usex doc 320 0) + $(usex source 128 0) + 192 + $M ))
CHECKREQS_DISK_BUILD=${M}M check-reqs_pkg_${EBUILD_PHASE}
}
pkg_pretend() {
openjdk_check_requirements
if [[ ${MERGE_TYPE} != binary ]]; then
has ccache ${FEATURES} && die "FEATURES=ccache doesn't work with ${PN}, bug #677876"
fi
}
pkg_setup() {
openjdk_check_requirements
java-vm-2_pkg_setup
[[ ${MERGE_TYPE} == "binary" ]] && return
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 ${BROOT}/usr/lib/jvm/${vm} ]]; then
java-pkg-2_pkg_setup
return
fi
done
}
src_prepare() {
default
chmod +x configure || die
}
src_configure() {
local myconf=()
if has_version dev-java/openjdk:${SLOT}; then
export JDK_HOME=${BROOT}/usr/$(get_libdir)/openjdk-${SLOT}
elif use !system-bootstrap ; then
local xpakvar="${ARCH^^}_XPAK"
export JDK_HOME="${WORKDIR}/openjdk-bootstrap-${!xpakvar}"
else
JDK_HOME=$(best_version -b dev-java/openjdk-bin:${SLOT})
[[ -n ${JDK_HOME} ]] || die "Build VM not found!"
JDK_HOME=${JDK_HOME#*/}
JDK_HOME=${BROOT}/opt/${JDK_HOME%-r*}
export JDK_HOME
fi
# Work around stack alignment issue, bug #647954. in case we ever have x86
use x86 && append-flags -mincoming-stack-boundary=2
# bug 906987; append-cppflags doesnt work
use elibc_musl && append-flags -D_LARGEFILE64_SOURCE
# Strip some flags users may set, but should not. #818502
filter-flags -fexceptions
# Strip lto related flags, we rely on --with-jvm-features=link-time-opt
# See bug #833097 and bug #833098.
tc-is-lto && myconf+=( --with-jvm-features=link-time-opt )
filter-lto
filter-flags -fdevirtualize-at-ltrans
if use static-libs ; then
lto-guarantee-fat
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.
myconf+=(
--disable-ccache
--disable-precompiled-headers
--disable-warnings-as-errors
--enable-full-docs=no
--with-boot-jdk="${JDK_HOME}"
--with-extra-cflags="${CFLAGS}"
--with-extra-cxxflags="${CXXFLAGS}"
--with-extra-ldflags="${LDFLAGS}"
--with-freetype="${XPAK_BOOTSTRAP:-system}"
--with-giflib="${XPAK_BOOTSTRAP:-system}"
--with-harfbuzz="${XPAK_BOOTSTRAP:-system}"
--with-lcms="${XPAK_BOOTSTRAP:-system}"
--with-libjpeg="${XPAK_BOOTSTRAP:-system}"
--with-libpng="${XPAK_BOOTSTRAP:-system}"
--with-native-debug-symbols=$(usex debug internal none)
--with-vendor-name="Gentoo"
--with-vendor-url="https://gentoo.org"
--with-vendor-bug-url="https://bugs.gentoo.org"
--with-vendor-vm-bug-url="https://bugs.openjdk.java.net"
--with-vendor-version-string="${PVR}"
--with-version-pre=""
--with-version-string="${PV%_p*}"
--with-version-build="${PV#*_p}"
--with-zlib="${XPAK_BOOTSTRAP:-system}"
--enable-jvm-feature-dtrace=$(usex systemtap yes no)
--enable-headless-only=$(usex headless-awt yes no)
$(tc-is-clang && echo "--with-toolchain-type=clang")
)
# Workaround for bug #938302
if use systemtap && has_version "dev-debug/systemtap[-dtrace-symlink(+)]" ; then
myconf+=( DTRACE="${BROOT}"/usr/bin/stap-dtrace )
fi
if use !system-bootstrap ; then
addpredict /dev/random
addpredict /proc/self/coredump_filter
fi
(
unset _JAVA_OPTIONS JAVA JAVA_TOOL_OPTIONS JAVAC XARGS
CFLAGS= CXXFLAGS= LDFLAGS= \
CONFIG_SITE=/dev/null \
econf "${myconf[@]}"
)
}
src_compile() {
# Too brittle - gets confused by e.g. -Oline
export MAKEOPTS="-j$(makeopts_jobs) -l$(makeopts_loadavg)"
unset GNUMAKEFLAGS MAKEFLAGS
local myemakeargs=(
JOBS=$(makeopts_jobs)
LOG=debug
CFLAGS_WARNINGS_ARE_ERRORS= # No -Werror
NICE= # Use PORTAGE_NICENESS, don't adjust further down
$(usex doc docs '')
$(usex jbootstrap bootcycle-images product-images)
$(usev static-libs static-libs-image)
)
emake "${myemakeargs[@]}" -j1
}
src_install() {
local dest="/usr/$(get_libdir)/${PN}-${SLOT}"
local ddest="${ED}/${dest#/}"
# https://bugs.gentoo.org/922741
docompress "${dest}/man"
cd "${S}"/build/*-release/images/jdk || die
# Create files used as storage for system preferences.
mkdir .systemPrefs || die
touch .systemPrefs/.system.lock || die
touch .systemPrefs/.systemRootModFile || 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
rm -v lib/security/cacerts || die
dodir "${dest}"
cp -pPR * "${ddest}" || die
dosym -r /etc/ssl/certs/java/cacerts "${dest}"/lib/security/cacerts
# must be done before running itself
java-vm_set-pax-markings "${ddest}"
einfo "Creating the Class Data Sharing archives and disabling usage tracking"
"${ddest}/bin/java" -server -Xshare:dump -Djdk.disableLastUsageTracking || die
java-vm_install-env "${FILESDIR}"/${PN}.env.sh
java-vm_revdep-mask
java-vm_sandbox-predict /dev/random /proc/self/coredump_filter
if use doc ; then
docinto html
dodoc -r "${S}"/build/*-release/images/docs/*
fi
if use static-libs ; then
cd "${S}"/build/*-release/images/static-libs || die
cp -pPR * "${ddest}" || die
strip-lto-bytecode "${ddest}" || die
fi
}
pkg_postinst() {
java-vm-2_pkg_postinst
}