* [PR PATCH] jdk21
@ 2023-12-23 0:38 classabbyamp
2023-12-23 0:41 ` [PR PATCH] [Updated] jdk21 classabbyamp
` (2 more replies)
0 siblings, 3 replies; 4+ messages in thread
From: classabbyamp @ 2023-12-23 0:38 UTC (permalink / raw)
To: ml
[-- Attachment #1: Type: text/plain, Size: 419 bytes --]
There is a new pull request by classabbyamp against master on the void-packages repository
https://github.com/classabbyamp/void-packages jdk21
https://github.com/void-linux/void-packages/pull/47882
jdk21
#### Testing the changes
- I tested the changes in this PR: **YES**
test please: https://files.placeviolette.net/jdk21/
A patch file from https://github.com/void-linux/void-packages/pull/47882.patch is attached
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-jdk21-47882.patch --]
[-- Type: text/x-diff, Size: 118502 bytes --]
From 1b6d702ca2c9c6b434eb3d4688f0d66811567d39 Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 21 Dec 2023 17:36:47 -0500
Subject: [PATCH 01/12] xbps-triggers: update to 0.127.
get rid of the openjdk profile hook. it should not have been done like this.
---
Manual.md | 8 -----
srcpkgs/xbps-triggers/files/openjdk-profile | 39 ---------------------
srcpkgs/xbps-triggers/template | 2 +-
3 files changed, 1 insertion(+), 48 deletions(-)
delete mode 100755 srcpkgs/xbps-triggers/files/openjdk-profile
diff --git a/Manual.md b/Manual.md
index 667ab634f9713..e6a98551eee30 100644
--- a/Manual.md
+++ b/Manual.md
@@ -62,7 +62,6 @@ packages for XBPS, the `Void Linux` native packaging system.
* [kernel-hooks](#triggers_kernel_hooks)
* [mimedb](#triggers_mimedb)
* [mkdirs](#triggers_mkdirs)
- * [openjdk-profile](#triggers_openjdk_profile)
* [pango-modules](#triggers_pango_module)
* [pycompile](#triggers_pycompile)
* [register-shell](#triggers_register_shell)
@@ -2016,13 +2015,6 @@ During removal it will delete the directory using `rmdir`.
To include this trigger use the `make_dirs` variable, as the trigger won't do anything
unless it is defined.
-<a id="triggers_openjdk_profile"></a>
-#### openjdk-profile
-
-The openjdk-profile trigger is responsible for creating an entry in /etc/profile.d that
-sets the `JAVA_HOME` environment variable to the currently-selected alternative for
-`/usr/bin/java` on installation. This trigger must be manually requested.
-
<a id="triggers_pango_module"></a>
#### pango-modules
diff --git a/srcpkgs/xbps-triggers/files/openjdk-profile b/srcpkgs/xbps-triggers/files/openjdk-profile
deleted file mode 100755
index 007d9cd9eedf4..0000000000000
--- a/srcpkgs/xbps-triggers/files/openjdk-profile
+++ /dev/null
@@ -1,39 +0,0 @@
-#!/bin/sh
-#
-# Adds an entry to /etc/profile.d for setting $JAVA_HOME.
-#
-# Arguments: $ACTION = [run/targets]
-# $TARGET = [post-install/pre-remove]
-# $PKGNAME
-# $VERSION
-# $UPDATE = [yes/no]
-#
-ACTION="$1"
-TARGET="$2"
-PKGNAME="$3"
-VERSION="$4"
-UPDATE="$5"
-
-jdkprofile=etc/profile.d/openjdk.sh
-
-case "$ACTION" in
-targets)
- echo "post-install"
- ;;
-run)
- [ -f "$jdkprofile" ] && exit 0
-
- cat > "$jdkprofile" <<'EOF'
-if _java_bin=$(readlink -e /usr/bin/java); then
- _java_bin="${_java_bin%/bin/java}"
- [ -d "${_java_bin}" ] && export JAVA_HOME="${JAVA_HOME:=${_java_bin}}"
-fi
-unset _java_bin
-EOF
- ;;
-*)
- exit 1
- ;;
-esac
-
-exit 0
diff --git a/srcpkgs/xbps-triggers/template b/srcpkgs/xbps-triggers/template
index 76c3a6b27fad4..66936411a4258 100644
--- a/srcpkgs/xbps-triggers/template
+++ b/srcpkgs/xbps-triggers/template
@@ -1,6 +1,6 @@
# Template file for 'xbps-triggers'
pkgname=xbps-triggers
-version=0.126
+version=0.127
revision=1
bootstrap=yes
short_desc="XBPS triggers for Void Linux"
From dab30131acacf6337adb288395952a8c131dfa4a Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 21 Dec 2023 17:32:52 -0500
Subject: [PATCH 02/12] New package: openjdk-common-1
Replaces the xbps trigger that added the profile script for openjdk,
which was really a mistake.
Instead of using alternative groups for specific JRE/JDK binaries, use
two symlinks: /usr/lib/jvm/default-jdk and /usr/lib/jvm/default-jre,
which point to /usr/lib/jvm/${version}. Prefer default-jdk to default-jre,
and just add them to PATH and MANPATH instead of putting things in /usr/bin.
---
srcpkgs/openjdk-common/INSTALL | 9 +++++++++
srcpkgs/openjdk-common/INSTALL.msg | 2 ++
srcpkgs/openjdk-common/files/profile.sh | 12 ++++++++++++
srcpkgs/openjdk-common/template | 12 ++++++++++++
4 files changed, 35 insertions(+)
create mode 100644 srcpkgs/openjdk-common/INSTALL
create mode 100644 srcpkgs/openjdk-common/INSTALL.msg
create mode 100644 srcpkgs/openjdk-common/files/profile.sh
create mode 100644 srcpkgs/openjdk-common/template
diff --git a/srcpkgs/openjdk-common/INSTALL b/srcpkgs/openjdk-common/INSTALL
new file mode 100644
index 0000000000000..e0e155cc208ab
--- /dev/null
+++ b/srcpkgs/openjdk-common/INSTALL
@@ -0,0 +1,9 @@
+#!/bin/sh
+case "$ACTION" in
+pre)
+ # remove the openjdk.sh from xbps-triggers
+ if [ -e "./etc/profile.d/openjdk.sh" ]; then
+ rm "./etc/profile.d/openjdk.sh"
+ fi
+ ;;
+esac
diff --git a/srcpkgs/openjdk-common/INSTALL.msg b/srcpkgs/openjdk-common/INSTALL.msg
new file mode 100644
index 0000000000000..7e75b5abe457b
--- /dev/null
+++ b/srcpkgs/openjdk-common/INSTALL.msg
@@ -0,0 +1,2 @@
+The way the default OpenJDK version is selected has changed.
+You may need to re-login for this change to take effect.
diff --git a/srcpkgs/openjdk-common/files/profile.sh b/srcpkgs/openjdk-common/files/profile.sh
new file mode 100644
index 0000000000000..e9c9a6042eea7
--- /dev/null
+++ b/srcpkgs/openjdk-common/files/profile.sh
@@ -0,0 +1,12 @@
+# only modify the environment if an openjdk*-jre package is installed
+if [ -e "/usr/lib/jvm/default-jre" ]; then
+ # if an openjdk* package is installed, prefer it to the selected jre
+ if [ -e "/usr/lib/jvm/default-jdk" ]; then
+ export JAVA_HOME="/usr/lib/jvm/default-jdk"
+ else
+ export JAVA_HOME="/usr/lib/jvm/default-jre"
+ fi
+ # append the select jdk and jre bin and man dirs to the relevant PATHs
+ export PATH="$PATH:/usr/lib/jvm/default-jdk/bin:/usr/lib/jvm/default-jre/bin"
+ export MANPATH="$MANPATH:/usr/lib/jvm/default-jdk/man:/usr/lib/jvm/default-jre/man"
+fi
diff --git a/srcpkgs/openjdk-common/template b/srcpkgs/openjdk-common/template
new file mode 100644
index 0000000000000..e0d3d53d55004
--- /dev/null
+++ b/srcpkgs/openjdk-common/template
@@ -0,0 +1,12 @@
+# Template file for 'openjdk-common'
+pkgname=openjdk-common
+version=1
+revision=1
+short_desc="Common files for OpenJDK packages"
+maintainer="classabbyamp <void@placeviolette.net>"
+license="Public Domain"
+homepage="https://www.voidlinux.org"
+
+do_install() {
+ vinstall "${FILESDIR}"/profile.sh 644 /etc/profile.d jdk.sh
+}
From b226850ac3c3e3134bce965b9dd625de3b1d75a8 Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 21 Dec 2023 17:37:34 -0500
Subject: [PATCH 03/12] openjdk8: update to 8u332b05.
- various template cleanups
- rename /usr/lib/jvm/java-1.8-openjdk to /usr/lib/jvm/openjdk8
for consistency
- fix manpages
- fix alternatives
---
srcpkgs/openjdk8/template | 167 ++++++++++++--------------------------
1 file changed, 50 insertions(+), 117 deletions(-)
diff --git a/srcpkgs/openjdk8/template b/srcpkgs/openjdk8/template
index 8266daff8d8a2..966f5c3703f01 100644
--- a/srcpkgs/openjdk8/template
+++ b/srcpkgs/openjdk8/template
@@ -1,19 +1,13 @@
# Template file for 'openjdk8'
-# TODO: better places for bin and man?
-# TODO: make -headless versions
-# TODO: config files?
pkgname=openjdk8
-version=8u322b04
-revision=5
+version=8u332b05
+revision=1
_jdk_update="${version#*u}"
_jdk_update="${_jdk_update%b*}"
_jdk_build="${version#*b}"
-_jdk_home="usr/lib/jvm/java-1.8-openjdk"
-# we're using aarch64 port repo to get aarch64 JIT; the repo is
-# otherwise the same as the normal one, just with aarch64 port added
-_repo_ver="aarch64-shenandoah-jdk${version/b/-b}"
+_jdk_home="usr/lib/jvm/openjdk8"
+_commit="bdc2203a44df159d94ecd0e04a230e65cb84297e"
archs="x86_64* i686* aarch64* arm* ppc64*"
-create_wrksrc=yes
build_style=gnu-configure
configure_args="
--prefix=${XBPS_DESTDIR}/${XBPS_CROSS_TRIPLET}/${pkgname}-${version}/usr/lib
@@ -28,13 +22,14 @@ configure_args="
--with-freetype-lib=${XBPS_CROSS_BASE}/usr/lib
--with-freetype-include=${XBPS_CROSS_BASE}/usr/include/freetype2
--with-jtreg=no
- --with-jobs=${XBPS_MAKEJOBS}
- --with-vendor-name="Void"
- --with-vendor-url="https://voidlinux.org/"
- --with-vendor-bug-url="https://github.com/void-linux/void-packages/issues"
- --with-vendor-vm-bug-url="https://github.com/void-linux/void-packages/issues"
+ --with-jobs=${XBPS_ORIG_MAKEJOBS}
+ --with-vendor-name=Void
+ --with-vendor-url=https://voidlinux.org/
+ --with-vendor-bug-url=https://github.com/void-linux/void-packages/issues
+ --with-vendor-vm-bug-url=https://github.com/void-linux/void-packages/issues
--disable-option-checking"
-make_build_args="images $(vopt_if docs docs) COMPILER_WARNINGS_FATAL=false"
+make_build_args="images $(vopt_if docs docs) COMPILER_WARNINGS_FATAL=false GIT=true"
+make_install_args="GIT=true"
hostmakedepends="pkg-config automake autoconf cpio tar unzip zip ca-certificates
zlib-devel make-ca which"
makedepends="libXrender-devel libXtst-devel libXt-devel libXrandr-devel
@@ -45,28 +40,19 @@ short_desc="OpenJDK Java Development Kit (version 8)"
maintainer="Toyam Cox <Vaelatern@voidlinux.org>"
license="GPL-2.0-only WITH Classpath-exception-2.0"
homepage="http://openjdk.java.net/"
-distfiles="
- http://hg.openjdk.java.net/aarch64-port/jdk8u-shenandoah/archive/${_repo_ver}.tar.gz>jdk8u-${_repo_ver}.tar.gz
- http://hg.openjdk.java.net/aarch64-port/jdk8u-shenandoah/corba/archive/${_repo_ver}.tar.gz>corba-${_repo_ver}.tar.gz
- http://hg.openjdk.java.net/aarch64-port/jdk8u-shenandoah/hotspot/archive/${_repo_ver}.tar.gz>hotspot-${_repo_ver}.tar.gz
- http://hg.openjdk.java.net/aarch64-port/jdk8u-shenandoah/jdk/archive/${_repo_ver}.tar.gz>jdk-${_repo_ver}.tar.gz
- http://hg.openjdk.java.net/aarch64-port/jdk8u-shenandoah/jaxws/archive/${_repo_ver}.tar.gz>jaxws-${_repo_ver}.tar.gz
- http://hg.openjdk.java.net/aarch64-port/jdk8u-shenandoah/jaxp/archive/${_repo_ver}.tar.gz>jaxp-${_repo_ver}.tar.gz
- http://hg.openjdk.java.net/aarch64-port/jdk8u-shenandoah/langtools/archive/${_repo_ver}.tar.gz>langtools-${_repo_ver}.tar.gz
- http://hg.openjdk.java.net/aarch64-port/jdk8u-shenandoah/nashorn/archive/${_repo_ver}.tar.gz>nashorn-${_repo_ver}.tar.gz"
+# we're using aarch64 port repo to get aarch64 JIT; the repo is
+# otherwise the same as the normal one, just with aarch64 port added
+distfiles="https://github.com/openjdk/shenandoah-jdk8u/archive/${_commit}.tar.gz"
+checksum=4c39be8454a1b8b10a9ff845a4e7e639808799d3d2eddb1484df80835d5e88e4
-checksum="8ef23f1fb449c50c7c71f58f9ec9e5ac6dd152f4c830408f5c02b77652d634cc
- 2680d968821fdd4363c68b1a835a9bbd76d6a94fdc0ab6e1b1aaadc5ccd1ed8a
- 5561c84e1d5111fff0142ba4d397b29d6dc9e3702955567bd5b4986e8cf4f2ef
- 7eb13948061d8ec98323fdac424955753f339c145af04a3f86100437dff60257
- fe21a137b6fb1881db1c5c01f372126f6b165c6d3b98421e6862255f456cbfd6
- 22a1b86820ef585c45bce36d822872354bc0dd183c5516f89da28e0666d3901b
- 34c306eadb436cd9f22f306f4f1d4ea4f167923e8affa2d2797d6c3de6da46ea
- 17730e5cc2a84c4680f692008f3805ce4e4edeb2008e2e6a4fb86b9dde06fe23"
+disable_parallel_build=yes
build_options="docs"
desc_option_docs="Build documentation"
+alternatives="jdk:/usr/lib/jvm/default-jdk:/${_jdk_home}"
+provides="java-environment-${version}_1"
+
# no hotspot JIT for arm32 and ppc32
case "$XBPS_TARGET_MACHINE" in
ppc64*) ;;
@@ -81,8 +67,6 @@ else
build_options_default+=" docs"
fi
-provides="java-environment-${version}_1"
-
if [ ! "$CROSS_BUILD" ]; then
hostmakedepends+=" openjdk7-bootstrap"
configure_args+=" --with-boot-jdk=/usr/lib/jvm/java-1.7-openjdk"
@@ -94,57 +78,11 @@ fi
# enabling ccache segfaults gcc
export CCACHE_DISABLE=1
-alternatives="
- jdk:/usr/bin/appletviewer:/${_jdk_home}/bin/appletviewer
- jdk:/usr/bin/extcheck:/${_jdk_home}/bin/extcheck
- jdk:/usr/bin/idlj:/${_jdk_home}/bin/idlj
- jdk:/usr/bin/jar:/${_jdk_home}/bin/jar
- jdk:/usr/bin/jarsigner:/${_jdk_home}/bin/jarsigner
- jdk:/usr/bin/java:/${_jdk_home}/bin/java
- jdk:/usr/bin/java-rmi.cgi:/${_jdk_home}/bin/java-rmi.cgi
- jdk:/usr/bin/javac:/${_jdk_home}/bin/javac
- jdk:/usr/bin/javadoc:/${_jdk_home}/bin/javadoc
- jdk:/usr/bin/javah:/${_jdk_home}/bin/javah
- jdk:/usr/bin/javap:/${_jdk_home}/bin/javap
- jdk:/usr/bin/jcmd:/${_jdk_home}/bin/jcmd
- jdk:/usr/bin/jconsole:/${_jdk_home}/bin/jconsole
- jdk:/usr/bin/jdb:/${_jdk_home}/bin/jdb
- jdk:/usr/bin/jdeps:/${_jdk_home}/bin/jdeps
- jdk:/usr/bin/jhat:/${_jdk_home}/bin/jhat
- jdk:/usr/bin/jinfo:/${_jdk_home}/bin/jinfo
- jdk:/usr/bin/jjs:/${_jdk_home}/bin/jjs
- jdk:/usr/bin/jmap:/${_jdk_home}/bin/jmap
- jdk:/usr/bin/jps:/${_jdk_home}/bin/jps
- jdk:/usr/bin/jrunscript:/${_jdk_home}/bin/jrunscript
- jdk:/usr/bin/jsadebugd:/${_jdk_home}/bin/jsadebugd
- jdk:/usr/bin/jstack:/${_jdk_home}/bin/jstack
- jdk:/usr/bin/jstat:/${_jdk_home}/bin/jstat
- jdk:/usr/bin/jstatd:/${_jdk_home}/bin/jstatd
- jdk:/usr/bin/keytool:/${_jdk_home}/bin/keytool
- jdk:/usr/bin/native2ascii:/${_jdk_home}/bin/native2ascii
- jdk:/usr/bin/orbd:/${_jdk_home}/bin/orbd
- jdk:/usr/bin/pack200:/${_jdk_home}/bin/pack200
- jdk:/usr/bin/policytool:/${_jdk_home}/bin/policytool
- jdk:/usr/bin/rmic:/${_jdk_home}/bin/rmic
- jdk:/usr/bin/rmid:/${_jdk_home}/bin/rmid
- jdk:/usr/bin/rmiregistry:/${_jdk_home}/bin/rmiregistry
- jdk:/usr/bin/schemagen:/${_jdk_home}/bin/schemagen
- jdk:/usr/bin/serialver:/${_jdk_home}/bin/serialver
- jdk:/usr/bin/servertool:/${_jdk_home}/bin/servertool
- jdk:/usr/bin/tnameserv:/${_jdk_home}/bin/tnameserv
- jdk:/usr/bin/unpack200:/${_jdk_home}/bin/unpack200
- jdk:/usr/bin/wsgen:/${_jdk_home}/bin/wsgen
- jdk:/usr/bin/wsimport:/${_jdk_home}/bin/wsimport
- jdk:/usr/bin/xjc:/${_jdk_home}/bin/xjc
-"
-
post_extract() {
- mv jdk8u*/* .
chmod +x configure
- for subrepo in corba hotspot jdk jaxws jaxp langtools nashorn; do
- mv ${subrepo}-${_repo_ver} ${subrepo}
- done
+}
+post_patch() {
# gcc complains about the signed shift left
vsed -i jdk/src/share/native/com/sun/java/util/jar/pack/constants.h \
-e's;(-1)<<13;~0u<<13;g'
@@ -152,20 +90,22 @@ post_extract() {
# wrong "return false;" instead of "return null;"
vsed -i jdk/src/share/native/com/sun/java/util/jar/pack/jni.cpp \
-e"295s;false;null;"
-}
-post_patch() {
- [ "$XBPS_TARGET_LIBC" != "musl" ] && return 0
+ # pretend we're a git checkout
+ echo "${_commit}" > .gittip
+ mkdir .git
- for f in ${FILESDIR}/musl_*.patch; do
- echo "Applying $f"
- patch -sNp1 -i "$f"
- done
+ if [ "$XBPS_TARGET_LIBC" = "musl" ]; then
+ for f in "${FILESDIR}"/musl_*.patch; do
+ echo "Applying $f"
+ patch -sNp1 -i "$f"
+ done
- # add cross prefix for thread_db.h check, fix cross from glibc to musl
- sed -i "s,/usr/include/thread_db.h,${XBPS_CROSS_BASE}/usr/include/thread_db.h," \
- hotspot/make/linux/makefiles/defs.make hotspot/make/linux/makefiles/sa.make \
- hotspot/make/linux/makefiles/saproc.make
+ # add cross prefix for thread_db.h check, fix cross from glibc to musl
+ sed -i "s,/usr/include/thread_db.h,${XBPS_CROSS_BASE}/usr/include/thread_db.h," \
+ hotspot/make/linux/makefiles/defs.make hotspot/make/linux/makefiles/sa.make \
+ hotspot/make/linux/makefiles/saproc.make
+ fi
}
do_configure() {
@@ -200,11 +140,6 @@ pre_build() {
unset CFLAGS CXXFLAGS LDFLAGS
}
-do_build() {
- # do not set disable_parallel_build in order to be able to read makejobs
- make -j1 ${make_build_args} ${make_build_target}
-}
-
post_install() {
# we manage this ourselves
rm -rf ${DESTDIR}/usr/lib/bin
@@ -213,6 +148,11 @@ post_install() {
mv ${DESTDIR}/usr/lib/jvm/openjdk-1.8.0_${_jdk_update} \
${DESTDIR}/${_jdk_home}
+ # don't duplicate binaries already in jre/bin
+ for bin in "${DESTDIR}/${_jdk_home}/jre/bin"/*; do
+ ln -srf "${bin}" "${bin/jre/}"
+ done
+
vmkdir ${_jdk_home}/lib/security
make-ca -g -f --destdir "${PWD}/ca" -k "${DESTDIR}/${_jdk_home}/bin/keytool"
mv ./ca/etc/pki/tls/java/cacerts ${DESTDIR}/${_jdk_home}/lib/security/
@@ -228,23 +168,15 @@ openjdk8-jre_package() {
shlib_provides="libawt.so libawt_xawt.so libjava.so libjli.so libjvm.so libjawt.so"
short_desc+=" - runtime components"
provides="java-runtime-${version}_1"
- depends="xbps-triggers>=0.122_1"
- triggers="openjdk-profile"
- alternatives="
- java:/usr/bin/java:/${_jdk_home}/jre/bin/java
- java:/usr/bin/jjs:/${_jdk_home}/jre/bin/jjs
- java:/usr/bin/keytool:/${_jdk_home}/jre/bin/keytool
- java:/usr/bin/orbd:/${_jdk_home}/jre/bin/orbd
- java:/usr/bin/pack200:/${_jdk_home}/jre/bin/pack200
- java:/usr/bin/policytool:/${_jdk_home}/jre/bin/policytool
- java:/usr/bin/rmid:/${_jdk_home}/jre/bin/rmid
- java:/usr/bin/rmiregistry:/${_jdk_home}/jre/bin/rmiregistry
- java:/usr/bin/servertool:/${_jdk_home}/jre/bin/servertool
- java:/usr/bin/tnameserv:/${_jdk_home}/jre/bin/tnameserv
- java:/usr/bin/unpack200:/${_jdk_home}/jre/bin/unpack200
- "
+ depends="openjdk-common"
+ alternatives="java:/usr/lib/jvm/default-jre:/${_jdk_home}/jre"
pkg_install() {
- vmove ${_jdk_home}/jre
+ vmove "${_jdk_home}"/jre
+ for bin in "${PKGDESTDIR}/${_jdk_home}/jre/bin"/*; do
+ bin="$(basename "$bin")"
+ vmove "${_jdk_home}/man/man1/${bin}.1"
+ vmove "${_jdk_home}/man/ja_JP.UTF-8/man1/${bin}.1"
+ done
}
}
@@ -263,12 +195,13 @@ openjdk8-doc_package() {
noverifyrdeps=yes
noshlibprovides=yes
short_desc+=" - documentation"
+ if [ -z "$build_option_docs" ]; then
+ build_style=meta
+ fi
pkg_install() {
- cd ${wrksrc}
if [ "$build_option_docs" ]; then
vmkdir usr/share/doc/openjdk8
cp -a build/linux-*/docs/* ${PKGDESTDIR}/usr/share/doc/openjdk8
fi
- vmove ${_jdk_home}/man/man1
}
}
From fadf517717d77037fed7a1d8245098a8b219ec2c Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 21 Dec 2023 17:41:58 -0500
Subject: [PATCH 04/12] openjdk9-bootstrap: fix jdk8 path
---
srcpkgs/openjdk9-bootstrap/template | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/srcpkgs/openjdk9-bootstrap/template b/srcpkgs/openjdk9-bootstrap/template
index c50cc4adc7e18..2027d02781155 100644
--- a/srcpkgs/openjdk9-bootstrap/template
+++ b/srcpkgs/openjdk9-bootstrap/template
@@ -21,7 +21,7 @@ configure_args="
--with-debug-level=release
--with-version-pre=
--with-version-build=${version#*p}
- --with-boot-jdk=/usr/lib/jvm/java-1.8-openjdk"
+ --with-boot-jdk=/usr/lib/jvm/openjdk8"
make_build_args="images"
hostmakedepends="pkg-config automake autoconf cpio tar unzip zip ca-certificates
zlib-devel which openjdk8 make"
From 7caa5faa2ad698c19955c8a1206e574729ed236f Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 21 Dec 2023 17:40:49 -0500
Subject: [PATCH 05/12] openjdk11-bin: remove package
this package has been useless since 106a275ecd81e132cb80cc21c0ec96a336d16614
make it a transitional package on openjdk11
---
srcpkgs/openjdk11-bin | 1 +
srcpkgs/openjdk11-bin/template | 70 ----------------------------------
srcpkgs/openjdk11/template | 9 ++++-
3 files changed, 9 insertions(+), 71 deletions(-)
create mode 120000 srcpkgs/openjdk11-bin
delete mode 100644 srcpkgs/openjdk11-bin/template
diff --git a/srcpkgs/openjdk11-bin b/srcpkgs/openjdk11-bin
new file mode 120000
index 0000000000000..8213494c49ed5
--- /dev/null
+++ b/srcpkgs/openjdk11-bin
@@ -0,0 +1 @@
+openjdk11
\ No newline at end of file
diff --git a/srcpkgs/openjdk11-bin/template b/srcpkgs/openjdk11-bin/template
deleted file mode 100644
index 6dfbbb49fd45a..0000000000000
--- a/srcpkgs/openjdk11-bin/template
+++ /dev/null
@@ -1,70 +0,0 @@
-# Template file for 'openjdk11-bin'
-pkgname=openjdk11-bin
-version=11+28
-revision=2
-archs="x86_64"
-short_desc="Official Reference Implementation for Java SE 11"
-maintainer="Kyle Nusbaum <knusbaum+void@sdf.org>"
-license="GPL-2.0-only WITH Classpath-exception-2.0"
-homepage="https://jdk.java.net/java-se-ri/11"
-distfiles="https://download.java.net/openjdk/jdk11/ri/openjdk-${version}_linux-x64_bin.tar.gz"
-checksum=3784cfc4670f0d4c5482604c7c513beb1a92b005f569df9bf100e8bef6610f2e
-nopie=true
-
-alternatives="
- java:/usr/bin/java:/usr/lib/jvm/openjdk11-bin/bin/java
- java:/usr/bin/javaws:/usr/lib/jvm/openjdk11-bin/bin/javaws
- java:/usr/bin/jcontrol:/usr/lib/jvm/openjdk11-bin/bin/jcontrol
- java:/usr/bin/jjs:/usr/lib/jvm/openjdk11-bin/bin/jjs
- java:/usr/bin/keytool:/usr/lib/jvm/openjdk11-bin/bin/keytool
- java:/usr/bin/orbd:/usr/lib/jvm/openjdk11-bin/bin/orbd
- java:/usr/bin/pack200:/usr/lib/jvm/openjdk11-bin/bin/pack200
- java:/usr/bin/policytool:/usr/lib/jvm/openjdk11-bin/bin/policytool
- java:/usr/bin/rmid:/usr/lib/jvm/openjdk11-bin/bin/rmid
- java:/usr/bin/rmiregistry:/usr/lib/jvm/openjdk11-bin/bin/rmiregistry
- java:/usr/bin/servertool:/usr/lib/jvm/openjdk11-bin/bin/servertool
- java:/usr/bin/tnameserv:/usr/lib/jvm/openjdk11-bin/bin/tnameserv
- java:/usr/bin/unpack200:/usr/lib/jvm/openjdk11-bin/bin/unpack200
-
- jdk:/usr/bin/ControlPanel:/usr/lib/jvm/openjdk11-bin/bin/ControlPanel
- jdk:/usr/bin/appletviewer:/usr/lib/jvm/openjdk11-bin/bin/appletviewer
- jdk:/usr/bin/extcheck:/usr/lib/jvm/openjdk11-bin/bin/extcheck
- jdk:/usr/bin/idlj:/usr/lib/jvm/openjdk11-bin/bin/idlj
- jdk:/usr/bin/jar:/usr/lib/jvm/openjdk11-bin/bin/jar
- jdk:/usr/bin/jarsigner:/usr/lib/jvm/openjdk11-bin/bin/jarsigner
- jdk:/usr/bin/java-rmi.cgi:/usr/lib/jvm/openjdk11-bin/bin/java-rmi.cgi
- jdk:/usr/bin/javac:/usr/lib/jvm/openjdk11-bin/bin/javac
- jdk:/usr/bin/javadoc:/usr/lib/jvm/openjdk11-bin/bin/javadoc
- jdk:/usr/bin/javafxpackager:/usr/lib/jvm/openjdk11-bin/bin/javafxpackager
- jdk:/usr/bin/javah:/usr/lib/jvm/openjdk11-bin/bin/javah
- jdk:/usr/bin/javap:/usr/lib/jvm/openjdk11-bin/bin/javap
- jdk:/usr/bin/javapackager:/usr/lib/jvm/openjdk11-bin/bin/javapackager
- jdk:/usr/bin/jcmd:/usr/lib/jvm/openjdk11-bin/bin/jcmd
- jdk:/usr/bin/jconsole:/usr/lib/jvm/openjdk11-bin/bin/jconsole
- jdk:/usr/bin/jdb:/usr/lib/jvm/openjdk11-bin/bin/jdb
- jdk:/usr/bin/jdeps:/usr/lib/jvm/openjdk11-bin/bin/jdeps
- jdk:/usr/bin/jhat:/usr/lib/jvm/openjdk11-bin/bin/jhat
- jdk:/usr/bin/jinfo:/usr/lib/jvm/openjdk11-bin/bin/jinfo
- jdk:/usr/bin/jmap:/usr/lib/jvm/openjdk11-bin/bin/jmap
- jdk:/usr/bin/jmc:/usr/lib/jvm/openjdk11-bin/bin/jmc
- jdk:/usr/bin/jmc.ini:/usr/lib/jvm/openjdk11-bin/bin/jmc.ini
- jdk:/usr/bin/jps:/usr/lib/jvm/openjdk11-bin/bin/jps
- jdk:/usr/bin/jrunscript:/usr/lib/jvm/openjdk11-bin/bin/jrunscript
- jdk:/usr/bin/jsadebugd:/usr/lib/jvm/openjdk11-bin/bin/jsadebugd
- jdk:/usr/bin/jstack:/usr/lib/jvm/openjdk11-bin/bin/jstack
- jdk:/usr/bin/jstat:/usr/lib/jvm/openjdk11-bin/bin/jstat
- jdk:/usr/bin/jstatd:/usr/lib/jvm/openjdk11-bin/bin/jstatd
- jdk:/usr/bin/jvisualvm:/usr/lib/jvm/openjdk11-bin/bin/jvisualvm
- jdk:/usr/bin/native2ascii:/usr/lib/jvm/openjdk11-bin/bin/native2ascii
- jdk:/usr/bin/rmic:/usr/lib/jvm/openjdk11-bin/bin/rmic
- jdk:/usr/bin/schemagen:/usr/lib/jvm/openjdk11-bin/bin/schemagen
- jdk:/usr/bin/serialver:/usr/lib/jvm/openjdk11-bin/bin/serialver
- jdk:/usr/bin/wsgen:/usr/lib/jvm/openjdk11-bin/bin/wsgen
- jdk:/usr/bin/wsimport:/usr/lib/jvm/openjdk11-bin/bin/wsimport
- jdk:/usr/bin/xjc:/usr/lib/jvm/openjdk11-bin/bin/xjc
-"
-
-do_install() {
- vmkdir /usr/lib/jvm/openjdk11-bin
- cp -R ./* ${DESTDIR}/usr/lib/jvm/openjdk11-bin
-}
diff --git a/srcpkgs/openjdk11/template b/srcpkgs/openjdk11/template
index b5dd94241a0c8..783e7c28d72b5 100644
--- a/srcpkgs/openjdk11/template
+++ b/srcpkgs/openjdk11/template
@@ -156,7 +156,7 @@ do_install() {
vlicense LICENSE
}
-subpackages="openjdk11-src openjdk11-jre openjdk11-doc openjdk11-jmods openjdk11-static-libs"
+subpackages="openjdk11-src openjdk11-jre openjdk11-doc openjdk11-jmods openjdk11-static-libs openjdk11-bin"
openjdk11-jre_package() {
shlib_provides="libawt.so libawt_xawt.so libjava.so libjli.so libjvm.so libjawt.so"
@@ -227,3 +227,10 @@ openjdk11-jmods_package() {
vmove $_jdk_home/jmods
}
}
+
+openjdk11-bin_package() {
+ reverts="11+28_1 11+28_2"
+ short_desc+=" (transitional dummy package)"
+ depends="${sourcepkg}>=${version}_${revision}"
+ build_style=meta
+}
From fda552537b92f55702e3ce55effed81453333bc9 Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 21 Dec 2023 17:42:46 -0500
Subject: [PATCH 06/12] openjdk11: update to 11.0.22+6.
- fix manpages
- fix alternatives
---
srcpkgs/openjdk11/template | 63 ++++++++------------------------------
1 file changed, 12 insertions(+), 51 deletions(-)
diff --git a/srcpkgs/openjdk11/template b/srcpkgs/openjdk11/template
index 783e7c28d72b5..64f43424204cc 100644
--- a/srcpkgs/openjdk11/template
+++ b/srcpkgs/openjdk11/template
@@ -1,6 +1,6 @@
# Template file for 'openjdk11'
pkgname=openjdk11
-version=11.0.20+8
+version=11.0.22+6
revision=1
_java_ver="${version%%.*}"
_jdk_home="usr/lib/jvm/openjdk${_java_ver}"
@@ -38,7 +38,8 @@ maintainer="Kyle Nusbaum <knusbaum+void@sdf.org>"
license="GPL-2.0-only WITH Classpath-exception-2.0"
homepage="http://openjdk.java.net/"
distfiles="https://github.com/openjdk/jdk${_java_ver}u/archive/jdk-${version}.tar.gz"
-checksum=b2a37ef209ae7eaf8f34182b7c9aa3252af20a214d02970f96ce62242c805479
+checksum=8bae7c5e608de84aa32010365514bb59cd0d8ba709f6730cc473e159c6bfb918
+alternatives="jdk:/usr/lib/jvm/default-jdk:/${_jdk_home}"
provides="java-environment-${version}_1"
# Build is still parallel, but don't use -jN.
@@ -73,41 +74,6 @@ else
configure_args+=" --with-boot-jdk=/${_jdk_home}"
fi
-alternatives="
- jdk:/usr/bin/jaotc:/${_jdk_home}/bin/jaotc
- jdk:/usr/bin/jar:/${_jdk_home}/bin/jar
- jdk:/usr/bin/jarsigner:/${_jdk_home}/bin/jarsigner
- jdk:/usr/bin/java:/${_jdk_home}/bin/java
- jdk:/usr/bin/javac:/${_jdk_home}/bin/javac
- jdk:/usr/bin/javadoc:/${_jdk_home}/bin/javadoc
- jdk:/usr/bin/javap:/${_jdk_home}/bin/javap
- jdk:/usr/bin/jcmd:/${_jdk_home}/bin/jcmd
- jdk:/usr/bin/jconsole:/${_jdk_home}/bin/jconsole
- jdk:/usr/bin/jdb:/${_jdk_home}/bin/jdb
- jdk:/usr/bin/jdeprscan:/${_jdk_home}/bin/jdeprscan
- jdk:/usr/bin/jdeps:/${_jdk_home}/bin/jdeps
- jdk:/usr/bin/jhsdb:/${_jdk_home}/bin/jhsdb
- jdk:/usr/bin/jimage:/${_jdk_home}/bin/jimage
- jdk:/usr/bin/jinfo:/${_jdk_home}/bin/jinfo
- jdk:/usr/bin/jjs:/${_jdk_home}/bin/jjs
- jdk:/usr/bin/jlink:/${_jdk_home}/bin/jlink
- jdk:/usr/bin/jmap:/${_jdk_home}/bin/jmap
- jdk:/usr/bin/jmod:/${_jdk_home}/bin/jmod
- jdk:/usr/bin/jps:/${_jdk_home}/bin/jps
- jdk:/usr/bin/jrunscript:/${_jdk_home}/bin/jrunscript
- jdk:/usr/bin/jshell:/${_jdk_home}/bin/jshell
- jdk:/usr/bin/jstack:/${_jdk_home}/bin/jstack
- jdk:/usr/bin/jstat:/${_jdk_home}/bin/jstat
- jdk:/usr/bin/jstatd:/${_jdk_home}/bin/jstatd
- jdk:/usr/bin/keytool:/${_jdk_home}/bin/keytool
- jdk:/usr/bin/pack200:/${_jdk_home}/bin/pack200
- jdk:/usr/bin/rmic:/${_jdk_home}/bin/rmic
- jdk:/usr/bin/rmid:/${_jdk_home}/bin/rmid
- jdk:/usr/bin/rmiregistry:/${_jdk_home}/bin/rmiregistry
- jdk:/usr/bin/serialver:/${_jdk_home}/bin/serialver
- jdk:/usr/bin/unpack200:/${_jdk_home}/bin/unpack200
-"
-
post_extract() {
chmod +x configure
if [ "$XBPS_TARGET_LIBC" = "musl" ]; then
@@ -162,20 +128,13 @@ openjdk11-jre_package() {
shlib_provides="libawt.so libawt_xawt.so libjava.so libjli.so libjvm.so libjawt.so"
short_desc+=" - runtime components"
provides="java-runtime-${version}_1"
- depends="fontconfig xbps-triggers>=0.122_1"
- triggers="openjdk-profile"
- alternatives="
- java:/usr/bin/java:/${_jdk_home}/bin/java
- java:/usr/bin/jjs:/${_jdk_home}/bin/jjs
- java:/usr/bin/keytool:/${_jdk_home}/bin/keytool
- java:/usr/bin/pack200:/${_jdk_home}/bin/pack200
- java:/usr/bin/rmid:/${_jdk_home}/bin/rmid
- java:/usr/bin/rmiregistry:/${_jdk_home}/bin/rmiregistry
- java:/usr/bin/unpack200:/${_jdk_home}/bin/unpack200
- "
+ depends="fontconfig openjdk-common"
+ alternatives="java:/usr/lib/jvm/default-jre:/${_jdk_home}"
pkg_install() {
- for bf in java jjs keytool pack200 rmid rmiregistry unpack200; do
- vmove $_jdk_home/bin/$bf
+ for bin in java jjs keytool pack200 rmid rmiregistry unpack200; do
+ vmove "${_jdk_home}/bin/${bin}"
+ vmove "${_jdk_home}/man/man1/${bin}.1"
+ vmove "${_jdk_home}/man/ja_JP.UTF-8/man1/${bin}.1"
done
for f in lib legal conf release; do
@@ -192,13 +151,15 @@ openjdk11-doc_package() {
noverifyrdeps=yes
noshlibprovides=yes
short_desc+=" - documentation"
+ if [ -z "$build_option_docs" ]; then
+ build_style=meta
+ fi
pkg_install() {
cd ${wrksrc}
if [ "$build_option_docs" ]; then
vmkdir usr/share/doc/openjdk11
cp -a build/linux-*/images/docs/* $PKGDESTDIR/usr/share/doc/openjdk11
fi
- vmove $_jdk_home/man/man1
}
}
From dceac46f4d5686e7be45ddf2b9b3f047654b16a8 Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 21 Dec 2023 17:44:04 -0500
Subject: [PATCH 07/12] openjdk17: update to 17.0.10+6.
- fix manpages
- fix alternatives
---
srcpkgs/openjdk17/template | 55 ++++++++------------------------------
1 file changed, 11 insertions(+), 44 deletions(-)
diff --git a/srcpkgs/openjdk17/template b/srcpkgs/openjdk17/template
index bb72701f360e6..22fb16fbf9ec1 100644
--- a/srcpkgs/openjdk17/template
+++ b/srcpkgs/openjdk17/template
@@ -1,6 +1,6 @@
# Template file for 'openjdk17'
pkgname=openjdk17
-version=17.0.10+2
+version=17.0.10+6
revision=1
_gtest_ver=1.8.1
_java_ver="${version%%.*}"
@@ -45,8 +45,9 @@ license="GPL-2.0-only WITH Classpath-exception-2.0"
homepage="http://openjdk.java.net/"
distfiles="https://github.com/openjdk/jdk${_java_ver}u/archive/jdk-${version}.tar.gz
https://github.com/google/googletest/archive/refs/tags/release-${_gtest_ver}.tar.gz"
-checksum="dbe68a64c43c3e376abd9d03758a487ecfb9c7bf1fe71cf6c2ca113f909be1cb
+checksum="3d5ef3a18c4edfa6e2a16c74d9e771b09eed433006b1380df450aa88725c7238
9bf1fe5182a604b4135edc1a425ae356c9ad15e9b23f9f12a02e80184c3a249c"
+alternatives="jdk:/usr/lib/jvm/default-jdk:/${_jdk_home}"
provides="java-environment-${version}_1"
patch_args="-Np1 --directory=$build_wrksrc"
@@ -83,37 +84,6 @@ else
configure_args+=" --with-boot-jdk=/usr/lib/jvm/openjdk17"
fi
-alternatives="
- jdk:/usr/bin/jar:/${_jdk_home}/bin/jar
- jdk:/usr/bin/jarsigner:/${_jdk_home}/bin/jarsigner
- jdk:/usr/bin/java:/${_jdk_home}/bin/java
- jdk:/usr/bin/javac:/${_jdk_home}/bin/javac
- jdk:/usr/bin/javadoc:/${_jdk_home}/bin/javadoc
- jdk:/usr/bin/javap:/${_jdk_home}/bin/javap
- jdk:/usr/bin/jcmd:/${_jdk_home}/bin/jcmd
- jdk:/usr/bin/jconsole:/${_jdk_home}/bin/jconsole
- jdk:/usr/bin/jdb:/${_jdk_home}/bin/jdb
- jdk:/usr/bin/jdeprscan:/${_jdk_home}/bin/jdeprscan
- jdk:/usr/bin/jdeps:/${_jdk_home}/bin/jdeps
- jdk:/usr/bin/jfr:/${_jdk_home}/bin/jfr
- jdk:/usr/bin/jhsdb:/${_jdk_home}/bin/jhsdb
- jdk:/usr/bin/jimage:/${_jdk_home}/bin/jimage
- jdk:/usr/bin/jinfo:/${_jdk_home}/bin/jinfo
- jdk:/usr/bin/jlink:/${_jdk_home}/bin/jlink
- jdk:/usr/bin/jmap:/${_jdk_home}/bin/jmap
- jdk:/usr/bin/jmod:/${_jdk_home}/bin/jmod
- jdk:/usr/bin/jpackage:/${_jdk_home}/bin/jpackage
- jdk:/usr/bin/jps:/${_jdk_home}/bin/jps
- jdk:/usr/bin/jrunscript:/${_jdk_home}/bin/jrunscript
- jdk:/usr/bin/jshell:/${_jdk_home}/bin/jshell
- jdk:/usr/bin/jstack:/${_jdk_home}/bin/jstack
- jdk:/usr/bin/jstat:/${_jdk_home}/bin/jstat
- jdk:/usr/bin/jstatd:/${_jdk_home}/bin/jstatd
- jdk:/usr/bin/keytool:/${_jdk_home}/bin/keytool
- jdk:/usr/bin/rmiregistry:/${_jdk_home}/bin/rmiregistry
- jdk:/usr/bin/serialver:/${_jdk_home}/bin/serialver
-"
-
post_extract() {
chmod +x $build_wrksrc/configure
if [ "$XBPS_TARGET_LIBC" = "musl" ]; then
@@ -173,17 +143,12 @@ openjdk17-jre_package() {
shlib_provides="libawt.so libawt_xawt.so libjava.so libjli.so libjvm.so libjawt.so"
short_desc+=" - runtime components"
provides="java-runtime-${version}_1"
- depends="xbps-triggers>=0.122_1"
- triggers="openjdk-profile"
- alternatives="
- java:/usr/bin/java:/${_jdk_home}/bin/java
- java:/usr/bin/jfr:/${_jdk_home}/bin/jfr
- java:/usr/bin/keytool:/${_jdk_home}/bin/keytool
- java:/usr/bin/rmiregistry:/${_jdk_home}/bin/rmiregistry
- "
+ depends="openjdk-common"
+ alternatives="java:/usr/lib/jvm/default-jre:/${_jdk_home}"
pkg_install() {
- for bf in java jfr keytool rmiregistry; do
- vmove $_jdk_home/bin/$bf
+ for bin in java jfr keytool rmiregistry; do
+ vmove "${_jdk_home}/bin/${bin}"
+ vmove "${_jdk_home}/man/man1/${bin}.1"
done
for f in lib legal conf release; do
@@ -200,13 +165,15 @@ openjdk17-doc_package() {
noverifyrdeps=yes
noshlibprovides=yes
short_desc+=" - documentation"
+ if [ -z "$build_option_docs" ]; then
+ build_style=meta
+ fi
pkg_install() {
if [ "$build_option_docs" ]; then
local _docdir=usr/share/doc/openjdk$_java_ver
vmkdir $_docdir
cp -a $wrksrc/$build_wrksrc/build/linux-*/images/docs/* ${PKGDESTDIR}/$_docdir
fi
- vmove $_jdk_home/man/man1
}
}
From d6a86c808663f5cadf31416be02198284ddd60cb Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Fri, 22 Dec 2023 19:26:22 -0500
Subject: [PATCH 08/12] *: fix name of jdk profile script in templates
---
srcpkgs/apache-fop/template | 2 +-
srcpkgs/apache-maven/template | 2 +-
srcpkgs/arduino/template | 2 +-
srcpkgs/bibletime/template | 2 +-
srcpkgs/davmail/template | 2 +-
srcpkgs/freeplane/template | 2 +-
srcpkgs/freerouting/template | 2 +-
srcpkgs/java-commons-io/template | 2 +-
srcpkgs/jedit/template | 2 +-
srcpkgs/kodi/template | 2 +-
srcpkgs/lightzone/template | 2 +-
srcpkgs/plantuml/template | 2 +-
srcpkgs/turbovnc/template | 2 +-
13 files changed, 13 insertions(+), 13 deletions(-)
diff --git a/srcpkgs/apache-fop/template b/srcpkgs/apache-fop/template
index 1dd6dd9854281..fe6a130c45c20 100644
--- a/srcpkgs/apache-fop/template
+++ b/srcpkgs/apache-fop/template
@@ -17,7 +17,7 @@ conf_files="/etc/fop.conf"
do_build() {
. /etc/profile.d/apache-ant.sh
- . /etc/profile.d/openjdk.sh
+ . /etc/profile.d/jdk.sh
ant package
}
do_install() {
diff --git a/srcpkgs/apache-maven/template b/srcpkgs/apache-maven/template
index 4b0995e11ba7d..27091a616c2e1 100644
--- a/srcpkgs/apache-maven/template
+++ b/srcpkgs/apache-maven/template
@@ -15,7 +15,7 @@ checksum="5f499a0c9263be556b03dd64002a1f99892eb50ee253aab81f1f338f3bc7abed
replaces="apache-maven-bin>=0"
do_build() {
- source /etc/profile.d/openjdk.sh
+ source /etc/profile.d/jdk.sh
./bin/mvn package -DskipTests -Drat.skip=true -Dmaven.repo.local=repo -DdistributionTargetDir=${DESTDIR}/usr/lib/${pkgname}
}
diff --git a/srcpkgs/arduino/template b/srcpkgs/arduino/template
index ad169d3faf3a7..b1cfcac0b2a20 100644
--- a/srcpkgs/arduino/template
+++ b/srcpkgs/arduino/template
@@ -26,7 +26,7 @@ fi
do_build() {
. /etc/profile.d/apache-ant.sh
- . /etc/profile.d/openjdk.sh
+ . /etc/profile.d/jdk.sh
export CFLAGS+=" -I${XBPS_CROSS_BASE}/usr/lib/jvm/java-1.8-openjdk/include/linux"
export CFLAGS+=" -I${XBPS_CROSS_BASE}/usr/lib/jvm/java-1.8-openjdk/include"
diff --git a/srcpkgs/bibletime/template b/srcpkgs/bibletime/template
index d8be23d33be61..fcff5e72752ba 100644
--- a/srcpkgs/bibletime/template
+++ b/srcpkgs/bibletime/template
@@ -20,7 +20,7 @@ distfiles="https://github.com/bibletime/bibletime/releases/download/v${version}/
checksum=d6beef62ad44b255e3dc4c5e89214bf01a0e85c9136073b0be12fca3d2b22622
pre_build() {
- . /etc/profile.d/openjdk.sh
+ . /etc/profile.d/jdk.sh
if [ "$XBPS_WORDSIZE" = "32" ]; then
export _JAVA_OPTIONS="-Xmx1024m"
fi
diff --git a/srcpkgs/davmail/template b/srcpkgs/davmail/template
index 1652c266ecfe8..9bcc6dda9d1f2 100644
--- a/srcpkgs/davmail/template
+++ b/srcpkgs/davmail/template
@@ -14,7 +14,7 @@ distfiles="${SOURCEFORGE_SITE}/davmail/davmail-src-${version}-${_commit}.tgz"
checksum=08e7103d14e9f05ec269caceef7585dcf8be202a35c471fa6fc12729cf99ef2f
do_build() {
- . /etc/profile.d/openjdk.sh
+ . /etc/profile.d/jdk.sh
. /etc/profile.d/apache-ant.sh
ant jar
diff --git a/srcpkgs/freeplane/template b/srcpkgs/freeplane/template
index 50fb28292152a..e98b19dc01e6a 100644
--- a/srcpkgs/freeplane/template
+++ b/srcpkgs/freeplane/template
@@ -22,7 +22,7 @@ esac
do_build() {
. /etc/profile.d/apache-ant.sh
- . /etc/profile.d/openjdk.sh
+ . /etc/profile.d/jdk.sh
gradle format_translation binZip -x test
}
diff --git a/srcpkgs/freerouting/template b/srcpkgs/freerouting/template
index e128119f75cd1..414053ed6c620 100644
--- a/srcpkgs/freerouting/template
+++ b/srcpkgs/freerouting/template
@@ -12,7 +12,7 @@ distfiles="https://github.com/freerouting/${pkgname}/archive/v${version}.tar.gz"
checksum=36742a91e492956e3adc5d75e542a40f3e03d15d69d15717a9d39c0585faac44
do_build() {
- . /etc/profile.d/openjdk.sh
+ . /etc/profile.d/jdk.sh
gradle assemble
}
diff --git a/srcpkgs/java-commons-io/template b/srcpkgs/java-commons-io/template
index c07dcb187f9fe..945622a6004a4 100644
--- a/srcpkgs/java-commons-io/template
+++ b/srcpkgs/java-commons-io/template
@@ -18,7 +18,7 @@ case "$XBPS_MACHINE" in
esac
do_build() {
- source /etc/profile.d/openjdk.sh
+ source /etc/profile.d/jdk.sh
mvn package -Dmaven.test.skip=true
}
diff --git a/srcpkgs/jedit/template b/srcpkgs/jedit/template
index 094feb547d7a8..1f014fb04c8d0 100644
--- a/srcpkgs/jedit/template
+++ b/srcpkgs/jedit/template
@@ -18,7 +18,7 @@ post_patch() {
do_build() {
. /etc/profile.d/apache-ant.sh
- . /etc/profile.d/openjdk.sh
+ . /etc/profile.d/jdk.sh
ant -propertyfile ${FILESDIR}/build.properties build
ant -propertyfile ${FILESDIR}/build.properties docs-html
diff --git a/srcpkgs/kodi/template b/srcpkgs/kodi/template
index aa59324258a0d..d37a5918cd675 100644
--- a/srcpkgs/kodi/template
+++ b/srcpkgs/kodi/template
@@ -102,7 +102,7 @@ pre_configure() {
xargs sed -i -e "s;-isystem;-I;g"
fi
- . /etc/profile.d/openjdk.sh
+ . /etc/profile.d/jdk.sh
# Build tools needed to run on the host
if [ "$CROSS_BUILD" ]; then
diff --git a/srcpkgs/lightzone/template b/srcpkgs/lightzone/template
index b0c28a0c3a88a..7cfa27dd538ae 100644
--- a/srcpkgs/lightzone/template
+++ b/srcpkgs/lightzone/template
@@ -28,7 +28,7 @@ do_build() {
vsed -i lightcrafts/jnisrc/tiff/GNUmakefile \
-e "s;\./configure;& --host=${XBPS_MACHINE%-musl};"
- . /etc/profile.d/openjdk.sh
+ . /etc/profile.d/jdk.sh
cd linux
TARGET=${XBPS_TARGET_MACHINE%-musl} ant jar
}
diff --git a/srcpkgs/plantuml/template b/srcpkgs/plantuml/template
index 03318f4c07227..156db505a0484 100644
--- a/srcpkgs/plantuml/template
+++ b/srcpkgs/plantuml/template
@@ -14,7 +14,7 @@ distfiles="${SOURCEFORGE_SITE}/plantuml/plantuml-gplv2-${version}.tar.gz"
checksum=c21bb155ecfc53f4f0a5924238069f0c979b0f426bfa44fd62ce73f2aa1b4339
do_build() {
- . /etc/profile.d/openjdk.sh
+ . /etc/profile.d/jdk.sh
. /etc/profile.d/apache-ant.sh
ant
mv ${pkgname}.jar ${pkgname}-${version}.jar
diff --git a/srcpkgs/turbovnc/template b/srcpkgs/turbovnc/template
index 287754ef9daa4..9dd794662b862 100644
--- a/srcpkgs/turbovnc/template
+++ b/srcpkgs/turbovnc/template
@@ -27,7 +27,7 @@ if [ "$CROSS_BUILD" ]; then
fi
pre_configure() {
- . /etc/profile.d/openjdk.sh
+ . /etc/profile.d/jdk.sh
}
post_install() {
From 5d19f79087b15280459676a727223f0e2462ae5b Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Fri, 22 Dec 2023 00:44:06 -0500
Subject: [PATCH 09/12] New package: openjdk18-bootstrap-18.0.2.1+0
---
.../patches/FixNullPtrCast.patch | 104 +++++
.../openjdk18-bootstrap/patches/cgroups.patch | 406 ++++++++++++++++++
srcpkgs/openjdk18-bootstrap/template | 101 +++++
srcpkgs/openjdk18-bootstrap/update | 4 +
4 files changed, 615 insertions(+)
create mode 100644 srcpkgs/openjdk18-bootstrap/patches/FixNullPtrCast.patch
create mode 100644 srcpkgs/openjdk18-bootstrap/patches/cgroups.patch
create mode 100644 srcpkgs/openjdk18-bootstrap/template
create mode 100644 srcpkgs/openjdk18-bootstrap/update
diff --git a/srcpkgs/openjdk18-bootstrap/patches/FixNullPtrCast.patch b/srcpkgs/openjdk18-bootstrap/patches/FixNullPtrCast.patch
new file mode 100644
index 0000000000000..7fa335939e61d
--- /dev/null
+++ b/srcpkgs/openjdk18-bootstrap/patches/FixNullPtrCast.patch
@@ -0,0 +1,104 @@
+Subject: Fix cast errors with latest GCC (11.2)
+Upstream: No
+Author: Simon Frankenberger <simon-alpine@fraho.eu>
+
+This patch fixes multiple casting errors reported by GCC 11.2
+
+--- old/src/hotspot/share/gc/shenandoah/shenandoahBarrierSet.inline.hpp
++++ new/src/hotspot/share/gc/shenandoah/shenandoahBarrierSet.inline.hpp
+@@ -205,7 +205,7 @@
+
+ // Note: We don't need a keep-alive-barrier here. We already enqueue any loaded reference for SATB anyway,
+ // because it must be the previous value.
+- res = load_reference_barrier(decorators, res, reinterpret_cast<T*>(NULL));
++ res = load_reference_barrier(decorators, res, static_cast<T*>(NULL));
+ satb_enqueue(res);
+ return res;
+ }
+@@ -216,7 +216,7 @@
+ oop previous = RawAccess<>::oop_atomic_xchg(addr, new_value);
+ // Note: We don't need a keep-alive-barrier here. We already enqueue any loaded reference for SATB anyway,
+ // because it must be the previous value.
+- previous = load_reference_barrier<T>(decorators, previous, reinterpret_cast<T*>(NULL));
++ previous = load_reference_barrier<T>(decorators, previous, static_cast<T*>(NULL));
+ satb_enqueue(previous);
+ return previous;
+ }
+--- old/src/hotspot/share/oops/access.hpp
++++ new/src/hotspot/share/oops/access.hpp
+@@ -294,8 +294,8 @@
+ static inline void arraycopy(arrayOop src_obj, size_t src_offset_in_bytes,
+ arrayOop dst_obj, size_t dst_offset_in_bytes,
+ size_t length) {
+- AccessT::arraycopy(src_obj, src_offset_in_bytes, reinterpret_cast<const T*>(NULL),
+- dst_obj, dst_offset_in_bytes, reinterpret_cast<T*>(NULL),
++ AccessT::arraycopy(src_obj, src_offset_in_bytes, static_cast<const T*>(NULL),
++ dst_obj, dst_offset_in_bytes, static_cast<T*>(NULL),
+ length);
+ }
+
+@@ -303,7 +303,7 @@
+ static inline void arraycopy_to_native(arrayOop src_obj, size_t src_offset_in_bytes,
+ T* dst,
+ size_t length) {
+- AccessT::arraycopy(src_obj, src_offset_in_bytes, reinterpret_cast<const T*>(NULL),
++ AccessT::arraycopy(src_obj, src_offset_in_bytes, static_cast<const T*>(NULL),
+ NULL, 0, dst,
+ length);
+ }
+@@ -313,15 +313,15 @@
+ arrayOop dst_obj, size_t dst_offset_in_bytes,
+ size_t length) {
+ AccessT::arraycopy(NULL, 0, src,
+- dst_obj, dst_offset_in_bytes, reinterpret_cast<T*>(NULL),
++ dst_obj, dst_offset_in_bytes, static_cast<T*>(NULL),
+ length);
+ }
+
+ static inline bool oop_arraycopy(arrayOop src_obj, size_t src_offset_in_bytes,
+ arrayOop dst_obj, size_t dst_offset_in_bytes,
+ size_t length) {
+- return AccessT::oop_arraycopy(src_obj, src_offset_in_bytes, reinterpret_cast<const HeapWord*>(NULL),
+- dst_obj, dst_offset_in_bytes, reinterpret_cast<HeapWord*>(NULL),
++ return AccessT::oop_arraycopy(src_obj, src_offset_in_bytes, static_cast<const HeapWord*>(NULL),
++ dst_obj, dst_offset_in_bytes, static_cast<HeapWord*>(NULL),
+ length);
+ }
+
+--- old/src/hotspot/cpu/x86/interp_masm_x86.cpp
++++ new/src/hotspot/cpu/x86/interp_masm_x86.cpp
+@@ -1122,7 +1122,7 @@
+
+ bind(loop);
+ // check if current entry is used
+- cmpptr(Address(rmon, BasicObjectLock::obj_offset_in_bytes()), (int32_t) NULL);
++ cmpptr(Address(rmon, BasicObjectLock::obj_offset_in_bytes()), 0);
+ jcc(Assembler::notEqual, exception);
+
+ addptr(rmon, entry_size); // otherwise advance to next entry
+--- old/src/hotspot/cpu/x86/interpreterRT_x86_64.cpp
++++ new/src/hotspot/cpu/x86/interpreterRT_x86_64.cpp
+@@ -443,10 +443,10 @@
+ _from -= Interpreter::stackElementSize;
+
+ if (_num_int_args < Argument::n_int_register_parameters_c-1) {
+- *_int_args++ = (*from_addr == 0) ? NULL : (intptr_t)from_addr;
++ *_int_args++ = (*from_addr == 0) ? (intptr_t) 0 : (intptr_t) from_addr;
+ _num_int_args++;
+ } else {
+- *_to++ = (*from_addr == 0) ? NULL : (intptr_t) from_addr;
++ *_to++ = (*from_addr == 0) ? (intptr_t) 0 : (intptr_t) from_addr;
+ }
+ }
+
+--- old/src/hotspot/cpu/aarch64/interpreterRT_aarch64.cpp
++++ new/src/hotspot/cpu/aarch64/interpreterRT_aarch64.cpp
+@@ -267,7 +267,7 @@
+
+ virtual void pass_object() {
+ intptr_t* addr = single_slot_addr();
+- intptr_t value = *addr == 0 ? NULL : (intptr_t)addr;
++ intptr_t value = *addr == 0 ? (intptr_t) 0 : (intptr_t)addr;
+ if (pass_gpr(value) < 0) {
+ pass_stack<>(value);
+ }
diff --git a/srcpkgs/openjdk18-bootstrap/patches/cgroups.patch b/srcpkgs/openjdk18-bootstrap/patches/cgroups.patch
new file mode 100644
index 0000000000000..efeaa0871a03b
--- /dev/null
+++ b/srcpkgs/openjdk18-bootstrap/patches/cgroups.patch
@@ -0,0 +1,406 @@
+From 8f3bbe950fb5a3d9f6cae122209df01df0f342f0 Mon Sep 17 00:00:00 2001
+From: casparcwang <casparcwang@tencent.com>
+Date: Thu, 15 Sep 2022 08:47:05 +0000
+Subject: [PATCH] 8293472: Incorrect container resource limit detection if
+ manual cgroup fs mounts present
+
+Reviewed-by: sgehwolf, iklam
+---
+ .../os/linux/cgroupSubsystem_linux.cpp | 69 +++++++++---------
+ .../os/linux/cgroupSubsystem_linux.hpp | 5 ++
+ .../cgroup/CgroupSubsystemFactory.java | 71 ++++++++++++++++---
+ .../containers/docker/DockerBasicTest.java | 14 ++++
+ .../containers/docker/TestCPUAwareness.java | 15 ++--
+ .../docker/TestMemoryAwareness.java | 15 ++--
+ 6 files changed, 135 insertions(+), 54 deletions(-)
+
+diff --git a/src/hotspot/os/linux/cgroupSubsystem_linux.cpp b/src/hotspot/os/linux/cgroupSubsystem_linux.cpp
+index baa7a40a9146..1f3a6dfcaf6b 100644
+--- a/src/hotspot/os/linux/cgroupSubsystem_linux.cpp
++++ b/src/hotspot/os/linux/cgroupSubsystem_linux.cpp
+@@ -123,6 +123,32 @@ CgroupSubsystem* CgroupSubsystemFactory::create() {
+ return new CgroupV1Subsystem(cpuset, cpu, cpuacct, pids, memory);
+ }
+
++void CgroupSubsystemFactory::set_controller_paths(CgroupInfo* cg_infos,
++ int controller,
++ const char* name,
++ char* mount_path,
++ char* root_path) {
++ if (cg_infos[controller]._mount_path != NULL) {
++ // On some systems duplicate controllers get mounted in addition to
++ // the main cgroup controllers most likely under /sys/fs/cgroup. In that
++ // case pick the one under /sys/fs/cgroup and discard others.
++ if (strstr(cg_infos[controller]._mount_path, "/sys/fs/cgroup") != cg_infos[controller]._mount_path) {
++ log_debug(os, container)("Duplicate %s controllers detected. Picking %s, skipping %s.",
++ name, mount_path, cg_infos[controller]._mount_path);
++ os::free(cg_infos[controller]._mount_path);
++ os::free(cg_infos[controller]._root_mount_path);
++ cg_infos[controller]._mount_path = os::strdup(mount_path);
++ cg_infos[controller]._root_mount_path = os::strdup(root_path);
++ } else {
++ log_debug(os, container)("Duplicate %s controllers detected. Picking %s, skipping %s.",
++ name, cg_infos[controller]._mount_path, mount_path);
++ }
++ } else {
++ cg_infos[controller]._mount_path = os::strdup(mount_path);
++ cg_infos[controller]._root_mount_path = os::strdup(root_path);
++ }
++}
++
+ bool CgroupSubsystemFactory::determine_type(CgroupInfo* cg_infos,
+ const char* proc_cgroups,
+ const char* proc_self_cgroup,
+@@ -288,7 +314,6 @@ bool CgroupSubsystemFactory::determine_type(CgroupInfo* cg_infos,
+ bool cgroupv2_mount_point_found = false;
+ bool any_cgroup_mounts_found = false;
+ while ((p = fgets(buf, MAXPATHLEN, mntinfo)) != NULL) {
+- char tmp_mount_point[MAXPATHLEN+1];
+ char tmp_fs_type[MAXPATHLEN+1];
+ char tmproot[MAXPATHLEN+1];
+ char tmpmount[MAXPATHLEN+1];
+@@ -299,15 +324,13 @@ bool CgroupSubsystemFactory::determine_type(CgroupInfo* cg_infos,
+ // Cgroup v2 relevant info. We only look for the _mount_path iff is_cgroupsV2 so
+ // as to avoid memory stomping of the _mount_path pointer later on in the cgroup v1
+ // block in the hybrid case.
+- //
+- if (is_cgroupsV2 && sscanf(p, "%*d %*d %*d:%*d %*s %s %*[^-]- %s %*s %*s", tmp_mount_point, tmp_fs_type) == 2) {
++ if (is_cgroupsV2 && sscanf(p, "%*d %*d %*d:%*d %s %s %*[^-]- %s %*s %*s", tmproot, tmpmount, tmp_fs_type) == 3) {
+ // we likely have an early match return (e.g. cgroup fs match), be sure we have cgroup2 as fstype
+- if (!cgroupv2_mount_point_found && strcmp("cgroup2", tmp_fs_type) == 0) {
++ if (strcmp("cgroup2", tmp_fs_type) == 0) {
+ cgroupv2_mount_point_found = true;
+ any_cgroup_mounts_found = true;
+ for (int i = 0; i < CG_INFO_LENGTH; i++) {
+- assert(cg_infos[i]._mount_path == NULL, "_mount_path memory stomping");
+- cg_infos[i]._mount_path = os::strdup(tmp_mount_point);
++ set_controller_paths(cg_infos, i, "(cg2, unified)", tmpmount, tmproot);
+ }
+ }
+ }
+@@ -332,47 +355,23 @@ bool CgroupSubsystemFactory::determine_type(CgroupInfo* cg_infos,
+ while ((token = strsep(&cptr, ",")) != NULL) {
+ if (strcmp(token, "memory") == 0) {
+ any_cgroup_mounts_found = true;
+- assert(cg_infos[MEMORY_IDX]._mount_path == NULL, "stomping of _mount_path");
+- cg_infos[MEMORY_IDX]._mount_path = os::strdup(tmpmount);
+- cg_infos[MEMORY_IDX]._root_mount_path = os::strdup(tmproot);
++ set_controller_paths(cg_infos, MEMORY_IDX, token, tmpmount, tmproot);
+ cg_infos[MEMORY_IDX]._data_complete = true;
+ } else if (strcmp(token, "cpuset") == 0) {
+ any_cgroup_mounts_found = true;
+- if (cg_infos[CPUSET_IDX]._mount_path != NULL) {
+- // On some systems duplicate cpuset controllers get mounted in addition to
+- // the main cgroup controllers most likely under /sys/fs/cgroup. In that
+- // case pick the one under /sys/fs/cgroup and discard others.
+- if (strstr(cg_infos[CPUSET_IDX]._mount_path, "/sys/fs/cgroup") != cg_infos[CPUSET_IDX]._mount_path) {
+- log_warning(os, container)("Duplicate cpuset controllers detected. Picking %s, skipping %s.",
+- tmpmount, cg_infos[CPUSET_IDX]._mount_path);
+- os::free(cg_infos[CPUSET_IDX]._mount_path);
+- cg_infos[CPUSET_IDX]._mount_path = os::strdup(tmpmount);
+- } else {
+- log_warning(os, container)("Duplicate cpuset controllers detected. Picking %s, skipping %s.",
+- cg_infos[CPUSET_IDX]._mount_path, tmpmount);
+- }
+- } else {
+- cg_infos[CPUSET_IDX]._mount_path = os::strdup(tmpmount);
+- }
+- cg_infos[CPUSET_IDX]._root_mount_path = os::strdup(tmproot);
++ set_controller_paths(cg_infos, CPUSET_IDX, token, tmpmount, tmproot);
+ cg_infos[CPUSET_IDX]._data_complete = true;
+ } else if (strcmp(token, "cpu") == 0) {
+ any_cgroup_mounts_found = true;
+- assert(cg_infos[CPU_IDX]._mount_path == NULL, "stomping of _mount_path");
+- cg_infos[CPU_IDX]._mount_path = os::strdup(tmpmount);
+- cg_infos[CPU_IDX]._root_mount_path = os::strdup(tmproot);
++ set_controller_paths(cg_infos, CPU_IDX, token, tmpmount, tmproot);
+ cg_infos[CPU_IDX]._data_complete = true;
+ } else if (strcmp(token, "cpuacct") == 0) {
+ any_cgroup_mounts_found = true;
+- assert(cg_infos[CPUACCT_IDX]._mount_path == NULL, "stomping of _mount_path");
+- cg_infos[CPUACCT_IDX]._mount_path = os::strdup(tmpmount);
+- cg_infos[CPUACCT_IDX]._root_mount_path = os::strdup(tmproot);
++ set_controller_paths(cg_infos, CPUACCT_IDX, token, tmpmount, tmproot);
+ cg_infos[CPUACCT_IDX]._data_complete = true;
+ } else if (strcmp(token, "pids") == 0) {
+ any_cgroup_mounts_found = true;
+- assert(cg_infos[PIDS_IDX]._mount_path == NULL, "stomping of _mount_path");
+- cg_infos[PIDS_IDX]._mount_path = os::strdup(tmpmount);
+- cg_infos[PIDS_IDX]._root_mount_path = os::strdup(tmproot);
++ set_controller_paths(cg_infos, PIDS_IDX, token, tmpmount, tmproot);
+ cg_infos[PIDS_IDX]._data_complete = true;
+ }
+ }
+diff --git a/src/hotspot/os/linux/cgroupSubsystem_linux.hpp b/src/hotspot/os/linux/cgroupSubsystem_linux.hpp
+index 2e3fc8e8bc78..91456b3d0e14 100644
+--- a/src/hotspot/os/linux/cgroupSubsystem_linux.hpp
++++ b/src/hotspot/os/linux/cgroupSubsystem_linux.hpp
+@@ -311,6 +311,11 @@ class CgroupSubsystemFactory: AllStatic {
+ }
+ #endif
+
++ static void set_controller_paths(CgroupInfo* cg_infos,
++ int controller,
++ const char* name,
++ char* mount_path,
++ char* root_path);
+ // Determine the cgroup type (version 1 or version 2), given
+ // relevant paths to files. Sets 'flags' accordingly.
+ static bool determine_type(CgroupInfo* cg_infos,
+diff --git a/test/hotspot/jtreg/containers/cgroup/CgroupSubsystemFactory.java b/test/hotspot/jtreg/containers/cgroup/CgroupSubsystemFactory.java
+index 54807119d82e..7eb78fa447fd 100644
+--- a/test/hotspot/jtreg/containers/cgroup/CgroupSubsystemFactory.java
++++ b/test/hotspot/jtreg/containers/cgroup/CgroupSubsystemFactory.java
+@@ -62,11 +62,19 @@ public class CgroupSubsystemFactory {
+ private Path cgroupv1MntInfoZeroHierarchy;
+ private Path cgroupv2CgInfoZeroHierarchy;
+ private Path cgroupv2MntInfoZeroHierarchy;
++ private Path cgroupv2MntInfoDouble;
++ private Path cgroupv2MntInfoDouble2;
+ private Path cgroupv1CgInfoNonZeroHierarchy;
+ private Path cgroupv1MntInfoNonZeroHierarchyOtherOrder;
+ private Path cgroupv1MntInfoNonZeroHierarchy;
+ private Path cgroupv1MntInfoDoubleCpuset;
+ private Path cgroupv1MntInfoDoubleCpuset2;
++ private Path cgroupv1MntInfoDoubleMemory;
++ private Path cgroupv1MntInfoDoubleMemory2;
++ private Path cgroupv1MntInfoDoubleCpu;
++ private Path cgroupv1MntInfoDoubleCpu2;
++ private Path cgroupv1MntInfoDoublePids;
++ private Path cgroupv1MntInfoDoublePids2;
+ private Path cgroupv1MntInfoSystemdOnly;
+ private String mntInfoEmpty = "";
+ private Path cgroupV1SelfCgroup;
+@@ -160,6 +168,15 @@ public class CgroupSubsystemFactory {
+ private String mntInfoCgroupv1MoreCpusetLine = "121 32 0:37 / /cpusets rw,relatime shared:69 - cgroup none rw,cpuset\n";
+ private String mntInfoCgroupv1DoubleCpuset = mntInfoCgroupv1MoreCpusetLine + mntInfoHybrid;
+ private String mntInfoCgroupv1DoubleCpuset2 = mntInfoHybrid + mntInfoCgroupv1MoreCpusetLine;
++ private String mntInfoCgroupv1MoreMemoryLine = "1100 1098 0:28 / /memory rw,nosuid,nodev,noexec,relatime master:6 - cgroup cgroup rw,memory\n";
++ private String mntInfoCgroupv1DoubleMemory = mntInfoCgroupv1MoreMemoryLine + mntInfoHybrid;
++ private String mntInfoCgroupv1DoubleMemory2 = mntInfoHybrid + mntInfoCgroupv1MoreMemoryLine;
++ private String mntInfoCgroupv1DoubleCpuLine = "1101 1098 0:29 / /cpu,cpuacct rw,nosuid,nodev,noexec,relatime master:7 - cgroup cgroup rw,cpu,cpuacct\n";
++ private String mntInfoCgroupv1DoubleCpu = mntInfoCgroupv1DoubleCpuLine + mntInfoHybrid;
++ private String mntInfoCgroupv1DoubleCpu2 = mntInfoHybrid + mntInfoCgroupv1DoubleCpuLine;
++ private String mntInfoCgroupv1DoublePidsLine = "1107 1098 0:35 / /pids rw,nosuid,nodev,noexec,relatime master:13 - cgroup cgroup rw,pids\n";
++ private String mntInfoCgroupv1DoublePids = mntInfoCgroupv1DoublePidsLine + mntInfoHybrid;
++ private String mntInfoCgroupv1DoublePids2 = mntInfoHybrid + mntInfoCgroupv1DoublePidsLine;
+ private String cgroupsNonZeroHierarchy =
+ "#subsys_name hierarchy num_cgroups enabled\n" +
+ "cpuset 3 1 1\n" +
+@@ -175,7 +192,11 @@ public class CgroupSubsystemFactory {
+ "hugetlb 6 1 1\n" +
+ "pids 9 80 1"; // hierarchy has to match procSelfCgroupHybridContent
+ private String mntInfoCgroupsV2Only =
+- "28 21 0:25 / /sys/fs/cgroup rw,nosuid,nodev,noexec,relatime shared:4 - cgroup2 none rw,seclabel,nsdelegate";
++ "28 21 0:25 / /sys/fs/cgroup rw,nosuid,nodev,noexec,relatime shared:4 - cgroup2 none rw,seclabel,nsdelegate\n";
++ private String mntInfoCgroupsV2MoreLine =
++ "240 232 0:24 /../.. /cgroup-in ro,relatime - cgroup2 cgroup2 rw,nsdelegate\n";
++ private String mntInfoCgroupsV2Double = mntInfoCgroupsV2MoreLine + mntInfoCgroupsV2Only;
++ private String mntInfoCgroupsV2Double2 = mntInfoCgroupsV2Only + mntInfoCgroupsV2MoreLine;
+ private String mntInfoCgroupsV1SystemdOnly =
+ "35 26 0:26 / /sys/fs/cgroup/systemd rw,nosuid,nodev,noexec,relatime - cgroup systemd rw,name=systemd\n" +
+ "26 18 0:19 / /sys/fs/cgroup rw,relatime - tmpfs none rw,size=4k,mode=755\n";
+@@ -217,6 +238,12 @@ private void setup() {
+ cgroupv2MntInfoZeroHierarchy = Paths.get(existingDirectory.toString(), "mountinfo_cgroupv2");
+ Files.writeString(cgroupv2MntInfoZeroHierarchy, mntInfoCgroupsV2Only);
+
++ cgroupv2MntInfoDouble = Paths.get(existingDirectory.toString(), "mountinfo_cgroupv2_double");
++ Files.writeString(cgroupv2MntInfoDouble, mntInfoCgroupsV2Double);
++
++ cgroupv2MntInfoDouble2 = Paths.get(existingDirectory.toString(), "mountinfo_cgroupv2_double2");
++ Files.writeString(cgroupv2MntInfoDouble2, mntInfoCgroupsV2Double2);
++
+ cgroupv1CgInfoNonZeroHierarchy = Paths.get(existingDirectory.toString(), "cgroups_non_zero");
+ Files.writeString(cgroupv1CgInfoNonZeroHierarchy, cgroupsNonZeroHierarchy);
+
+@@ -244,6 +271,24 @@ private void setup() {
+ cgroupv1MntInfoDoubleCpuset2 = Paths.get(existingDirectory.toString(), "mnt_info_cgroupv1_double_cpuset2");
+ Files.writeString(cgroupv1MntInfoDoubleCpuset2, mntInfoCgroupv1DoubleCpuset2);
+
++ cgroupv1MntInfoDoubleMemory = Paths.get(existingDirectory.toString(), "mnt_info_cgroupv1_double_memory");
++ Files.writeString(cgroupv1MntInfoDoubleMemory, mntInfoCgroupv1DoubleMemory);
++
++ cgroupv1MntInfoDoubleMemory2 = Paths.get(existingDirectory.toString(), "mnt_info_cgroupv1_double_memory2");
++ Files.writeString(cgroupv1MntInfoDoubleMemory2, mntInfoCgroupv1DoubleMemory2);
++
++ cgroupv1MntInfoDoubleCpu = Paths.get(existingDirectory.toString(), "mnt_info_cgroupv1_double_cpu");
++ Files.writeString(cgroupv1MntInfoDoubleCpu, mntInfoCgroupv1DoubleCpu);
++
++ cgroupv1MntInfoDoubleCpu2 = Paths.get(existingDirectory.toString(), "mnt_info_cgroupv1_double_cpu2");
++ Files.writeString(cgroupv1MntInfoDoubleCpu2, mntInfoCgroupv1DoubleCpu2);
++
++ cgroupv1MntInfoDoublePids = Paths.get(existingDirectory.toString(), "mnt_info_cgroupv1_double_pids");
++ Files.writeString(cgroupv1MntInfoDoublePids, mntInfoCgroupv1DoublePids);
++
++ cgroupv1MntInfoDoublePids2 = Paths.get(existingDirectory.toString(), "mnt_info_cgroupv1_double_pids2");
++ Files.writeString(cgroupv1MntInfoDoublePids2, mntInfoCgroupv1DoublePids2);
++
+ cgroupv1MntInfoSystemdOnly = Paths.get(existingDirectory.toString(), "mnt_info_cgroupv1_systemd_only");
+ Files.writeString(cgroupv1MntInfoSystemdOnly, mntInfoCgroupsV1SystemdOnly);
+
+@@ -291,14 +336,14 @@ public void testCgroupv1JoinControllerCombo(WhiteBox wb) {
+ System.out.println("testCgroupv1JoinControllerMounts PASSED!");
+ }
+
+- public void testCgroupv1MultipleCpusetMounts(WhiteBox wb, Path mountInfo) {
++ public void testCgroupv1MultipleControllerMounts(WhiteBox wb, Path mountInfo) {
+ String procCgroups = cgroupv1CgInfoNonZeroHierarchy.toString();
+ String procSelfCgroup = cgroupV1SelfCgroup.toString();
+ String procSelfMountinfo = mountInfo.toString();
+ int retval = wb.validateCgroup(procCgroups, procSelfCgroup, procSelfMountinfo);
+- Asserts.assertEQ(CGROUPS_V1, retval, "Multiple cpuset controllers, but only one in /sys/fs/cgroup");
++ Asserts.assertEQ(CGROUPS_V1, retval, "Multiple controllers, but only one in /sys/fs/cgroup");
+ Asserts.assertTrue(isValidCgroup(retval));
+- System.out.println("testCgroupv1MultipleCpusetMounts PASSED!");
++ System.out.println("testCgroupv1MultipleControllerMounts PASSED!");
+ }
+
+ public void testCgroupv1SystemdOnly(WhiteBox wb) {
+@@ -341,10 +386,10 @@ public void testCgroupv1MissingMemoryController(WhiteBox wb) {
+ System.out.println("testCgroupv1MissingMemoryController PASSED!");
+ }
+
+- public void testCgroupv2(WhiteBox wb) {
++ public void testCgroupv2(WhiteBox wb, Path mountInfo) {
+ String procCgroups = cgroupv2CgInfoZeroHierarchy.toString();
+ String procSelfCgroup = cgroupV2SelfCgroup.toString();
+- String procSelfMountinfo = cgroupv2MntInfoZeroHierarchy.toString();
++ String procSelfMountinfo = mountInfo.toString();
+ int retval = wb.validateCgroup(procCgroups, procSelfCgroup, procSelfMountinfo);
+ Asserts.assertEQ(CGROUPS_V2, retval, "Expected");
+ Asserts.assertTrue(isValidCgroup(retval));
+@@ -388,13 +433,21 @@ public static void main(String[] args) throws Exception {
+ try {
+ test.testCgroupv1SystemdOnly(wb);
+ test.testCgroupv1NoMounts(wb);
+- test.testCgroupv2(wb);
++ test.testCgroupv2(wb, test.cgroupv2MntInfoZeroHierarchy);
++ test.testCgroupv2(wb, test.cgroupv2MntInfoDouble);
++ test.testCgroupv2(wb, test.cgroupv2MntInfoDouble2);
+ test.testCgroupV1Hybrid(wb);
+ test.testCgroupV1HybridMntInfoOrder(wb);
+ test.testCgroupv1MissingMemoryController(wb);
+ test.testCgroupv2NoCgroup2Fs(wb);
+- test.testCgroupv1MultipleCpusetMounts(wb, test.cgroupv1MntInfoDoubleCpuset);
+- test.testCgroupv1MultipleCpusetMounts(wb, test.cgroupv1MntInfoDoubleCpuset2);
++ test.testCgroupv1MultipleControllerMounts(wb, test.cgroupv1MntInfoDoubleCpuset);
++ test.testCgroupv1MultipleControllerMounts(wb, test.cgroupv1MntInfoDoubleCpuset2);
++ test.testCgroupv1MultipleControllerMounts(wb, test.cgroupv1MntInfoDoubleMemory);
++ test.testCgroupv1MultipleControllerMounts(wb, test.cgroupv1MntInfoDoubleMemory2);
++ test.testCgroupv1MultipleControllerMounts(wb, test.cgroupv1MntInfoDoubleCpu);
++ test.testCgroupv1MultipleControllerMounts(wb, test.cgroupv1MntInfoDoubleCpu2);
++ test.testCgroupv1MultipleControllerMounts(wb, test.cgroupv1MntInfoDoublePids);
++ test.testCgroupv1MultipleControllerMounts(wb, test.cgroupv1MntInfoDoublePids2);
+ test.testCgroupv1JoinControllerCombo(wb);
+ test.testNonZeroHierarchyOnlyFreezer(wb);
+ } finally {
+diff --git a/test/hotspot/jtreg/containers/docker/DockerBasicTest.java b/test/hotspot/jtreg/containers/docker/DockerBasicTest.java
+index bcbd2ffa21df..357eb3db4972 100644
+--- a/test/hotspot/jtreg/containers/docker/DockerBasicTest.java
++++ b/test/hotspot/jtreg/containers/docker/DockerBasicTest.java
+@@ -53,6 +53,7 @@ public static void main(String[] args) throws Exception {
+ try {
+ testJavaVersion();
+ testHelloDocker();
++ testJavaVersionWithCgMounts();
+ } finally {
+ if (!DockerTestUtils.RETAIN_IMAGE_AFTER_TEST) {
+ DockerTestUtils.removeDockerImage(imageNameAndTag);
+@@ -81,4 +82,17 @@ private static void testHelloDocker() throws Exception {
+ .shouldHaveExitValue(0)
+ .shouldContain("Hello Docker");
+ }
++
++
++ private static void testJavaVersionWithCgMounts() throws Exception {
++ DockerRunOptions opts =
++ new DockerRunOptions(imageNameAndTag, "/jdk/bin/java", "-version")
++ .addDockerOpts("-v", "/sys/fs/cgroup:/cgroups-in:ro");
++
++ // Duplicated cgroup mounts should be handled by the container detection
++ // code and should not cause any error/warning output.
++ DockerTestUtils.dockerRunJava(opts)
++ .shouldHaveExitValue(0)
++ .shouldNotMatch("\\[os,container *\\]");
++ }
+ }
+diff --git a/test/hotspot/jtreg/containers/docker/TestCPUAwareness.java b/test/hotspot/jtreg/containers/docker/TestCPUAwareness.java
+index 93881c615bd9..a41dc9c39392 100644
+--- a/test/hotspot/jtreg/containers/docker/TestCPUAwareness.java
++++ b/test/hotspot/jtreg/containers/docker/TestCPUAwareness.java
+@@ -70,10 +70,11 @@ public static void main(String[] args) throws Exception {
+ testActiveProcessorCount(2, 2);
+
+ // cpu quota and period
+- testCpuQuotaAndPeriod(50*1000, 100*1000);
+- testCpuQuotaAndPeriod(100*1000, 100*1000);
+- testCpuQuotaAndPeriod(150*1000, 100*1000);
+- testCpuQuotaAndPeriod(400*1000, 100*1000);
++ testCpuQuotaAndPeriod(50*1000, 100*1000, false);
++ testCpuQuotaAndPeriod(100*1000, 100*1000, false);
++ testCpuQuotaAndPeriod(150*1000, 100*1000, false);
++ testCpuQuotaAndPeriod(400*1000, 100*1000, false);
++ testCpuQuotaAndPeriod(50*1000, 100*1000, true /* additional cgroup mount */);
+
+ testOperatingSystemMXBeanAwareness("0.5", "1");
+ testOperatingSystemMXBeanAwareness("1.0", "1");
+@@ -153,7 +154,7 @@ private static int adjustExpectedAPCForAvailableCPUs(int expectedAPC) {
+ }
+
+
+- private static void testCpuQuotaAndPeriod(int quota, int period)
++ private static void testCpuQuotaAndPeriod(int quota, int period, boolean addCgmounts)
+ throws Exception {
+ Common.logNewTestCase("test cpu quota and period: ");
+ System.out.println("quota = " + quota);
+@@ -167,6 +168,10 @@ private static void testCpuQuotaAndPeriod(int quota, int period)
+ .addDockerOpts("--cpu-period=" + period)
+ .addDockerOpts("--cpu-quota=" + quota);
+
++ if (addCgmounts) {
++ opts = opts.addDockerOpts("--volume", "/sys/fs/cgroup:/cgroups-in:ro");
++ }
++
+ Common.run(opts)
+ .shouldMatch("CPU Period is.*" + period)
+ .shouldMatch("CPU Quota is.*" + quota)
+diff --git a/test/hotspot/jtreg/containers/docker/TestMemoryAwareness.java b/test/hotspot/jtreg/containers/docker/TestMemoryAwareness.java
+index ff5cd23cc65f..d6ff603157a6 100644
+--- a/test/hotspot/jtreg/containers/docker/TestMemoryAwareness.java
++++ b/test/hotspot/jtreg/containers/docker/TestMemoryAwareness.java
+@@ -63,10 +63,11 @@ public static void main(String[] args) throws Exception {
+ DockerTestUtils.buildJdkContainerImage(imageName);
+
+ try {
+- testMemoryLimit("100m", "104857600");
+- testMemoryLimit("500m", "524288000");
+- testMemoryLimit("1g", "1073741824");
+- testMemoryLimit("4g", "4294967296");
++ testMemoryLimit("100m", "104857600", false);
++ testMemoryLimit("500m", "524288000", false);
++ testMemoryLimit("1g", "1073741824", false);
++ testMemoryLimit("4g", "4294967296", false);
++ testMemoryLimit("100m", "104857600", true /* additional cgroup mount */);
+
+ testMemorySoftLimit("500m", "524288000");
+ testMemorySoftLimit("1g", "1073741824");
+@@ -98,7 +99,7 @@ public static void main(String[] args) throws Exception {
+ }
+
+
+- private static void testMemoryLimit(String valueToSet, String expectedTraceValue)
++ private static void testMemoryLimit(String valueToSet, String expectedTraceValue, boolean addCgmounts)
+ throws Exception {
+
+ Common.logNewTestCase("memory limit: " + valueToSet);
+@@ -106,6 +107,10 @@ private static void testMemoryLimit(String valueToSet, String expectedTraceValue
+ DockerRunOptions opts = Common.newOpts(imageName)
+ .addDockerOpts("--memory", valueToSet);
+
++ if (addCgmounts) {
++ opts = opts.addDockerOpts("--volume", "/sys/fs/cgroup:/cgroups-in:ro");
++ }
++
+ Common.run(opts)
+ .shouldMatch("Memory Limit is:.*" + expectedTraceValue);
+ }
diff --git a/srcpkgs/openjdk18-bootstrap/template b/srcpkgs/openjdk18-bootstrap/template
new file mode 100644
index 0000000000000..ed4eb045ec054
--- /dev/null
+++ b/srcpkgs/openjdk18-bootstrap/template
@@ -0,0 +1,101 @@
+# Template file for 'openjdk18-bootstrap'
+pkgname=openjdk18-bootstrap
+version=18.0.2.1+0
+revision=1
+_gtest_ver=1.8.1
+_java_ver="${version%%.*}"
+_jdk_update="${version#*+}"
+_base_version="${version%.?+*}"
+_jdk_home="usr/lib/jvm/openjdk${_java_ver}"
+archs="x86_64* aarch64*"
+create_wrksrc=yes
+build_wrksrc="jdk${_java_ver}u-jdk-${version/+/-}"
+build_style=gnu-configure
+configure_args="--disable-warnings-as-errors
+ --enable-unlimited-crypto
+ --with-zlib=system
+ --with-libjpeg=system
+ --with-giflib=system
+ --with-libpng=system
+ --with-lcms=system
+ --with-jtreg=no
+ --with-gtest=../googletest-release-${_gtest_ver}
+ --with-debug-level=release
+ --with-native-debug-symbols=internal
+ --with-jobs=${XBPS_ORIG_MAKEJOBS}
+ --with-version-pre=
+ --with-version-build=${_jdk_update}
+ --with-version-opt=void-r${revision}
+ --with-vendor-name=Void
+ --with-vendor-url=https://voidlinux.org/
+ --with-vendor-bug-url=https://github.com/void-linux/void-packages/issues
+ --with-vendor-vm-bug-url=https://github.com/void-linux/void-packages/issues
+ --with-boot-jdk=/usr/lib/jvm/openjdk$(( _java_ver - 1 ))"
+make_build_args="images"
+make_check_target="test-hotspot-gtest"
+hostmakedepends="pkg-config automake autoconf cpio tar unzip zip ca-certificates
+ openssl zlib-devel which make-ca openjdk17"
+makedepends="libXrender-devel libXtst-devel libXt-devel libXrandr-devel
+ giflib-devel libjpeg-turbo-devel cups-devel freetype-devel alsa-lib-devel
+ fontconfig-devel zlib-devel lcms2-devel"
+short_desc="OpenJDK Java Development Kit (bootstrap version ${_java_ver})"
+maintainer="classabbyamp <void@placeviolette.net>"
+license="GPL-2.0-only WITH Classpath-exception-2.0"
+homepage="http://openjdk.java.net/"
+distfiles="https://github.com/openjdk/jdk${_java_ver}u/archive/jdk-${version}.tar.gz
+ https://github.com/google/googletest/archive/refs/tags/release-${_gtest_ver}.tar.gz"
+checksum="d3955839c1f566f949fbdf5d4f32a6fac2e57598fba2a1cbc8557c96df6ac8c4
+ 9bf1fe5182a604b4135edc1a425ae356c9ad15e9b23f9f12a02e80184c3a249c"
+nocross=yes
+repository=bootstrap
+patch_args="-Np1 --directory=$build_wrksrc"
+
+# Build and check are still parallel, but don't use -jN.
+disable_parallel_build=yes
+disable_parallel_check=yes
+
+case "$XBPS_TARGET_MACHINE" in
+ i686*|arm*) broken="Unsupported architecture" ;;
+esac
+
+post_extract() {
+ chmod +x "$build_wrksrc"/configure
+ if [ "$XBPS_TARGET_LIBC" = "musl" ]; then
+ rm -r "$build_wrksrc"/src/jdk.hotspot.agent
+ fi
+}
+
+do_configure() {
+ CFLAGS=${CFLAGS/-D_FORTIFY_SOURCE=2/}
+ CXXFLAGS=${CXXFLAGS/-D_FORTIFY_SOURCE=2/}
+
+ # force ELFv2 for ppc64 just in case
+ case "$XBPS_TARGET_MACHINE" in
+ ppc64*)
+ CFLAGS+=" -DABI_ELFv2"
+ CXXFLAGS+=" -DABI_ELFv2"
+ ;;
+ esac
+
+ configure_args=${configure_args/--with-libtool-sysroot=$XBPS_CROSS_BASE}
+ if [ "$XBPS_CCACHE" ] && [ -z "$CROSS_BUILD" ]; then
+ configure_args+=" --enable-ccache"
+ CC="/usr/bin/cc"
+ CXX="/usr/bin/c++"
+ fi
+ ./configure ${configure_args} \
+ --with-extra-cflags="$CFLAGS" \
+ --with-extra-cxxflags="$CXXFLAGS" \
+ --with-extra-ldflags="$LDFLAGS" \
+ READELF="$READELF" AR="$AR" STRIP="$STRIP" NM="$NM" \
+ OBJDUMP="$OBJDUMP" OBJCOPY="$OBJCOPY"
+}
+
+pre_install() {
+ make_install_args="INSTALL_PREFIX=${DESTDIR}/usr/lib"
+}
+
+post_install() {
+ rm -rf "${DESTDIR}"/usr/lib/bin
+ mv "${DESTDIR}"/usr/lib/jvm/openjdk-"${_base_version}" "${DESTDIR}/$_jdk_home"
+}
diff --git a/srcpkgs/openjdk18-bootstrap/update b/srcpkgs/openjdk18-bootstrap/update
new file mode 100644
index 0000000000000..0c349f69c7ba9
--- /dev/null
+++ b/srcpkgs/openjdk18-bootstrap/update
@@ -0,0 +1,4 @@
+site="https://github.com/openjdk/jdk18u/tags"
+pattern='jdk-\K18\.[\d.+]+(?=\.)'
+# don't need to update the bootstrap package
+ignore="*"
From 0d35e4879ad7146fae02fd8a31d750b9cf3261a6 Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Fri, 22 Dec 2023 00:46:39 -0500
Subject: [PATCH 10/12] New package: openjdk19-bootstrap-19.0.2+7
---
.../patches/FixNullPtrCast.patch | 36 ++
.../openjdk19-bootstrap/patches/cgroups.patch | 406 ++++++++++++++++++
srcpkgs/openjdk19-bootstrap/template | 101 +++++
srcpkgs/openjdk19-bootstrap/update | 4 +
4 files changed, 547 insertions(+)
create mode 100644 srcpkgs/openjdk19-bootstrap/patches/FixNullPtrCast.patch
create mode 100644 srcpkgs/openjdk19-bootstrap/patches/cgroups.patch
create mode 100644 srcpkgs/openjdk19-bootstrap/template
create mode 100644 srcpkgs/openjdk19-bootstrap/update
diff --git a/srcpkgs/openjdk19-bootstrap/patches/FixNullPtrCast.patch b/srcpkgs/openjdk19-bootstrap/patches/FixNullPtrCast.patch
new file mode 100644
index 0000000000000..6f05158792732
--- /dev/null
+++ b/srcpkgs/openjdk19-bootstrap/patches/FixNullPtrCast.patch
@@ -0,0 +1,36 @@
+Patch taken from Alpine: https://git.alpinelinux.org/aports/tree/community/openjdk17/FixNullPtrCast.patch
+
+same fix for armv7l-musl added
+
+Subject: Fix cast errors with latest GCC
+Upstream: No
+Author: Simon Frankenberger <simon-alpine@fraho.eu>
+
+This patch fixes one remaining casting error reported by GCC 12 for aarch64
+
+--- old/src/hotspot/cpu/aarch64/interpreterRT_aarch64.cpp
++++ new/src/hotspot/cpu/aarch64/interpreterRT_aarch64.cpp
+@@ -267,7 +267,7 @@
+
+ virtual void pass_object() {
+ intptr_t* addr = single_slot_addr();
+- intptr_t value = *addr == 0 ? NULL : (intptr_t)addr;
++ intptr_t value = *addr == 0 ? (intptr_t) 0 : (intptr_t)addr;
+ if (pass_gpr(value) < 0) {
+ pass_stack<>(value);
+ }
+
+--- old/src/hotspot/cpu/arm/interpreterRT_arm.cpp
++++ new/src/hotspot/cpu/arm/interpreterRT_arm.cpp
+@@ -306,8 +306,8 @@
+ virtual void pass_object() {
+ intptr_t from_addr = (intptr_t)(_from + Interpreter::local_offset_in_bytes(0));
+ if(_last_gp < GPR_PARAMS) {
+- _toGP[_last_gp++] = (*(intptr_t*)from_addr == 0) ? NULL : from_addr;
++ _toGP[_last_gp++] = (*(intptr_t*)from_addr == 0) ? (intptr_t) 0 : (intptr_t)from_addr;
+ } else {
+- *_to++ = (*(intptr_t*)from_addr == 0) ? NULL : from_addr;
++ *_to++ = (*(intptr_t*)from_addr == 0) ? (intptr_t) 0 : (intptr_t)from_addr;
+ }
+ _from -= Interpreter::stackElementSize;
+ }
diff --git a/srcpkgs/openjdk19-bootstrap/patches/cgroups.patch b/srcpkgs/openjdk19-bootstrap/patches/cgroups.patch
new file mode 100644
index 0000000000000..efeaa0871a03b
--- /dev/null
+++ b/srcpkgs/openjdk19-bootstrap/patches/cgroups.patch
@@ -0,0 +1,406 @@
+From 8f3bbe950fb5a3d9f6cae122209df01df0f342f0 Mon Sep 17 00:00:00 2001
+From: casparcwang <casparcwang@tencent.com>
+Date: Thu, 15 Sep 2022 08:47:05 +0000
+Subject: [PATCH] 8293472: Incorrect container resource limit detection if
+ manual cgroup fs mounts present
+
+Reviewed-by: sgehwolf, iklam
+---
+ .../os/linux/cgroupSubsystem_linux.cpp | 69 +++++++++---------
+ .../os/linux/cgroupSubsystem_linux.hpp | 5 ++
+ .../cgroup/CgroupSubsystemFactory.java | 71 ++++++++++++++++---
+ .../containers/docker/DockerBasicTest.java | 14 ++++
+ .../containers/docker/TestCPUAwareness.java | 15 ++--
+ .../docker/TestMemoryAwareness.java | 15 ++--
+ 6 files changed, 135 insertions(+), 54 deletions(-)
+
+diff --git a/src/hotspot/os/linux/cgroupSubsystem_linux.cpp b/src/hotspot/os/linux/cgroupSubsystem_linux.cpp
+index baa7a40a9146..1f3a6dfcaf6b 100644
+--- a/src/hotspot/os/linux/cgroupSubsystem_linux.cpp
++++ b/src/hotspot/os/linux/cgroupSubsystem_linux.cpp
+@@ -123,6 +123,32 @@ CgroupSubsystem* CgroupSubsystemFactory::create() {
+ return new CgroupV1Subsystem(cpuset, cpu, cpuacct, pids, memory);
+ }
+
++void CgroupSubsystemFactory::set_controller_paths(CgroupInfo* cg_infos,
++ int controller,
++ const char* name,
++ char* mount_path,
++ char* root_path) {
++ if (cg_infos[controller]._mount_path != NULL) {
++ // On some systems duplicate controllers get mounted in addition to
++ // the main cgroup controllers most likely under /sys/fs/cgroup. In that
++ // case pick the one under /sys/fs/cgroup and discard others.
++ if (strstr(cg_infos[controller]._mount_path, "/sys/fs/cgroup") != cg_infos[controller]._mount_path) {
++ log_debug(os, container)("Duplicate %s controllers detected. Picking %s, skipping %s.",
++ name, mount_path, cg_infos[controller]._mount_path);
++ os::free(cg_infos[controller]._mount_path);
++ os::free(cg_infos[controller]._root_mount_path);
++ cg_infos[controller]._mount_path = os::strdup(mount_path);
++ cg_infos[controller]._root_mount_path = os::strdup(root_path);
++ } else {
++ log_debug(os, container)("Duplicate %s controllers detected. Picking %s, skipping %s.",
++ name, cg_infos[controller]._mount_path, mount_path);
++ }
++ } else {
++ cg_infos[controller]._mount_path = os::strdup(mount_path);
++ cg_infos[controller]._root_mount_path = os::strdup(root_path);
++ }
++}
++
+ bool CgroupSubsystemFactory::determine_type(CgroupInfo* cg_infos,
+ const char* proc_cgroups,
+ const char* proc_self_cgroup,
+@@ -288,7 +314,6 @@ bool CgroupSubsystemFactory::determine_type(CgroupInfo* cg_infos,
+ bool cgroupv2_mount_point_found = false;
+ bool any_cgroup_mounts_found = false;
+ while ((p = fgets(buf, MAXPATHLEN, mntinfo)) != NULL) {
+- char tmp_mount_point[MAXPATHLEN+1];
+ char tmp_fs_type[MAXPATHLEN+1];
+ char tmproot[MAXPATHLEN+1];
+ char tmpmount[MAXPATHLEN+1];
+@@ -299,15 +324,13 @@ bool CgroupSubsystemFactory::determine_type(CgroupInfo* cg_infos,
+ // Cgroup v2 relevant info. We only look for the _mount_path iff is_cgroupsV2 so
+ // as to avoid memory stomping of the _mount_path pointer later on in the cgroup v1
+ // block in the hybrid case.
+- //
+- if (is_cgroupsV2 && sscanf(p, "%*d %*d %*d:%*d %*s %s %*[^-]- %s %*s %*s", tmp_mount_point, tmp_fs_type) == 2) {
++ if (is_cgroupsV2 && sscanf(p, "%*d %*d %*d:%*d %s %s %*[^-]- %s %*s %*s", tmproot, tmpmount, tmp_fs_type) == 3) {
+ // we likely have an early match return (e.g. cgroup fs match), be sure we have cgroup2 as fstype
+- if (!cgroupv2_mount_point_found && strcmp("cgroup2", tmp_fs_type) == 0) {
++ if (strcmp("cgroup2", tmp_fs_type) == 0) {
+ cgroupv2_mount_point_found = true;
+ any_cgroup_mounts_found = true;
+ for (int i = 0; i < CG_INFO_LENGTH; i++) {
+- assert(cg_infos[i]._mount_path == NULL, "_mount_path memory stomping");
+- cg_infos[i]._mount_path = os::strdup(tmp_mount_point);
++ set_controller_paths(cg_infos, i, "(cg2, unified)", tmpmount, tmproot);
+ }
+ }
+ }
+@@ -332,47 +355,23 @@ bool CgroupSubsystemFactory::determine_type(CgroupInfo* cg_infos,
+ while ((token = strsep(&cptr, ",")) != NULL) {
+ if (strcmp(token, "memory") == 0) {
+ any_cgroup_mounts_found = true;
+- assert(cg_infos[MEMORY_IDX]._mount_path == NULL, "stomping of _mount_path");
+- cg_infos[MEMORY_IDX]._mount_path = os::strdup(tmpmount);
+- cg_infos[MEMORY_IDX]._root_mount_path = os::strdup(tmproot);
++ set_controller_paths(cg_infos, MEMORY_IDX, token, tmpmount, tmproot);
+ cg_infos[MEMORY_IDX]._data_complete = true;
+ } else if (strcmp(token, "cpuset") == 0) {
+ any_cgroup_mounts_found = true;
+- if (cg_infos[CPUSET_IDX]._mount_path != NULL) {
+- // On some systems duplicate cpuset controllers get mounted in addition to
+- // the main cgroup controllers most likely under /sys/fs/cgroup. In that
+- // case pick the one under /sys/fs/cgroup and discard others.
+- if (strstr(cg_infos[CPUSET_IDX]._mount_path, "/sys/fs/cgroup") != cg_infos[CPUSET_IDX]._mount_path) {
+- log_warning(os, container)("Duplicate cpuset controllers detected. Picking %s, skipping %s.",
+- tmpmount, cg_infos[CPUSET_IDX]._mount_path);
+- os::free(cg_infos[CPUSET_IDX]._mount_path);
+- cg_infos[CPUSET_IDX]._mount_path = os::strdup(tmpmount);
+- } else {
+- log_warning(os, container)("Duplicate cpuset controllers detected. Picking %s, skipping %s.",
+- cg_infos[CPUSET_IDX]._mount_path, tmpmount);
+- }
+- } else {
+- cg_infos[CPUSET_IDX]._mount_path = os::strdup(tmpmount);
+- }
+- cg_infos[CPUSET_IDX]._root_mount_path = os::strdup(tmproot);
++ set_controller_paths(cg_infos, CPUSET_IDX, token, tmpmount, tmproot);
+ cg_infos[CPUSET_IDX]._data_complete = true;
+ } else if (strcmp(token, "cpu") == 0) {
+ any_cgroup_mounts_found = true;
+- assert(cg_infos[CPU_IDX]._mount_path == NULL, "stomping of _mount_path");
+- cg_infos[CPU_IDX]._mount_path = os::strdup(tmpmount);
+- cg_infos[CPU_IDX]._root_mount_path = os::strdup(tmproot);
++ set_controller_paths(cg_infos, CPU_IDX, token, tmpmount, tmproot);
+ cg_infos[CPU_IDX]._data_complete = true;
+ } else if (strcmp(token, "cpuacct") == 0) {
+ any_cgroup_mounts_found = true;
+- assert(cg_infos[CPUACCT_IDX]._mount_path == NULL, "stomping of _mount_path");
+- cg_infos[CPUACCT_IDX]._mount_path = os::strdup(tmpmount);
+- cg_infos[CPUACCT_IDX]._root_mount_path = os::strdup(tmproot);
++ set_controller_paths(cg_infos, CPUACCT_IDX, token, tmpmount, tmproot);
+ cg_infos[CPUACCT_IDX]._data_complete = true;
+ } else if (strcmp(token, "pids") == 0) {
+ any_cgroup_mounts_found = true;
+- assert(cg_infos[PIDS_IDX]._mount_path == NULL, "stomping of _mount_path");
+- cg_infos[PIDS_IDX]._mount_path = os::strdup(tmpmount);
+- cg_infos[PIDS_IDX]._root_mount_path = os::strdup(tmproot);
++ set_controller_paths(cg_infos, PIDS_IDX, token, tmpmount, tmproot);
+ cg_infos[PIDS_IDX]._data_complete = true;
+ }
+ }
+diff --git a/src/hotspot/os/linux/cgroupSubsystem_linux.hpp b/src/hotspot/os/linux/cgroupSubsystem_linux.hpp
+index 2e3fc8e8bc78..91456b3d0e14 100644
+--- a/src/hotspot/os/linux/cgroupSubsystem_linux.hpp
++++ b/src/hotspot/os/linux/cgroupSubsystem_linux.hpp
+@@ -311,6 +311,11 @@ class CgroupSubsystemFactory: AllStatic {
+ }
+ #endif
+
++ static void set_controller_paths(CgroupInfo* cg_infos,
++ int controller,
++ const char* name,
++ char* mount_path,
++ char* root_path);
+ // Determine the cgroup type (version 1 or version 2), given
+ // relevant paths to files. Sets 'flags' accordingly.
+ static bool determine_type(CgroupInfo* cg_infos,
+diff --git a/test/hotspot/jtreg/containers/cgroup/CgroupSubsystemFactory.java b/test/hotspot/jtreg/containers/cgroup/CgroupSubsystemFactory.java
+index 54807119d82e..7eb78fa447fd 100644
+--- a/test/hotspot/jtreg/containers/cgroup/CgroupSubsystemFactory.java
++++ b/test/hotspot/jtreg/containers/cgroup/CgroupSubsystemFactory.java
+@@ -62,11 +62,19 @@ public class CgroupSubsystemFactory {
+ private Path cgroupv1MntInfoZeroHierarchy;
+ private Path cgroupv2CgInfoZeroHierarchy;
+ private Path cgroupv2MntInfoZeroHierarchy;
++ private Path cgroupv2MntInfoDouble;
++ private Path cgroupv2MntInfoDouble2;
+ private Path cgroupv1CgInfoNonZeroHierarchy;
+ private Path cgroupv1MntInfoNonZeroHierarchyOtherOrder;
+ private Path cgroupv1MntInfoNonZeroHierarchy;
+ private Path cgroupv1MntInfoDoubleCpuset;
+ private Path cgroupv1MntInfoDoubleCpuset2;
++ private Path cgroupv1MntInfoDoubleMemory;
++ private Path cgroupv1MntInfoDoubleMemory2;
++ private Path cgroupv1MntInfoDoubleCpu;
++ private Path cgroupv1MntInfoDoubleCpu2;
++ private Path cgroupv1MntInfoDoublePids;
++ private Path cgroupv1MntInfoDoublePids2;
+ private Path cgroupv1MntInfoSystemdOnly;
+ private String mntInfoEmpty = "";
+ private Path cgroupV1SelfCgroup;
+@@ -160,6 +168,15 @@ public class CgroupSubsystemFactory {
+ private String mntInfoCgroupv1MoreCpusetLine = "121 32 0:37 / /cpusets rw,relatime shared:69 - cgroup none rw,cpuset\n";
+ private String mntInfoCgroupv1DoubleCpuset = mntInfoCgroupv1MoreCpusetLine + mntInfoHybrid;
+ private String mntInfoCgroupv1DoubleCpuset2 = mntInfoHybrid + mntInfoCgroupv1MoreCpusetLine;
++ private String mntInfoCgroupv1MoreMemoryLine = "1100 1098 0:28 / /memory rw,nosuid,nodev,noexec,relatime master:6 - cgroup cgroup rw,memory\n";
++ private String mntInfoCgroupv1DoubleMemory = mntInfoCgroupv1MoreMemoryLine + mntInfoHybrid;
++ private String mntInfoCgroupv1DoubleMemory2 = mntInfoHybrid + mntInfoCgroupv1MoreMemoryLine;
++ private String mntInfoCgroupv1DoubleCpuLine = "1101 1098 0:29 / /cpu,cpuacct rw,nosuid,nodev,noexec,relatime master:7 - cgroup cgroup rw,cpu,cpuacct\n";
++ private String mntInfoCgroupv1DoubleCpu = mntInfoCgroupv1DoubleCpuLine + mntInfoHybrid;
++ private String mntInfoCgroupv1DoubleCpu2 = mntInfoHybrid + mntInfoCgroupv1DoubleCpuLine;
++ private String mntInfoCgroupv1DoublePidsLine = "1107 1098 0:35 / /pids rw,nosuid,nodev,noexec,relatime master:13 - cgroup cgroup rw,pids\n";
++ private String mntInfoCgroupv1DoublePids = mntInfoCgroupv1DoublePidsLine + mntInfoHybrid;
++ private String mntInfoCgroupv1DoublePids2 = mntInfoHybrid + mntInfoCgroupv1DoublePidsLine;
+ private String cgroupsNonZeroHierarchy =
+ "#subsys_name hierarchy num_cgroups enabled\n" +
+ "cpuset 3 1 1\n" +
+@@ -175,7 +192,11 @@ public class CgroupSubsystemFactory {
+ "hugetlb 6 1 1\n" +
+ "pids 9 80 1"; // hierarchy has to match procSelfCgroupHybridContent
+ private String mntInfoCgroupsV2Only =
+- "28 21 0:25 / /sys/fs/cgroup rw,nosuid,nodev,noexec,relatime shared:4 - cgroup2 none rw,seclabel,nsdelegate";
++ "28 21 0:25 / /sys/fs/cgroup rw,nosuid,nodev,noexec,relatime shared:4 - cgroup2 none rw,seclabel,nsdelegate\n";
++ private String mntInfoCgroupsV2MoreLine =
++ "240 232 0:24 /../.. /cgroup-in ro,relatime - cgroup2 cgroup2 rw,nsdelegate\n";
++ private String mntInfoCgroupsV2Double = mntInfoCgroupsV2MoreLine + mntInfoCgroupsV2Only;
++ private String mntInfoCgroupsV2Double2 = mntInfoCgroupsV2Only + mntInfoCgroupsV2MoreLine;
+ private String mntInfoCgroupsV1SystemdOnly =
+ "35 26 0:26 / /sys/fs/cgroup/systemd rw,nosuid,nodev,noexec,relatime - cgroup systemd rw,name=systemd\n" +
+ "26 18 0:19 / /sys/fs/cgroup rw,relatime - tmpfs none rw,size=4k,mode=755\n";
+@@ -217,6 +238,12 @@ private void setup() {
+ cgroupv2MntInfoZeroHierarchy = Paths.get(existingDirectory.toString(), "mountinfo_cgroupv2");
+ Files.writeString(cgroupv2MntInfoZeroHierarchy, mntInfoCgroupsV2Only);
+
++ cgroupv2MntInfoDouble = Paths.get(existingDirectory.toString(), "mountinfo_cgroupv2_double");
++ Files.writeString(cgroupv2MntInfoDouble, mntInfoCgroupsV2Double);
++
++ cgroupv2MntInfoDouble2 = Paths.get(existingDirectory.toString(), "mountinfo_cgroupv2_double2");
++ Files.writeString(cgroupv2MntInfoDouble2, mntInfoCgroupsV2Double2);
++
+ cgroupv1CgInfoNonZeroHierarchy = Paths.get(existingDirectory.toString(), "cgroups_non_zero");
+ Files.writeString(cgroupv1CgInfoNonZeroHierarchy, cgroupsNonZeroHierarchy);
+
+@@ -244,6 +271,24 @@ private void setup() {
+ cgroupv1MntInfoDoubleCpuset2 = Paths.get(existingDirectory.toString(), "mnt_info_cgroupv1_double_cpuset2");
+ Files.writeString(cgroupv1MntInfoDoubleCpuset2, mntInfoCgroupv1DoubleCpuset2);
+
++ cgroupv1MntInfoDoubleMemory = Paths.get(existingDirectory.toString(), "mnt_info_cgroupv1_double_memory");
++ Files.writeString(cgroupv1MntInfoDoubleMemory, mntInfoCgroupv1DoubleMemory);
++
++ cgroupv1MntInfoDoubleMemory2 = Paths.get(existingDirectory.toString(), "mnt_info_cgroupv1_double_memory2");
++ Files.writeString(cgroupv1MntInfoDoubleMemory2, mntInfoCgroupv1DoubleMemory2);
++
++ cgroupv1MntInfoDoubleCpu = Paths.get(existingDirectory.toString(), "mnt_info_cgroupv1_double_cpu");
++ Files.writeString(cgroupv1MntInfoDoubleCpu, mntInfoCgroupv1DoubleCpu);
++
++ cgroupv1MntInfoDoubleCpu2 = Paths.get(existingDirectory.toString(), "mnt_info_cgroupv1_double_cpu2");
++ Files.writeString(cgroupv1MntInfoDoubleCpu2, mntInfoCgroupv1DoubleCpu2);
++
++ cgroupv1MntInfoDoublePids = Paths.get(existingDirectory.toString(), "mnt_info_cgroupv1_double_pids");
++ Files.writeString(cgroupv1MntInfoDoublePids, mntInfoCgroupv1DoublePids);
++
++ cgroupv1MntInfoDoublePids2 = Paths.get(existingDirectory.toString(), "mnt_info_cgroupv1_double_pids2");
++ Files.writeString(cgroupv1MntInfoDoublePids2, mntInfoCgroupv1DoublePids2);
++
+ cgroupv1MntInfoSystemdOnly = Paths.get(existingDirectory.toString(), "mnt_info_cgroupv1_systemd_only");
+ Files.writeString(cgroupv1MntInfoSystemdOnly, mntInfoCgroupsV1SystemdOnly);
+
+@@ -291,14 +336,14 @@ public void testCgroupv1JoinControllerCombo(WhiteBox wb) {
+ System.out.println("testCgroupv1JoinControllerMounts PASSED!");
+ }
+
+- public void testCgroupv1MultipleCpusetMounts(WhiteBox wb, Path mountInfo) {
++ public void testCgroupv1MultipleControllerMounts(WhiteBox wb, Path mountInfo) {
+ String procCgroups = cgroupv1CgInfoNonZeroHierarchy.toString();
+ String procSelfCgroup = cgroupV1SelfCgroup.toString();
+ String procSelfMountinfo = mountInfo.toString();
+ int retval = wb.validateCgroup(procCgroups, procSelfCgroup, procSelfMountinfo);
+- Asserts.assertEQ(CGROUPS_V1, retval, "Multiple cpuset controllers, but only one in /sys/fs/cgroup");
++ Asserts.assertEQ(CGROUPS_V1, retval, "Multiple controllers, but only one in /sys/fs/cgroup");
+ Asserts.assertTrue(isValidCgroup(retval));
+- System.out.println("testCgroupv1MultipleCpusetMounts PASSED!");
++ System.out.println("testCgroupv1MultipleControllerMounts PASSED!");
+ }
+
+ public void testCgroupv1SystemdOnly(WhiteBox wb) {
+@@ -341,10 +386,10 @@ public void testCgroupv1MissingMemoryController(WhiteBox wb) {
+ System.out.println("testCgroupv1MissingMemoryController PASSED!");
+ }
+
+- public void testCgroupv2(WhiteBox wb) {
++ public void testCgroupv2(WhiteBox wb, Path mountInfo) {
+ String procCgroups = cgroupv2CgInfoZeroHierarchy.toString();
+ String procSelfCgroup = cgroupV2SelfCgroup.toString();
+- String procSelfMountinfo = cgroupv2MntInfoZeroHierarchy.toString();
++ String procSelfMountinfo = mountInfo.toString();
+ int retval = wb.validateCgroup(procCgroups, procSelfCgroup, procSelfMountinfo);
+ Asserts.assertEQ(CGROUPS_V2, retval, "Expected");
+ Asserts.assertTrue(isValidCgroup(retval));
+@@ -388,13 +433,21 @@ public static void main(String[] args) throws Exception {
+ try {
+ test.testCgroupv1SystemdOnly(wb);
+ test.testCgroupv1NoMounts(wb);
+- test.testCgroupv2(wb);
++ test.testCgroupv2(wb, test.cgroupv2MntInfoZeroHierarchy);
++ test.testCgroupv2(wb, test.cgroupv2MntInfoDouble);
++ test.testCgroupv2(wb, test.cgroupv2MntInfoDouble2);
+ test.testCgroupV1Hybrid(wb);
+ test.testCgroupV1HybridMntInfoOrder(wb);
+ test.testCgroupv1MissingMemoryController(wb);
+ test.testCgroupv2NoCgroup2Fs(wb);
+- test.testCgroupv1MultipleCpusetMounts(wb, test.cgroupv1MntInfoDoubleCpuset);
+- test.testCgroupv1MultipleCpusetMounts(wb, test.cgroupv1MntInfoDoubleCpuset2);
++ test.testCgroupv1MultipleControllerMounts(wb, test.cgroupv1MntInfoDoubleCpuset);
++ test.testCgroupv1MultipleControllerMounts(wb, test.cgroupv1MntInfoDoubleCpuset2);
++ test.testCgroupv1MultipleControllerMounts(wb, test.cgroupv1MntInfoDoubleMemory);
++ test.testCgroupv1MultipleControllerMounts(wb, test.cgroupv1MntInfoDoubleMemory2);
++ test.testCgroupv1MultipleControllerMounts(wb, test.cgroupv1MntInfoDoubleCpu);
++ test.testCgroupv1MultipleControllerMounts(wb, test.cgroupv1MntInfoDoubleCpu2);
++ test.testCgroupv1MultipleControllerMounts(wb, test.cgroupv1MntInfoDoublePids);
++ test.testCgroupv1MultipleControllerMounts(wb, test.cgroupv1MntInfoDoublePids2);
+ test.testCgroupv1JoinControllerCombo(wb);
+ test.testNonZeroHierarchyOnlyFreezer(wb);
+ } finally {
+diff --git a/test/hotspot/jtreg/containers/docker/DockerBasicTest.java b/test/hotspot/jtreg/containers/docker/DockerBasicTest.java
+index bcbd2ffa21df..357eb3db4972 100644
+--- a/test/hotspot/jtreg/containers/docker/DockerBasicTest.java
++++ b/test/hotspot/jtreg/containers/docker/DockerBasicTest.java
+@@ -53,6 +53,7 @@ public static void main(String[] args) throws Exception {
+ try {
+ testJavaVersion();
+ testHelloDocker();
++ testJavaVersionWithCgMounts();
+ } finally {
+ if (!DockerTestUtils.RETAIN_IMAGE_AFTER_TEST) {
+ DockerTestUtils.removeDockerImage(imageNameAndTag);
+@@ -81,4 +82,17 @@ private static void testHelloDocker() throws Exception {
+ .shouldHaveExitValue(0)
+ .shouldContain("Hello Docker");
+ }
++
++
++ private static void testJavaVersionWithCgMounts() throws Exception {
++ DockerRunOptions opts =
++ new DockerRunOptions(imageNameAndTag, "/jdk/bin/java", "-version")
++ .addDockerOpts("-v", "/sys/fs/cgroup:/cgroups-in:ro");
++
++ // Duplicated cgroup mounts should be handled by the container detection
++ // code and should not cause any error/warning output.
++ DockerTestUtils.dockerRunJava(opts)
++ .shouldHaveExitValue(0)
++ .shouldNotMatch("\\[os,container *\\]");
++ }
+ }
+diff --git a/test/hotspot/jtreg/containers/docker/TestCPUAwareness.java b/test/hotspot/jtreg/containers/docker/TestCPUAwareness.java
+index 93881c615bd9..a41dc9c39392 100644
+--- a/test/hotspot/jtreg/containers/docker/TestCPUAwareness.java
++++ b/test/hotspot/jtreg/containers/docker/TestCPUAwareness.java
+@@ -70,10 +70,11 @@ public static void main(String[] args) throws Exception {
+ testActiveProcessorCount(2, 2);
+
+ // cpu quota and period
+- testCpuQuotaAndPeriod(50*1000, 100*1000);
+- testCpuQuotaAndPeriod(100*1000, 100*1000);
+- testCpuQuotaAndPeriod(150*1000, 100*1000);
+- testCpuQuotaAndPeriod(400*1000, 100*1000);
++ testCpuQuotaAndPeriod(50*1000, 100*1000, false);
++ testCpuQuotaAndPeriod(100*1000, 100*1000, false);
++ testCpuQuotaAndPeriod(150*1000, 100*1000, false);
++ testCpuQuotaAndPeriod(400*1000, 100*1000, false);
++ testCpuQuotaAndPeriod(50*1000, 100*1000, true /* additional cgroup mount */);
+
+ testOperatingSystemMXBeanAwareness("0.5", "1");
+ testOperatingSystemMXBeanAwareness("1.0", "1");
+@@ -153,7 +154,7 @@ private static int adjustExpectedAPCForAvailableCPUs(int expectedAPC) {
+ }
+
+
+- private static void testCpuQuotaAndPeriod(int quota, int period)
++ private static void testCpuQuotaAndPeriod(int quota, int period, boolean addCgmounts)
+ throws Exception {
+ Common.logNewTestCase("test cpu quota and period: ");
+ System.out.println("quota = " + quota);
+@@ -167,6 +168,10 @@ private static void testCpuQuotaAndPeriod(int quota, int period)
+ .addDockerOpts("--cpu-period=" + period)
+ .addDockerOpts("--cpu-quota=" + quota);
+
++ if (addCgmounts) {
++ opts = opts.addDockerOpts("--volume", "/sys/fs/cgroup:/cgroups-in:ro");
++ }
++
+ Common.run(opts)
+ .shouldMatch("CPU Period is.*" + period)
+ .shouldMatch("CPU Quota is.*" + quota)
+diff --git a/test/hotspot/jtreg/containers/docker/TestMemoryAwareness.java b/test/hotspot/jtreg/containers/docker/TestMemoryAwareness.java
+index ff5cd23cc65f..d6ff603157a6 100644
+--- a/test/hotspot/jtreg/containers/docker/TestMemoryAwareness.java
++++ b/test/hotspot/jtreg/containers/docker/TestMemoryAwareness.java
+@@ -63,10 +63,11 @@ public static void main(String[] args) throws Exception {
+ DockerTestUtils.buildJdkContainerImage(imageName);
+
+ try {
+- testMemoryLimit("100m", "104857600");
+- testMemoryLimit("500m", "524288000");
+- testMemoryLimit("1g", "1073741824");
+- testMemoryLimit("4g", "4294967296");
++ testMemoryLimit("100m", "104857600", false);
++ testMemoryLimit("500m", "524288000", false);
++ testMemoryLimit("1g", "1073741824", false);
++ testMemoryLimit("4g", "4294967296", false);
++ testMemoryLimit("100m", "104857600", true /* additional cgroup mount */);
+
+ testMemorySoftLimit("500m", "524288000");
+ testMemorySoftLimit("1g", "1073741824");
+@@ -98,7 +99,7 @@ public static void main(String[] args) throws Exception {
+ }
+
+
+- private static void testMemoryLimit(String valueToSet, String expectedTraceValue)
++ private static void testMemoryLimit(String valueToSet, String expectedTraceValue, boolean addCgmounts)
+ throws Exception {
+
+ Common.logNewTestCase("memory limit: " + valueToSet);
+@@ -106,6 +107,10 @@ private static void testMemoryLimit(String valueToSet, String expectedTraceValue
+ DockerRunOptions opts = Common.newOpts(imageName)
+ .addDockerOpts("--memory", valueToSet);
+
++ if (addCgmounts) {
++ opts = opts.addDockerOpts("--volume", "/sys/fs/cgroup:/cgroups-in:ro");
++ }
++
+ Common.run(opts)
+ .shouldMatch("Memory Limit is:.*" + expectedTraceValue);
+ }
diff --git a/srcpkgs/openjdk19-bootstrap/template b/srcpkgs/openjdk19-bootstrap/template
new file mode 100644
index 0000000000000..25ac0a7a17a2c
--- /dev/null
+++ b/srcpkgs/openjdk19-bootstrap/template
@@ -0,0 +1,101 @@
+# Template file for 'openjdk19-bootstrap'
+pkgname=openjdk19-bootstrap
+version=19.0.2+7
+revision=1
+_gtest_ver=1.8.1
+_java_ver="${version%%.*}"
+_jdk_update="${version#*+}"
+_base_version="${version%+*}"
+_jdk_home="usr/lib/jvm/openjdk${_java_ver}"
+archs="x86_64* aarch64*"
+create_wrksrc=yes
+build_wrksrc="jdk${_java_ver}u-jdk-${version/+/-}"
+build_style=gnu-configure
+configure_args="--disable-warnings-as-errors
+ --enable-unlimited-crypto
+ --with-zlib=system
+ --with-libjpeg=system
+ --with-giflib=system
+ --with-libpng=system
+ --with-lcms=system
+ --with-jtreg=no
+ --with-gtest=../googletest-release-${_gtest_ver}
+ --with-debug-level=release
+ --with-native-debug-symbols=internal
+ --with-jobs=${XBPS_ORIG_MAKEJOBS}
+ --with-version-pre=
+ --with-version-build=${_jdk_update}
+ --with-version-opt=void-r${revision}
+ --with-vendor-name=Void
+ --with-vendor-url=https://voidlinux.org/
+ --with-vendor-bug-url=https://github.com/void-linux/void-packages/issues
+ --with-vendor-vm-bug-url=https://github.com/void-linux/void-packages/issues
+ --with-boot-jdk=/usr/lib/jvm/openjdk$(( _java_ver - 1 ))"
+make_build_args="images"
+make_check_target="test-hotspot-gtest"
+hostmakedepends="pkg-config automake autoconf cpio tar unzip zip ca-certificates
+ openssl zlib-devel which make-ca openjdk$(( _java_ver - 1 ))-bootstrap"
+makedepends="libXrender-devel libXtst-devel libXt-devel libXrandr-devel
+ giflib-devel libjpeg-turbo-devel cups-devel freetype-devel alsa-lib-devel
+ fontconfig-devel zlib-devel lcms2-devel"
+short_desc="OpenJDK Java Development Kit (bootstrap version ${_java_ver})"
+maintainer="classabbyamp <void@placeviolette.net>"
+license="GPL-2.0-only WITH Classpath-exception-2.0"
+homepage="http://openjdk.java.net/"
+distfiles="https://github.com/openjdk/jdk${_java_ver}u/archive/jdk-${version}.tar.gz
+ https://github.com/google/googletest/archive/refs/tags/release-${_gtest_ver}.tar.gz"
+checksum="5903efd527dd08e9c235c8822e3d5699c3d18a8618c3e533307e8d6491ffbbf0
+ 9bf1fe5182a604b4135edc1a425ae356c9ad15e9b23f9f12a02e80184c3a249c"
+nocross=yes
+repository=bootstrap
+patch_args="-Np1 --directory=$build_wrksrc"
+
+# Build and check are still parallel, but don't use -jN.
+disable_parallel_build=yes
+disable_parallel_check=yes
+
+case "$XBPS_TARGET_MACHINE" in
+ i686*|arm*) broken="Unsupported architecture" ;;
+esac
+
+post_extract() {
+ chmod +x "$build_wrksrc"/configure
+ if [ "$XBPS_TARGET_LIBC" = "musl" ]; then
+ rm -r "$build_wrksrc"/src/jdk.hotspot.agent
+ fi
+}
+
+do_configure() {
+ CFLAGS=${CFLAGS/-D_FORTIFY_SOURCE=2/}
+ CXXFLAGS=${CXXFLAGS/-D_FORTIFY_SOURCE=2/}
+
+ # force ELFv2 for ppc64 just in case
+ case "$XBPS_TARGET_MACHINE" in
+ ppc64*)
+ CFLAGS+=" -DABI_ELFv2"
+ CXXFLAGS+=" -DABI_ELFv2"
+ ;;
+ esac
+
+ configure_args=${configure_args/--with-libtool-sysroot=$XBPS_CROSS_BASE}
+ if [ "$XBPS_CCACHE" ] && [ -z "$CROSS_BUILD" ]; then
+ configure_args+=" --enable-ccache"
+ CC="/usr/bin/cc"
+ CXX="/usr/bin/c++"
+ fi
+ ./configure ${configure_args} \
+ --with-extra-cflags="$CFLAGS" \
+ --with-extra-cxxflags="$CXXFLAGS" \
+ --with-extra-ldflags="$LDFLAGS" \
+ READELF="$READELF" AR="$AR" STRIP="$STRIP" NM="$NM" \
+ OBJDUMP="$OBJDUMP" OBJCOPY="$OBJCOPY"
+}
+
+pre_install() {
+ make_install_args="INSTALL_PREFIX=${DESTDIR}/usr/lib"
+}
+
+post_install() {
+ rm -rf "${DESTDIR}"/usr/lib/bin
+ mv "${DESTDIR}"/usr/lib/jvm/openjdk-"${_base_version}" "${DESTDIR}/$_jdk_home"
+}
diff --git a/srcpkgs/openjdk19-bootstrap/update b/srcpkgs/openjdk19-bootstrap/update
new file mode 100644
index 0000000000000..d8abe90aa84d2
--- /dev/null
+++ b/srcpkgs/openjdk19-bootstrap/update
@@ -0,0 +1,4 @@
+site="https://github.com/openjdk/jdk19u/tags"
+pattern='jdk-\K19\.[\d.+]+(?=\.)'
+# don't need to update the bootstrap package
+ignore="*"
From e7c786c6622121a2b804a8e04d4aa51a46780d0d Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Fri, 22 Dec 2023 00:47:05 -0500
Subject: [PATCH 11/12] New package: openjdk20-bootstrap-20.0.2+9
---
.../patches/FixNullPtrCast.patch | 36 +++++++
srcpkgs/openjdk20-bootstrap/template | 101 ++++++++++++++++++
srcpkgs/openjdk20-bootstrap/update | 4 +
3 files changed, 141 insertions(+)
create mode 100644 srcpkgs/openjdk20-bootstrap/patches/FixNullPtrCast.patch
create mode 100644 srcpkgs/openjdk20-bootstrap/template
create mode 100644 srcpkgs/openjdk20-bootstrap/update
diff --git a/srcpkgs/openjdk20-bootstrap/patches/FixNullPtrCast.patch b/srcpkgs/openjdk20-bootstrap/patches/FixNullPtrCast.patch
new file mode 100644
index 0000000000000..6f05158792732
--- /dev/null
+++ b/srcpkgs/openjdk20-bootstrap/patches/FixNullPtrCast.patch
@@ -0,0 +1,36 @@
+Patch taken from Alpine: https://git.alpinelinux.org/aports/tree/community/openjdk17/FixNullPtrCast.patch
+
+same fix for armv7l-musl added
+
+Subject: Fix cast errors with latest GCC
+Upstream: No
+Author: Simon Frankenberger <simon-alpine@fraho.eu>
+
+This patch fixes one remaining casting error reported by GCC 12 for aarch64
+
+--- old/src/hotspot/cpu/aarch64/interpreterRT_aarch64.cpp
++++ new/src/hotspot/cpu/aarch64/interpreterRT_aarch64.cpp
+@@ -267,7 +267,7 @@
+
+ virtual void pass_object() {
+ intptr_t* addr = single_slot_addr();
+- intptr_t value = *addr == 0 ? NULL : (intptr_t)addr;
++ intptr_t value = *addr == 0 ? (intptr_t) 0 : (intptr_t)addr;
+ if (pass_gpr(value) < 0) {
+ pass_stack<>(value);
+ }
+
+--- old/src/hotspot/cpu/arm/interpreterRT_arm.cpp
++++ new/src/hotspot/cpu/arm/interpreterRT_arm.cpp
+@@ -306,8 +306,8 @@
+ virtual void pass_object() {
+ intptr_t from_addr = (intptr_t)(_from + Interpreter::local_offset_in_bytes(0));
+ if(_last_gp < GPR_PARAMS) {
+- _toGP[_last_gp++] = (*(intptr_t*)from_addr == 0) ? NULL : from_addr;
++ _toGP[_last_gp++] = (*(intptr_t*)from_addr == 0) ? (intptr_t) 0 : (intptr_t)from_addr;
+ } else {
+- *_to++ = (*(intptr_t*)from_addr == 0) ? NULL : from_addr;
++ *_to++ = (*(intptr_t*)from_addr == 0) ? (intptr_t) 0 : (intptr_t)from_addr;
+ }
+ _from -= Interpreter::stackElementSize;
+ }
diff --git a/srcpkgs/openjdk20-bootstrap/template b/srcpkgs/openjdk20-bootstrap/template
new file mode 100644
index 0000000000000..a23849827ce9a
--- /dev/null
+++ b/srcpkgs/openjdk20-bootstrap/template
@@ -0,0 +1,101 @@
+# Template file for 'openjdk20-bootstrap'
+pkgname=openjdk20-bootstrap
+version=20.0.2+9
+revision=1
+_gtest_ver=1.8.1
+_java_ver="${version%%.*}"
+_jdk_update="${version#*+}"
+_base_version="${version%+*}"
+_jdk_home="usr/lib/jvm/openjdk${_java_ver}"
+archs="x86_64* aarch64*"
+create_wrksrc=yes
+build_wrksrc="jdk${_java_ver}u-jdk-${version/+/-}"
+build_style=gnu-configure
+configure_args="--disable-warnings-as-errors
+ --enable-unlimited-crypto
+ --with-zlib=system
+ --with-libjpeg=system
+ --with-giflib=system
+ --with-libpng=system
+ --with-lcms=system
+ --with-jtreg=no
+ --with-gtest=../googletest-release-${_gtest_ver}
+ --with-debug-level=release
+ --with-native-debug-symbols=internal
+ --with-jobs=${XBPS_ORIG_MAKEJOBS}
+ --with-version-pre=
+ --with-version-build=${_jdk_update}
+ --with-version-opt=void-r${revision}
+ --with-vendor-name=Void
+ --with-vendor-url=https://voidlinux.org/
+ --with-vendor-bug-url=https://github.com/void-linux/void-packages/issues
+ --with-vendor-vm-bug-url=https://github.com/void-linux/void-packages/issues
+ --with-boot-jdk=/usr/lib/jvm/openjdk$(( _java_ver - 1 ))"
+make_build_args="images"
+make_check_target="test-hotspot-gtest"
+hostmakedepends="pkg-config automake autoconf cpio tar unzip zip ca-certificates
+ openssl zlib-devel which make-ca openjdk$(( _java_ver - 1 ))-bootstrap"
+makedepends="libXrender-devel libXtst-devel libXt-devel libXrandr-devel
+ giflib-devel libjpeg-turbo-devel cups-devel freetype-devel alsa-lib-devel
+ fontconfig-devel zlib-devel lcms2-devel"
+short_desc="OpenJDK Java Development Kit (bootstrap version ${_java_ver})"
+maintainer="classabbyamp <void@placeviolette.net>"
+license="GPL-2.0-only WITH Classpath-exception-2.0"
+homepage="http://openjdk.java.net/"
+distfiles="https://github.com/openjdk/jdk${_java_ver}u/archive/jdk-${version}.tar.gz
+ https://github.com/google/googletest/archive/refs/tags/release-${_gtest_ver}.tar.gz"
+checksum="4d6f176075d5f2ce62fd16ebd5cc4c27a3e551ce4d3d3bc0e9946454e52fc88d
+ 9bf1fe5182a604b4135edc1a425ae356c9ad15e9b23f9f12a02e80184c3a249c"
+nocross=yes
+repository=bootstrap
+patch_args="-Np1 --directory=$build_wrksrc"
+
+# Build and check are still parallel, but don't use -jN.
+disable_parallel_build=yes
+disable_parallel_check=yes
+
+case "$XBPS_TARGET_MACHINE" in
+ i686*|arm*) broken="Unsupported architecture" ;;
+esac
+
+post_extract() {
+ chmod +x "$build_wrksrc"/configure
+ if [ "$XBPS_TARGET_LIBC" = "musl" ]; then
+ rm -r "$build_wrksrc"/src/jdk.hotspot.agent
+ fi
+}
+
+do_configure() {
+ CFLAGS=${CFLAGS/-D_FORTIFY_SOURCE=2/}
+ CXXFLAGS=${CXXFLAGS/-D_FORTIFY_SOURCE=2/}
+
+ # force ELFv2 for ppc64 just in case
+ case "$XBPS_TARGET_MACHINE" in
+ ppc64*)
+ CFLAGS+=" -DABI_ELFv2"
+ CXXFLAGS+=" -DABI_ELFv2"
+ ;;
+ esac
+
+ configure_args=${configure_args/--with-libtool-sysroot=$XBPS_CROSS_BASE}
+ if [ "$XBPS_CCACHE" ] && [ -z "$CROSS_BUILD" ]; then
+ configure_args+=" --enable-ccache"
+ CC="/usr/bin/cc"
+ CXX="/usr/bin/c++"
+ fi
+ ./configure ${configure_args} \
+ --with-extra-cflags="$CFLAGS" \
+ --with-extra-cxxflags="$CXXFLAGS" \
+ --with-extra-ldflags="$LDFLAGS" \
+ READELF="$READELF" AR="$AR" STRIP="$STRIP" NM="$NM" \
+ OBJDUMP="$OBJDUMP" OBJCOPY="$OBJCOPY"
+}
+
+pre_install() {
+ make_install_args="INSTALL_PREFIX=${DESTDIR}/usr/lib"
+}
+
+post_install() {
+ rm -rf "${DESTDIR}"/usr/lib/bin
+ mv "${DESTDIR}"/usr/lib/jvm/openjdk-"${_base_version}" "${DESTDIR}/$_jdk_home"
+}
diff --git a/srcpkgs/openjdk20-bootstrap/update b/srcpkgs/openjdk20-bootstrap/update
new file mode 100644
index 0000000000000..825bd945bfc9a
--- /dev/null
+++ b/srcpkgs/openjdk20-bootstrap/update
@@ -0,0 +1,4 @@
+site="https://github.com/openjdk/jdk20u/tags"
+pattern='jdk-\K20\.[\d.+]+(?=\.)'
+# don't need to update the bootstrap package
+ignore="*"
From 10a4161a7c6645c9587d89646e14e9b691e73b2c Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Fri, 22 Dec 2023 00:47:14 -0500
Subject: [PATCH 12/12] New package: openjdk21-21.0.1+12
---
srcpkgs/openjdk21-doc | 1 +
srcpkgs/openjdk21-jmods | 1 +
srcpkgs/openjdk21-jre | 1 +
srcpkgs/openjdk21-src | 1 +
srcpkgs/openjdk21-static-libs | 1 +
srcpkgs/openjdk21/template | 194 ++++++++++++++++++++++++++++++++++
srcpkgs/openjdk21/update | 1 +
7 files changed, 200 insertions(+)
create mode 120000 srcpkgs/openjdk21-doc
create mode 120000 srcpkgs/openjdk21-jmods
create mode 120000 srcpkgs/openjdk21-jre
create mode 120000 srcpkgs/openjdk21-src
create mode 120000 srcpkgs/openjdk21-static-libs
create mode 100644 srcpkgs/openjdk21/template
create mode 100644 srcpkgs/openjdk21/update
diff --git a/srcpkgs/openjdk21-doc b/srcpkgs/openjdk21-doc
new file mode 120000
index 0000000000000..57e991f86dff5
--- /dev/null
+++ b/srcpkgs/openjdk21-doc
@@ -0,0 +1 @@
+openjdk21
\ No newline at end of file
diff --git a/srcpkgs/openjdk21-jmods b/srcpkgs/openjdk21-jmods
new file mode 120000
index 0000000000000..57e991f86dff5
--- /dev/null
+++ b/srcpkgs/openjdk21-jmods
@@ -0,0 +1 @@
+openjdk21
\ No newline at end of file
diff --git a/srcpkgs/openjdk21-jre b/srcpkgs/openjdk21-jre
new file mode 120000
index 0000000000000..57e991f86dff5
--- /dev/null
+++ b/srcpkgs/openjdk21-jre
@@ -0,0 +1 @@
+openjdk21
\ No newline at end of file
diff --git a/srcpkgs/openjdk21-src b/srcpkgs/openjdk21-src
new file mode 120000
index 0000000000000..57e991f86dff5
--- /dev/null
+++ b/srcpkgs/openjdk21-src
@@ -0,0 +1 @@
+openjdk21
\ No newline at end of file
diff --git a/srcpkgs/openjdk21-static-libs b/srcpkgs/openjdk21-static-libs
new file mode 120000
index 0000000000000..57e991f86dff5
--- /dev/null
+++ b/srcpkgs/openjdk21-static-libs
@@ -0,0 +1 @@
+openjdk21
\ No newline at end of file
diff --git a/srcpkgs/openjdk21/template b/srcpkgs/openjdk21/template
new file mode 100644
index 0000000000000..87099542c3373
--- /dev/null
+++ b/srcpkgs/openjdk21/template
@@ -0,0 +1,194 @@
+# Template file for 'openjdk21'
+pkgname=openjdk21
+version=21.0.1+12
+revision=1
+_gtest_ver=1.13.0
+_java_ver="${version%%.*}"
+_jdk_update="${version#*+}"
+_base_version="${version%+*}"
+_jdk_home="usr/lib/jvm/openjdk${_java_ver}"
+archs="x86_64* aarch64*"
+create_wrksrc=yes
+build_wrksrc="jdk${_java_ver}u-jdk-${version/+/-}"
+build_style=gnu-configure
+configure_args="--disable-warnings-as-errors
+ --enable-unlimited-crypto
+ --with-zlib=system
+ --with-libjpeg=system
+ --with-giflib=system
+ --with-libpng=system
+ --with-lcms=system
+ --with-jtreg=no
+ --with-gtest=../googletest-${_gtest_ver}
+ --with-debug-level=release
+ --with-native-debug-symbols=internal
+ --with-jobs=${XBPS_ORIG_MAKEJOBS}
+ --with-version-pre=
+ --with-version-build=${_jdk_update}
+ --with-version-opt=void-r${revision}
+ --with-vendor-name=Void
+ --with-vendor-url=https://voidlinux.org/
+ --with-vendor-bug-url=https://github.com/void-linux/void-packages/issues
+ --with-vendor-vm-bug-url=https://github.com/void-linux/void-packages/issues"
+make_build_args="images static-libs-image $(vopt_if docs docs)"
+make_install_args="INSTALL_PREFIX=\"${DESTDIR}/usr/lib\""
+make_check_target="test-hotspot-gtest"
+hostmakedepends="pkg-config automake autoconf cpio tar unzip zip ca-certificates
+ openssl zlib-devel which make-ca openjdk20-bootstrap"
+makedepends="libXrender-devel libXtst-devel libXt-devel libXrandr-devel
+ giflib-devel libjpeg-turbo-devel cups-devel freetype-devel alsa-lib-devel
+ fontconfig-devel zlib-devel lcms2-devel"
+depends="${pkgname}-jre-${version}_${revision}"
+short_desc="OpenJDK Java Development Kit (version ${_java_ver})"
+maintainer="classabbyamp <void@placeviolette.net>"
+license="GPL-2.0-only WITH Classpath-exception-2.0"
+homepage="http://openjdk.java.net/"
+distfiles="https://github.com/openjdk/jdk${_java_ver}u/archive/jdk-${version}.tar.gz
+ https://github.com/google/googletest/archive/refs/tags/v${_gtest_ver}.tar.gz"
+checksum="9943e3814d3c1a31f1449f09a8b67df54841944f855a1d372be892c5e6b19217
+ ad7fdba11ea011c1d925b3289cf4af2c66a352e18d4c7264392fead75e919363"
+alternatives="jdk:/usr/lib/jvm/default-jdk:/${_jdk_home}"
+provides="java-environment-${version}_1"
+patch_args="-Np1 --directory=$build_wrksrc"
+
+# Build and check are still parallel, but don't use -jN.
+disable_parallel_build=yes
+disable_parallel_check=yes
+build_options="docs"
+
+case "$XBPS_TARGET_MACHINE" in
+ ppc64*) ;;
+ # no hotspot JIT for ppc32
+ ppc*) _use_zero=yes ;;
+ i686*|arm*) broken="Unsupported architecture" ;;
+esac
+
+if [ -n "$_use_zero" ]; then
+ makedepends+=" libffi-devel"
+ configure_args+=" --with-jvm-variants=zero"
+ case "$XBPS_TARGET_MACHINE" in
+ ppc*) configure_args+=" --with-boot-jdk-jvmargs=-XX:ThreadStackSize=2560";;
+ esac
+fi
+configure_args+=" --with-boot-jdk-jvmargs=-Xlog:disable"
+
+case "$XBPS_TARGET_LIBC" in
+ glibc) build_options_default+=" docs";;
+esac
+
+if [ ! "$CROSS_BUILD" ]; then
+ hostmakedepends+=" openjdk20-bootstrap"
+ configure_args+=" --with-boot-jdk=/usr/lib/jvm/openjdk20"
+else
+ hostmakedepends+=" openjdk21"
+ configure_args+=" --with-boot-jdk=/usr/lib/jvm/openjdk21"
+fi
+
+post_extract() {
+ chmod +x $build_wrksrc/configure
+ if [ "$XBPS_TARGET_LIBC" = "musl" ]; then
+ rm -r $build_wrksrc/src/jdk.hotspot.agent
+ fi
+}
+
+do_configure() {
+ CFLAGS=${CFLAGS/-D_FORTIFY_SOURCE=2/}
+ CXXFLAGS=${CXXFLAGS/-D_FORTIFY_SOURCE=2/}
+
+ # force ELFv2 for ppc64 just in case
+ case "$XBPS_TARGET_MACHINE" in
+ ppc64*)
+ CFLAGS+=" -DABI_ELFv2"
+ CXXFLAGS+=" -DABI_ELFv2"
+ ;;
+ esac
+
+ configure_args=${configure_args/--with-libtool-sysroot=$XBPS_CROSS_BASE}
+ if [ "$XBPS_CCACHE" ] && [ -z "$CROSS_BUILD" ]; then
+ configure_args+=" --enable-ccache"
+ CC="/usr/bin/cc"
+ CXX="/usr/bin/c++"
+ fi
+ ./configure ${configure_args} \
+ --with-extra-cflags="$CFLAGS" \
+ --with-extra-cxxflags="$CXXFLAGS" \
+ --with-extra-ldflags="$LDFLAGS" \
+ READELF=$READELF AR=$AR STRIP=$STRIP NM=$NM \
+ OBJDUMP=$OBJDUMP OBJCOPY=$OBJCOPY
+}
+
+post_install() {
+ rm -rf ${DESTDIR}/usr/lib/bin
+ mv ${DESTDIR}/usr/lib/jvm/openjdk-${_base_version} ${DESTDIR}/$_jdk_home
+ vcopy build/*-release/images/static-libs/lib $_jdk_home
+ vmkdir $_jdk_home/lib/security
+ make-ca -g -f --destdir "${PWD}/ca" -k "${DESTDIR}/$_jdk_home/bin/keytool"
+ mv ./ca/etc/pki/tls/java/cacerts ${DESTDIR}/$_jdk_home/lib/security/
+ chmod -R ugo+rw ./ca
+ rm -rf ./ca
+}
+
+subpackages="openjdk21-static-libs openjdk21-src openjdk21-jre openjdk21-doc openjdk21-jmods"
+
+openjdk21-jre_package() {
+ shlib_provides="libawt.so libawt_xawt.so libjava.so libjli.so libjvm.so libjawt.so"
+ short_desc+=" - runtime components"
+ provides="java-runtime-${version}_1"
+ depends="openjdk-common"
+ alternatives="java:/usr/lib/jvm/default-jre:/${_jdk_home}"
+ pkg_install() {
+ for bin in java jfr keytool rmiregistry; do
+ vmove "${_jdk_home}/bin/${bin}"
+ vmove "${_jdk_home}/man/man1/${bin}.1"
+ done
+
+ for f in lib legal conf release; do
+ vmove $_jdk_home/$f
+ done
+
+ vlicense ASSEMBLY_EXCEPTION
+ vlicense LICENSE
+ }
+}
+
+openjdk21-doc_package() {
+ nostrip=yes
+ noverifyrdeps=yes
+ noshlibprovides=yes
+ short_desc+=" - documentation"
+ if [ -z "$build_option_docs" ]; then
+ build_style=meta
+ fi
+ pkg_install() {
+ if [ "$build_option_docs" ]; then
+ local _docdir=usr/share/doc/openjdk$_java_ver
+ vmkdir $_docdir
+ cp -a $wrksrc/$build_wrksrc/build/linux-*/images/docs/* ${PKGDESTDIR}/$_docdir
+ fi
+ }
+}
+
+openjdk21-src_package() {
+ nostrip=yes
+ noverifyrdeps=yes
+ noshlibprovides=yes
+ short_desc+=" - source code"
+ pkg_install() {
+ vmove "$_jdk_home/lib/src.zip"
+ }
+}
+
+openjdk21-static-libs_package() {
+ short_desc+=" - static libs"
+ pkg_install() {
+ vmove "$_jdk_home/lib/*.a"
+ }
+}
+
+openjdk21-jmods_package() {
+ short_desc+=" - JMODs"
+ depends="${sourcepkg}-${version}_${revision}"
+ pkg_install() {
+ vmove $_jdk_home/jmods
+ }
+}
diff --git a/srcpkgs/openjdk21/update b/srcpkgs/openjdk21/update
new file mode 100644
index 0000000000000..0090f26b68e1b
--- /dev/null
+++ b/srcpkgs/openjdk21/update
@@ -0,0 +1 @@
+pattern='jdk-\K21\.[\d.+]+(?=\.)'
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PR PATCH] [Updated] jdk21
2023-12-23 0:38 [PR PATCH] jdk21 classabbyamp
@ 2023-12-23 0:41 ` classabbyamp
2023-12-24 4:16 ` classabbyamp
2023-12-24 14:55 ` [PR PATCH] [Merged]: jdk21 classabbyamp
2 siblings, 0 replies; 4+ messages in thread
From: classabbyamp @ 2023-12-23 0:41 UTC (permalink / raw)
To: ml
[-- Attachment #1: Type: text/plain, Size: 443 bytes --]
There is an updated pull request by classabbyamp against master on the void-packages repository
https://github.com/classabbyamp/void-packages jdk21
https://github.com/void-linux/void-packages/pull/47882
jdk21
#### Testing the changes
- I tested the changes in this PR: **YES**
test please: https://files.placeviolette.net/jdk21/
[ci skip]
A patch file from https://github.com/void-linux/void-packages/pull/47882.patch is attached
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-jdk21-47882.patch --]
[-- Type: text/x-diff, Size: 118502 bytes --]
From 1b6d702ca2c9c6b434eb3d4688f0d66811567d39 Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 21 Dec 2023 17:36:47 -0500
Subject: [PATCH 01/12] xbps-triggers: update to 0.127.
get rid of the openjdk profile hook. it should not have been done like this.
---
Manual.md | 8 -----
srcpkgs/xbps-triggers/files/openjdk-profile | 39 ---------------------
srcpkgs/xbps-triggers/template | 2 +-
3 files changed, 1 insertion(+), 48 deletions(-)
delete mode 100755 srcpkgs/xbps-triggers/files/openjdk-profile
diff --git a/Manual.md b/Manual.md
index 667ab634f9713..e6a98551eee30 100644
--- a/Manual.md
+++ b/Manual.md
@@ -62,7 +62,6 @@ packages for XBPS, the `Void Linux` native packaging system.
* [kernel-hooks](#triggers_kernel_hooks)
* [mimedb](#triggers_mimedb)
* [mkdirs](#triggers_mkdirs)
- * [openjdk-profile](#triggers_openjdk_profile)
* [pango-modules](#triggers_pango_module)
* [pycompile](#triggers_pycompile)
* [register-shell](#triggers_register_shell)
@@ -2016,13 +2015,6 @@ During removal it will delete the directory using `rmdir`.
To include this trigger use the `make_dirs` variable, as the trigger won't do anything
unless it is defined.
-<a id="triggers_openjdk_profile"></a>
-#### openjdk-profile
-
-The openjdk-profile trigger is responsible for creating an entry in /etc/profile.d that
-sets the `JAVA_HOME` environment variable to the currently-selected alternative for
-`/usr/bin/java` on installation. This trigger must be manually requested.
-
<a id="triggers_pango_module"></a>
#### pango-modules
diff --git a/srcpkgs/xbps-triggers/files/openjdk-profile b/srcpkgs/xbps-triggers/files/openjdk-profile
deleted file mode 100755
index 007d9cd9eedf4..0000000000000
--- a/srcpkgs/xbps-triggers/files/openjdk-profile
+++ /dev/null
@@ -1,39 +0,0 @@
-#!/bin/sh
-#
-# Adds an entry to /etc/profile.d for setting $JAVA_HOME.
-#
-# Arguments: $ACTION = [run/targets]
-# $TARGET = [post-install/pre-remove]
-# $PKGNAME
-# $VERSION
-# $UPDATE = [yes/no]
-#
-ACTION="$1"
-TARGET="$2"
-PKGNAME="$3"
-VERSION="$4"
-UPDATE="$5"
-
-jdkprofile=etc/profile.d/openjdk.sh
-
-case "$ACTION" in
-targets)
- echo "post-install"
- ;;
-run)
- [ -f "$jdkprofile" ] && exit 0
-
- cat > "$jdkprofile" <<'EOF'
-if _java_bin=$(readlink -e /usr/bin/java); then
- _java_bin="${_java_bin%/bin/java}"
- [ -d "${_java_bin}" ] && export JAVA_HOME="${JAVA_HOME:=${_java_bin}}"
-fi
-unset _java_bin
-EOF
- ;;
-*)
- exit 1
- ;;
-esac
-
-exit 0
diff --git a/srcpkgs/xbps-triggers/template b/srcpkgs/xbps-triggers/template
index 76c3a6b27fad4..66936411a4258 100644
--- a/srcpkgs/xbps-triggers/template
+++ b/srcpkgs/xbps-triggers/template
@@ -1,6 +1,6 @@
# Template file for 'xbps-triggers'
pkgname=xbps-triggers
-version=0.126
+version=0.127
revision=1
bootstrap=yes
short_desc="XBPS triggers for Void Linux"
From dab30131acacf6337adb288395952a8c131dfa4a Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 21 Dec 2023 17:32:52 -0500
Subject: [PATCH 02/12] New package: openjdk-common-1
Replaces the xbps trigger that added the profile script for openjdk,
which was really a mistake.
Instead of using alternative groups for specific JRE/JDK binaries, use
two symlinks: /usr/lib/jvm/default-jdk and /usr/lib/jvm/default-jre,
which point to /usr/lib/jvm/${version}. Prefer default-jdk to default-jre,
and just add them to PATH and MANPATH instead of putting things in /usr/bin.
---
srcpkgs/openjdk-common/INSTALL | 9 +++++++++
srcpkgs/openjdk-common/INSTALL.msg | 2 ++
srcpkgs/openjdk-common/files/profile.sh | 12 ++++++++++++
srcpkgs/openjdk-common/template | 12 ++++++++++++
4 files changed, 35 insertions(+)
create mode 100644 srcpkgs/openjdk-common/INSTALL
create mode 100644 srcpkgs/openjdk-common/INSTALL.msg
create mode 100644 srcpkgs/openjdk-common/files/profile.sh
create mode 100644 srcpkgs/openjdk-common/template
diff --git a/srcpkgs/openjdk-common/INSTALL b/srcpkgs/openjdk-common/INSTALL
new file mode 100644
index 0000000000000..e0e155cc208ab
--- /dev/null
+++ b/srcpkgs/openjdk-common/INSTALL
@@ -0,0 +1,9 @@
+#!/bin/sh
+case "$ACTION" in
+pre)
+ # remove the openjdk.sh from xbps-triggers
+ if [ -e "./etc/profile.d/openjdk.sh" ]; then
+ rm "./etc/profile.d/openjdk.sh"
+ fi
+ ;;
+esac
diff --git a/srcpkgs/openjdk-common/INSTALL.msg b/srcpkgs/openjdk-common/INSTALL.msg
new file mode 100644
index 0000000000000..7e75b5abe457b
--- /dev/null
+++ b/srcpkgs/openjdk-common/INSTALL.msg
@@ -0,0 +1,2 @@
+The way the default OpenJDK version is selected has changed.
+You may need to re-login for this change to take effect.
diff --git a/srcpkgs/openjdk-common/files/profile.sh b/srcpkgs/openjdk-common/files/profile.sh
new file mode 100644
index 0000000000000..e9c9a6042eea7
--- /dev/null
+++ b/srcpkgs/openjdk-common/files/profile.sh
@@ -0,0 +1,12 @@
+# only modify the environment if an openjdk*-jre package is installed
+if [ -e "/usr/lib/jvm/default-jre" ]; then
+ # if an openjdk* package is installed, prefer it to the selected jre
+ if [ -e "/usr/lib/jvm/default-jdk" ]; then
+ export JAVA_HOME="/usr/lib/jvm/default-jdk"
+ else
+ export JAVA_HOME="/usr/lib/jvm/default-jre"
+ fi
+ # append the select jdk and jre bin and man dirs to the relevant PATHs
+ export PATH="$PATH:/usr/lib/jvm/default-jdk/bin:/usr/lib/jvm/default-jre/bin"
+ export MANPATH="$MANPATH:/usr/lib/jvm/default-jdk/man:/usr/lib/jvm/default-jre/man"
+fi
diff --git a/srcpkgs/openjdk-common/template b/srcpkgs/openjdk-common/template
new file mode 100644
index 0000000000000..e0d3d53d55004
--- /dev/null
+++ b/srcpkgs/openjdk-common/template
@@ -0,0 +1,12 @@
+# Template file for 'openjdk-common'
+pkgname=openjdk-common
+version=1
+revision=1
+short_desc="Common files for OpenJDK packages"
+maintainer="classabbyamp <void@placeviolette.net>"
+license="Public Domain"
+homepage="https://www.voidlinux.org"
+
+do_install() {
+ vinstall "${FILESDIR}"/profile.sh 644 /etc/profile.d jdk.sh
+}
From b226850ac3c3e3134bce965b9dd625de3b1d75a8 Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 21 Dec 2023 17:37:34 -0500
Subject: [PATCH 03/12] openjdk8: update to 8u332b05.
- various template cleanups
- rename /usr/lib/jvm/java-1.8-openjdk to /usr/lib/jvm/openjdk8
for consistency
- fix manpages
- fix alternatives
---
srcpkgs/openjdk8/template | 167 ++++++++++++--------------------------
1 file changed, 50 insertions(+), 117 deletions(-)
diff --git a/srcpkgs/openjdk8/template b/srcpkgs/openjdk8/template
index 8266daff8d8a2..966f5c3703f01 100644
--- a/srcpkgs/openjdk8/template
+++ b/srcpkgs/openjdk8/template
@@ -1,19 +1,13 @@
# Template file for 'openjdk8'
-# TODO: better places for bin and man?
-# TODO: make -headless versions
-# TODO: config files?
pkgname=openjdk8
-version=8u322b04
-revision=5
+version=8u332b05
+revision=1
_jdk_update="${version#*u}"
_jdk_update="${_jdk_update%b*}"
_jdk_build="${version#*b}"
-_jdk_home="usr/lib/jvm/java-1.8-openjdk"
-# we're using aarch64 port repo to get aarch64 JIT; the repo is
-# otherwise the same as the normal one, just with aarch64 port added
-_repo_ver="aarch64-shenandoah-jdk${version/b/-b}"
+_jdk_home="usr/lib/jvm/openjdk8"
+_commit="bdc2203a44df159d94ecd0e04a230e65cb84297e"
archs="x86_64* i686* aarch64* arm* ppc64*"
-create_wrksrc=yes
build_style=gnu-configure
configure_args="
--prefix=${XBPS_DESTDIR}/${XBPS_CROSS_TRIPLET}/${pkgname}-${version}/usr/lib
@@ -28,13 +22,14 @@ configure_args="
--with-freetype-lib=${XBPS_CROSS_BASE}/usr/lib
--with-freetype-include=${XBPS_CROSS_BASE}/usr/include/freetype2
--with-jtreg=no
- --with-jobs=${XBPS_MAKEJOBS}
- --with-vendor-name="Void"
- --with-vendor-url="https://voidlinux.org/"
- --with-vendor-bug-url="https://github.com/void-linux/void-packages/issues"
- --with-vendor-vm-bug-url="https://github.com/void-linux/void-packages/issues"
+ --with-jobs=${XBPS_ORIG_MAKEJOBS}
+ --with-vendor-name=Void
+ --with-vendor-url=https://voidlinux.org/
+ --with-vendor-bug-url=https://github.com/void-linux/void-packages/issues
+ --with-vendor-vm-bug-url=https://github.com/void-linux/void-packages/issues
--disable-option-checking"
-make_build_args="images $(vopt_if docs docs) COMPILER_WARNINGS_FATAL=false"
+make_build_args="images $(vopt_if docs docs) COMPILER_WARNINGS_FATAL=false GIT=true"
+make_install_args="GIT=true"
hostmakedepends="pkg-config automake autoconf cpio tar unzip zip ca-certificates
zlib-devel make-ca which"
makedepends="libXrender-devel libXtst-devel libXt-devel libXrandr-devel
@@ -45,28 +40,19 @@ short_desc="OpenJDK Java Development Kit (version 8)"
maintainer="Toyam Cox <Vaelatern@voidlinux.org>"
license="GPL-2.0-only WITH Classpath-exception-2.0"
homepage="http://openjdk.java.net/"
-distfiles="
- http://hg.openjdk.java.net/aarch64-port/jdk8u-shenandoah/archive/${_repo_ver}.tar.gz>jdk8u-${_repo_ver}.tar.gz
- http://hg.openjdk.java.net/aarch64-port/jdk8u-shenandoah/corba/archive/${_repo_ver}.tar.gz>corba-${_repo_ver}.tar.gz
- http://hg.openjdk.java.net/aarch64-port/jdk8u-shenandoah/hotspot/archive/${_repo_ver}.tar.gz>hotspot-${_repo_ver}.tar.gz
- http://hg.openjdk.java.net/aarch64-port/jdk8u-shenandoah/jdk/archive/${_repo_ver}.tar.gz>jdk-${_repo_ver}.tar.gz
- http://hg.openjdk.java.net/aarch64-port/jdk8u-shenandoah/jaxws/archive/${_repo_ver}.tar.gz>jaxws-${_repo_ver}.tar.gz
- http://hg.openjdk.java.net/aarch64-port/jdk8u-shenandoah/jaxp/archive/${_repo_ver}.tar.gz>jaxp-${_repo_ver}.tar.gz
- http://hg.openjdk.java.net/aarch64-port/jdk8u-shenandoah/langtools/archive/${_repo_ver}.tar.gz>langtools-${_repo_ver}.tar.gz
- http://hg.openjdk.java.net/aarch64-port/jdk8u-shenandoah/nashorn/archive/${_repo_ver}.tar.gz>nashorn-${_repo_ver}.tar.gz"
+# we're using aarch64 port repo to get aarch64 JIT; the repo is
+# otherwise the same as the normal one, just with aarch64 port added
+distfiles="https://github.com/openjdk/shenandoah-jdk8u/archive/${_commit}.tar.gz"
+checksum=4c39be8454a1b8b10a9ff845a4e7e639808799d3d2eddb1484df80835d5e88e4
-checksum="8ef23f1fb449c50c7c71f58f9ec9e5ac6dd152f4c830408f5c02b77652d634cc
- 2680d968821fdd4363c68b1a835a9bbd76d6a94fdc0ab6e1b1aaadc5ccd1ed8a
- 5561c84e1d5111fff0142ba4d397b29d6dc9e3702955567bd5b4986e8cf4f2ef
- 7eb13948061d8ec98323fdac424955753f339c145af04a3f86100437dff60257
- fe21a137b6fb1881db1c5c01f372126f6b165c6d3b98421e6862255f456cbfd6
- 22a1b86820ef585c45bce36d822872354bc0dd183c5516f89da28e0666d3901b
- 34c306eadb436cd9f22f306f4f1d4ea4f167923e8affa2d2797d6c3de6da46ea
- 17730e5cc2a84c4680f692008f3805ce4e4edeb2008e2e6a4fb86b9dde06fe23"
+disable_parallel_build=yes
build_options="docs"
desc_option_docs="Build documentation"
+alternatives="jdk:/usr/lib/jvm/default-jdk:/${_jdk_home}"
+provides="java-environment-${version}_1"
+
# no hotspot JIT for arm32 and ppc32
case "$XBPS_TARGET_MACHINE" in
ppc64*) ;;
@@ -81,8 +67,6 @@ else
build_options_default+=" docs"
fi
-provides="java-environment-${version}_1"
-
if [ ! "$CROSS_BUILD" ]; then
hostmakedepends+=" openjdk7-bootstrap"
configure_args+=" --with-boot-jdk=/usr/lib/jvm/java-1.7-openjdk"
@@ -94,57 +78,11 @@ fi
# enabling ccache segfaults gcc
export CCACHE_DISABLE=1
-alternatives="
- jdk:/usr/bin/appletviewer:/${_jdk_home}/bin/appletviewer
- jdk:/usr/bin/extcheck:/${_jdk_home}/bin/extcheck
- jdk:/usr/bin/idlj:/${_jdk_home}/bin/idlj
- jdk:/usr/bin/jar:/${_jdk_home}/bin/jar
- jdk:/usr/bin/jarsigner:/${_jdk_home}/bin/jarsigner
- jdk:/usr/bin/java:/${_jdk_home}/bin/java
- jdk:/usr/bin/java-rmi.cgi:/${_jdk_home}/bin/java-rmi.cgi
- jdk:/usr/bin/javac:/${_jdk_home}/bin/javac
- jdk:/usr/bin/javadoc:/${_jdk_home}/bin/javadoc
- jdk:/usr/bin/javah:/${_jdk_home}/bin/javah
- jdk:/usr/bin/javap:/${_jdk_home}/bin/javap
- jdk:/usr/bin/jcmd:/${_jdk_home}/bin/jcmd
- jdk:/usr/bin/jconsole:/${_jdk_home}/bin/jconsole
- jdk:/usr/bin/jdb:/${_jdk_home}/bin/jdb
- jdk:/usr/bin/jdeps:/${_jdk_home}/bin/jdeps
- jdk:/usr/bin/jhat:/${_jdk_home}/bin/jhat
- jdk:/usr/bin/jinfo:/${_jdk_home}/bin/jinfo
- jdk:/usr/bin/jjs:/${_jdk_home}/bin/jjs
- jdk:/usr/bin/jmap:/${_jdk_home}/bin/jmap
- jdk:/usr/bin/jps:/${_jdk_home}/bin/jps
- jdk:/usr/bin/jrunscript:/${_jdk_home}/bin/jrunscript
- jdk:/usr/bin/jsadebugd:/${_jdk_home}/bin/jsadebugd
- jdk:/usr/bin/jstack:/${_jdk_home}/bin/jstack
- jdk:/usr/bin/jstat:/${_jdk_home}/bin/jstat
- jdk:/usr/bin/jstatd:/${_jdk_home}/bin/jstatd
- jdk:/usr/bin/keytool:/${_jdk_home}/bin/keytool
- jdk:/usr/bin/native2ascii:/${_jdk_home}/bin/native2ascii
- jdk:/usr/bin/orbd:/${_jdk_home}/bin/orbd
- jdk:/usr/bin/pack200:/${_jdk_home}/bin/pack200
- jdk:/usr/bin/policytool:/${_jdk_home}/bin/policytool
- jdk:/usr/bin/rmic:/${_jdk_home}/bin/rmic
- jdk:/usr/bin/rmid:/${_jdk_home}/bin/rmid
- jdk:/usr/bin/rmiregistry:/${_jdk_home}/bin/rmiregistry
- jdk:/usr/bin/schemagen:/${_jdk_home}/bin/schemagen
- jdk:/usr/bin/serialver:/${_jdk_home}/bin/serialver
- jdk:/usr/bin/servertool:/${_jdk_home}/bin/servertool
- jdk:/usr/bin/tnameserv:/${_jdk_home}/bin/tnameserv
- jdk:/usr/bin/unpack200:/${_jdk_home}/bin/unpack200
- jdk:/usr/bin/wsgen:/${_jdk_home}/bin/wsgen
- jdk:/usr/bin/wsimport:/${_jdk_home}/bin/wsimport
- jdk:/usr/bin/xjc:/${_jdk_home}/bin/xjc
-"
-
post_extract() {
- mv jdk8u*/* .
chmod +x configure
- for subrepo in corba hotspot jdk jaxws jaxp langtools nashorn; do
- mv ${subrepo}-${_repo_ver} ${subrepo}
- done
+}
+post_patch() {
# gcc complains about the signed shift left
vsed -i jdk/src/share/native/com/sun/java/util/jar/pack/constants.h \
-e's;(-1)<<13;~0u<<13;g'
@@ -152,20 +90,22 @@ post_extract() {
# wrong "return false;" instead of "return null;"
vsed -i jdk/src/share/native/com/sun/java/util/jar/pack/jni.cpp \
-e"295s;false;null;"
-}
-post_patch() {
- [ "$XBPS_TARGET_LIBC" != "musl" ] && return 0
+ # pretend we're a git checkout
+ echo "${_commit}" > .gittip
+ mkdir .git
- for f in ${FILESDIR}/musl_*.patch; do
- echo "Applying $f"
- patch -sNp1 -i "$f"
- done
+ if [ "$XBPS_TARGET_LIBC" = "musl" ]; then
+ for f in "${FILESDIR}"/musl_*.patch; do
+ echo "Applying $f"
+ patch -sNp1 -i "$f"
+ done
- # add cross prefix for thread_db.h check, fix cross from glibc to musl
- sed -i "s,/usr/include/thread_db.h,${XBPS_CROSS_BASE}/usr/include/thread_db.h," \
- hotspot/make/linux/makefiles/defs.make hotspot/make/linux/makefiles/sa.make \
- hotspot/make/linux/makefiles/saproc.make
+ # add cross prefix for thread_db.h check, fix cross from glibc to musl
+ sed -i "s,/usr/include/thread_db.h,${XBPS_CROSS_BASE}/usr/include/thread_db.h," \
+ hotspot/make/linux/makefiles/defs.make hotspot/make/linux/makefiles/sa.make \
+ hotspot/make/linux/makefiles/saproc.make
+ fi
}
do_configure() {
@@ -200,11 +140,6 @@ pre_build() {
unset CFLAGS CXXFLAGS LDFLAGS
}
-do_build() {
- # do not set disable_parallel_build in order to be able to read makejobs
- make -j1 ${make_build_args} ${make_build_target}
-}
-
post_install() {
# we manage this ourselves
rm -rf ${DESTDIR}/usr/lib/bin
@@ -213,6 +148,11 @@ post_install() {
mv ${DESTDIR}/usr/lib/jvm/openjdk-1.8.0_${_jdk_update} \
${DESTDIR}/${_jdk_home}
+ # don't duplicate binaries already in jre/bin
+ for bin in "${DESTDIR}/${_jdk_home}/jre/bin"/*; do
+ ln -srf "${bin}" "${bin/jre/}"
+ done
+
vmkdir ${_jdk_home}/lib/security
make-ca -g -f --destdir "${PWD}/ca" -k "${DESTDIR}/${_jdk_home}/bin/keytool"
mv ./ca/etc/pki/tls/java/cacerts ${DESTDIR}/${_jdk_home}/lib/security/
@@ -228,23 +168,15 @@ openjdk8-jre_package() {
shlib_provides="libawt.so libawt_xawt.so libjava.so libjli.so libjvm.so libjawt.so"
short_desc+=" - runtime components"
provides="java-runtime-${version}_1"
- depends="xbps-triggers>=0.122_1"
- triggers="openjdk-profile"
- alternatives="
- java:/usr/bin/java:/${_jdk_home}/jre/bin/java
- java:/usr/bin/jjs:/${_jdk_home}/jre/bin/jjs
- java:/usr/bin/keytool:/${_jdk_home}/jre/bin/keytool
- java:/usr/bin/orbd:/${_jdk_home}/jre/bin/orbd
- java:/usr/bin/pack200:/${_jdk_home}/jre/bin/pack200
- java:/usr/bin/policytool:/${_jdk_home}/jre/bin/policytool
- java:/usr/bin/rmid:/${_jdk_home}/jre/bin/rmid
- java:/usr/bin/rmiregistry:/${_jdk_home}/jre/bin/rmiregistry
- java:/usr/bin/servertool:/${_jdk_home}/jre/bin/servertool
- java:/usr/bin/tnameserv:/${_jdk_home}/jre/bin/tnameserv
- java:/usr/bin/unpack200:/${_jdk_home}/jre/bin/unpack200
- "
+ depends="openjdk-common"
+ alternatives="java:/usr/lib/jvm/default-jre:/${_jdk_home}/jre"
pkg_install() {
- vmove ${_jdk_home}/jre
+ vmove "${_jdk_home}"/jre
+ for bin in "${PKGDESTDIR}/${_jdk_home}/jre/bin"/*; do
+ bin="$(basename "$bin")"
+ vmove "${_jdk_home}/man/man1/${bin}.1"
+ vmove "${_jdk_home}/man/ja_JP.UTF-8/man1/${bin}.1"
+ done
}
}
@@ -263,12 +195,13 @@ openjdk8-doc_package() {
noverifyrdeps=yes
noshlibprovides=yes
short_desc+=" - documentation"
+ if [ -z "$build_option_docs" ]; then
+ build_style=meta
+ fi
pkg_install() {
- cd ${wrksrc}
if [ "$build_option_docs" ]; then
vmkdir usr/share/doc/openjdk8
cp -a build/linux-*/docs/* ${PKGDESTDIR}/usr/share/doc/openjdk8
fi
- vmove ${_jdk_home}/man/man1
}
}
From fadf517717d77037fed7a1d8245098a8b219ec2c Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 21 Dec 2023 17:41:58 -0500
Subject: [PATCH 04/12] openjdk9-bootstrap: fix jdk8 path
---
srcpkgs/openjdk9-bootstrap/template | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/srcpkgs/openjdk9-bootstrap/template b/srcpkgs/openjdk9-bootstrap/template
index c50cc4adc7e18..2027d02781155 100644
--- a/srcpkgs/openjdk9-bootstrap/template
+++ b/srcpkgs/openjdk9-bootstrap/template
@@ -21,7 +21,7 @@ configure_args="
--with-debug-level=release
--with-version-pre=
--with-version-build=${version#*p}
- --with-boot-jdk=/usr/lib/jvm/java-1.8-openjdk"
+ --with-boot-jdk=/usr/lib/jvm/openjdk8"
make_build_args="images"
hostmakedepends="pkg-config automake autoconf cpio tar unzip zip ca-certificates
zlib-devel which openjdk8 make"
From 7caa5faa2ad698c19955c8a1206e574729ed236f Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 21 Dec 2023 17:40:49 -0500
Subject: [PATCH 05/12] openjdk11-bin: remove package
this package has been useless since 106a275ecd81e132cb80cc21c0ec96a336d16614
make it a transitional package on openjdk11
---
srcpkgs/openjdk11-bin | 1 +
srcpkgs/openjdk11-bin/template | 70 ----------------------------------
srcpkgs/openjdk11/template | 9 ++++-
3 files changed, 9 insertions(+), 71 deletions(-)
create mode 120000 srcpkgs/openjdk11-bin
delete mode 100644 srcpkgs/openjdk11-bin/template
diff --git a/srcpkgs/openjdk11-bin b/srcpkgs/openjdk11-bin
new file mode 120000
index 0000000000000..8213494c49ed5
--- /dev/null
+++ b/srcpkgs/openjdk11-bin
@@ -0,0 +1 @@
+openjdk11
\ No newline at end of file
diff --git a/srcpkgs/openjdk11-bin/template b/srcpkgs/openjdk11-bin/template
deleted file mode 100644
index 6dfbbb49fd45a..0000000000000
--- a/srcpkgs/openjdk11-bin/template
+++ /dev/null
@@ -1,70 +0,0 @@
-# Template file for 'openjdk11-bin'
-pkgname=openjdk11-bin
-version=11+28
-revision=2
-archs="x86_64"
-short_desc="Official Reference Implementation for Java SE 11"
-maintainer="Kyle Nusbaum <knusbaum+void@sdf.org>"
-license="GPL-2.0-only WITH Classpath-exception-2.0"
-homepage="https://jdk.java.net/java-se-ri/11"
-distfiles="https://download.java.net/openjdk/jdk11/ri/openjdk-${version}_linux-x64_bin.tar.gz"
-checksum=3784cfc4670f0d4c5482604c7c513beb1a92b005f569df9bf100e8bef6610f2e
-nopie=true
-
-alternatives="
- java:/usr/bin/java:/usr/lib/jvm/openjdk11-bin/bin/java
- java:/usr/bin/javaws:/usr/lib/jvm/openjdk11-bin/bin/javaws
- java:/usr/bin/jcontrol:/usr/lib/jvm/openjdk11-bin/bin/jcontrol
- java:/usr/bin/jjs:/usr/lib/jvm/openjdk11-bin/bin/jjs
- java:/usr/bin/keytool:/usr/lib/jvm/openjdk11-bin/bin/keytool
- java:/usr/bin/orbd:/usr/lib/jvm/openjdk11-bin/bin/orbd
- java:/usr/bin/pack200:/usr/lib/jvm/openjdk11-bin/bin/pack200
- java:/usr/bin/policytool:/usr/lib/jvm/openjdk11-bin/bin/policytool
- java:/usr/bin/rmid:/usr/lib/jvm/openjdk11-bin/bin/rmid
- java:/usr/bin/rmiregistry:/usr/lib/jvm/openjdk11-bin/bin/rmiregistry
- java:/usr/bin/servertool:/usr/lib/jvm/openjdk11-bin/bin/servertool
- java:/usr/bin/tnameserv:/usr/lib/jvm/openjdk11-bin/bin/tnameserv
- java:/usr/bin/unpack200:/usr/lib/jvm/openjdk11-bin/bin/unpack200
-
- jdk:/usr/bin/ControlPanel:/usr/lib/jvm/openjdk11-bin/bin/ControlPanel
- jdk:/usr/bin/appletviewer:/usr/lib/jvm/openjdk11-bin/bin/appletviewer
- jdk:/usr/bin/extcheck:/usr/lib/jvm/openjdk11-bin/bin/extcheck
- jdk:/usr/bin/idlj:/usr/lib/jvm/openjdk11-bin/bin/idlj
- jdk:/usr/bin/jar:/usr/lib/jvm/openjdk11-bin/bin/jar
- jdk:/usr/bin/jarsigner:/usr/lib/jvm/openjdk11-bin/bin/jarsigner
- jdk:/usr/bin/java-rmi.cgi:/usr/lib/jvm/openjdk11-bin/bin/java-rmi.cgi
- jdk:/usr/bin/javac:/usr/lib/jvm/openjdk11-bin/bin/javac
- jdk:/usr/bin/javadoc:/usr/lib/jvm/openjdk11-bin/bin/javadoc
- jdk:/usr/bin/javafxpackager:/usr/lib/jvm/openjdk11-bin/bin/javafxpackager
- jdk:/usr/bin/javah:/usr/lib/jvm/openjdk11-bin/bin/javah
- jdk:/usr/bin/javap:/usr/lib/jvm/openjdk11-bin/bin/javap
- jdk:/usr/bin/javapackager:/usr/lib/jvm/openjdk11-bin/bin/javapackager
- jdk:/usr/bin/jcmd:/usr/lib/jvm/openjdk11-bin/bin/jcmd
- jdk:/usr/bin/jconsole:/usr/lib/jvm/openjdk11-bin/bin/jconsole
- jdk:/usr/bin/jdb:/usr/lib/jvm/openjdk11-bin/bin/jdb
- jdk:/usr/bin/jdeps:/usr/lib/jvm/openjdk11-bin/bin/jdeps
- jdk:/usr/bin/jhat:/usr/lib/jvm/openjdk11-bin/bin/jhat
- jdk:/usr/bin/jinfo:/usr/lib/jvm/openjdk11-bin/bin/jinfo
- jdk:/usr/bin/jmap:/usr/lib/jvm/openjdk11-bin/bin/jmap
- jdk:/usr/bin/jmc:/usr/lib/jvm/openjdk11-bin/bin/jmc
- jdk:/usr/bin/jmc.ini:/usr/lib/jvm/openjdk11-bin/bin/jmc.ini
- jdk:/usr/bin/jps:/usr/lib/jvm/openjdk11-bin/bin/jps
- jdk:/usr/bin/jrunscript:/usr/lib/jvm/openjdk11-bin/bin/jrunscript
- jdk:/usr/bin/jsadebugd:/usr/lib/jvm/openjdk11-bin/bin/jsadebugd
- jdk:/usr/bin/jstack:/usr/lib/jvm/openjdk11-bin/bin/jstack
- jdk:/usr/bin/jstat:/usr/lib/jvm/openjdk11-bin/bin/jstat
- jdk:/usr/bin/jstatd:/usr/lib/jvm/openjdk11-bin/bin/jstatd
- jdk:/usr/bin/jvisualvm:/usr/lib/jvm/openjdk11-bin/bin/jvisualvm
- jdk:/usr/bin/native2ascii:/usr/lib/jvm/openjdk11-bin/bin/native2ascii
- jdk:/usr/bin/rmic:/usr/lib/jvm/openjdk11-bin/bin/rmic
- jdk:/usr/bin/schemagen:/usr/lib/jvm/openjdk11-bin/bin/schemagen
- jdk:/usr/bin/serialver:/usr/lib/jvm/openjdk11-bin/bin/serialver
- jdk:/usr/bin/wsgen:/usr/lib/jvm/openjdk11-bin/bin/wsgen
- jdk:/usr/bin/wsimport:/usr/lib/jvm/openjdk11-bin/bin/wsimport
- jdk:/usr/bin/xjc:/usr/lib/jvm/openjdk11-bin/bin/xjc
-"
-
-do_install() {
- vmkdir /usr/lib/jvm/openjdk11-bin
- cp -R ./* ${DESTDIR}/usr/lib/jvm/openjdk11-bin
-}
diff --git a/srcpkgs/openjdk11/template b/srcpkgs/openjdk11/template
index b5dd94241a0c8..783e7c28d72b5 100644
--- a/srcpkgs/openjdk11/template
+++ b/srcpkgs/openjdk11/template
@@ -156,7 +156,7 @@ do_install() {
vlicense LICENSE
}
-subpackages="openjdk11-src openjdk11-jre openjdk11-doc openjdk11-jmods openjdk11-static-libs"
+subpackages="openjdk11-src openjdk11-jre openjdk11-doc openjdk11-jmods openjdk11-static-libs openjdk11-bin"
openjdk11-jre_package() {
shlib_provides="libawt.so libawt_xawt.so libjava.so libjli.so libjvm.so libjawt.so"
@@ -227,3 +227,10 @@ openjdk11-jmods_package() {
vmove $_jdk_home/jmods
}
}
+
+openjdk11-bin_package() {
+ reverts="11+28_1 11+28_2"
+ short_desc+=" (transitional dummy package)"
+ depends="${sourcepkg}>=${version}_${revision}"
+ build_style=meta
+}
From fda552537b92f55702e3ce55effed81453333bc9 Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 21 Dec 2023 17:42:46 -0500
Subject: [PATCH 06/12] openjdk11: update to 11.0.22+6.
- fix manpages
- fix alternatives
---
srcpkgs/openjdk11/template | 63 ++++++++------------------------------
1 file changed, 12 insertions(+), 51 deletions(-)
diff --git a/srcpkgs/openjdk11/template b/srcpkgs/openjdk11/template
index 783e7c28d72b5..64f43424204cc 100644
--- a/srcpkgs/openjdk11/template
+++ b/srcpkgs/openjdk11/template
@@ -1,6 +1,6 @@
# Template file for 'openjdk11'
pkgname=openjdk11
-version=11.0.20+8
+version=11.0.22+6
revision=1
_java_ver="${version%%.*}"
_jdk_home="usr/lib/jvm/openjdk${_java_ver}"
@@ -38,7 +38,8 @@ maintainer="Kyle Nusbaum <knusbaum+void@sdf.org>"
license="GPL-2.0-only WITH Classpath-exception-2.0"
homepage="http://openjdk.java.net/"
distfiles="https://github.com/openjdk/jdk${_java_ver}u/archive/jdk-${version}.tar.gz"
-checksum=b2a37ef209ae7eaf8f34182b7c9aa3252af20a214d02970f96ce62242c805479
+checksum=8bae7c5e608de84aa32010365514bb59cd0d8ba709f6730cc473e159c6bfb918
+alternatives="jdk:/usr/lib/jvm/default-jdk:/${_jdk_home}"
provides="java-environment-${version}_1"
# Build is still parallel, but don't use -jN.
@@ -73,41 +74,6 @@ else
configure_args+=" --with-boot-jdk=/${_jdk_home}"
fi
-alternatives="
- jdk:/usr/bin/jaotc:/${_jdk_home}/bin/jaotc
- jdk:/usr/bin/jar:/${_jdk_home}/bin/jar
- jdk:/usr/bin/jarsigner:/${_jdk_home}/bin/jarsigner
- jdk:/usr/bin/java:/${_jdk_home}/bin/java
- jdk:/usr/bin/javac:/${_jdk_home}/bin/javac
- jdk:/usr/bin/javadoc:/${_jdk_home}/bin/javadoc
- jdk:/usr/bin/javap:/${_jdk_home}/bin/javap
- jdk:/usr/bin/jcmd:/${_jdk_home}/bin/jcmd
- jdk:/usr/bin/jconsole:/${_jdk_home}/bin/jconsole
- jdk:/usr/bin/jdb:/${_jdk_home}/bin/jdb
- jdk:/usr/bin/jdeprscan:/${_jdk_home}/bin/jdeprscan
- jdk:/usr/bin/jdeps:/${_jdk_home}/bin/jdeps
- jdk:/usr/bin/jhsdb:/${_jdk_home}/bin/jhsdb
- jdk:/usr/bin/jimage:/${_jdk_home}/bin/jimage
- jdk:/usr/bin/jinfo:/${_jdk_home}/bin/jinfo
- jdk:/usr/bin/jjs:/${_jdk_home}/bin/jjs
- jdk:/usr/bin/jlink:/${_jdk_home}/bin/jlink
- jdk:/usr/bin/jmap:/${_jdk_home}/bin/jmap
- jdk:/usr/bin/jmod:/${_jdk_home}/bin/jmod
- jdk:/usr/bin/jps:/${_jdk_home}/bin/jps
- jdk:/usr/bin/jrunscript:/${_jdk_home}/bin/jrunscript
- jdk:/usr/bin/jshell:/${_jdk_home}/bin/jshell
- jdk:/usr/bin/jstack:/${_jdk_home}/bin/jstack
- jdk:/usr/bin/jstat:/${_jdk_home}/bin/jstat
- jdk:/usr/bin/jstatd:/${_jdk_home}/bin/jstatd
- jdk:/usr/bin/keytool:/${_jdk_home}/bin/keytool
- jdk:/usr/bin/pack200:/${_jdk_home}/bin/pack200
- jdk:/usr/bin/rmic:/${_jdk_home}/bin/rmic
- jdk:/usr/bin/rmid:/${_jdk_home}/bin/rmid
- jdk:/usr/bin/rmiregistry:/${_jdk_home}/bin/rmiregistry
- jdk:/usr/bin/serialver:/${_jdk_home}/bin/serialver
- jdk:/usr/bin/unpack200:/${_jdk_home}/bin/unpack200
-"
-
post_extract() {
chmod +x configure
if [ "$XBPS_TARGET_LIBC" = "musl" ]; then
@@ -162,20 +128,13 @@ openjdk11-jre_package() {
shlib_provides="libawt.so libawt_xawt.so libjava.so libjli.so libjvm.so libjawt.so"
short_desc+=" - runtime components"
provides="java-runtime-${version}_1"
- depends="fontconfig xbps-triggers>=0.122_1"
- triggers="openjdk-profile"
- alternatives="
- java:/usr/bin/java:/${_jdk_home}/bin/java
- java:/usr/bin/jjs:/${_jdk_home}/bin/jjs
- java:/usr/bin/keytool:/${_jdk_home}/bin/keytool
- java:/usr/bin/pack200:/${_jdk_home}/bin/pack200
- java:/usr/bin/rmid:/${_jdk_home}/bin/rmid
- java:/usr/bin/rmiregistry:/${_jdk_home}/bin/rmiregistry
- java:/usr/bin/unpack200:/${_jdk_home}/bin/unpack200
- "
+ depends="fontconfig openjdk-common"
+ alternatives="java:/usr/lib/jvm/default-jre:/${_jdk_home}"
pkg_install() {
- for bf in java jjs keytool pack200 rmid rmiregistry unpack200; do
- vmove $_jdk_home/bin/$bf
+ for bin in java jjs keytool pack200 rmid rmiregistry unpack200; do
+ vmove "${_jdk_home}/bin/${bin}"
+ vmove "${_jdk_home}/man/man1/${bin}.1"
+ vmove "${_jdk_home}/man/ja_JP.UTF-8/man1/${bin}.1"
done
for f in lib legal conf release; do
@@ -192,13 +151,15 @@ openjdk11-doc_package() {
noverifyrdeps=yes
noshlibprovides=yes
short_desc+=" - documentation"
+ if [ -z "$build_option_docs" ]; then
+ build_style=meta
+ fi
pkg_install() {
cd ${wrksrc}
if [ "$build_option_docs" ]; then
vmkdir usr/share/doc/openjdk11
cp -a build/linux-*/images/docs/* $PKGDESTDIR/usr/share/doc/openjdk11
fi
- vmove $_jdk_home/man/man1
}
}
From dceac46f4d5686e7be45ddf2b9b3f047654b16a8 Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 21 Dec 2023 17:44:04 -0500
Subject: [PATCH 07/12] openjdk17: update to 17.0.10+6.
- fix manpages
- fix alternatives
---
srcpkgs/openjdk17/template | 55 ++++++++------------------------------
1 file changed, 11 insertions(+), 44 deletions(-)
diff --git a/srcpkgs/openjdk17/template b/srcpkgs/openjdk17/template
index bb72701f360e6..22fb16fbf9ec1 100644
--- a/srcpkgs/openjdk17/template
+++ b/srcpkgs/openjdk17/template
@@ -1,6 +1,6 @@
# Template file for 'openjdk17'
pkgname=openjdk17
-version=17.0.10+2
+version=17.0.10+6
revision=1
_gtest_ver=1.8.1
_java_ver="${version%%.*}"
@@ -45,8 +45,9 @@ license="GPL-2.0-only WITH Classpath-exception-2.0"
homepage="http://openjdk.java.net/"
distfiles="https://github.com/openjdk/jdk${_java_ver}u/archive/jdk-${version}.tar.gz
https://github.com/google/googletest/archive/refs/tags/release-${_gtest_ver}.tar.gz"
-checksum="dbe68a64c43c3e376abd9d03758a487ecfb9c7bf1fe71cf6c2ca113f909be1cb
+checksum="3d5ef3a18c4edfa6e2a16c74d9e771b09eed433006b1380df450aa88725c7238
9bf1fe5182a604b4135edc1a425ae356c9ad15e9b23f9f12a02e80184c3a249c"
+alternatives="jdk:/usr/lib/jvm/default-jdk:/${_jdk_home}"
provides="java-environment-${version}_1"
patch_args="-Np1 --directory=$build_wrksrc"
@@ -83,37 +84,6 @@ else
configure_args+=" --with-boot-jdk=/usr/lib/jvm/openjdk17"
fi
-alternatives="
- jdk:/usr/bin/jar:/${_jdk_home}/bin/jar
- jdk:/usr/bin/jarsigner:/${_jdk_home}/bin/jarsigner
- jdk:/usr/bin/java:/${_jdk_home}/bin/java
- jdk:/usr/bin/javac:/${_jdk_home}/bin/javac
- jdk:/usr/bin/javadoc:/${_jdk_home}/bin/javadoc
- jdk:/usr/bin/javap:/${_jdk_home}/bin/javap
- jdk:/usr/bin/jcmd:/${_jdk_home}/bin/jcmd
- jdk:/usr/bin/jconsole:/${_jdk_home}/bin/jconsole
- jdk:/usr/bin/jdb:/${_jdk_home}/bin/jdb
- jdk:/usr/bin/jdeprscan:/${_jdk_home}/bin/jdeprscan
- jdk:/usr/bin/jdeps:/${_jdk_home}/bin/jdeps
- jdk:/usr/bin/jfr:/${_jdk_home}/bin/jfr
- jdk:/usr/bin/jhsdb:/${_jdk_home}/bin/jhsdb
- jdk:/usr/bin/jimage:/${_jdk_home}/bin/jimage
- jdk:/usr/bin/jinfo:/${_jdk_home}/bin/jinfo
- jdk:/usr/bin/jlink:/${_jdk_home}/bin/jlink
- jdk:/usr/bin/jmap:/${_jdk_home}/bin/jmap
- jdk:/usr/bin/jmod:/${_jdk_home}/bin/jmod
- jdk:/usr/bin/jpackage:/${_jdk_home}/bin/jpackage
- jdk:/usr/bin/jps:/${_jdk_home}/bin/jps
- jdk:/usr/bin/jrunscript:/${_jdk_home}/bin/jrunscript
- jdk:/usr/bin/jshell:/${_jdk_home}/bin/jshell
- jdk:/usr/bin/jstack:/${_jdk_home}/bin/jstack
- jdk:/usr/bin/jstat:/${_jdk_home}/bin/jstat
- jdk:/usr/bin/jstatd:/${_jdk_home}/bin/jstatd
- jdk:/usr/bin/keytool:/${_jdk_home}/bin/keytool
- jdk:/usr/bin/rmiregistry:/${_jdk_home}/bin/rmiregistry
- jdk:/usr/bin/serialver:/${_jdk_home}/bin/serialver
-"
-
post_extract() {
chmod +x $build_wrksrc/configure
if [ "$XBPS_TARGET_LIBC" = "musl" ]; then
@@ -173,17 +143,12 @@ openjdk17-jre_package() {
shlib_provides="libawt.so libawt_xawt.so libjava.so libjli.so libjvm.so libjawt.so"
short_desc+=" - runtime components"
provides="java-runtime-${version}_1"
- depends="xbps-triggers>=0.122_1"
- triggers="openjdk-profile"
- alternatives="
- java:/usr/bin/java:/${_jdk_home}/bin/java
- java:/usr/bin/jfr:/${_jdk_home}/bin/jfr
- java:/usr/bin/keytool:/${_jdk_home}/bin/keytool
- java:/usr/bin/rmiregistry:/${_jdk_home}/bin/rmiregistry
- "
+ depends="openjdk-common"
+ alternatives="java:/usr/lib/jvm/default-jre:/${_jdk_home}"
pkg_install() {
- for bf in java jfr keytool rmiregistry; do
- vmove $_jdk_home/bin/$bf
+ for bin in java jfr keytool rmiregistry; do
+ vmove "${_jdk_home}/bin/${bin}"
+ vmove "${_jdk_home}/man/man1/${bin}.1"
done
for f in lib legal conf release; do
@@ -200,13 +165,15 @@ openjdk17-doc_package() {
noverifyrdeps=yes
noshlibprovides=yes
short_desc+=" - documentation"
+ if [ -z "$build_option_docs" ]; then
+ build_style=meta
+ fi
pkg_install() {
if [ "$build_option_docs" ]; then
local _docdir=usr/share/doc/openjdk$_java_ver
vmkdir $_docdir
cp -a $wrksrc/$build_wrksrc/build/linux-*/images/docs/* ${PKGDESTDIR}/$_docdir
fi
- vmove $_jdk_home/man/man1
}
}
From d6a86c808663f5cadf31416be02198284ddd60cb Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Fri, 22 Dec 2023 19:26:22 -0500
Subject: [PATCH 08/12] *: fix name of jdk profile script in templates
---
srcpkgs/apache-fop/template | 2 +-
srcpkgs/apache-maven/template | 2 +-
srcpkgs/arduino/template | 2 +-
srcpkgs/bibletime/template | 2 +-
srcpkgs/davmail/template | 2 +-
srcpkgs/freeplane/template | 2 +-
srcpkgs/freerouting/template | 2 +-
srcpkgs/java-commons-io/template | 2 +-
srcpkgs/jedit/template | 2 +-
srcpkgs/kodi/template | 2 +-
srcpkgs/lightzone/template | 2 +-
srcpkgs/plantuml/template | 2 +-
srcpkgs/turbovnc/template | 2 +-
13 files changed, 13 insertions(+), 13 deletions(-)
diff --git a/srcpkgs/apache-fop/template b/srcpkgs/apache-fop/template
index 1dd6dd9854281..fe6a130c45c20 100644
--- a/srcpkgs/apache-fop/template
+++ b/srcpkgs/apache-fop/template
@@ -17,7 +17,7 @@ conf_files="/etc/fop.conf"
do_build() {
. /etc/profile.d/apache-ant.sh
- . /etc/profile.d/openjdk.sh
+ . /etc/profile.d/jdk.sh
ant package
}
do_install() {
diff --git a/srcpkgs/apache-maven/template b/srcpkgs/apache-maven/template
index 4b0995e11ba7d..27091a616c2e1 100644
--- a/srcpkgs/apache-maven/template
+++ b/srcpkgs/apache-maven/template
@@ -15,7 +15,7 @@ checksum="5f499a0c9263be556b03dd64002a1f99892eb50ee253aab81f1f338f3bc7abed
replaces="apache-maven-bin>=0"
do_build() {
- source /etc/profile.d/openjdk.sh
+ source /etc/profile.d/jdk.sh
./bin/mvn package -DskipTests -Drat.skip=true -Dmaven.repo.local=repo -DdistributionTargetDir=${DESTDIR}/usr/lib/${pkgname}
}
diff --git a/srcpkgs/arduino/template b/srcpkgs/arduino/template
index ad169d3faf3a7..b1cfcac0b2a20 100644
--- a/srcpkgs/arduino/template
+++ b/srcpkgs/arduino/template
@@ -26,7 +26,7 @@ fi
do_build() {
. /etc/profile.d/apache-ant.sh
- . /etc/profile.d/openjdk.sh
+ . /etc/profile.d/jdk.sh
export CFLAGS+=" -I${XBPS_CROSS_BASE}/usr/lib/jvm/java-1.8-openjdk/include/linux"
export CFLAGS+=" -I${XBPS_CROSS_BASE}/usr/lib/jvm/java-1.8-openjdk/include"
diff --git a/srcpkgs/bibletime/template b/srcpkgs/bibletime/template
index d8be23d33be61..fcff5e72752ba 100644
--- a/srcpkgs/bibletime/template
+++ b/srcpkgs/bibletime/template
@@ -20,7 +20,7 @@ distfiles="https://github.com/bibletime/bibletime/releases/download/v${version}/
checksum=d6beef62ad44b255e3dc4c5e89214bf01a0e85c9136073b0be12fca3d2b22622
pre_build() {
- . /etc/profile.d/openjdk.sh
+ . /etc/profile.d/jdk.sh
if [ "$XBPS_WORDSIZE" = "32" ]; then
export _JAVA_OPTIONS="-Xmx1024m"
fi
diff --git a/srcpkgs/davmail/template b/srcpkgs/davmail/template
index 1652c266ecfe8..9bcc6dda9d1f2 100644
--- a/srcpkgs/davmail/template
+++ b/srcpkgs/davmail/template
@@ -14,7 +14,7 @@ distfiles="${SOURCEFORGE_SITE}/davmail/davmail-src-${version}-${_commit}.tgz"
checksum=08e7103d14e9f05ec269caceef7585dcf8be202a35c471fa6fc12729cf99ef2f
do_build() {
- . /etc/profile.d/openjdk.sh
+ . /etc/profile.d/jdk.sh
. /etc/profile.d/apache-ant.sh
ant jar
diff --git a/srcpkgs/freeplane/template b/srcpkgs/freeplane/template
index 50fb28292152a..e98b19dc01e6a 100644
--- a/srcpkgs/freeplane/template
+++ b/srcpkgs/freeplane/template
@@ -22,7 +22,7 @@ esac
do_build() {
. /etc/profile.d/apache-ant.sh
- . /etc/profile.d/openjdk.sh
+ . /etc/profile.d/jdk.sh
gradle format_translation binZip -x test
}
diff --git a/srcpkgs/freerouting/template b/srcpkgs/freerouting/template
index e128119f75cd1..414053ed6c620 100644
--- a/srcpkgs/freerouting/template
+++ b/srcpkgs/freerouting/template
@@ -12,7 +12,7 @@ distfiles="https://github.com/freerouting/${pkgname}/archive/v${version}.tar.gz"
checksum=36742a91e492956e3adc5d75e542a40f3e03d15d69d15717a9d39c0585faac44
do_build() {
- . /etc/profile.d/openjdk.sh
+ . /etc/profile.d/jdk.sh
gradle assemble
}
diff --git a/srcpkgs/java-commons-io/template b/srcpkgs/java-commons-io/template
index c07dcb187f9fe..945622a6004a4 100644
--- a/srcpkgs/java-commons-io/template
+++ b/srcpkgs/java-commons-io/template
@@ -18,7 +18,7 @@ case "$XBPS_MACHINE" in
esac
do_build() {
- source /etc/profile.d/openjdk.sh
+ source /etc/profile.d/jdk.sh
mvn package -Dmaven.test.skip=true
}
diff --git a/srcpkgs/jedit/template b/srcpkgs/jedit/template
index 094feb547d7a8..1f014fb04c8d0 100644
--- a/srcpkgs/jedit/template
+++ b/srcpkgs/jedit/template
@@ -18,7 +18,7 @@ post_patch() {
do_build() {
. /etc/profile.d/apache-ant.sh
- . /etc/profile.d/openjdk.sh
+ . /etc/profile.d/jdk.sh
ant -propertyfile ${FILESDIR}/build.properties build
ant -propertyfile ${FILESDIR}/build.properties docs-html
diff --git a/srcpkgs/kodi/template b/srcpkgs/kodi/template
index aa59324258a0d..d37a5918cd675 100644
--- a/srcpkgs/kodi/template
+++ b/srcpkgs/kodi/template
@@ -102,7 +102,7 @@ pre_configure() {
xargs sed -i -e "s;-isystem;-I;g"
fi
- . /etc/profile.d/openjdk.sh
+ . /etc/profile.d/jdk.sh
# Build tools needed to run on the host
if [ "$CROSS_BUILD" ]; then
diff --git a/srcpkgs/lightzone/template b/srcpkgs/lightzone/template
index b0c28a0c3a88a..7cfa27dd538ae 100644
--- a/srcpkgs/lightzone/template
+++ b/srcpkgs/lightzone/template
@@ -28,7 +28,7 @@ do_build() {
vsed -i lightcrafts/jnisrc/tiff/GNUmakefile \
-e "s;\./configure;& --host=${XBPS_MACHINE%-musl};"
- . /etc/profile.d/openjdk.sh
+ . /etc/profile.d/jdk.sh
cd linux
TARGET=${XBPS_TARGET_MACHINE%-musl} ant jar
}
diff --git a/srcpkgs/plantuml/template b/srcpkgs/plantuml/template
index 03318f4c07227..156db505a0484 100644
--- a/srcpkgs/plantuml/template
+++ b/srcpkgs/plantuml/template
@@ -14,7 +14,7 @@ distfiles="${SOURCEFORGE_SITE}/plantuml/plantuml-gplv2-${version}.tar.gz"
checksum=c21bb155ecfc53f4f0a5924238069f0c979b0f426bfa44fd62ce73f2aa1b4339
do_build() {
- . /etc/profile.d/openjdk.sh
+ . /etc/profile.d/jdk.sh
. /etc/profile.d/apache-ant.sh
ant
mv ${pkgname}.jar ${pkgname}-${version}.jar
diff --git a/srcpkgs/turbovnc/template b/srcpkgs/turbovnc/template
index 287754ef9daa4..9dd794662b862 100644
--- a/srcpkgs/turbovnc/template
+++ b/srcpkgs/turbovnc/template
@@ -27,7 +27,7 @@ if [ "$CROSS_BUILD" ]; then
fi
pre_configure() {
- . /etc/profile.d/openjdk.sh
+ . /etc/profile.d/jdk.sh
}
post_install() {
From 5d19f79087b15280459676a727223f0e2462ae5b Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Fri, 22 Dec 2023 00:44:06 -0500
Subject: [PATCH 09/12] New package: openjdk18-bootstrap-18.0.2.1+0
---
.../patches/FixNullPtrCast.patch | 104 +++++
.../openjdk18-bootstrap/patches/cgroups.patch | 406 ++++++++++++++++++
srcpkgs/openjdk18-bootstrap/template | 101 +++++
srcpkgs/openjdk18-bootstrap/update | 4 +
4 files changed, 615 insertions(+)
create mode 100644 srcpkgs/openjdk18-bootstrap/patches/FixNullPtrCast.patch
create mode 100644 srcpkgs/openjdk18-bootstrap/patches/cgroups.patch
create mode 100644 srcpkgs/openjdk18-bootstrap/template
create mode 100644 srcpkgs/openjdk18-bootstrap/update
diff --git a/srcpkgs/openjdk18-bootstrap/patches/FixNullPtrCast.patch b/srcpkgs/openjdk18-bootstrap/patches/FixNullPtrCast.patch
new file mode 100644
index 0000000000000..7fa335939e61d
--- /dev/null
+++ b/srcpkgs/openjdk18-bootstrap/patches/FixNullPtrCast.patch
@@ -0,0 +1,104 @@
+Subject: Fix cast errors with latest GCC (11.2)
+Upstream: No
+Author: Simon Frankenberger <simon-alpine@fraho.eu>
+
+This patch fixes multiple casting errors reported by GCC 11.2
+
+--- old/src/hotspot/share/gc/shenandoah/shenandoahBarrierSet.inline.hpp
++++ new/src/hotspot/share/gc/shenandoah/shenandoahBarrierSet.inline.hpp
+@@ -205,7 +205,7 @@
+
+ // Note: We don't need a keep-alive-barrier here. We already enqueue any loaded reference for SATB anyway,
+ // because it must be the previous value.
+- res = load_reference_barrier(decorators, res, reinterpret_cast<T*>(NULL));
++ res = load_reference_barrier(decorators, res, static_cast<T*>(NULL));
+ satb_enqueue(res);
+ return res;
+ }
+@@ -216,7 +216,7 @@
+ oop previous = RawAccess<>::oop_atomic_xchg(addr, new_value);
+ // Note: We don't need a keep-alive-barrier here. We already enqueue any loaded reference for SATB anyway,
+ // because it must be the previous value.
+- previous = load_reference_barrier<T>(decorators, previous, reinterpret_cast<T*>(NULL));
++ previous = load_reference_barrier<T>(decorators, previous, static_cast<T*>(NULL));
+ satb_enqueue(previous);
+ return previous;
+ }
+--- old/src/hotspot/share/oops/access.hpp
++++ new/src/hotspot/share/oops/access.hpp
+@@ -294,8 +294,8 @@
+ static inline void arraycopy(arrayOop src_obj, size_t src_offset_in_bytes,
+ arrayOop dst_obj, size_t dst_offset_in_bytes,
+ size_t length) {
+- AccessT::arraycopy(src_obj, src_offset_in_bytes, reinterpret_cast<const T*>(NULL),
+- dst_obj, dst_offset_in_bytes, reinterpret_cast<T*>(NULL),
++ AccessT::arraycopy(src_obj, src_offset_in_bytes, static_cast<const T*>(NULL),
++ dst_obj, dst_offset_in_bytes, static_cast<T*>(NULL),
+ length);
+ }
+
+@@ -303,7 +303,7 @@
+ static inline void arraycopy_to_native(arrayOop src_obj, size_t src_offset_in_bytes,
+ T* dst,
+ size_t length) {
+- AccessT::arraycopy(src_obj, src_offset_in_bytes, reinterpret_cast<const T*>(NULL),
++ AccessT::arraycopy(src_obj, src_offset_in_bytes, static_cast<const T*>(NULL),
+ NULL, 0, dst,
+ length);
+ }
+@@ -313,15 +313,15 @@
+ arrayOop dst_obj, size_t dst_offset_in_bytes,
+ size_t length) {
+ AccessT::arraycopy(NULL, 0, src,
+- dst_obj, dst_offset_in_bytes, reinterpret_cast<T*>(NULL),
++ dst_obj, dst_offset_in_bytes, static_cast<T*>(NULL),
+ length);
+ }
+
+ static inline bool oop_arraycopy(arrayOop src_obj, size_t src_offset_in_bytes,
+ arrayOop dst_obj, size_t dst_offset_in_bytes,
+ size_t length) {
+- return AccessT::oop_arraycopy(src_obj, src_offset_in_bytes, reinterpret_cast<const HeapWord*>(NULL),
+- dst_obj, dst_offset_in_bytes, reinterpret_cast<HeapWord*>(NULL),
++ return AccessT::oop_arraycopy(src_obj, src_offset_in_bytes, static_cast<const HeapWord*>(NULL),
++ dst_obj, dst_offset_in_bytes, static_cast<HeapWord*>(NULL),
+ length);
+ }
+
+--- old/src/hotspot/cpu/x86/interp_masm_x86.cpp
++++ new/src/hotspot/cpu/x86/interp_masm_x86.cpp
+@@ -1122,7 +1122,7 @@
+
+ bind(loop);
+ // check if current entry is used
+- cmpptr(Address(rmon, BasicObjectLock::obj_offset_in_bytes()), (int32_t) NULL);
++ cmpptr(Address(rmon, BasicObjectLock::obj_offset_in_bytes()), 0);
+ jcc(Assembler::notEqual, exception);
+
+ addptr(rmon, entry_size); // otherwise advance to next entry
+--- old/src/hotspot/cpu/x86/interpreterRT_x86_64.cpp
++++ new/src/hotspot/cpu/x86/interpreterRT_x86_64.cpp
+@@ -443,10 +443,10 @@
+ _from -= Interpreter::stackElementSize;
+
+ if (_num_int_args < Argument::n_int_register_parameters_c-1) {
+- *_int_args++ = (*from_addr == 0) ? NULL : (intptr_t)from_addr;
++ *_int_args++ = (*from_addr == 0) ? (intptr_t) 0 : (intptr_t) from_addr;
+ _num_int_args++;
+ } else {
+- *_to++ = (*from_addr == 0) ? NULL : (intptr_t) from_addr;
++ *_to++ = (*from_addr == 0) ? (intptr_t) 0 : (intptr_t) from_addr;
+ }
+ }
+
+--- old/src/hotspot/cpu/aarch64/interpreterRT_aarch64.cpp
++++ new/src/hotspot/cpu/aarch64/interpreterRT_aarch64.cpp
+@@ -267,7 +267,7 @@
+
+ virtual void pass_object() {
+ intptr_t* addr = single_slot_addr();
+- intptr_t value = *addr == 0 ? NULL : (intptr_t)addr;
++ intptr_t value = *addr == 0 ? (intptr_t) 0 : (intptr_t)addr;
+ if (pass_gpr(value) < 0) {
+ pass_stack<>(value);
+ }
diff --git a/srcpkgs/openjdk18-bootstrap/patches/cgroups.patch b/srcpkgs/openjdk18-bootstrap/patches/cgroups.patch
new file mode 100644
index 0000000000000..efeaa0871a03b
--- /dev/null
+++ b/srcpkgs/openjdk18-bootstrap/patches/cgroups.patch
@@ -0,0 +1,406 @@
+From 8f3bbe950fb5a3d9f6cae122209df01df0f342f0 Mon Sep 17 00:00:00 2001
+From: casparcwang <casparcwang@tencent.com>
+Date: Thu, 15 Sep 2022 08:47:05 +0000
+Subject: [PATCH] 8293472: Incorrect container resource limit detection if
+ manual cgroup fs mounts present
+
+Reviewed-by: sgehwolf, iklam
+---
+ .../os/linux/cgroupSubsystem_linux.cpp | 69 +++++++++---------
+ .../os/linux/cgroupSubsystem_linux.hpp | 5 ++
+ .../cgroup/CgroupSubsystemFactory.java | 71 ++++++++++++++++---
+ .../containers/docker/DockerBasicTest.java | 14 ++++
+ .../containers/docker/TestCPUAwareness.java | 15 ++--
+ .../docker/TestMemoryAwareness.java | 15 ++--
+ 6 files changed, 135 insertions(+), 54 deletions(-)
+
+diff --git a/src/hotspot/os/linux/cgroupSubsystem_linux.cpp b/src/hotspot/os/linux/cgroupSubsystem_linux.cpp
+index baa7a40a9146..1f3a6dfcaf6b 100644
+--- a/src/hotspot/os/linux/cgroupSubsystem_linux.cpp
++++ b/src/hotspot/os/linux/cgroupSubsystem_linux.cpp
+@@ -123,6 +123,32 @@ CgroupSubsystem* CgroupSubsystemFactory::create() {
+ return new CgroupV1Subsystem(cpuset, cpu, cpuacct, pids, memory);
+ }
+
++void CgroupSubsystemFactory::set_controller_paths(CgroupInfo* cg_infos,
++ int controller,
++ const char* name,
++ char* mount_path,
++ char* root_path) {
++ if (cg_infos[controller]._mount_path != NULL) {
++ // On some systems duplicate controllers get mounted in addition to
++ // the main cgroup controllers most likely under /sys/fs/cgroup. In that
++ // case pick the one under /sys/fs/cgroup and discard others.
++ if (strstr(cg_infos[controller]._mount_path, "/sys/fs/cgroup") != cg_infos[controller]._mount_path) {
++ log_debug(os, container)("Duplicate %s controllers detected. Picking %s, skipping %s.",
++ name, mount_path, cg_infos[controller]._mount_path);
++ os::free(cg_infos[controller]._mount_path);
++ os::free(cg_infos[controller]._root_mount_path);
++ cg_infos[controller]._mount_path = os::strdup(mount_path);
++ cg_infos[controller]._root_mount_path = os::strdup(root_path);
++ } else {
++ log_debug(os, container)("Duplicate %s controllers detected. Picking %s, skipping %s.",
++ name, cg_infos[controller]._mount_path, mount_path);
++ }
++ } else {
++ cg_infos[controller]._mount_path = os::strdup(mount_path);
++ cg_infos[controller]._root_mount_path = os::strdup(root_path);
++ }
++}
++
+ bool CgroupSubsystemFactory::determine_type(CgroupInfo* cg_infos,
+ const char* proc_cgroups,
+ const char* proc_self_cgroup,
+@@ -288,7 +314,6 @@ bool CgroupSubsystemFactory::determine_type(CgroupInfo* cg_infos,
+ bool cgroupv2_mount_point_found = false;
+ bool any_cgroup_mounts_found = false;
+ while ((p = fgets(buf, MAXPATHLEN, mntinfo)) != NULL) {
+- char tmp_mount_point[MAXPATHLEN+1];
+ char tmp_fs_type[MAXPATHLEN+1];
+ char tmproot[MAXPATHLEN+1];
+ char tmpmount[MAXPATHLEN+1];
+@@ -299,15 +324,13 @@ bool CgroupSubsystemFactory::determine_type(CgroupInfo* cg_infos,
+ // Cgroup v2 relevant info. We only look for the _mount_path iff is_cgroupsV2 so
+ // as to avoid memory stomping of the _mount_path pointer later on in the cgroup v1
+ // block in the hybrid case.
+- //
+- if (is_cgroupsV2 && sscanf(p, "%*d %*d %*d:%*d %*s %s %*[^-]- %s %*s %*s", tmp_mount_point, tmp_fs_type) == 2) {
++ if (is_cgroupsV2 && sscanf(p, "%*d %*d %*d:%*d %s %s %*[^-]- %s %*s %*s", tmproot, tmpmount, tmp_fs_type) == 3) {
+ // we likely have an early match return (e.g. cgroup fs match), be sure we have cgroup2 as fstype
+- if (!cgroupv2_mount_point_found && strcmp("cgroup2", tmp_fs_type) == 0) {
++ if (strcmp("cgroup2", tmp_fs_type) == 0) {
+ cgroupv2_mount_point_found = true;
+ any_cgroup_mounts_found = true;
+ for (int i = 0; i < CG_INFO_LENGTH; i++) {
+- assert(cg_infos[i]._mount_path == NULL, "_mount_path memory stomping");
+- cg_infos[i]._mount_path = os::strdup(tmp_mount_point);
++ set_controller_paths(cg_infos, i, "(cg2, unified)", tmpmount, tmproot);
+ }
+ }
+ }
+@@ -332,47 +355,23 @@ bool CgroupSubsystemFactory::determine_type(CgroupInfo* cg_infos,
+ while ((token = strsep(&cptr, ",")) != NULL) {
+ if (strcmp(token, "memory") == 0) {
+ any_cgroup_mounts_found = true;
+- assert(cg_infos[MEMORY_IDX]._mount_path == NULL, "stomping of _mount_path");
+- cg_infos[MEMORY_IDX]._mount_path = os::strdup(tmpmount);
+- cg_infos[MEMORY_IDX]._root_mount_path = os::strdup(tmproot);
++ set_controller_paths(cg_infos, MEMORY_IDX, token, tmpmount, tmproot);
+ cg_infos[MEMORY_IDX]._data_complete = true;
+ } else if (strcmp(token, "cpuset") == 0) {
+ any_cgroup_mounts_found = true;
+- if (cg_infos[CPUSET_IDX]._mount_path != NULL) {
+- // On some systems duplicate cpuset controllers get mounted in addition to
+- // the main cgroup controllers most likely under /sys/fs/cgroup. In that
+- // case pick the one under /sys/fs/cgroup and discard others.
+- if (strstr(cg_infos[CPUSET_IDX]._mount_path, "/sys/fs/cgroup") != cg_infos[CPUSET_IDX]._mount_path) {
+- log_warning(os, container)("Duplicate cpuset controllers detected. Picking %s, skipping %s.",
+- tmpmount, cg_infos[CPUSET_IDX]._mount_path);
+- os::free(cg_infos[CPUSET_IDX]._mount_path);
+- cg_infos[CPUSET_IDX]._mount_path = os::strdup(tmpmount);
+- } else {
+- log_warning(os, container)("Duplicate cpuset controllers detected. Picking %s, skipping %s.",
+- cg_infos[CPUSET_IDX]._mount_path, tmpmount);
+- }
+- } else {
+- cg_infos[CPUSET_IDX]._mount_path = os::strdup(tmpmount);
+- }
+- cg_infos[CPUSET_IDX]._root_mount_path = os::strdup(tmproot);
++ set_controller_paths(cg_infos, CPUSET_IDX, token, tmpmount, tmproot);
+ cg_infos[CPUSET_IDX]._data_complete = true;
+ } else if (strcmp(token, "cpu") == 0) {
+ any_cgroup_mounts_found = true;
+- assert(cg_infos[CPU_IDX]._mount_path == NULL, "stomping of _mount_path");
+- cg_infos[CPU_IDX]._mount_path = os::strdup(tmpmount);
+- cg_infos[CPU_IDX]._root_mount_path = os::strdup(tmproot);
++ set_controller_paths(cg_infos, CPU_IDX, token, tmpmount, tmproot);
+ cg_infos[CPU_IDX]._data_complete = true;
+ } else if (strcmp(token, "cpuacct") == 0) {
+ any_cgroup_mounts_found = true;
+- assert(cg_infos[CPUACCT_IDX]._mount_path == NULL, "stomping of _mount_path");
+- cg_infos[CPUACCT_IDX]._mount_path = os::strdup(tmpmount);
+- cg_infos[CPUACCT_IDX]._root_mount_path = os::strdup(tmproot);
++ set_controller_paths(cg_infos, CPUACCT_IDX, token, tmpmount, tmproot);
+ cg_infos[CPUACCT_IDX]._data_complete = true;
+ } else if (strcmp(token, "pids") == 0) {
+ any_cgroup_mounts_found = true;
+- assert(cg_infos[PIDS_IDX]._mount_path == NULL, "stomping of _mount_path");
+- cg_infos[PIDS_IDX]._mount_path = os::strdup(tmpmount);
+- cg_infos[PIDS_IDX]._root_mount_path = os::strdup(tmproot);
++ set_controller_paths(cg_infos, PIDS_IDX, token, tmpmount, tmproot);
+ cg_infos[PIDS_IDX]._data_complete = true;
+ }
+ }
+diff --git a/src/hotspot/os/linux/cgroupSubsystem_linux.hpp b/src/hotspot/os/linux/cgroupSubsystem_linux.hpp
+index 2e3fc8e8bc78..91456b3d0e14 100644
+--- a/src/hotspot/os/linux/cgroupSubsystem_linux.hpp
++++ b/src/hotspot/os/linux/cgroupSubsystem_linux.hpp
+@@ -311,6 +311,11 @@ class CgroupSubsystemFactory: AllStatic {
+ }
+ #endif
+
++ static void set_controller_paths(CgroupInfo* cg_infos,
++ int controller,
++ const char* name,
++ char* mount_path,
++ char* root_path);
+ // Determine the cgroup type (version 1 or version 2), given
+ // relevant paths to files. Sets 'flags' accordingly.
+ static bool determine_type(CgroupInfo* cg_infos,
+diff --git a/test/hotspot/jtreg/containers/cgroup/CgroupSubsystemFactory.java b/test/hotspot/jtreg/containers/cgroup/CgroupSubsystemFactory.java
+index 54807119d82e..7eb78fa447fd 100644
+--- a/test/hotspot/jtreg/containers/cgroup/CgroupSubsystemFactory.java
++++ b/test/hotspot/jtreg/containers/cgroup/CgroupSubsystemFactory.java
+@@ -62,11 +62,19 @@ public class CgroupSubsystemFactory {
+ private Path cgroupv1MntInfoZeroHierarchy;
+ private Path cgroupv2CgInfoZeroHierarchy;
+ private Path cgroupv2MntInfoZeroHierarchy;
++ private Path cgroupv2MntInfoDouble;
++ private Path cgroupv2MntInfoDouble2;
+ private Path cgroupv1CgInfoNonZeroHierarchy;
+ private Path cgroupv1MntInfoNonZeroHierarchyOtherOrder;
+ private Path cgroupv1MntInfoNonZeroHierarchy;
+ private Path cgroupv1MntInfoDoubleCpuset;
+ private Path cgroupv1MntInfoDoubleCpuset2;
++ private Path cgroupv1MntInfoDoubleMemory;
++ private Path cgroupv1MntInfoDoubleMemory2;
++ private Path cgroupv1MntInfoDoubleCpu;
++ private Path cgroupv1MntInfoDoubleCpu2;
++ private Path cgroupv1MntInfoDoublePids;
++ private Path cgroupv1MntInfoDoublePids2;
+ private Path cgroupv1MntInfoSystemdOnly;
+ private String mntInfoEmpty = "";
+ private Path cgroupV1SelfCgroup;
+@@ -160,6 +168,15 @@ public class CgroupSubsystemFactory {
+ private String mntInfoCgroupv1MoreCpusetLine = "121 32 0:37 / /cpusets rw,relatime shared:69 - cgroup none rw,cpuset\n";
+ private String mntInfoCgroupv1DoubleCpuset = mntInfoCgroupv1MoreCpusetLine + mntInfoHybrid;
+ private String mntInfoCgroupv1DoubleCpuset2 = mntInfoHybrid + mntInfoCgroupv1MoreCpusetLine;
++ private String mntInfoCgroupv1MoreMemoryLine = "1100 1098 0:28 / /memory rw,nosuid,nodev,noexec,relatime master:6 - cgroup cgroup rw,memory\n";
++ private String mntInfoCgroupv1DoubleMemory = mntInfoCgroupv1MoreMemoryLine + mntInfoHybrid;
++ private String mntInfoCgroupv1DoubleMemory2 = mntInfoHybrid + mntInfoCgroupv1MoreMemoryLine;
++ private String mntInfoCgroupv1DoubleCpuLine = "1101 1098 0:29 / /cpu,cpuacct rw,nosuid,nodev,noexec,relatime master:7 - cgroup cgroup rw,cpu,cpuacct\n";
++ private String mntInfoCgroupv1DoubleCpu = mntInfoCgroupv1DoubleCpuLine + mntInfoHybrid;
++ private String mntInfoCgroupv1DoubleCpu2 = mntInfoHybrid + mntInfoCgroupv1DoubleCpuLine;
++ private String mntInfoCgroupv1DoublePidsLine = "1107 1098 0:35 / /pids rw,nosuid,nodev,noexec,relatime master:13 - cgroup cgroup rw,pids\n";
++ private String mntInfoCgroupv1DoublePids = mntInfoCgroupv1DoublePidsLine + mntInfoHybrid;
++ private String mntInfoCgroupv1DoublePids2 = mntInfoHybrid + mntInfoCgroupv1DoublePidsLine;
+ private String cgroupsNonZeroHierarchy =
+ "#subsys_name hierarchy num_cgroups enabled\n" +
+ "cpuset 3 1 1\n" +
+@@ -175,7 +192,11 @@ public class CgroupSubsystemFactory {
+ "hugetlb 6 1 1\n" +
+ "pids 9 80 1"; // hierarchy has to match procSelfCgroupHybridContent
+ private String mntInfoCgroupsV2Only =
+- "28 21 0:25 / /sys/fs/cgroup rw,nosuid,nodev,noexec,relatime shared:4 - cgroup2 none rw,seclabel,nsdelegate";
++ "28 21 0:25 / /sys/fs/cgroup rw,nosuid,nodev,noexec,relatime shared:4 - cgroup2 none rw,seclabel,nsdelegate\n";
++ private String mntInfoCgroupsV2MoreLine =
++ "240 232 0:24 /../.. /cgroup-in ro,relatime - cgroup2 cgroup2 rw,nsdelegate\n";
++ private String mntInfoCgroupsV2Double = mntInfoCgroupsV2MoreLine + mntInfoCgroupsV2Only;
++ private String mntInfoCgroupsV2Double2 = mntInfoCgroupsV2Only + mntInfoCgroupsV2MoreLine;
+ private String mntInfoCgroupsV1SystemdOnly =
+ "35 26 0:26 / /sys/fs/cgroup/systemd rw,nosuid,nodev,noexec,relatime - cgroup systemd rw,name=systemd\n" +
+ "26 18 0:19 / /sys/fs/cgroup rw,relatime - tmpfs none rw,size=4k,mode=755\n";
+@@ -217,6 +238,12 @@ private void setup() {
+ cgroupv2MntInfoZeroHierarchy = Paths.get(existingDirectory.toString(), "mountinfo_cgroupv2");
+ Files.writeString(cgroupv2MntInfoZeroHierarchy, mntInfoCgroupsV2Only);
+
++ cgroupv2MntInfoDouble = Paths.get(existingDirectory.toString(), "mountinfo_cgroupv2_double");
++ Files.writeString(cgroupv2MntInfoDouble, mntInfoCgroupsV2Double);
++
++ cgroupv2MntInfoDouble2 = Paths.get(existingDirectory.toString(), "mountinfo_cgroupv2_double2");
++ Files.writeString(cgroupv2MntInfoDouble2, mntInfoCgroupsV2Double2);
++
+ cgroupv1CgInfoNonZeroHierarchy = Paths.get(existingDirectory.toString(), "cgroups_non_zero");
+ Files.writeString(cgroupv1CgInfoNonZeroHierarchy, cgroupsNonZeroHierarchy);
+
+@@ -244,6 +271,24 @@ private void setup() {
+ cgroupv1MntInfoDoubleCpuset2 = Paths.get(existingDirectory.toString(), "mnt_info_cgroupv1_double_cpuset2");
+ Files.writeString(cgroupv1MntInfoDoubleCpuset2, mntInfoCgroupv1DoubleCpuset2);
+
++ cgroupv1MntInfoDoubleMemory = Paths.get(existingDirectory.toString(), "mnt_info_cgroupv1_double_memory");
++ Files.writeString(cgroupv1MntInfoDoubleMemory, mntInfoCgroupv1DoubleMemory);
++
++ cgroupv1MntInfoDoubleMemory2 = Paths.get(existingDirectory.toString(), "mnt_info_cgroupv1_double_memory2");
++ Files.writeString(cgroupv1MntInfoDoubleMemory2, mntInfoCgroupv1DoubleMemory2);
++
++ cgroupv1MntInfoDoubleCpu = Paths.get(existingDirectory.toString(), "mnt_info_cgroupv1_double_cpu");
++ Files.writeString(cgroupv1MntInfoDoubleCpu, mntInfoCgroupv1DoubleCpu);
++
++ cgroupv1MntInfoDoubleCpu2 = Paths.get(existingDirectory.toString(), "mnt_info_cgroupv1_double_cpu2");
++ Files.writeString(cgroupv1MntInfoDoubleCpu2, mntInfoCgroupv1DoubleCpu2);
++
++ cgroupv1MntInfoDoublePids = Paths.get(existingDirectory.toString(), "mnt_info_cgroupv1_double_pids");
++ Files.writeString(cgroupv1MntInfoDoublePids, mntInfoCgroupv1DoublePids);
++
++ cgroupv1MntInfoDoublePids2 = Paths.get(existingDirectory.toString(), "mnt_info_cgroupv1_double_pids2");
++ Files.writeString(cgroupv1MntInfoDoublePids2, mntInfoCgroupv1DoublePids2);
++
+ cgroupv1MntInfoSystemdOnly = Paths.get(existingDirectory.toString(), "mnt_info_cgroupv1_systemd_only");
+ Files.writeString(cgroupv1MntInfoSystemdOnly, mntInfoCgroupsV1SystemdOnly);
+
+@@ -291,14 +336,14 @@ public void testCgroupv1JoinControllerCombo(WhiteBox wb) {
+ System.out.println("testCgroupv1JoinControllerMounts PASSED!");
+ }
+
+- public void testCgroupv1MultipleCpusetMounts(WhiteBox wb, Path mountInfo) {
++ public void testCgroupv1MultipleControllerMounts(WhiteBox wb, Path mountInfo) {
+ String procCgroups = cgroupv1CgInfoNonZeroHierarchy.toString();
+ String procSelfCgroup = cgroupV1SelfCgroup.toString();
+ String procSelfMountinfo = mountInfo.toString();
+ int retval = wb.validateCgroup(procCgroups, procSelfCgroup, procSelfMountinfo);
+- Asserts.assertEQ(CGROUPS_V1, retval, "Multiple cpuset controllers, but only one in /sys/fs/cgroup");
++ Asserts.assertEQ(CGROUPS_V1, retval, "Multiple controllers, but only one in /sys/fs/cgroup");
+ Asserts.assertTrue(isValidCgroup(retval));
+- System.out.println("testCgroupv1MultipleCpusetMounts PASSED!");
++ System.out.println("testCgroupv1MultipleControllerMounts PASSED!");
+ }
+
+ public void testCgroupv1SystemdOnly(WhiteBox wb) {
+@@ -341,10 +386,10 @@ public void testCgroupv1MissingMemoryController(WhiteBox wb) {
+ System.out.println("testCgroupv1MissingMemoryController PASSED!");
+ }
+
+- public void testCgroupv2(WhiteBox wb) {
++ public void testCgroupv2(WhiteBox wb, Path mountInfo) {
+ String procCgroups = cgroupv2CgInfoZeroHierarchy.toString();
+ String procSelfCgroup = cgroupV2SelfCgroup.toString();
+- String procSelfMountinfo = cgroupv2MntInfoZeroHierarchy.toString();
++ String procSelfMountinfo = mountInfo.toString();
+ int retval = wb.validateCgroup(procCgroups, procSelfCgroup, procSelfMountinfo);
+ Asserts.assertEQ(CGROUPS_V2, retval, "Expected");
+ Asserts.assertTrue(isValidCgroup(retval));
+@@ -388,13 +433,21 @@ public static void main(String[] args) throws Exception {
+ try {
+ test.testCgroupv1SystemdOnly(wb);
+ test.testCgroupv1NoMounts(wb);
+- test.testCgroupv2(wb);
++ test.testCgroupv2(wb, test.cgroupv2MntInfoZeroHierarchy);
++ test.testCgroupv2(wb, test.cgroupv2MntInfoDouble);
++ test.testCgroupv2(wb, test.cgroupv2MntInfoDouble2);
+ test.testCgroupV1Hybrid(wb);
+ test.testCgroupV1HybridMntInfoOrder(wb);
+ test.testCgroupv1MissingMemoryController(wb);
+ test.testCgroupv2NoCgroup2Fs(wb);
+- test.testCgroupv1MultipleCpusetMounts(wb, test.cgroupv1MntInfoDoubleCpuset);
+- test.testCgroupv1MultipleCpusetMounts(wb, test.cgroupv1MntInfoDoubleCpuset2);
++ test.testCgroupv1MultipleControllerMounts(wb, test.cgroupv1MntInfoDoubleCpuset);
++ test.testCgroupv1MultipleControllerMounts(wb, test.cgroupv1MntInfoDoubleCpuset2);
++ test.testCgroupv1MultipleControllerMounts(wb, test.cgroupv1MntInfoDoubleMemory);
++ test.testCgroupv1MultipleControllerMounts(wb, test.cgroupv1MntInfoDoubleMemory2);
++ test.testCgroupv1MultipleControllerMounts(wb, test.cgroupv1MntInfoDoubleCpu);
++ test.testCgroupv1MultipleControllerMounts(wb, test.cgroupv1MntInfoDoubleCpu2);
++ test.testCgroupv1MultipleControllerMounts(wb, test.cgroupv1MntInfoDoublePids);
++ test.testCgroupv1MultipleControllerMounts(wb, test.cgroupv1MntInfoDoublePids2);
+ test.testCgroupv1JoinControllerCombo(wb);
+ test.testNonZeroHierarchyOnlyFreezer(wb);
+ } finally {
+diff --git a/test/hotspot/jtreg/containers/docker/DockerBasicTest.java b/test/hotspot/jtreg/containers/docker/DockerBasicTest.java
+index bcbd2ffa21df..357eb3db4972 100644
+--- a/test/hotspot/jtreg/containers/docker/DockerBasicTest.java
++++ b/test/hotspot/jtreg/containers/docker/DockerBasicTest.java
+@@ -53,6 +53,7 @@ public static void main(String[] args) throws Exception {
+ try {
+ testJavaVersion();
+ testHelloDocker();
++ testJavaVersionWithCgMounts();
+ } finally {
+ if (!DockerTestUtils.RETAIN_IMAGE_AFTER_TEST) {
+ DockerTestUtils.removeDockerImage(imageNameAndTag);
+@@ -81,4 +82,17 @@ private static void testHelloDocker() throws Exception {
+ .shouldHaveExitValue(0)
+ .shouldContain("Hello Docker");
+ }
++
++
++ private static void testJavaVersionWithCgMounts() throws Exception {
++ DockerRunOptions opts =
++ new DockerRunOptions(imageNameAndTag, "/jdk/bin/java", "-version")
++ .addDockerOpts("-v", "/sys/fs/cgroup:/cgroups-in:ro");
++
++ // Duplicated cgroup mounts should be handled by the container detection
++ // code and should not cause any error/warning output.
++ DockerTestUtils.dockerRunJava(opts)
++ .shouldHaveExitValue(0)
++ .shouldNotMatch("\\[os,container *\\]");
++ }
+ }
+diff --git a/test/hotspot/jtreg/containers/docker/TestCPUAwareness.java b/test/hotspot/jtreg/containers/docker/TestCPUAwareness.java
+index 93881c615bd9..a41dc9c39392 100644
+--- a/test/hotspot/jtreg/containers/docker/TestCPUAwareness.java
++++ b/test/hotspot/jtreg/containers/docker/TestCPUAwareness.java
+@@ -70,10 +70,11 @@ public static void main(String[] args) throws Exception {
+ testActiveProcessorCount(2, 2);
+
+ // cpu quota and period
+- testCpuQuotaAndPeriod(50*1000, 100*1000);
+- testCpuQuotaAndPeriod(100*1000, 100*1000);
+- testCpuQuotaAndPeriod(150*1000, 100*1000);
+- testCpuQuotaAndPeriod(400*1000, 100*1000);
++ testCpuQuotaAndPeriod(50*1000, 100*1000, false);
++ testCpuQuotaAndPeriod(100*1000, 100*1000, false);
++ testCpuQuotaAndPeriod(150*1000, 100*1000, false);
++ testCpuQuotaAndPeriod(400*1000, 100*1000, false);
++ testCpuQuotaAndPeriod(50*1000, 100*1000, true /* additional cgroup mount */);
+
+ testOperatingSystemMXBeanAwareness("0.5", "1");
+ testOperatingSystemMXBeanAwareness("1.0", "1");
+@@ -153,7 +154,7 @@ private static int adjustExpectedAPCForAvailableCPUs(int expectedAPC) {
+ }
+
+
+- private static void testCpuQuotaAndPeriod(int quota, int period)
++ private static void testCpuQuotaAndPeriod(int quota, int period, boolean addCgmounts)
+ throws Exception {
+ Common.logNewTestCase("test cpu quota and period: ");
+ System.out.println("quota = " + quota);
+@@ -167,6 +168,10 @@ private static void testCpuQuotaAndPeriod(int quota, int period)
+ .addDockerOpts("--cpu-period=" + period)
+ .addDockerOpts("--cpu-quota=" + quota);
+
++ if (addCgmounts) {
++ opts = opts.addDockerOpts("--volume", "/sys/fs/cgroup:/cgroups-in:ro");
++ }
++
+ Common.run(opts)
+ .shouldMatch("CPU Period is.*" + period)
+ .shouldMatch("CPU Quota is.*" + quota)
+diff --git a/test/hotspot/jtreg/containers/docker/TestMemoryAwareness.java b/test/hotspot/jtreg/containers/docker/TestMemoryAwareness.java
+index ff5cd23cc65f..d6ff603157a6 100644
+--- a/test/hotspot/jtreg/containers/docker/TestMemoryAwareness.java
++++ b/test/hotspot/jtreg/containers/docker/TestMemoryAwareness.java
+@@ -63,10 +63,11 @@ public static void main(String[] args) throws Exception {
+ DockerTestUtils.buildJdkContainerImage(imageName);
+
+ try {
+- testMemoryLimit("100m", "104857600");
+- testMemoryLimit("500m", "524288000");
+- testMemoryLimit("1g", "1073741824");
+- testMemoryLimit("4g", "4294967296");
++ testMemoryLimit("100m", "104857600", false);
++ testMemoryLimit("500m", "524288000", false);
++ testMemoryLimit("1g", "1073741824", false);
++ testMemoryLimit("4g", "4294967296", false);
++ testMemoryLimit("100m", "104857600", true /* additional cgroup mount */);
+
+ testMemorySoftLimit("500m", "524288000");
+ testMemorySoftLimit("1g", "1073741824");
+@@ -98,7 +99,7 @@ public static void main(String[] args) throws Exception {
+ }
+
+
+- private static void testMemoryLimit(String valueToSet, String expectedTraceValue)
++ private static void testMemoryLimit(String valueToSet, String expectedTraceValue, boolean addCgmounts)
+ throws Exception {
+
+ Common.logNewTestCase("memory limit: " + valueToSet);
+@@ -106,6 +107,10 @@ private static void testMemoryLimit(String valueToSet, String expectedTraceValue
+ DockerRunOptions opts = Common.newOpts(imageName)
+ .addDockerOpts("--memory", valueToSet);
+
++ if (addCgmounts) {
++ opts = opts.addDockerOpts("--volume", "/sys/fs/cgroup:/cgroups-in:ro");
++ }
++
+ Common.run(opts)
+ .shouldMatch("Memory Limit is:.*" + expectedTraceValue);
+ }
diff --git a/srcpkgs/openjdk18-bootstrap/template b/srcpkgs/openjdk18-bootstrap/template
new file mode 100644
index 0000000000000..ed4eb045ec054
--- /dev/null
+++ b/srcpkgs/openjdk18-bootstrap/template
@@ -0,0 +1,101 @@
+# Template file for 'openjdk18-bootstrap'
+pkgname=openjdk18-bootstrap
+version=18.0.2.1+0
+revision=1
+_gtest_ver=1.8.1
+_java_ver="${version%%.*}"
+_jdk_update="${version#*+}"
+_base_version="${version%.?+*}"
+_jdk_home="usr/lib/jvm/openjdk${_java_ver}"
+archs="x86_64* aarch64*"
+create_wrksrc=yes
+build_wrksrc="jdk${_java_ver}u-jdk-${version/+/-}"
+build_style=gnu-configure
+configure_args="--disable-warnings-as-errors
+ --enable-unlimited-crypto
+ --with-zlib=system
+ --with-libjpeg=system
+ --with-giflib=system
+ --with-libpng=system
+ --with-lcms=system
+ --with-jtreg=no
+ --with-gtest=../googletest-release-${_gtest_ver}
+ --with-debug-level=release
+ --with-native-debug-symbols=internal
+ --with-jobs=${XBPS_ORIG_MAKEJOBS}
+ --with-version-pre=
+ --with-version-build=${_jdk_update}
+ --with-version-opt=void-r${revision}
+ --with-vendor-name=Void
+ --with-vendor-url=https://voidlinux.org/
+ --with-vendor-bug-url=https://github.com/void-linux/void-packages/issues
+ --with-vendor-vm-bug-url=https://github.com/void-linux/void-packages/issues
+ --with-boot-jdk=/usr/lib/jvm/openjdk$(( _java_ver - 1 ))"
+make_build_args="images"
+make_check_target="test-hotspot-gtest"
+hostmakedepends="pkg-config automake autoconf cpio tar unzip zip ca-certificates
+ openssl zlib-devel which make-ca openjdk17"
+makedepends="libXrender-devel libXtst-devel libXt-devel libXrandr-devel
+ giflib-devel libjpeg-turbo-devel cups-devel freetype-devel alsa-lib-devel
+ fontconfig-devel zlib-devel lcms2-devel"
+short_desc="OpenJDK Java Development Kit (bootstrap version ${_java_ver})"
+maintainer="classabbyamp <void@placeviolette.net>"
+license="GPL-2.0-only WITH Classpath-exception-2.0"
+homepage="http://openjdk.java.net/"
+distfiles="https://github.com/openjdk/jdk${_java_ver}u/archive/jdk-${version}.tar.gz
+ https://github.com/google/googletest/archive/refs/tags/release-${_gtest_ver}.tar.gz"
+checksum="d3955839c1f566f949fbdf5d4f32a6fac2e57598fba2a1cbc8557c96df6ac8c4
+ 9bf1fe5182a604b4135edc1a425ae356c9ad15e9b23f9f12a02e80184c3a249c"
+nocross=yes
+repository=bootstrap
+patch_args="-Np1 --directory=$build_wrksrc"
+
+# Build and check are still parallel, but don't use -jN.
+disable_parallel_build=yes
+disable_parallel_check=yes
+
+case "$XBPS_TARGET_MACHINE" in
+ i686*|arm*) broken="Unsupported architecture" ;;
+esac
+
+post_extract() {
+ chmod +x "$build_wrksrc"/configure
+ if [ "$XBPS_TARGET_LIBC" = "musl" ]; then
+ rm -r "$build_wrksrc"/src/jdk.hotspot.agent
+ fi
+}
+
+do_configure() {
+ CFLAGS=${CFLAGS/-D_FORTIFY_SOURCE=2/}
+ CXXFLAGS=${CXXFLAGS/-D_FORTIFY_SOURCE=2/}
+
+ # force ELFv2 for ppc64 just in case
+ case "$XBPS_TARGET_MACHINE" in
+ ppc64*)
+ CFLAGS+=" -DABI_ELFv2"
+ CXXFLAGS+=" -DABI_ELFv2"
+ ;;
+ esac
+
+ configure_args=${configure_args/--with-libtool-sysroot=$XBPS_CROSS_BASE}
+ if [ "$XBPS_CCACHE" ] && [ -z "$CROSS_BUILD" ]; then
+ configure_args+=" --enable-ccache"
+ CC="/usr/bin/cc"
+ CXX="/usr/bin/c++"
+ fi
+ ./configure ${configure_args} \
+ --with-extra-cflags="$CFLAGS" \
+ --with-extra-cxxflags="$CXXFLAGS" \
+ --with-extra-ldflags="$LDFLAGS" \
+ READELF="$READELF" AR="$AR" STRIP="$STRIP" NM="$NM" \
+ OBJDUMP="$OBJDUMP" OBJCOPY="$OBJCOPY"
+}
+
+pre_install() {
+ make_install_args="INSTALL_PREFIX=${DESTDIR}/usr/lib"
+}
+
+post_install() {
+ rm -rf "${DESTDIR}"/usr/lib/bin
+ mv "${DESTDIR}"/usr/lib/jvm/openjdk-"${_base_version}" "${DESTDIR}/$_jdk_home"
+}
diff --git a/srcpkgs/openjdk18-bootstrap/update b/srcpkgs/openjdk18-bootstrap/update
new file mode 100644
index 0000000000000..0c349f69c7ba9
--- /dev/null
+++ b/srcpkgs/openjdk18-bootstrap/update
@@ -0,0 +1,4 @@
+site="https://github.com/openjdk/jdk18u/tags"
+pattern='jdk-\K18\.[\d.+]+(?=\.)'
+# don't need to update the bootstrap package
+ignore="*"
From 0d35e4879ad7146fae02fd8a31d750b9cf3261a6 Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Fri, 22 Dec 2023 00:46:39 -0500
Subject: [PATCH 10/12] New package: openjdk19-bootstrap-19.0.2+7
---
.../patches/FixNullPtrCast.patch | 36 ++
.../openjdk19-bootstrap/patches/cgroups.patch | 406 ++++++++++++++++++
srcpkgs/openjdk19-bootstrap/template | 101 +++++
srcpkgs/openjdk19-bootstrap/update | 4 +
4 files changed, 547 insertions(+)
create mode 100644 srcpkgs/openjdk19-bootstrap/patches/FixNullPtrCast.patch
create mode 100644 srcpkgs/openjdk19-bootstrap/patches/cgroups.patch
create mode 100644 srcpkgs/openjdk19-bootstrap/template
create mode 100644 srcpkgs/openjdk19-bootstrap/update
diff --git a/srcpkgs/openjdk19-bootstrap/patches/FixNullPtrCast.patch b/srcpkgs/openjdk19-bootstrap/patches/FixNullPtrCast.patch
new file mode 100644
index 0000000000000..6f05158792732
--- /dev/null
+++ b/srcpkgs/openjdk19-bootstrap/patches/FixNullPtrCast.patch
@@ -0,0 +1,36 @@
+Patch taken from Alpine: https://git.alpinelinux.org/aports/tree/community/openjdk17/FixNullPtrCast.patch
+
+same fix for armv7l-musl added
+
+Subject: Fix cast errors with latest GCC
+Upstream: No
+Author: Simon Frankenberger <simon-alpine@fraho.eu>
+
+This patch fixes one remaining casting error reported by GCC 12 for aarch64
+
+--- old/src/hotspot/cpu/aarch64/interpreterRT_aarch64.cpp
++++ new/src/hotspot/cpu/aarch64/interpreterRT_aarch64.cpp
+@@ -267,7 +267,7 @@
+
+ virtual void pass_object() {
+ intptr_t* addr = single_slot_addr();
+- intptr_t value = *addr == 0 ? NULL : (intptr_t)addr;
++ intptr_t value = *addr == 0 ? (intptr_t) 0 : (intptr_t)addr;
+ if (pass_gpr(value) < 0) {
+ pass_stack<>(value);
+ }
+
+--- old/src/hotspot/cpu/arm/interpreterRT_arm.cpp
++++ new/src/hotspot/cpu/arm/interpreterRT_arm.cpp
+@@ -306,8 +306,8 @@
+ virtual void pass_object() {
+ intptr_t from_addr = (intptr_t)(_from + Interpreter::local_offset_in_bytes(0));
+ if(_last_gp < GPR_PARAMS) {
+- _toGP[_last_gp++] = (*(intptr_t*)from_addr == 0) ? NULL : from_addr;
++ _toGP[_last_gp++] = (*(intptr_t*)from_addr == 0) ? (intptr_t) 0 : (intptr_t)from_addr;
+ } else {
+- *_to++ = (*(intptr_t*)from_addr == 0) ? NULL : from_addr;
++ *_to++ = (*(intptr_t*)from_addr == 0) ? (intptr_t) 0 : (intptr_t)from_addr;
+ }
+ _from -= Interpreter::stackElementSize;
+ }
diff --git a/srcpkgs/openjdk19-bootstrap/patches/cgroups.patch b/srcpkgs/openjdk19-bootstrap/patches/cgroups.patch
new file mode 100644
index 0000000000000..efeaa0871a03b
--- /dev/null
+++ b/srcpkgs/openjdk19-bootstrap/patches/cgroups.patch
@@ -0,0 +1,406 @@
+From 8f3bbe950fb5a3d9f6cae122209df01df0f342f0 Mon Sep 17 00:00:00 2001
+From: casparcwang <casparcwang@tencent.com>
+Date: Thu, 15 Sep 2022 08:47:05 +0000
+Subject: [PATCH] 8293472: Incorrect container resource limit detection if
+ manual cgroup fs mounts present
+
+Reviewed-by: sgehwolf, iklam
+---
+ .../os/linux/cgroupSubsystem_linux.cpp | 69 +++++++++---------
+ .../os/linux/cgroupSubsystem_linux.hpp | 5 ++
+ .../cgroup/CgroupSubsystemFactory.java | 71 ++++++++++++++++---
+ .../containers/docker/DockerBasicTest.java | 14 ++++
+ .../containers/docker/TestCPUAwareness.java | 15 ++--
+ .../docker/TestMemoryAwareness.java | 15 ++--
+ 6 files changed, 135 insertions(+), 54 deletions(-)
+
+diff --git a/src/hotspot/os/linux/cgroupSubsystem_linux.cpp b/src/hotspot/os/linux/cgroupSubsystem_linux.cpp
+index baa7a40a9146..1f3a6dfcaf6b 100644
+--- a/src/hotspot/os/linux/cgroupSubsystem_linux.cpp
++++ b/src/hotspot/os/linux/cgroupSubsystem_linux.cpp
+@@ -123,6 +123,32 @@ CgroupSubsystem* CgroupSubsystemFactory::create() {
+ return new CgroupV1Subsystem(cpuset, cpu, cpuacct, pids, memory);
+ }
+
++void CgroupSubsystemFactory::set_controller_paths(CgroupInfo* cg_infos,
++ int controller,
++ const char* name,
++ char* mount_path,
++ char* root_path) {
++ if (cg_infos[controller]._mount_path != NULL) {
++ // On some systems duplicate controllers get mounted in addition to
++ // the main cgroup controllers most likely under /sys/fs/cgroup. In that
++ // case pick the one under /sys/fs/cgroup and discard others.
++ if (strstr(cg_infos[controller]._mount_path, "/sys/fs/cgroup") != cg_infos[controller]._mount_path) {
++ log_debug(os, container)("Duplicate %s controllers detected. Picking %s, skipping %s.",
++ name, mount_path, cg_infos[controller]._mount_path);
++ os::free(cg_infos[controller]._mount_path);
++ os::free(cg_infos[controller]._root_mount_path);
++ cg_infos[controller]._mount_path = os::strdup(mount_path);
++ cg_infos[controller]._root_mount_path = os::strdup(root_path);
++ } else {
++ log_debug(os, container)("Duplicate %s controllers detected. Picking %s, skipping %s.",
++ name, cg_infos[controller]._mount_path, mount_path);
++ }
++ } else {
++ cg_infos[controller]._mount_path = os::strdup(mount_path);
++ cg_infos[controller]._root_mount_path = os::strdup(root_path);
++ }
++}
++
+ bool CgroupSubsystemFactory::determine_type(CgroupInfo* cg_infos,
+ const char* proc_cgroups,
+ const char* proc_self_cgroup,
+@@ -288,7 +314,6 @@ bool CgroupSubsystemFactory::determine_type(CgroupInfo* cg_infos,
+ bool cgroupv2_mount_point_found = false;
+ bool any_cgroup_mounts_found = false;
+ while ((p = fgets(buf, MAXPATHLEN, mntinfo)) != NULL) {
+- char tmp_mount_point[MAXPATHLEN+1];
+ char tmp_fs_type[MAXPATHLEN+1];
+ char tmproot[MAXPATHLEN+1];
+ char tmpmount[MAXPATHLEN+1];
+@@ -299,15 +324,13 @@ bool CgroupSubsystemFactory::determine_type(CgroupInfo* cg_infos,
+ // Cgroup v2 relevant info. We only look for the _mount_path iff is_cgroupsV2 so
+ // as to avoid memory stomping of the _mount_path pointer later on in the cgroup v1
+ // block in the hybrid case.
+- //
+- if (is_cgroupsV2 && sscanf(p, "%*d %*d %*d:%*d %*s %s %*[^-]- %s %*s %*s", tmp_mount_point, tmp_fs_type) == 2) {
++ if (is_cgroupsV2 && sscanf(p, "%*d %*d %*d:%*d %s %s %*[^-]- %s %*s %*s", tmproot, tmpmount, tmp_fs_type) == 3) {
+ // we likely have an early match return (e.g. cgroup fs match), be sure we have cgroup2 as fstype
+- if (!cgroupv2_mount_point_found && strcmp("cgroup2", tmp_fs_type) == 0) {
++ if (strcmp("cgroup2", tmp_fs_type) == 0) {
+ cgroupv2_mount_point_found = true;
+ any_cgroup_mounts_found = true;
+ for (int i = 0; i < CG_INFO_LENGTH; i++) {
+- assert(cg_infos[i]._mount_path == NULL, "_mount_path memory stomping");
+- cg_infos[i]._mount_path = os::strdup(tmp_mount_point);
++ set_controller_paths(cg_infos, i, "(cg2, unified)", tmpmount, tmproot);
+ }
+ }
+ }
+@@ -332,47 +355,23 @@ bool CgroupSubsystemFactory::determine_type(CgroupInfo* cg_infos,
+ while ((token = strsep(&cptr, ",")) != NULL) {
+ if (strcmp(token, "memory") == 0) {
+ any_cgroup_mounts_found = true;
+- assert(cg_infos[MEMORY_IDX]._mount_path == NULL, "stomping of _mount_path");
+- cg_infos[MEMORY_IDX]._mount_path = os::strdup(tmpmount);
+- cg_infos[MEMORY_IDX]._root_mount_path = os::strdup(tmproot);
++ set_controller_paths(cg_infos, MEMORY_IDX, token, tmpmount, tmproot);
+ cg_infos[MEMORY_IDX]._data_complete = true;
+ } else if (strcmp(token, "cpuset") == 0) {
+ any_cgroup_mounts_found = true;
+- if (cg_infos[CPUSET_IDX]._mount_path != NULL) {
+- // On some systems duplicate cpuset controllers get mounted in addition to
+- // the main cgroup controllers most likely under /sys/fs/cgroup. In that
+- // case pick the one under /sys/fs/cgroup and discard others.
+- if (strstr(cg_infos[CPUSET_IDX]._mount_path, "/sys/fs/cgroup") != cg_infos[CPUSET_IDX]._mount_path) {
+- log_warning(os, container)("Duplicate cpuset controllers detected. Picking %s, skipping %s.",
+- tmpmount, cg_infos[CPUSET_IDX]._mount_path);
+- os::free(cg_infos[CPUSET_IDX]._mount_path);
+- cg_infos[CPUSET_IDX]._mount_path = os::strdup(tmpmount);
+- } else {
+- log_warning(os, container)("Duplicate cpuset controllers detected. Picking %s, skipping %s.",
+- cg_infos[CPUSET_IDX]._mount_path, tmpmount);
+- }
+- } else {
+- cg_infos[CPUSET_IDX]._mount_path = os::strdup(tmpmount);
+- }
+- cg_infos[CPUSET_IDX]._root_mount_path = os::strdup(tmproot);
++ set_controller_paths(cg_infos, CPUSET_IDX, token, tmpmount, tmproot);
+ cg_infos[CPUSET_IDX]._data_complete = true;
+ } else if (strcmp(token, "cpu") == 0) {
+ any_cgroup_mounts_found = true;
+- assert(cg_infos[CPU_IDX]._mount_path == NULL, "stomping of _mount_path");
+- cg_infos[CPU_IDX]._mount_path = os::strdup(tmpmount);
+- cg_infos[CPU_IDX]._root_mount_path = os::strdup(tmproot);
++ set_controller_paths(cg_infos, CPU_IDX, token, tmpmount, tmproot);
+ cg_infos[CPU_IDX]._data_complete = true;
+ } else if (strcmp(token, "cpuacct") == 0) {
+ any_cgroup_mounts_found = true;
+- assert(cg_infos[CPUACCT_IDX]._mount_path == NULL, "stomping of _mount_path");
+- cg_infos[CPUACCT_IDX]._mount_path = os::strdup(tmpmount);
+- cg_infos[CPUACCT_IDX]._root_mount_path = os::strdup(tmproot);
++ set_controller_paths(cg_infos, CPUACCT_IDX, token, tmpmount, tmproot);
+ cg_infos[CPUACCT_IDX]._data_complete = true;
+ } else if (strcmp(token, "pids") == 0) {
+ any_cgroup_mounts_found = true;
+- assert(cg_infos[PIDS_IDX]._mount_path == NULL, "stomping of _mount_path");
+- cg_infos[PIDS_IDX]._mount_path = os::strdup(tmpmount);
+- cg_infos[PIDS_IDX]._root_mount_path = os::strdup(tmproot);
++ set_controller_paths(cg_infos, PIDS_IDX, token, tmpmount, tmproot);
+ cg_infos[PIDS_IDX]._data_complete = true;
+ }
+ }
+diff --git a/src/hotspot/os/linux/cgroupSubsystem_linux.hpp b/src/hotspot/os/linux/cgroupSubsystem_linux.hpp
+index 2e3fc8e8bc78..91456b3d0e14 100644
+--- a/src/hotspot/os/linux/cgroupSubsystem_linux.hpp
++++ b/src/hotspot/os/linux/cgroupSubsystem_linux.hpp
+@@ -311,6 +311,11 @@ class CgroupSubsystemFactory: AllStatic {
+ }
+ #endif
+
++ static void set_controller_paths(CgroupInfo* cg_infos,
++ int controller,
++ const char* name,
++ char* mount_path,
++ char* root_path);
+ // Determine the cgroup type (version 1 or version 2), given
+ // relevant paths to files. Sets 'flags' accordingly.
+ static bool determine_type(CgroupInfo* cg_infos,
+diff --git a/test/hotspot/jtreg/containers/cgroup/CgroupSubsystemFactory.java b/test/hotspot/jtreg/containers/cgroup/CgroupSubsystemFactory.java
+index 54807119d82e..7eb78fa447fd 100644
+--- a/test/hotspot/jtreg/containers/cgroup/CgroupSubsystemFactory.java
++++ b/test/hotspot/jtreg/containers/cgroup/CgroupSubsystemFactory.java
+@@ -62,11 +62,19 @@ public class CgroupSubsystemFactory {
+ private Path cgroupv1MntInfoZeroHierarchy;
+ private Path cgroupv2CgInfoZeroHierarchy;
+ private Path cgroupv2MntInfoZeroHierarchy;
++ private Path cgroupv2MntInfoDouble;
++ private Path cgroupv2MntInfoDouble2;
+ private Path cgroupv1CgInfoNonZeroHierarchy;
+ private Path cgroupv1MntInfoNonZeroHierarchyOtherOrder;
+ private Path cgroupv1MntInfoNonZeroHierarchy;
+ private Path cgroupv1MntInfoDoubleCpuset;
+ private Path cgroupv1MntInfoDoubleCpuset2;
++ private Path cgroupv1MntInfoDoubleMemory;
++ private Path cgroupv1MntInfoDoubleMemory2;
++ private Path cgroupv1MntInfoDoubleCpu;
++ private Path cgroupv1MntInfoDoubleCpu2;
++ private Path cgroupv1MntInfoDoublePids;
++ private Path cgroupv1MntInfoDoublePids2;
+ private Path cgroupv1MntInfoSystemdOnly;
+ private String mntInfoEmpty = "";
+ private Path cgroupV1SelfCgroup;
+@@ -160,6 +168,15 @@ public class CgroupSubsystemFactory {
+ private String mntInfoCgroupv1MoreCpusetLine = "121 32 0:37 / /cpusets rw,relatime shared:69 - cgroup none rw,cpuset\n";
+ private String mntInfoCgroupv1DoubleCpuset = mntInfoCgroupv1MoreCpusetLine + mntInfoHybrid;
+ private String mntInfoCgroupv1DoubleCpuset2 = mntInfoHybrid + mntInfoCgroupv1MoreCpusetLine;
++ private String mntInfoCgroupv1MoreMemoryLine = "1100 1098 0:28 / /memory rw,nosuid,nodev,noexec,relatime master:6 - cgroup cgroup rw,memory\n";
++ private String mntInfoCgroupv1DoubleMemory = mntInfoCgroupv1MoreMemoryLine + mntInfoHybrid;
++ private String mntInfoCgroupv1DoubleMemory2 = mntInfoHybrid + mntInfoCgroupv1MoreMemoryLine;
++ private String mntInfoCgroupv1DoubleCpuLine = "1101 1098 0:29 / /cpu,cpuacct rw,nosuid,nodev,noexec,relatime master:7 - cgroup cgroup rw,cpu,cpuacct\n";
++ private String mntInfoCgroupv1DoubleCpu = mntInfoCgroupv1DoubleCpuLine + mntInfoHybrid;
++ private String mntInfoCgroupv1DoubleCpu2 = mntInfoHybrid + mntInfoCgroupv1DoubleCpuLine;
++ private String mntInfoCgroupv1DoublePidsLine = "1107 1098 0:35 / /pids rw,nosuid,nodev,noexec,relatime master:13 - cgroup cgroup rw,pids\n";
++ private String mntInfoCgroupv1DoublePids = mntInfoCgroupv1DoublePidsLine + mntInfoHybrid;
++ private String mntInfoCgroupv1DoublePids2 = mntInfoHybrid + mntInfoCgroupv1DoublePidsLine;
+ private String cgroupsNonZeroHierarchy =
+ "#subsys_name hierarchy num_cgroups enabled\n" +
+ "cpuset 3 1 1\n" +
+@@ -175,7 +192,11 @@ public class CgroupSubsystemFactory {
+ "hugetlb 6 1 1\n" +
+ "pids 9 80 1"; // hierarchy has to match procSelfCgroupHybridContent
+ private String mntInfoCgroupsV2Only =
+- "28 21 0:25 / /sys/fs/cgroup rw,nosuid,nodev,noexec,relatime shared:4 - cgroup2 none rw,seclabel,nsdelegate";
++ "28 21 0:25 / /sys/fs/cgroup rw,nosuid,nodev,noexec,relatime shared:4 - cgroup2 none rw,seclabel,nsdelegate\n";
++ private String mntInfoCgroupsV2MoreLine =
++ "240 232 0:24 /../.. /cgroup-in ro,relatime - cgroup2 cgroup2 rw,nsdelegate\n";
++ private String mntInfoCgroupsV2Double = mntInfoCgroupsV2MoreLine + mntInfoCgroupsV2Only;
++ private String mntInfoCgroupsV2Double2 = mntInfoCgroupsV2Only + mntInfoCgroupsV2MoreLine;
+ private String mntInfoCgroupsV1SystemdOnly =
+ "35 26 0:26 / /sys/fs/cgroup/systemd rw,nosuid,nodev,noexec,relatime - cgroup systemd rw,name=systemd\n" +
+ "26 18 0:19 / /sys/fs/cgroup rw,relatime - tmpfs none rw,size=4k,mode=755\n";
+@@ -217,6 +238,12 @@ private void setup() {
+ cgroupv2MntInfoZeroHierarchy = Paths.get(existingDirectory.toString(), "mountinfo_cgroupv2");
+ Files.writeString(cgroupv2MntInfoZeroHierarchy, mntInfoCgroupsV2Only);
+
++ cgroupv2MntInfoDouble = Paths.get(existingDirectory.toString(), "mountinfo_cgroupv2_double");
++ Files.writeString(cgroupv2MntInfoDouble, mntInfoCgroupsV2Double);
++
++ cgroupv2MntInfoDouble2 = Paths.get(existingDirectory.toString(), "mountinfo_cgroupv2_double2");
++ Files.writeString(cgroupv2MntInfoDouble2, mntInfoCgroupsV2Double2);
++
+ cgroupv1CgInfoNonZeroHierarchy = Paths.get(existingDirectory.toString(), "cgroups_non_zero");
+ Files.writeString(cgroupv1CgInfoNonZeroHierarchy, cgroupsNonZeroHierarchy);
+
+@@ -244,6 +271,24 @@ private void setup() {
+ cgroupv1MntInfoDoubleCpuset2 = Paths.get(existingDirectory.toString(), "mnt_info_cgroupv1_double_cpuset2");
+ Files.writeString(cgroupv1MntInfoDoubleCpuset2, mntInfoCgroupv1DoubleCpuset2);
+
++ cgroupv1MntInfoDoubleMemory = Paths.get(existingDirectory.toString(), "mnt_info_cgroupv1_double_memory");
++ Files.writeString(cgroupv1MntInfoDoubleMemory, mntInfoCgroupv1DoubleMemory);
++
++ cgroupv1MntInfoDoubleMemory2 = Paths.get(existingDirectory.toString(), "mnt_info_cgroupv1_double_memory2");
++ Files.writeString(cgroupv1MntInfoDoubleMemory2, mntInfoCgroupv1DoubleMemory2);
++
++ cgroupv1MntInfoDoubleCpu = Paths.get(existingDirectory.toString(), "mnt_info_cgroupv1_double_cpu");
++ Files.writeString(cgroupv1MntInfoDoubleCpu, mntInfoCgroupv1DoubleCpu);
++
++ cgroupv1MntInfoDoubleCpu2 = Paths.get(existingDirectory.toString(), "mnt_info_cgroupv1_double_cpu2");
++ Files.writeString(cgroupv1MntInfoDoubleCpu2, mntInfoCgroupv1DoubleCpu2);
++
++ cgroupv1MntInfoDoublePids = Paths.get(existingDirectory.toString(), "mnt_info_cgroupv1_double_pids");
++ Files.writeString(cgroupv1MntInfoDoublePids, mntInfoCgroupv1DoublePids);
++
++ cgroupv1MntInfoDoublePids2 = Paths.get(existingDirectory.toString(), "mnt_info_cgroupv1_double_pids2");
++ Files.writeString(cgroupv1MntInfoDoublePids2, mntInfoCgroupv1DoublePids2);
++
+ cgroupv1MntInfoSystemdOnly = Paths.get(existingDirectory.toString(), "mnt_info_cgroupv1_systemd_only");
+ Files.writeString(cgroupv1MntInfoSystemdOnly, mntInfoCgroupsV1SystemdOnly);
+
+@@ -291,14 +336,14 @@ public void testCgroupv1JoinControllerCombo(WhiteBox wb) {
+ System.out.println("testCgroupv1JoinControllerMounts PASSED!");
+ }
+
+- public void testCgroupv1MultipleCpusetMounts(WhiteBox wb, Path mountInfo) {
++ public void testCgroupv1MultipleControllerMounts(WhiteBox wb, Path mountInfo) {
+ String procCgroups = cgroupv1CgInfoNonZeroHierarchy.toString();
+ String procSelfCgroup = cgroupV1SelfCgroup.toString();
+ String procSelfMountinfo = mountInfo.toString();
+ int retval = wb.validateCgroup(procCgroups, procSelfCgroup, procSelfMountinfo);
+- Asserts.assertEQ(CGROUPS_V1, retval, "Multiple cpuset controllers, but only one in /sys/fs/cgroup");
++ Asserts.assertEQ(CGROUPS_V1, retval, "Multiple controllers, but only one in /sys/fs/cgroup");
+ Asserts.assertTrue(isValidCgroup(retval));
+- System.out.println("testCgroupv1MultipleCpusetMounts PASSED!");
++ System.out.println("testCgroupv1MultipleControllerMounts PASSED!");
+ }
+
+ public void testCgroupv1SystemdOnly(WhiteBox wb) {
+@@ -341,10 +386,10 @@ public void testCgroupv1MissingMemoryController(WhiteBox wb) {
+ System.out.println("testCgroupv1MissingMemoryController PASSED!");
+ }
+
+- public void testCgroupv2(WhiteBox wb) {
++ public void testCgroupv2(WhiteBox wb, Path mountInfo) {
+ String procCgroups = cgroupv2CgInfoZeroHierarchy.toString();
+ String procSelfCgroup = cgroupV2SelfCgroup.toString();
+- String procSelfMountinfo = cgroupv2MntInfoZeroHierarchy.toString();
++ String procSelfMountinfo = mountInfo.toString();
+ int retval = wb.validateCgroup(procCgroups, procSelfCgroup, procSelfMountinfo);
+ Asserts.assertEQ(CGROUPS_V2, retval, "Expected");
+ Asserts.assertTrue(isValidCgroup(retval));
+@@ -388,13 +433,21 @@ public static void main(String[] args) throws Exception {
+ try {
+ test.testCgroupv1SystemdOnly(wb);
+ test.testCgroupv1NoMounts(wb);
+- test.testCgroupv2(wb);
++ test.testCgroupv2(wb, test.cgroupv2MntInfoZeroHierarchy);
++ test.testCgroupv2(wb, test.cgroupv2MntInfoDouble);
++ test.testCgroupv2(wb, test.cgroupv2MntInfoDouble2);
+ test.testCgroupV1Hybrid(wb);
+ test.testCgroupV1HybridMntInfoOrder(wb);
+ test.testCgroupv1MissingMemoryController(wb);
+ test.testCgroupv2NoCgroup2Fs(wb);
+- test.testCgroupv1MultipleCpusetMounts(wb, test.cgroupv1MntInfoDoubleCpuset);
+- test.testCgroupv1MultipleCpusetMounts(wb, test.cgroupv1MntInfoDoubleCpuset2);
++ test.testCgroupv1MultipleControllerMounts(wb, test.cgroupv1MntInfoDoubleCpuset);
++ test.testCgroupv1MultipleControllerMounts(wb, test.cgroupv1MntInfoDoubleCpuset2);
++ test.testCgroupv1MultipleControllerMounts(wb, test.cgroupv1MntInfoDoubleMemory);
++ test.testCgroupv1MultipleControllerMounts(wb, test.cgroupv1MntInfoDoubleMemory2);
++ test.testCgroupv1MultipleControllerMounts(wb, test.cgroupv1MntInfoDoubleCpu);
++ test.testCgroupv1MultipleControllerMounts(wb, test.cgroupv1MntInfoDoubleCpu2);
++ test.testCgroupv1MultipleControllerMounts(wb, test.cgroupv1MntInfoDoublePids);
++ test.testCgroupv1MultipleControllerMounts(wb, test.cgroupv1MntInfoDoublePids2);
+ test.testCgroupv1JoinControllerCombo(wb);
+ test.testNonZeroHierarchyOnlyFreezer(wb);
+ } finally {
+diff --git a/test/hotspot/jtreg/containers/docker/DockerBasicTest.java b/test/hotspot/jtreg/containers/docker/DockerBasicTest.java
+index bcbd2ffa21df..357eb3db4972 100644
+--- a/test/hotspot/jtreg/containers/docker/DockerBasicTest.java
++++ b/test/hotspot/jtreg/containers/docker/DockerBasicTest.java
+@@ -53,6 +53,7 @@ public static void main(String[] args) throws Exception {
+ try {
+ testJavaVersion();
+ testHelloDocker();
++ testJavaVersionWithCgMounts();
+ } finally {
+ if (!DockerTestUtils.RETAIN_IMAGE_AFTER_TEST) {
+ DockerTestUtils.removeDockerImage(imageNameAndTag);
+@@ -81,4 +82,17 @@ private static void testHelloDocker() throws Exception {
+ .shouldHaveExitValue(0)
+ .shouldContain("Hello Docker");
+ }
++
++
++ private static void testJavaVersionWithCgMounts() throws Exception {
++ DockerRunOptions opts =
++ new DockerRunOptions(imageNameAndTag, "/jdk/bin/java", "-version")
++ .addDockerOpts("-v", "/sys/fs/cgroup:/cgroups-in:ro");
++
++ // Duplicated cgroup mounts should be handled by the container detection
++ // code and should not cause any error/warning output.
++ DockerTestUtils.dockerRunJava(opts)
++ .shouldHaveExitValue(0)
++ .shouldNotMatch("\\[os,container *\\]");
++ }
+ }
+diff --git a/test/hotspot/jtreg/containers/docker/TestCPUAwareness.java b/test/hotspot/jtreg/containers/docker/TestCPUAwareness.java
+index 93881c615bd9..a41dc9c39392 100644
+--- a/test/hotspot/jtreg/containers/docker/TestCPUAwareness.java
++++ b/test/hotspot/jtreg/containers/docker/TestCPUAwareness.java
+@@ -70,10 +70,11 @@ public static void main(String[] args) throws Exception {
+ testActiveProcessorCount(2, 2);
+
+ // cpu quota and period
+- testCpuQuotaAndPeriod(50*1000, 100*1000);
+- testCpuQuotaAndPeriod(100*1000, 100*1000);
+- testCpuQuotaAndPeriod(150*1000, 100*1000);
+- testCpuQuotaAndPeriod(400*1000, 100*1000);
++ testCpuQuotaAndPeriod(50*1000, 100*1000, false);
++ testCpuQuotaAndPeriod(100*1000, 100*1000, false);
++ testCpuQuotaAndPeriod(150*1000, 100*1000, false);
++ testCpuQuotaAndPeriod(400*1000, 100*1000, false);
++ testCpuQuotaAndPeriod(50*1000, 100*1000, true /* additional cgroup mount */);
+
+ testOperatingSystemMXBeanAwareness("0.5", "1");
+ testOperatingSystemMXBeanAwareness("1.0", "1");
+@@ -153,7 +154,7 @@ private static int adjustExpectedAPCForAvailableCPUs(int expectedAPC) {
+ }
+
+
+- private static void testCpuQuotaAndPeriod(int quota, int period)
++ private static void testCpuQuotaAndPeriod(int quota, int period, boolean addCgmounts)
+ throws Exception {
+ Common.logNewTestCase("test cpu quota and period: ");
+ System.out.println("quota = " + quota);
+@@ -167,6 +168,10 @@ private static void testCpuQuotaAndPeriod(int quota, int period)
+ .addDockerOpts("--cpu-period=" + period)
+ .addDockerOpts("--cpu-quota=" + quota);
+
++ if (addCgmounts) {
++ opts = opts.addDockerOpts("--volume", "/sys/fs/cgroup:/cgroups-in:ro");
++ }
++
+ Common.run(opts)
+ .shouldMatch("CPU Period is.*" + period)
+ .shouldMatch("CPU Quota is.*" + quota)
+diff --git a/test/hotspot/jtreg/containers/docker/TestMemoryAwareness.java b/test/hotspot/jtreg/containers/docker/TestMemoryAwareness.java
+index ff5cd23cc65f..d6ff603157a6 100644
+--- a/test/hotspot/jtreg/containers/docker/TestMemoryAwareness.java
++++ b/test/hotspot/jtreg/containers/docker/TestMemoryAwareness.java
+@@ -63,10 +63,11 @@ public static void main(String[] args) throws Exception {
+ DockerTestUtils.buildJdkContainerImage(imageName);
+
+ try {
+- testMemoryLimit("100m", "104857600");
+- testMemoryLimit("500m", "524288000");
+- testMemoryLimit("1g", "1073741824");
+- testMemoryLimit("4g", "4294967296");
++ testMemoryLimit("100m", "104857600", false);
++ testMemoryLimit("500m", "524288000", false);
++ testMemoryLimit("1g", "1073741824", false);
++ testMemoryLimit("4g", "4294967296", false);
++ testMemoryLimit("100m", "104857600", true /* additional cgroup mount */);
+
+ testMemorySoftLimit("500m", "524288000");
+ testMemorySoftLimit("1g", "1073741824");
+@@ -98,7 +99,7 @@ public static void main(String[] args) throws Exception {
+ }
+
+
+- private static void testMemoryLimit(String valueToSet, String expectedTraceValue)
++ private static void testMemoryLimit(String valueToSet, String expectedTraceValue, boolean addCgmounts)
+ throws Exception {
+
+ Common.logNewTestCase("memory limit: " + valueToSet);
+@@ -106,6 +107,10 @@ private static void testMemoryLimit(String valueToSet, String expectedTraceValue
+ DockerRunOptions opts = Common.newOpts(imageName)
+ .addDockerOpts("--memory", valueToSet);
+
++ if (addCgmounts) {
++ opts = opts.addDockerOpts("--volume", "/sys/fs/cgroup:/cgroups-in:ro");
++ }
++
+ Common.run(opts)
+ .shouldMatch("Memory Limit is:.*" + expectedTraceValue);
+ }
diff --git a/srcpkgs/openjdk19-bootstrap/template b/srcpkgs/openjdk19-bootstrap/template
new file mode 100644
index 0000000000000..25ac0a7a17a2c
--- /dev/null
+++ b/srcpkgs/openjdk19-bootstrap/template
@@ -0,0 +1,101 @@
+# Template file for 'openjdk19-bootstrap'
+pkgname=openjdk19-bootstrap
+version=19.0.2+7
+revision=1
+_gtest_ver=1.8.1
+_java_ver="${version%%.*}"
+_jdk_update="${version#*+}"
+_base_version="${version%+*}"
+_jdk_home="usr/lib/jvm/openjdk${_java_ver}"
+archs="x86_64* aarch64*"
+create_wrksrc=yes
+build_wrksrc="jdk${_java_ver}u-jdk-${version/+/-}"
+build_style=gnu-configure
+configure_args="--disable-warnings-as-errors
+ --enable-unlimited-crypto
+ --with-zlib=system
+ --with-libjpeg=system
+ --with-giflib=system
+ --with-libpng=system
+ --with-lcms=system
+ --with-jtreg=no
+ --with-gtest=../googletest-release-${_gtest_ver}
+ --with-debug-level=release
+ --with-native-debug-symbols=internal
+ --with-jobs=${XBPS_ORIG_MAKEJOBS}
+ --with-version-pre=
+ --with-version-build=${_jdk_update}
+ --with-version-opt=void-r${revision}
+ --with-vendor-name=Void
+ --with-vendor-url=https://voidlinux.org/
+ --with-vendor-bug-url=https://github.com/void-linux/void-packages/issues
+ --with-vendor-vm-bug-url=https://github.com/void-linux/void-packages/issues
+ --with-boot-jdk=/usr/lib/jvm/openjdk$(( _java_ver - 1 ))"
+make_build_args="images"
+make_check_target="test-hotspot-gtest"
+hostmakedepends="pkg-config automake autoconf cpio tar unzip zip ca-certificates
+ openssl zlib-devel which make-ca openjdk$(( _java_ver - 1 ))-bootstrap"
+makedepends="libXrender-devel libXtst-devel libXt-devel libXrandr-devel
+ giflib-devel libjpeg-turbo-devel cups-devel freetype-devel alsa-lib-devel
+ fontconfig-devel zlib-devel lcms2-devel"
+short_desc="OpenJDK Java Development Kit (bootstrap version ${_java_ver})"
+maintainer="classabbyamp <void@placeviolette.net>"
+license="GPL-2.0-only WITH Classpath-exception-2.0"
+homepage="http://openjdk.java.net/"
+distfiles="https://github.com/openjdk/jdk${_java_ver}u/archive/jdk-${version}.tar.gz
+ https://github.com/google/googletest/archive/refs/tags/release-${_gtest_ver}.tar.gz"
+checksum="5903efd527dd08e9c235c8822e3d5699c3d18a8618c3e533307e8d6491ffbbf0
+ 9bf1fe5182a604b4135edc1a425ae356c9ad15e9b23f9f12a02e80184c3a249c"
+nocross=yes
+repository=bootstrap
+patch_args="-Np1 --directory=$build_wrksrc"
+
+# Build and check are still parallel, but don't use -jN.
+disable_parallel_build=yes
+disable_parallel_check=yes
+
+case "$XBPS_TARGET_MACHINE" in
+ i686*|arm*) broken="Unsupported architecture" ;;
+esac
+
+post_extract() {
+ chmod +x "$build_wrksrc"/configure
+ if [ "$XBPS_TARGET_LIBC" = "musl" ]; then
+ rm -r "$build_wrksrc"/src/jdk.hotspot.agent
+ fi
+}
+
+do_configure() {
+ CFLAGS=${CFLAGS/-D_FORTIFY_SOURCE=2/}
+ CXXFLAGS=${CXXFLAGS/-D_FORTIFY_SOURCE=2/}
+
+ # force ELFv2 for ppc64 just in case
+ case "$XBPS_TARGET_MACHINE" in
+ ppc64*)
+ CFLAGS+=" -DABI_ELFv2"
+ CXXFLAGS+=" -DABI_ELFv2"
+ ;;
+ esac
+
+ configure_args=${configure_args/--with-libtool-sysroot=$XBPS_CROSS_BASE}
+ if [ "$XBPS_CCACHE" ] && [ -z "$CROSS_BUILD" ]; then
+ configure_args+=" --enable-ccache"
+ CC="/usr/bin/cc"
+ CXX="/usr/bin/c++"
+ fi
+ ./configure ${configure_args} \
+ --with-extra-cflags="$CFLAGS" \
+ --with-extra-cxxflags="$CXXFLAGS" \
+ --with-extra-ldflags="$LDFLAGS" \
+ READELF="$READELF" AR="$AR" STRIP="$STRIP" NM="$NM" \
+ OBJDUMP="$OBJDUMP" OBJCOPY="$OBJCOPY"
+}
+
+pre_install() {
+ make_install_args="INSTALL_PREFIX=${DESTDIR}/usr/lib"
+}
+
+post_install() {
+ rm -rf "${DESTDIR}"/usr/lib/bin
+ mv "${DESTDIR}"/usr/lib/jvm/openjdk-"${_base_version}" "${DESTDIR}/$_jdk_home"
+}
diff --git a/srcpkgs/openjdk19-bootstrap/update b/srcpkgs/openjdk19-bootstrap/update
new file mode 100644
index 0000000000000..d8abe90aa84d2
--- /dev/null
+++ b/srcpkgs/openjdk19-bootstrap/update
@@ -0,0 +1,4 @@
+site="https://github.com/openjdk/jdk19u/tags"
+pattern='jdk-\K19\.[\d.+]+(?=\.)'
+# don't need to update the bootstrap package
+ignore="*"
From e7c786c6622121a2b804a8e04d4aa51a46780d0d Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Fri, 22 Dec 2023 00:47:05 -0500
Subject: [PATCH 11/12] New package: openjdk20-bootstrap-20.0.2+9
---
.../patches/FixNullPtrCast.patch | 36 +++++++
srcpkgs/openjdk20-bootstrap/template | 101 ++++++++++++++++++
srcpkgs/openjdk20-bootstrap/update | 4 +
3 files changed, 141 insertions(+)
create mode 100644 srcpkgs/openjdk20-bootstrap/patches/FixNullPtrCast.patch
create mode 100644 srcpkgs/openjdk20-bootstrap/template
create mode 100644 srcpkgs/openjdk20-bootstrap/update
diff --git a/srcpkgs/openjdk20-bootstrap/patches/FixNullPtrCast.patch b/srcpkgs/openjdk20-bootstrap/patches/FixNullPtrCast.patch
new file mode 100644
index 0000000000000..6f05158792732
--- /dev/null
+++ b/srcpkgs/openjdk20-bootstrap/patches/FixNullPtrCast.patch
@@ -0,0 +1,36 @@
+Patch taken from Alpine: https://git.alpinelinux.org/aports/tree/community/openjdk17/FixNullPtrCast.patch
+
+same fix for armv7l-musl added
+
+Subject: Fix cast errors with latest GCC
+Upstream: No
+Author: Simon Frankenberger <simon-alpine@fraho.eu>
+
+This patch fixes one remaining casting error reported by GCC 12 for aarch64
+
+--- old/src/hotspot/cpu/aarch64/interpreterRT_aarch64.cpp
++++ new/src/hotspot/cpu/aarch64/interpreterRT_aarch64.cpp
+@@ -267,7 +267,7 @@
+
+ virtual void pass_object() {
+ intptr_t* addr = single_slot_addr();
+- intptr_t value = *addr == 0 ? NULL : (intptr_t)addr;
++ intptr_t value = *addr == 0 ? (intptr_t) 0 : (intptr_t)addr;
+ if (pass_gpr(value) < 0) {
+ pass_stack<>(value);
+ }
+
+--- old/src/hotspot/cpu/arm/interpreterRT_arm.cpp
++++ new/src/hotspot/cpu/arm/interpreterRT_arm.cpp
+@@ -306,8 +306,8 @@
+ virtual void pass_object() {
+ intptr_t from_addr = (intptr_t)(_from + Interpreter::local_offset_in_bytes(0));
+ if(_last_gp < GPR_PARAMS) {
+- _toGP[_last_gp++] = (*(intptr_t*)from_addr == 0) ? NULL : from_addr;
++ _toGP[_last_gp++] = (*(intptr_t*)from_addr == 0) ? (intptr_t) 0 : (intptr_t)from_addr;
+ } else {
+- *_to++ = (*(intptr_t*)from_addr == 0) ? NULL : from_addr;
++ *_to++ = (*(intptr_t*)from_addr == 0) ? (intptr_t) 0 : (intptr_t)from_addr;
+ }
+ _from -= Interpreter::stackElementSize;
+ }
diff --git a/srcpkgs/openjdk20-bootstrap/template b/srcpkgs/openjdk20-bootstrap/template
new file mode 100644
index 0000000000000..a23849827ce9a
--- /dev/null
+++ b/srcpkgs/openjdk20-bootstrap/template
@@ -0,0 +1,101 @@
+# Template file for 'openjdk20-bootstrap'
+pkgname=openjdk20-bootstrap
+version=20.0.2+9
+revision=1
+_gtest_ver=1.8.1
+_java_ver="${version%%.*}"
+_jdk_update="${version#*+}"
+_base_version="${version%+*}"
+_jdk_home="usr/lib/jvm/openjdk${_java_ver}"
+archs="x86_64* aarch64*"
+create_wrksrc=yes
+build_wrksrc="jdk${_java_ver}u-jdk-${version/+/-}"
+build_style=gnu-configure
+configure_args="--disable-warnings-as-errors
+ --enable-unlimited-crypto
+ --with-zlib=system
+ --with-libjpeg=system
+ --with-giflib=system
+ --with-libpng=system
+ --with-lcms=system
+ --with-jtreg=no
+ --with-gtest=../googletest-release-${_gtest_ver}
+ --with-debug-level=release
+ --with-native-debug-symbols=internal
+ --with-jobs=${XBPS_ORIG_MAKEJOBS}
+ --with-version-pre=
+ --with-version-build=${_jdk_update}
+ --with-version-opt=void-r${revision}
+ --with-vendor-name=Void
+ --with-vendor-url=https://voidlinux.org/
+ --with-vendor-bug-url=https://github.com/void-linux/void-packages/issues
+ --with-vendor-vm-bug-url=https://github.com/void-linux/void-packages/issues
+ --with-boot-jdk=/usr/lib/jvm/openjdk$(( _java_ver - 1 ))"
+make_build_args="images"
+make_check_target="test-hotspot-gtest"
+hostmakedepends="pkg-config automake autoconf cpio tar unzip zip ca-certificates
+ openssl zlib-devel which make-ca openjdk$(( _java_ver - 1 ))-bootstrap"
+makedepends="libXrender-devel libXtst-devel libXt-devel libXrandr-devel
+ giflib-devel libjpeg-turbo-devel cups-devel freetype-devel alsa-lib-devel
+ fontconfig-devel zlib-devel lcms2-devel"
+short_desc="OpenJDK Java Development Kit (bootstrap version ${_java_ver})"
+maintainer="classabbyamp <void@placeviolette.net>"
+license="GPL-2.0-only WITH Classpath-exception-2.0"
+homepage="http://openjdk.java.net/"
+distfiles="https://github.com/openjdk/jdk${_java_ver}u/archive/jdk-${version}.tar.gz
+ https://github.com/google/googletest/archive/refs/tags/release-${_gtest_ver}.tar.gz"
+checksum="4d6f176075d5f2ce62fd16ebd5cc4c27a3e551ce4d3d3bc0e9946454e52fc88d
+ 9bf1fe5182a604b4135edc1a425ae356c9ad15e9b23f9f12a02e80184c3a249c"
+nocross=yes
+repository=bootstrap
+patch_args="-Np1 --directory=$build_wrksrc"
+
+# Build and check are still parallel, but don't use -jN.
+disable_parallel_build=yes
+disable_parallel_check=yes
+
+case "$XBPS_TARGET_MACHINE" in
+ i686*|arm*) broken="Unsupported architecture" ;;
+esac
+
+post_extract() {
+ chmod +x "$build_wrksrc"/configure
+ if [ "$XBPS_TARGET_LIBC" = "musl" ]; then
+ rm -r "$build_wrksrc"/src/jdk.hotspot.agent
+ fi
+}
+
+do_configure() {
+ CFLAGS=${CFLAGS/-D_FORTIFY_SOURCE=2/}
+ CXXFLAGS=${CXXFLAGS/-D_FORTIFY_SOURCE=2/}
+
+ # force ELFv2 for ppc64 just in case
+ case "$XBPS_TARGET_MACHINE" in
+ ppc64*)
+ CFLAGS+=" -DABI_ELFv2"
+ CXXFLAGS+=" -DABI_ELFv2"
+ ;;
+ esac
+
+ configure_args=${configure_args/--with-libtool-sysroot=$XBPS_CROSS_BASE}
+ if [ "$XBPS_CCACHE" ] && [ -z "$CROSS_BUILD" ]; then
+ configure_args+=" --enable-ccache"
+ CC="/usr/bin/cc"
+ CXX="/usr/bin/c++"
+ fi
+ ./configure ${configure_args} \
+ --with-extra-cflags="$CFLAGS" \
+ --with-extra-cxxflags="$CXXFLAGS" \
+ --with-extra-ldflags="$LDFLAGS" \
+ READELF="$READELF" AR="$AR" STRIP="$STRIP" NM="$NM" \
+ OBJDUMP="$OBJDUMP" OBJCOPY="$OBJCOPY"
+}
+
+pre_install() {
+ make_install_args="INSTALL_PREFIX=${DESTDIR}/usr/lib"
+}
+
+post_install() {
+ rm -rf "${DESTDIR}"/usr/lib/bin
+ mv "${DESTDIR}"/usr/lib/jvm/openjdk-"${_base_version}" "${DESTDIR}/$_jdk_home"
+}
diff --git a/srcpkgs/openjdk20-bootstrap/update b/srcpkgs/openjdk20-bootstrap/update
new file mode 100644
index 0000000000000..825bd945bfc9a
--- /dev/null
+++ b/srcpkgs/openjdk20-bootstrap/update
@@ -0,0 +1,4 @@
+site="https://github.com/openjdk/jdk20u/tags"
+pattern='jdk-\K20\.[\d.+]+(?=\.)'
+# don't need to update the bootstrap package
+ignore="*"
From f550c41c8a34c106bcb635aea44e8cb3434a1221 Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Fri, 22 Dec 2023 00:47:14 -0500
Subject: [PATCH 12/12] New package: openjdk21-21.0.1+12
---
srcpkgs/openjdk21-doc | 1 +
srcpkgs/openjdk21-jmods | 1 +
srcpkgs/openjdk21-jre | 1 +
srcpkgs/openjdk21-src | 1 +
srcpkgs/openjdk21-static-libs | 1 +
srcpkgs/openjdk21/template | 194 ++++++++++++++++++++++++++++++++++
srcpkgs/openjdk21/update | 1 +
7 files changed, 200 insertions(+)
create mode 120000 srcpkgs/openjdk21-doc
create mode 120000 srcpkgs/openjdk21-jmods
create mode 120000 srcpkgs/openjdk21-jre
create mode 120000 srcpkgs/openjdk21-src
create mode 120000 srcpkgs/openjdk21-static-libs
create mode 100644 srcpkgs/openjdk21/template
create mode 100644 srcpkgs/openjdk21/update
diff --git a/srcpkgs/openjdk21-doc b/srcpkgs/openjdk21-doc
new file mode 120000
index 0000000000000..57e991f86dff5
--- /dev/null
+++ b/srcpkgs/openjdk21-doc
@@ -0,0 +1 @@
+openjdk21
\ No newline at end of file
diff --git a/srcpkgs/openjdk21-jmods b/srcpkgs/openjdk21-jmods
new file mode 120000
index 0000000000000..57e991f86dff5
--- /dev/null
+++ b/srcpkgs/openjdk21-jmods
@@ -0,0 +1 @@
+openjdk21
\ No newline at end of file
diff --git a/srcpkgs/openjdk21-jre b/srcpkgs/openjdk21-jre
new file mode 120000
index 0000000000000..57e991f86dff5
--- /dev/null
+++ b/srcpkgs/openjdk21-jre
@@ -0,0 +1 @@
+openjdk21
\ No newline at end of file
diff --git a/srcpkgs/openjdk21-src b/srcpkgs/openjdk21-src
new file mode 120000
index 0000000000000..57e991f86dff5
--- /dev/null
+++ b/srcpkgs/openjdk21-src
@@ -0,0 +1 @@
+openjdk21
\ No newline at end of file
diff --git a/srcpkgs/openjdk21-static-libs b/srcpkgs/openjdk21-static-libs
new file mode 120000
index 0000000000000..57e991f86dff5
--- /dev/null
+++ b/srcpkgs/openjdk21-static-libs
@@ -0,0 +1 @@
+openjdk21
\ No newline at end of file
diff --git a/srcpkgs/openjdk21/template b/srcpkgs/openjdk21/template
new file mode 100644
index 0000000000000..87099542c3373
--- /dev/null
+++ b/srcpkgs/openjdk21/template
@@ -0,0 +1,194 @@
+# Template file for 'openjdk21'
+pkgname=openjdk21
+version=21.0.1+12
+revision=1
+_gtest_ver=1.13.0
+_java_ver="${version%%.*}"
+_jdk_update="${version#*+}"
+_base_version="${version%+*}"
+_jdk_home="usr/lib/jvm/openjdk${_java_ver}"
+archs="x86_64* aarch64*"
+create_wrksrc=yes
+build_wrksrc="jdk${_java_ver}u-jdk-${version/+/-}"
+build_style=gnu-configure
+configure_args="--disable-warnings-as-errors
+ --enable-unlimited-crypto
+ --with-zlib=system
+ --with-libjpeg=system
+ --with-giflib=system
+ --with-libpng=system
+ --with-lcms=system
+ --with-jtreg=no
+ --with-gtest=../googletest-${_gtest_ver}
+ --with-debug-level=release
+ --with-native-debug-symbols=internal
+ --with-jobs=${XBPS_ORIG_MAKEJOBS}
+ --with-version-pre=
+ --with-version-build=${_jdk_update}
+ --with-version-opt=void-r${revision}
+ --with-vendor-name=Void
+ --with-vendor-url=https://voidlinux.org/
+ --with-vendor-bug-url=https://github.com/void-linux/void-packages/issues
+ --with-vendor-vm-bug-url=https://github.com/void-linux/void-packages/issues"
+make_build_args="images static-libs-image $(vopt_if docs docs)"
+make_install_args="INSTALL_PREFIX=\"${DESTDIR}/usr/lib\""
+make_check_target="test-hotspot-gtest"
+hostmakedepends="pkg-config automake autoconf cpio tar unzip zip ca-certificates
+ openssl zlib-devel which make-ca openjdk20-bootstrap"
+makedepends="libXrender-devel libXtst-devel libXt-devel libXrandr-devel
+ giflib-devel libjpeg-turbo-devel cups-devel freetype-devel alsa-lib-devel
+ fontconfig-devel zlib-devel lcms2-devel"
+depends="${pkgname}-jre-${version}_${revision}"
+short_desc="OpenJDK Java Development Kit (version ${_java_ver})"
+maintainer="classabbyamp <void@placeviolette.net>"
+license="GPL-2.0-only WITH Classpath-exception-2.0"
+homepage="http://openjdk.java.net/"
+distfiles="https://github.com/openjdk/jdk${_java_ver}u/archive/jdk-${version}.tar.gz
+ https://github.com/google/googletest/archive/refs/tags/v${_gtest_ver}.tar.gz"
+checksum="9943e3814d3c1a31f1449f09a8b67df54841944f855a1d372be892c5e6b19217
+ ad7fdba11ea011c1d925b3289cf4af2c66a352e18d4c7264392fead75e919363"
+alternatives="jdk:/usr/lib/jvm/default-jdk:/${_jdk_home}"
+provides="java-environment-${version}_1"
+patch_args="-Np1 --directory=$build_wrksrc"
+
+# Build and check are still parallel, but don't use -jN.
+disable_parallel_build=yes
+disable_parallel_check=yes
+build_options="docs"
+
+case "$XBPS_TARGET_MACHINE" in
+ ppc64*) ;;
+ # no hotspot JIT for ppc32
+ ppc*) _use_zero=yes ;;
+ i686*|arm*) broken="Unsupported architecture" ;;
+esac
+
+if [ -n "$_use_zero" ]; then
+ makedepends+=" libffi-devel"
+ configure_args+=" --with-jvm-variants=zero"
+ case "$XBPS_TARGET_MACHINE" in
+ ppc*) configure_args+=" --with-boot-jdk-jvmargs=-XX:ThreadStackSize=2560";;
+ esac
+fi
+configure_args+=" --with-boot-jdk-jvmargs=-Xlog:disable"
+
+case "$XBPS_TARGET_LIBC" in
+ glibc) build_options_default+=" docs";;
+esac
+
+if [ ! "$CROSS_BUILD" ]; then
+ hostmakedepends+=" openjdk20-bootstrap"
+ configure_args+=" --with-boot-jdk=/usr/lib/jvm/openjdk20"
+else
+ hostmakedepends+=" openjdk21"
+ configure_args+=" --with-boot-jdk=/usr/lib/jvm/openjdk21"
+fi
+
+post_extract() {
+ chmod +x $build_wrksrc/configure
+ if [ "$XBPS_TARGET_LIBC" = "musl" ]; then
+ rm -r $build_wrksrc/src/jdk.hotspot.agent
+ fi
+}
+
+do_configure() {
+ CFLAGS=${CFLAGS/-D_FORTIFY_SOURCE=2/}
+ CXXFLAGS=${CXXFLAGS/-D_FORTIFY_SOURCE=2/}
+
+ # force ELFv2 for ppc64 just in case
+ case "$XBPS_TARGET_MACHINE" in
+ ppc64*)
+ CFLAGS+=" -DABI_ELFv2"
+ CXXFLAGS+=" -DABI_ELFv2"
+ ;;
+ esac
+
+ configure_args=${configure_args/--with-libtool-sysroot=$XBPS_CROSS_BASE}
+ if [ "$XBPS_CCACHE" ] && [ -z "$CROSS_BUILD" ]; then
+ configure_args+=" --enable-ccache"
+ CC="/usr/bin/cc"
+ CXX="/usr/bin/c++"
+ fi
+ ./configure ${configure_args} \
+ --with-extra-cflags="$CFLAGS" \
+ --with-extra-cxxflags="$CXXFLAGS" \
+ --with-extra-ldflags="$LDFLAGS" \
+ READELF=$READELF AR=$AR STRIP=$STRIP NM=$NM \
+ OBJDUMP=$OBJDUMP OBJCOPY=$OBJCOPY
+}
+
+post_install() {
+ rm -rf ${DESTDIR}/usr/lib/bin
+ mv ${DESTDIR}/usr/lib/jvm/openjdk-${_base_version} ${DESTDIR}/$_jdk_home
+ vcopy build/*-release/images/static-libs/lib $_jdk_home
+ vmkdir $_jdk_home/lib/security
+ make-ca -g -f --destdir "${PWD}/ca" -k "${DESTDIR}/$_jdk_home/bin/keytool"
+ mv ./ca/etc/pki/tls/java/cacerts ${DESTDIR}/$_jdk_home/lib/security/
+ chmod -R ugo+rw ./ca
+ rm -rf ./ca
+}
+
+subpackages="openjdk21-static-libs openjdk21-src openjdk21-jre openjdk21-doc openjdk21-jmods"
+
+openjdk21-jre_package() {
+ shlib_provides="libawt.so libawt_xawt.so libjava.so libjli.so libjvm.so libjawt.so"
+ short_desc+=" - runtime components"
+ provides="java-runtime-${version}_1"
+ depends="openjdk-common"
+ alternatives="java:/usr/lib/jvm/default-jre:/${_jdk_home}"
+ pkg_install() {
+ for bin in java jfr keytool rmiregistry; do
+ vmove "${_jdk_home}/bin/${bin}"
+ vmove "${_jdk_home}/man/man1/${bin}.1"
+ done
+
+ for f in lib legal conf release; do
+ vmove $_jdk_home/$f
+ done
+
+ vlicense ASSEMBLY_EXCEPTION
+ vlicense LICENSE
+ }
+}
+
+openjdk21-doc_package() {
+ nostrip=yes
+ noverifyrdeps=yes
+ noshlibprovides=yes
+ short_desc+=" - documentation"
+ if [ -z "$build_option_docs" ]; then
+ build_style=meta
+ fi
+ pkg_install() {
+ if [ "$build_option_docs" ]; then
+ local _docdir=usr/share/doc/openjdk$_java_ver
+ vmkdir $_docdir
+ cp -a $wrksrc/$build_wrksrc/build/linux-*/images/docs/* ${PKGDESTDIR}/$_docdir
+ fi
+ }
+}
+
+openjdk21-src_package() {
+ nostrip=yes
+ noverifyrdeps=yes
+ noshlibprovides=yes
+ short_desc+=" - source code"
+ pkg_install() {
+ vmove "$_jdk_home/lib/src.zip"
+ }
+}
+
+openjdk21-static-libs_package() {
+ short_desc+=" - static libs"
+ pkg_install() {
+ vmove "$_jdk_home/lib/*.a"
+ }
+}
+
+openjdk21-jmods_package() {
+ short_desc+=" - JMODs"
+ depends="${sourcepkg}-${version}_${revision}"
+ pkg_install() {
+ vmove $_jdk_home/jmods
+ }
+}
diff --git a/srcpkgs/openjdk21/update b/srcpkgs/openjdk21/update
new file mode 100644
index 0000000000000..0090f26b68e1b
--- /dev/null
+++ b/srcpkgs/openjdk21/update
@@ -0,0 +1 @@
+pattern='jdk-\K21\.[\d.+]+(?=\.)'
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PR PATCH] [Updated] jdk21
2023-12-23 0:38 [PR PATCH] jdk21 classabbyamp
2023-12-23 0:41 ` [PR PATCH] [Updated] jdk21 classabbyamp
@ 2023-12-24 4:16 ` classabbyamp
2023-12-24 14:55 ` [PR PATCH] [Merged]: jdk21 classabbyamp
2 siblings, 0 replies; 4+ messages in thread
From: classabbyamp @ 2023-12-24 4:16 UTC (permalink / raw)
To: ml
[-- Attachment #1: Type: text/plain, Size: 443 bytes --]
There is an updated pull request by classabbyamp against master on the void-packages repository
https://github.com/classabbyamp/void-packages jdk21
https://github.com/void-linux/void-packages/pull/47882
jdk21
#### Testing the changes
- I tested the changes in this PR: **YES**
test please: https://files.placeviolette.net/jdk21/
[ci skip]
A patch file from https://github.com/void-linux/void-packages/pull/47882.patch is attached
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-jdk21-47882.patch --]
[-- Type: text/x-diff, Size: 8274 bytes --]
From 8b5d66621d608d69813d3a1d7fd1ba15fa9bb4d4 Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Fri, 22 Dec 2023 00:47:14 -0500
Subject: [PATCH] New package: openjdk21-21.0.1+12
---
srcpkgs/openjdk21-doc | 1 +
srcpkgs/openjdk21-jmods | 1 +
srcpkgs/openjdk21-jre | 1 +
srcpkgs/openjdk21-src | 1 +
srcpkgs/openjdk21-static-libs | 1 +
srcpkgs/openjdk21/template | 194 ++++++++++++++++++++++++++++++++++
srcpkgs/openjdk21/update | 1 +
7 files changed, 200 insertions(+)
create mode 120000 srcpkgs/openjdk21-doc
create mode 120000 srcpkgs/openjdk21-jmods
create mode 120000 srcpkgs/openjdk21-jre
create mode 120000 srcpkgs/openjdk21-src
create mode 120000 srcpkgs/openjdk21-static-libs
create mode 100644 srcpkgs/openjdk21/template
create mode 100644 srcpkgs/openjdk21/update
diff --git a/srcpkgs/openjdk21-doc b/srcpkgs/openjdk21-doc
new file mode 120000
index 0000000000000..57e991f86dff5
--- /dev/null
+++ b/srcpkgs/openjdk21-doc
@@ -0,0 +1 @@
+openjdk21
\ No newline at end of file
diff --git a/srcpkgs/openjdk21-jmods b/srcpkgs/openjdk21-jmods
new file mode 120000
index 0000000000000..57e991f86dff5
--- /dev/null
+++ b/srcpkgs/openjdk21-jmods
@@ -0,0 +1 @@
+openjdk21
\ No newline at end of file
diff --git a/srcpkgs/openjdk21-jre b/srcpkgs/openjdk21-jre
new file mode 120000
index 0000000000000..57e991f86dff5
--- /dev/null
+++ b/srcpkgs/openjdk21-jre
@@ -0,0 +1 @@
+openjdk21
\ No newline at end of file
diff --git a/srcpkgs/openjdk21-src b/srcpkgs/openjdk21-src
new file mode 120000
index 0000000000000..57e991f86dff5
--- /dev/null
+++ b/srcpkgs/openjdk21-src
@@ -0,0 +1 @@
+openjdk21
\ No newline at end of file
diff --git a/srcpkgs/openjdk21-static-libs b/srcpkgs/openjdk21-static-libs
new file mode 120000
index 0000000000000..57e991f86dff5
--- /dev/null
+++ b/srcpkgs/openjdk21-static-libs
@@ -0,0 +1 @@
+openjdk21
\ No newline at end of file
diff --git a/srcpkgs/openjdk21/template b/srcpkgs/openjdk21/template
new file mode 100644
index 0000000000000..87099542c3373
--- /dev/null
+++ b/srcpkgs/openjdk21/template
@@ -0,0 +1,194 @@
+# Template file for 'openjdk21'
+pkgname=openjdk21
+version=21.0.1+12
+revision=1
+_gtest_ver=1.13.0
+_java_ver="${version%%.*}"
+_jdk_update="${version#*+}"
+_base_version="${version%+*}"
+_jdk_home="usr/lib/jvm/openjdk${_java_ver}"
+archs="x86_64* aarch64*"
+create_wrksrc=yes
+build_wrksrc="jdk${_java_ver}u-jdk-${version/+/-}"
+build_style=gnu-configure
+configure_args="--disable-warnings-as-errors
+ --enable-unlimited-crypto
+ --with-zlib=system
+ --with-libjpeg=system
+ --with-giflib=system
+ --with-libpng=system
+ --with-lcms=system
+ --with-jtreg=no
+ --with-gtest=../googletest-${_gtest_ver}
+ --with-debug-level=release
+ --with-native-debug-symbols=internal
+ --with-jobs=${XBPS_ORIG_MAKEJOBS}
+ --with-version-pre=
+ --with-version-build=${_jdk_update}
+ --with-version-opt=void-r${revision}
+ --with-vendor-name=Void
+ --with-vendor-url=https://voidlinux.org/
+ --with-vendor-bug-url=https://github.com/void-linux/void-packages/issues
+ --with-vendor-vm-bug-url=https://github.com/void-linux/void-packages/issues"
+make_build_args="images static-libs-image $(vopt_if docs docs)"
+make_install_args="INSTALL_PREFIX=\"${DESTDIR}/usr/lib\""
+make_check_target="test-hotspot-gtest"
+hostmakedepends="pkg-config automake autoconf cpio tar unzip zip ca-certificates
+ openssl zlib-devel which make-ca openjdk20-bootstrap"
+makedepends="libXrender-devel libXtst-devel libXt-devel libXrandr-devel
+ giflib-devel libjpeg-turbo-devel cups-devel freetype-devel alsa-lib-devel
+ fontconfig-devel zlib-devel lcms2-devel"
+depends="${pkgname}-jre-${version}_${revision}"
+short_desc="OpenJDK Java Development Kit (version ${_java_ver})"
+maintainer="classabbyamp <void@placeviolette.net>"
+license="GPL-2.0-only WITH Classpath-exception-2.0"
+homepage="http://openjdk.java.net/"
+distfiles="https://github.com/openjdk/jdk${_java_ver}u/archive/jdk-${version}.tar.gz
+ https://github.com/google/googletest/archive/refs/tags/v${_gtest_ver}.tar.gz"
+checksum="9943e3814d3c1a31f1449f09a8b67df54841944f855a1d372be892c5e6b19217
+ ad7fdba11ea011c1d925b3289cf4af2c66a352e18d4c7264392fead75e919363"
+alternatives="jdk:/usr/lib/jvm/default-jdk:/${_jdk_home}"
+provides="java-environment-${version}_1"
+patch_args="-Np1 --directory=$build_wrksrc"
+
+# Build and check are still parallel, but don't use -jN.
+disable_parallel_build=yes
+disable_parallel_check=yes
+build_options="docs"
+
+case "$XBPS_TARGET_MACHINE" in
+ ppc64*) ;;
+ # no hotspot JIT for ppc32
+ ppc*) _use_zero=yes ;;
+ i686*|arm*) broken="Unsupported architecture" ;;
+esac
+
+if [ -n "$_use_zero" ]; then
+ makedepends+=" libffi-devel"
+ configure_args+=" --with-jvm-variants=zero"
+ case "$XBPS_TARGET_MACHINE" in
+ ppc*) configure_args+=" --with-boot-jdk-jvmargs=-XX:ThreadStackSize=2560";;
+ esac
+fi
+configure_args+=" --with-boot-jdk-jvmargs=-Xlog:disable"
+
+case "$XBPS_TARGET_LIBC" in
+ glibc) build_options_default+=" docs";;
+esac
+
+if [ ! "$CROSS_BUILD" ]; then
+ hostmakedepends+=" openjdk20-bootstrap"
+ configure_args+=" --with-boot-jdk=/usr/lib/jvm/openjdk20"
+else
+ hostmakedepends+=" openjdk21"
+ configure_args+=" --with-boot-jdk=/usr/lib/jvm/openjdk21"
+fi
+
+post_extract() {
+ chmod +x $build_wrksrc/configure
+ if [ "$XBPS_TARGET_LIBC" = "musl" ]; then
+ rm -r $build_wrksrc/src/jdk.hotspot.agent
+ fi
+}
+
+do_configure() {
+ CFLAGS=${CFLAGS/-D_FORTIFY_SOURCE=2/}
+ CXXFLAGS=${CXXFLAGS/-D_FORTIFY_SOURCE=2/}
+
+ # force ELFv2 for ppc64 just in case
+ case "$XBPS_TARGET_MACHINE" in
+ ppc64*)
+ CFLAGS+=" -DABI_ELFv2"
+ CXXFLAGS+=" -DABI_ELFv2"
+ ;;
+ esac
+
+ configure_args=${configure_args/--with-libtool-sysroot=$XBPS_CROSS_BASE}
+ if [ "$XBPS_CCACHE" ] && [ -z "$CROSS_BUILD" ]; then
+ configure_args+=" --enable-ccache"
+ CC="/usr/bin/cc"
+ CXX="/usr/bin/c++"
+ fi
+ ./configure ${configure_args} \
+ --with-extra-cflags="$CFLAGS" \
+ --with-extra-cxxflags="$CXXFLAGS" \
+ --with-extra-ldflags="$LDFLAGS" \
+ READELF=$READELF AR=$AR STRIP=$STRIP NM=$NM \
+ OBJDUMP=$OBJDUMP OBJCOPY=$OBJCOPY
+}
+
+post_install() {
+ rm -rf ${DESTDIR}/usr/lib/bin
+ mv ${DESTDIR}/usr/lib/jvm/openjdk-${_base_version} ${DESTDIR}/$_jdk_home
+ vcopy build/*-release/images/static-libs/lib $_jdk_home
+ vmkdir $_jdk_home/lib/security
+ make-ca -g -f --destdir "${PWD}/ca" -k "${DESTDIR}/$_jdk_home/bin/keytool"
+ mv ./ca/etc/pki/tls/java/cacerts ${DESTDIR}/$_jdk_home/lib/security/
+ chmod -R ugo+rw ./ca
+ rm -rf ./ca
+}
+
+subpackages="openjdk21-static-libs openjdk21-src openjdk21-jre openjdk21-doc openjdk21-jmods"
+
+openjdk21-jre_package() {
+ shlib_provides="libawt.so libawt_xawt.so libjava.so libjli.so libjvm.so libjawt.so"
+ short_desc+=" - runtime components"
+ provides="java-runtime-${version}_1"
+ depends="openjdk-common"
+ alternatives="java:/usr/lib/jvm/default-jre:/${_jdk_home}"
+ pkg_install() {
+ for bin in java jfr keytool rmiregistry; do
+ vmove "${_jdk_home}/bin/${bin}"
+ vmove "${_jdk_home}/man/man1/${bin}.1"
+ done
+
+ for f in lib legal conf release; do
+ vmove $_jdk_home/$f
+ done
+
+ vlicense ASSEMBLY_EXCEPTION
+ vlicense LICENSE
+ }
+}
+
+openjdk21-doc_package() {
+ nostrip=yes
+ noverifyrdeps=yes
+ noshlibprovides=yes
+ short_desc+=" - documentation"
+ if [ -z "$build_option_docs" ]; then
+ build_style=meta
+ fi
+ pkg_install() {
+ if [ "$build_option_docs" ]; then
+ local _docdir=usr/share/doc/openjdk$_java_ver
+ vmkdir $_docdir
+ cp -a $wrksrc/$build_wrksrc/build/linux-*/images/docs/* ${PKGDESTDIR}/$_docdir
+ fi
+ }
+}
+
+openjdk21-src_package() {
+ nostrip=yes
+ noverifyrdeps=yes
+ noshlibprovides=yes
+ short_desc+=" - source code"
+ pkg_install() {
+ vmove "$_jdk_home/lib/src.zip"
+ }
+}
+
+openjdk21-static-libs_package() {
+ short_desc+=" - static libs"
+ pkg_install() {
+ vmove "$_jdk_home/lib/*.a"
+ }
+}
+
+openjdk21-jmods_package() {
+ short_desc+=" - JMODs"
+ depends="${sourcepkg}-${version}_${revision}"
+ pkg_install() {
+ vmove $_jdk_home/jmods
+ }
+}
diff --git a/srcpkgs/openjdk21/update b/srcpkgs/openjdk21/update
new file mode 100644
index 0000000000000..0090f26b68e1b
--- /dev/null
+++ b/srcpkgs/openjdk21/update
@@ -0,0 +1 @@
+pattern='jdk-\K21\.[\d.+]+(?=\.)'
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PR PATCH] [Merged]: jdk21
2023-12-23 0:38 [PR PATCH] jdk21 classabbyamp
2023-12-23 0:41 ` [PR PATCH] [Updated] jdk21 classabbyamp
2023-12-24 4:16 ` classabbyamp
@ 2023-12-24 14:55 ` classabbyamp
2 siblings, 0 replies; 4+ messages in thread
From: classabbyamp @ 2023-12-24 14:55 UTC (permalink / raw)
To: ml
[-- Attachment #1: Type: text/plain, Size: 279 bytes --]
There's a merged pull request on the void-packages repository
jdk21
https://github.com/void-linux/void-packages/pull/47882
Description:
#### Testing the changes
- I tested the changes in this PR: **YES**
test please: https://files.placeviolette.net/jdk21/
[ci skip]
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2023-12-24 14:55 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-12-23 0:38 [PR PATCH] jdk21 classabbyamp
2023-12-23 0:41 ` [PR PATCH] [Updated] jdk21 classabbyamp
2023-12-24 4:16 ` classabbyamp
2023-12-24 14:55 ` [PR PATCH] [Merged]: jdk21 classabbyamp
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).