dev-java/openjdk: drop versions

Bug: https://bugs.gentoo.org/981054
Signed-off-by: Volkmar W. Pogatzki <gentoo@pogatzki.net>
Part-of: https://codeberg.org/gentoo/gentoo/pulls/1950
Signed-off-by: Miroslav Šulc <fordfrog@gentoo.org>
This commit is contained in:
Volkmar W. Pogatzki
2026-09-29 12:21:57 +02:00
committed by Miroslav Šulc
parent b7bff9da9f
commit 4b8e8df729
6 changed files with 0 additions and 1627 deletions
-5
View File
@@ -1,15 +1,10 @@
DIST openjdk-11.0.18-riscv.patch.xz 272672 BLAKE2B b079612032a5bf135b05bdd1da16f2823772a5d9a18447a435f191daf78c5429a15c2e9ea64758dc9b26ee2a88275532b4f27714b2a7e4489f920c0ed2f5003b SHA512 c0426f243c5aa581d90366cb01ce811e34883a9d8a0298cab420378470e8eb427a56932ca1fbb5ed57e7430be2b38c6bc4491028ebaa25be0a938ba0bb2baf45
DIST openjdk-11.0.32.1_p1.tar.gz 116753609 BLAKE2B 810a60c1f9d2776d87aeba3a8fe520e0f90e6c02b76a53c49c92aafc7b8b5c69327a936576e2eabcc342d63b7b9b067f7fc6a6ab643791061d453ff9dcade3b9 SHA512 7052428039711174a98c0cce28461d2aa32e535bec2c3fafea69b228986b801ece544377517ef286d994703aa65b393765f39b3e3b2c816fb14cc98ba1c948d6
DIST openjdk-11.0.32_p9.tar.gz 116752810 BLAKE2B e964c0afaf8720f93b3d7a643ae2d5ebc66746a4f7b9b6143e0704d25b01ab96c6b514dda5a97c00bcd06ed78cc80a4abd33d216b899dd2396d6e9c93af095b1 SHA512 e1305baf9dbf348ef4b8e68ca9e0104824bd09a746aa8700e5d789b1e8193d17aa3079923fb95a39d39252bb9ed5a995dcdac569a2425071ace1ffbcbe4b934c
DIST openjdk-17.0.20.1_p1.tar.gz 108354972 BLAKE2B 02012cc2bc6c82590d5646d03d16539516e841457ebfe17eafc8ce9773183a190f73f6de1db1e851fd3a02fd5023205df0934b4e8cc3eee83d4a7892708125cb SHA512 4659365e1bd18b66b853e11be3bd994351eaa40f22be6188a63fd1845b0c2330fc085059cdc5967fc5eaacc43e75abaf7c14fb7202635428516eeb234ade5428
DIST openjdk-17.0.20_p8.tar.gz 108361148 BLAKE2B b3fe2c0a33c6c5e90230a7b454f9cf8995205cdba73a765089d8444173beb61aca898fe8d0c31e60e240430491772a6dcf0dfedde585a575ad83c96dd333bcf8 SHA512 46c0e16890752b5a010f8c666b056f4ffa229e077c59a4a69255e30193d6d1d3a1dc9cc8b02bf4418bd3667fcc05ef287ce5609228e8d143dd3b70f020cd7dbd
DIST openjdk-21.0.12.1_p1.tar.gz 114156415 BLAKE2B 450067022a3cd575ed070cd2dd4454bdf801c96785ac862e8468a78e6dc9dc9f12bc095cfe27e92fa49e907359538c32161620283ab98423ecd72d281034f054 SHA512 52036317d1afcf573dddaab271db5e7e73e7e01b321d1cc6d8c48d21cd36b50c1bedcd0ebfc0220b8ff1e9a92e64e40ee304ad3032799357e3c7cd5a635abafc
DIST openjdk-21.0.12_p8.tar.gz 114138339 BLAKE2B ec0757e617ff218eb3811e19b415d4ff92f33d5d5a10e09aa27ed658aff50f0d3ac3e953839c7a6a3c8ebf67c124ece10c1a638107cf7a91b2348c4f8bf03949 SHA512 47bd054adc8ca52ba68d212375a0d4f32b822dcbbf54bfde902b1ab09b7117cca03e5f54d07f62ed9b5be5b8b88aac225e0881a7a2b6ea653a89fa64193a937d
DIST openjdk-25.0.4.1_p1.tar.gz 119672034 BLAKE2B 1242502393f2666265f20cc316e37c7458b9e100bdf3504a5d78b7fa9c6c10a3eadea8dce26a60ff6393d869110d7e6d2268df72387fd1c6983ae70c72aed266 SHA512 54e2e97893895b7edc881b425328fbefa51e21d90b887b531cf7bf15f7bde58ce79e50247be8619b9b9402d3d5b03a657554a6855b35bdc6567b40552f4b9c09
DIST openjdk-25.0.4_p7.tar.gz 119669964 BLAKE2B f3314ac0197b30609db25a40825f90ce208fc19412a07dfe0bead2db185a04f1fbfb8230fbe44ea6279b39f16fcc8a1d0b132df1acbaa72a41ab12bd734d32fc SHA512 904b1a621fe0031ae4eed9b25ebc4bb977e07822dbd4796e40eefe3d25e8c1c5f86f33037ec1c5364e66dfe1f098415db6c7fc6f488a93c9b298c52461d3683b
DIST openjdk-27_p35.tar.gz 121507063 BLAKE2B ea8a73fb1c1b53d4aff85a0bf175c393222c54c026e623b5ae225b3dc2f4ff05c85d74301f3e82bcc039ebf7c46079fc1c3884c62edcc7f79d6357eaa9fcbed4 SHA512 168095c4e6440719259ce7c6af8264e93ba3de5ab1f1e5cc6693cb81cd357be03d54cd6962798e2bed89f40f511e9f32a33d6dc4fe0219719eb3faa74356cdc7
DIST openjdk-28_alpha15.tar.gz 120151416 BLAKE2B ee98c0caa038422815ef8589ef645855d112cb6f532eaaadd40ca799ed606d36dfb6d31d720875fa816a59a85b4ce2fb509bf23e22ab25606c5a04049d81b11b SHA512 fb95cd28d07119480b49fd2c3577f7a978568953f59d8eb1c0de40dea78f4e7d711acdf75701b879cda60e37787e6a9947666462b168f45134d28f19ad288fe1
DIST openjdk-8.502_p07.tar.gz 93987454 BLAKE2B 4118c050e590f7058ec47e4988eee66708be04c652dfa38b17273e83ff176c893e635202eef1db690f8a6ed322fe63000258e4c69006901a766098c1203990ad SHA512 fdcb0cc19cba5bb8cabfc3c6439ae5d1ce33d5fa500b1fe2a7b8152bedaacdda11e58fd2eb0357a815dfc1a44423023a9149409c0cdaac931fe0958e91bca343
DIST openjdk-8.504_p01.tar.gz 93982677 BLAKE2B 18b0913ee67b4c86485112411a173373daccef26da5429b03bcc62d7821bfdb647acc95c23016034cbd082dccce598eade8f25f56f76fdd149ad504e8efaaaf2 SHA512 65f7bc9603dad6ecb206fa62ba1e9c6b4b11cbbdaf4a9d69e5aa2ec57806f3447fdd0fbf7a11b34ecf5e504579721bb5c0b211e66a96972b0a092ec2b9e840c4
DIST openjdk-bootstrap-11.0.13_p8-ppc64.tar.xz 108215404 BLAKE2B 5e6c0b905b34b437137922b73a9724da96b8832186fea945f8c73d941db822ca1cc5718f3ecb4607ed98d1f8241c9f365b54caaf978863e8b84680a94f067b5d SHA512 732e2220219d42be10589fcaf2420da87ebc8564b4afc6bd02f61f31cdca9c31b339366e34d374fb814499b92f8aa796435a18f28e10c8cb00d9a0f5953bb60e
DIST openjdk-bootstrap-11.0.13_p8-x86.tar.xz 105420236 BLAKE2B d3137ad497937a9a04dedf38776f3ac45bf3b115d275991fd8582b72ade48390b6aa8ad89e0b4d34fa6a787a3c413dab20b32ef347dc8733544e810150c55d29 SHA512 f71a7ef8fbf19b0595dd7d4ebe52bbe1c95b8c17f34d092472c5f5ce8caf52a053f22db8587f1649f9a96ad01c0c632be343342812f5a8cc4ff843b33b8d9b0f
-321
View File
@@ -1,321 +0,0 @@
# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
inherit check-reqs flag-o-matic java-pkg-2 java-vm-2 multiprocessing toolchain-funcs
# 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.
# we need -ga tag to fetch tarball and unpack it, but exact number everywhere else to
# set build version properly
MY_PV="${PV%_p*}-ga"
# variable name format: <UPPERCASE_KEYWORD>_XPAK
PPC64_XPAK="11.0.13_p8" # big-endian bootstrap tarball
RISCV_XPAK="11.0.14_p9" # lp64d bootstrap tarball
X86_XPAK="11.0.13_p8"
# 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-}"
# here be dragons
echo "${kw}? ( ${cond:+${cond}? (} ${baseuri}-${ver}-${kw}.${suff} ${cond:+) })"
}
DESCRIPTION="Open source implementation of the Java programming language"
HOMEPAGE="https://openjdk.org"
SRC_URI="
https://github.com/${PN}/jdk11u/archive/jdk-${MY_PV}.tar.gz
-> ${P}.tar.gz
!system-bootstrap? (
$(bootstrap_uri ppc64 ${PPC64_XPAK} big-endian)
$(bootstrap_uri riscv ${RISCV_XPAK})
$(bootstrap_uri x86 ${X86_XPAK})
)
riscv? ( https://dev.gentoo.org/~arthurzam/distfiles/dev-java/openjdk/openjdk-11.0.18-riscv.patch.xz )
"
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 javafx +jbootstrap selinux source system-bootstrap systemtap"
REQUIRED_USE="
javafx? ( alsa !headless-awt )
!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
javafx? ( dev-java/openjfx:${SLOT}= )
system-bootstrap? (
|| (
dev-java/openjdk-bin:${SLOT}[gentoo-vm(+)]
dev-java/openjdk:${SLOT}[gentoo-vm(+)]
)
)
"
# 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}"
if use system-bootstrap; then
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
fi
}
src_prepare() {
use riscv && eapply "${WORKDIR}"/openjdk-11.0.18-riscv.patch
default
chmod +x configure || die
}
src_configure() {
local myconf=()
if ! use system-bootstrap; then
local xpakvar="${ARCH^^}_XPAK"
export JDK_HOME="${WORKDIR}/openjdk-bootstrap-${!xpakvar}"
fi
# Work around stack alignment issue, bug #647954.
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
# bug #945282
append-cflags -std=gnu17
# 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
--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-dtrace=$(usex systemtap yes no)
--enable-headless-only=$(usex headless-awt yes no)
$(tc-is-clang && echo "--with-toolchain-type=clang")
)
! use riscv && myconf+=( --with-jvm-features=shenandoahgc )
if use javafx; then
# this is not useful for users, just for upstream developers
# build system compares mesa version in md file
# https://bugs.gentoo.org/822612
export LEGAL_EXCLUDES=mesa3d.md
local zip="${EPREFIX}/usr/$(get_libdir)/openjfx-${SLOT}/javafx-exports.zip"
if [[ -r ${zip} ]]; then
myconf+=( --with-import-modules="${zip}" )
else
die "${zip} not found or not readable"
fi
fi
# 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)
)
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
}
pkg_postinst() {
java-vm-2_pkg_postinst
}
-331
View File
@@ -1,331 +0,0 @@
# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
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
}
-330
View File
@@ -1,330 +0,0 @@
# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
inherit check-reqs dot-a flag-o-matic java-pkg-2 java-vm-2 multiprocessing toolchain-funcs
# variable name format: <UPPERCASE_KEYWORD>_XPAK
PPC64_XPAK="21.0.0_p35" # big-endian bootstrap tarball
X86_XPAK="21.0.0_p35"
# 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}/jdk21u/archive/jdk-${MY_PV}.tar.gz
-> ${P}.tar.gz
!system-bootstrap? (
$(bootstrap_uri ppc64 ${PPC64_XPAK} big-endian)
$(bootstrap_uri x86 ${X86_XPAK})
)
"
S="${WORKDIR}/jdk${SLOT}u-jdk-${MY_PV//+/-}"
LICENSE="GPL-2-with-classpath-exception"
SLOT="$(ver_cut 1)"
KEYWORDS="amd64 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 )
!system-bootstrap? ( || ( ppc64 x86 ) )
"
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}
)
)
"
# 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.
#
# .. but because of -Werror=odr (bug #916735), we disable it
# entirely for now.
#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-stdc++lib=dynamic
--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")
)
use riscv && myconf+=( --with-boot-jdk-jvmargs="-Djdk.lang.Process.launchMechanism=vfork" )
# 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
}
-345
View File
@@ -1,345 +0,0 @@
# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
inherit check-reqs dot-a flag-o-matic java-pkg-2 java-vm-2 multiprocessing toolchain-funcs
# variable name format: <UPPERCASE_KEYWORD>_XPAK
PPC64_XPAK="25_p36" # big-endian bootstrap tarball
# 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"
# Upstream starts new major versions usually in https://github.com/openjdk/jdk.
# In ebuilds for those early versions, use '_alpha' in the version string.
# Exapmle: openjdk-26_alpha10.ebuild
# Later, upstream creates the versioned repository like e.g.
# https://github.com/openjdk/jdk25u.
# In ebuilds for those later versions, use '_beta' in the version string.
# Example: openjdk-25_beta35.ebuild
if [[ "${PV%_alpha*}" != "${PV}" ]]; then # version string contains "_alpha"
MY_PV="${PV/_alpha/+}"
JDK_REPO="jdk"
MY_VERSION_STRING="${PV%_alpha*}"
MY_VERSION_BUILD="${PV#*_alpha}"
elif [[ "${PV%_beta*}" != "${PV}" ]]; then # version string contains "_beta"
MY_PV="${PV/_beta/+}"
JDK_REPO="jdk$(ver_cut 1)u"
MY_VERSION_STRING="${PV%_beta*}"
MY_VERSION_BUILD="${PV#*_beta}"
else
MY_PV="${PV%_p*}-ga"
JDK_REPO="jdk$(ver_cut 1)u"
MY_VERSION_STRING="${PV%_p*}"
MY_VERSION_BUILD="${PV#*_p}"
fi
DESCRIPTION="Open source implementation of the Java programming language"
HOMEPAGE="https://openjdk.org"
SRC_URI="
https://github.com/${PN}/${JDK_REPO}/archive/jdk-${MY_PV}.tar.gz
-> ${P}.tar.gz
!system-bootstrap? (
$(bootstrap_uri ppc64 ${PPC64_XPAK} big-endian)
)
"
S="${WORKDIR}/${JDK_REPO}-jdk-${MY_PV//+/-}"
LICENSE="GPL-2-with-classpath-exception"
SLOT="$(ver_cut 1)"
KEYWORDS="amd64 arm64 ppc64 ~riscv"
IUSE="alsa big-endian cups debug doc examples headless-awt +jbootstrap selinux source static-libs +system-bootstrap systemtap"
REQUIRED_USE="
!system-bootstrap? ( jbootstrap )
!system-bootstrap? ( ppc64 )
"
COMMON_DEPEND="
media-libs/freetype:2=
media-libs/giflib:0/7
media-libs/harfbuzz:=
media-libs/libpng:0=
media-libs/lcms:2=
virtual/zlib:=
!headless-awt? (
x11-libs/libX11
x11-libs/libXext
x11-libs/libXi
x11-libs/libXrandr
x11-libs/libXrender
x11-libs/libXt
x11-libs/libXtst
)
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
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
!headless-awt? ( x11-base/xorg-proto )
system-bootstrap? (
|| (
dev-java/openjdk-bin:${SLOT}
dev-java/openjdk:${SLOT}
)
)
"
# 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
# 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.
#
# .. but because of -Werror=odr (bug #916735), we disable it
# entirely for now.
#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-stdc++lib=dynamic
--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="${MY_VERSION_STRING}"
--with-version-build="${MY_VERSION_BUILD}"
--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")
)
use riscv && myconf+=( --with-boot-jdk-jvmargs="-Djdk.lang.Process.launchMechanism=vfork" )
# 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
# Respect user -O<value>, bug #969169
OPTIMIZATION=
JVM_OPTIMIZATION=
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
}
-295
View File
@@ -1,295 +0,0 @@
# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
inherit check-reqs flag-o-matic java-pkg-2 java-vm-2 multiprocessing toolchain-funcs
# 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.
# we need -ga tag to fetch tarball and unpack it, but exact number everywhere else to
# set build version properly
MY_PV="$(ver_rs 1 'u' 2 '-' ${PV%_p*}-ga)"
# variable name format: <UPPERCASE_KEYWORD>_XPAK
X86_XPAK="8.402_p06"
PPC64_XPAK="8.402_p06"
# Usage: bootstrap_uri <keyword> <version> [extracond]
# Example: $(bootstrap_uri x86 8.402_p06)
# Output: ppc64? ( big-endian? ( https://...8.402_p06-x86.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-}"
# here be dragons
echo "${kw}? ( ${cond:+${cond}? (} ${baseuri}-${ver}-${kw}.${suff} ${cond:+) })"
}
DESCRIPTION="Open source implementation of the Java programming language"
HOMEPAGE="https://openjdk.org"
SRC_URI="
https://github.com/openjdk/jdk8u/archive/jdk${MY_PV}.tar.gz
-> ${P}.tar.gz
!system-bootstrap? (
$(bootstrap_uri x86 ${X86_XPAK})
$(bootstrap_uri ppc64 ${PPC64_XPAK} big-endian)
)
"
S="${WORKDIR}/jdk${SLOT}u-jdk${MY_PV}"
LICENSE="GPL-2-with-classpath-exception"
SLOT="$(ver_cut 1)"
KEYWORDS="amd64 arm64 ppc64 x86"
IUSE="alsa big-endian debug cups doc examples headless-awt +jbootstrap selinux system-bootstrap source"
COMMON_DEPEND="
media-libs/freetype:2=
media-libs/giflib:0/7
virtual/zlib:=
"
# 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/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
virtual/pkgconfig
x11-base/xorg-proto
x11-libs/libX11
x11-libs/libXext
x11-libs/libXi
x11-libs/libXrender
x11-libs/libXt
x11-libs/libXtst
system-bootstrap? (
|| (
dev-java/openjdk-bin:${SLOT}
dev-java/openjdk:${SLOT}
)
)
"
BDEPEND="
virtual/pkgconfig
sys-devel/gcc:*
"
PATCHES=(
"${FILESDIR}/openjdk-8-insantiate-arrayallocator.patch"
"${FILESDIR}/openjdk-8.402_p06-0004-Fix-misc.-warnings.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 debug 3 1) * $M ))
M=$(( $(usex jbootstrap 2 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}"
if use system-bootstrap; then
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
fi
}
src_prepare() {
default
# new warnings in new gcc https://bugs.gentoo.org/685426
sed -i '/^WARNINGS_ARE_ERRORS/ s/-Werror/-Wno-error/' \
hotspot/make/linux/makefiles/gcc.make || die
chmod +x configure || die
# Force gcc because build failed with modern clang, #918655
if ! tc-is-gcc; then
ewarn "openjdk/8 can be built with gcc only."
ewarn "Ignoring CC=$(tc-getCC) and forcing ${CHOST}-gcc"
export CC=${CHOST}-gcc
export CXX=${CHOST}-g++
tc-is-gcc || die "tc-is-gcc failed in spite of CC=${CC}"
fi
}
src_configure() {
local myconf=()
if ! use system-bootstrap; then
local xpakvar="${ARCH^^}_XPAK"
export JDK_HOME="${WORKDIR}/openjdk-bootstrap-${!xpakvar}"
fi
# general build info found here:
# https://hg.openjdk.java.net/jdk8/jdk8/raw-file/tip/README-builds.html
# -Wregister use (bug #918655)
append-cxxflags -std=gnu++14
# Work around stack alignment issue, bug #647954.
use x86 && append-flags -mincoming-stack-boundary=2
# 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
# in newer JDKs. See bug #833097 and bug #833098.
filter-lto
filter-flags -fdevirtualize-at-ltrans
# bug #954888
append-cflags -std=gnu17
tc-export_build_env CC CXX PKG_CONFIG STRIP
myconf+=(
--disable-ccache
--disable-precompiled-headers
--enable-unlimited-crypto
--with-boot-jdk="${JDK_HOME}"
--with-extra-cflags="${CFLAGS}"
--with-extra-cxxflags="${CXXFLAGS}"
--with-extra-ldflags="${LDFLAGS}"
--with-freetype=system
--with-freetype-lib="$( $(tc-getPKG_CONFIG) --variable=libdir freetype2 )"
--with-freetype-include="$( $(tc-getPKG_CONFIG) --variable=includedir freetype2)/freetype2"
--with-giflib="${XPAK_BOOTSTRAP:-system}"
--with-jtreg=no
--with-jobs=1
--with-num-cores=1
--with-update-version="$(ver_cut 2)"
--with-build-number="b$(ver_cut 4)"
--with-milestone="fcs" # magic variable that means "release version"
--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-zlib="${XPAK_BOOTSTRAP:-system}"
--with-native-debug-symbols=$(usex debug internal none)
$(usex headless-awt --disable-headful '')
$(tc-is-clang && echo "--with-toolchain-type=clang")
)
(
unset _JAVA_OPTIONS JAVA JAVA_TOOL_OPTIONS JAVAC MAKE XARGS
CFLAGS= CXXFLAGS= LDFLAGS= \
CONFIG_SITE=/dev/null \
CONFIG_SHELL="${BROOT}/bin/bash"
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 images)
)
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/j2sdk-image || die
if ! use alsa; then
rm -v jre/lib/$(get_system_arch)/libjsoundalsa.* || die
fi
# build system does not remove that
if use headless-awt ; then
rm -fvr jre/lib/$(get_system_arch)/lib*{[jx]awt,splashscreen}* \
{,jre/}bin/policytool bin/appletviewer || die
fi
if ! use examples ; then
rm -vr demo/ || die
fi
if ! use source ; then
rm -v src.zip || die
fi
dodir "${dest}"
cp -pPR * "${ddest}" || die
dosym -r /etc/ssl/certs/java/cacerts "${dest}"/jre/lib/security/cacerts
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
docinto html
dodoc -r "${S}"/build/*-release/docs/*
fi
}
pkg_postinst() {
java-vm-2_pkg_postinst
einfo "JavaWebStart functionality provided by icedtea-web package"
}