Github messages for voidlinux
 help / color / mirror / Atom feed
* [PR PATCH] [RFC] fix the openjdk alternatives mess
@ 2023-12-21 23:38 classabbyamp
  2023-12-22  1:23 ` ahesford
                   ` (8 more replies)
  0 siblings, 9 replies; 10+ messages in thread
From: classabbyamp @ 2023-12-21 23:38 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 1501 bytes --]

There is a new pull request by classabbyamp against master on the void-packages repository

https://github.com/classabbyamp/void-packages jdk-alts
https://github.com/void-linux/void-packages/pull/47866

[RFC] fix the openjdk alternatives mess
The current way the alternatives groups work for openjdk packages really sucks. They overlap and cause pkgdb errors, can get out-of-sync, and more. This approach hopes to fix (or at least improve) that.

The new package `openjdk-common` replaces the xbps trigger that added the profile script for openjdk (which was a flawed approach and should have never been done).

Instead of using alternative groups for specific JRE/JDK binaries, this approach uses just two symlinks, `/usr/lib/jvm/default-jdk` and `/usr/lib/jvm/default-jre`, which point to the selected `JAVA_HOME` (`/usr/lib/jvm/openjdkN`).  The profile script in `openjdk-common` prefers `default-jdk` to `default-jre`, and just adds them to `PATH` and `MANPATH` instead of putting things in `/usr/bin`.

With this approach, the selected JDK and JRE can probably still get out of sync, but the preference behaviour of the profile script should help mitigate this. I don't think it's currently possible to sanely deconflict/sync the alternatives groups.

*(testing in progress)*

#### Testing the changes
- I tested the changes in this PR: **YES**|**briefly**|**NO**

[ci skip]

closes #47416

A patch file from https://github.com/void-linux/void-packages/pull/47866.patch is attached

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-jdk-alts-47866.patch --]
[-- Type: text/x-diff, Size: 31031 bytes --]

From 4d93a5fcc87e7f8962acacbe0345adf8927504ff Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 21 Dec 2023 17:36:47 -0500
Subject: [PATCH 1/7] xbps-triggers: update to 0.127.

get rid of the openjdk profile hook. it should not have been done like this.
---
 srcpkgs/xbps-triggers/files/openjdk-profile | 39 ---------------------
 srcpkgs/xbps-triggers/template              |  2 +-
 2 files changed, 1 insertion(+), 40 deletions(-)
 delete mode 100755 srcpkgs/xbps-triggers/files/openjdk-profile

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 04a65372dbcf0c125633a76ac8233448cf35cf7f Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 21 Dec 2023 17:32:52 -0500
Subject: [PATCH 2/7] 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      |  3 +++
 srcpkgs/openjdk-common/files/profile.sh | 12 ++++++++++++
 srcpkgs/openjdk-common/template         | 12 ++++++++++++
 4 files changed, 36 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..eefb7db8d0f34
--- /dev/null
+++ b/srcpkgs/openjdk-common/INSTALL.msg
@@ -0,0 +1,3 @@
+The way the default OpenJDK version is selected has changed. You may need to
+re-login for this change to take effect. You may experience issues if the
+xbps-alternatives groups "java" and "jdk" are not set to the same OpenJDK.
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..a6f774d417361
--- /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/openjdk.sh
+}

From ec0a6d230ddc1a58ab203a2580a2717ecad5390e Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 21 Dec 2023 17:37:34 -0500
Subject: [PATCH 3/7] 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 2a1d3d0fb7f379f4755588597d29c271aecfeaef Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 21 Dec 2023 17:41:58 -0500
Subject: [PATCH 4/7] 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 8984eb8168275077d739ca5b2e83af1a89c66d3e Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 21 Dec 2023 17:40:49 -0500
Subject: [PATCH 5/7] 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     |  8 +++-
 3 files changed, 8 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..2d79c0ddd30dc 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,9 @@ openjdk11-jmods_package() {
 		vmove $_jdk_home/jmods
 	}
 }
+
+openjdk11-bin_package() {
+	short_desc+=" (transitional dummy package)"
+	depends="${sourcepkg}>=${version}_${revision}"
+	build_style=meta
+}

From 326d0267bd5d487b150f2ebe9a079f12d33ef7d6 Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 21 Dec 2023 17:42:46 -0500
Subject: [PATCH 6/7] openjdk11: update to 11.0.22+6.

- fix manpages
- fix alternatives
---
 srcpkgs/openjdk11/template | 59 +++++++-------------------------------
 1 file changed, 10 insertions(+), 49 deletions(-)

diff --git a/srcpkgs/openjdk11/template b/srcpkgs/openjdk11/template
index 2d79c0ddd30dc..f3b10f4a75045 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
+			vmove "$_jdk_home/man/man1/$bf"
+			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 01c1bcb91a901e33329193516a8efe57f5d9f485 Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 21 Dec 2023 17:44:04 -0500
Subject: [PATCH 7/7] openjdk17: update to 17.0.10+6.

- fix manpages
- fix alternatives
---
 srcpkgs/openjdk17/template | 53 +++++++-------------------------------
 1 file changed, 10 insertions(+), 43 deletions(-)

diff --git a/srcpkgs/openjdk17/template b/srcpkgs/openjdk17/template
index bb72701f360e6..b70ee1f7768f4 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
+			vmove "$_jdk_home/bin/$bf"
+			vmove "$_jdk_home/man/man1/$bf"
 		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
 	}
 }
 

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [RFC] fix the openjdk alternatives mess
  2023-12-21 23:38 [PR PATCH] [RFC] fix the openjdk alternatives mess classabbyamp
@ 2023-12-22  1:23 ` ahesford
  2023-12-22  1:55 ` [PR PATCH] [Updated] " classabbyamp
                   ` (7 subsequent siblings)
  8 siblings, 0 replies; 10+ messages in thread
From: ahesford @ 2023-12-22  1:23 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 172 bytes --]

New comment by ahesford on void-packages repository

https://github.com/void-linux/void-packages/pull/47866#issuecomment-1867114696

Comment:
I think this is a great idea.

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PR PATCH] [Updated] [RFC] fix the openjdk alternatives mess
  2023-12-21 23:38 [PR PATCH] [RFC] fix the openjdk alternatives mess classabbyamp
  2023-12-22  1:23 ` ahesford
@ 2023-12-22  1:55 ` classabbyamp
  2023-12-22  1:57 ` classabbyamp
                   ` (6 subsequent siblings)
  8 siblings, 0 replies; 10+ messages in thread
From: classabbyamp @ 2023-12-22  1:55 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 1506 bytes --]

There is an updated pull request by classabbyamp against master on the void-packages repository

https://github.com/classabbyamp/void-packages jdk-alts
https://github.com/void-linux/void-packages/pull/47866

[RFC] fix the openjdk alternatives mess
The current way the alternatives groups work for openjdk packages really sucks. They overlap and cause pkgdb errors, can get out-of-sync, and more. This approach hopes to fix (or at least improve) that.

The new package `openjdk-common` replaces the xbps trigger that added the profile script for openjdk (which was a flawed approach and should have never been done).

Instead of using alternative groups for specific JRE/JDK binaries, this approach uses just two symlinks, `/usr/lib/jvm/default-jdk` and `/usr/lib/jvm/default-jre`, which point to the selected `JAVA_HOME` (`/usr/lib/jvm/openjdkN`).  The profile script in `openjdk-common` prefers `default-jdk` to `default-jre`, and just adds them to `PATH` and `MANPATH` instead of putting things in `/usr/bin`.

With this approach, the selected JDK and JRE can probably still get out of sync, but the preference behaviour of the profile script should help mitigate this. I don't think it's currently possible to sanely deconflict/sync the alternatives groups.

*(testing in progress)*

#### Testing the changes
- I tested the changes in this PR: **YES**|**briefly**|**NO**

[ci skip]

closes #47416

A patch file from https://github.com/void-linux/void-packages/pull/47866.patch is attached

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-jdk-alts-47866.patch --]
[-- Type: text/x-diff, Size: 31093 bytes --]

From 4d93a5fcc87e7f8962acacbe0345adf8927504ff Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 21 Dec 2023 17:36:47 -0500
Subject: [PATCH 1/7] xbps-triggers: update to 0.127.

get rid of the openjdk profile hook. it should not have been done like this.
---
 srcpkgs/xbps-triggers/files/openjdk-profile | 39 ---------------------
 srcpkgs/xbps-triggers/template              |  2 +-
 2 files changed, 1 insertion(+), 40 deletions(-)
 delete mode 100755 srcpkgs/xbps-triggers/files/openjdk-profile

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 a87f03855a93fed1e442942ad724fddd9ac29a7a Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 21 Dec 2023 17:32:52 -0500
Subject: [PATCH 2/7] 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..c0cd42b503ea1
--- /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..a6f774d417361
--- /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/openjdk.sh
+}

From 168842d17205b4e4091766c417d2a39384d9056a Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 21 Dec 2023 17:37:34 -0500
Subject: [PATCH 3/7] 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 4680a4b17de1e714da3c5b0820e20c12fb164954 Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 21 Dec 2023 17:41:58 -0500
Subject: [PATCH 4/7] 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 d3c726606d7dee4d3a70a70de5f57bbbf80a2fca Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 21 Dec 2023 17:40:49 -0500
Subject: [PATCH 5/7] 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     |  8 +++-
 3 files changed, 8 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..2d79c0ddd30dc 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,9 @@ openjdk11-jmods_package() {
 		vmove $_jdk_home/jmods
 	}
 }
+
+openjdk11-bin_package() {
+	short_desc+=" (transitional dummy package)"
+	depends="${sourcepkg}>=${version}_${revision}"
+	build_style=meta
+}

From 4b2f854006c75fcd289e9a5c234ee2ad6d7afa5b Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 21 Dec 2023 17:42:46 -0500
Subject: [PATCH 6/7] 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 2d79c0ddd30dc..2754a8d136081 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 d6b5229f696714e244e0ba2896dec47703929175 Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 21 Dec 2023 17:44:04 -0500
Subject: [PATCH 7/7] 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
 	}
 }
 

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PR PATCH] [Updated] [RFC] fix the openjdk alternatives mess
  2023-12-21 23:38 [PR PATCH] [RFC] fix the openjdk alternatives mess classabbyamp
  2023-12-22  1:23 ` ahesford
  2023-12-22  1:55 ` [PR PATCH] [Updated] " classabbyamp
@ 2023-12-22  1:57 ` classabbyamp
  2023-12-22  2:34 ` classabbyamp
                   ` (5 subsequent siblings)
  8 siblings, 0 replies; 10+ messages in thread
From: classabbyamp @ 2023-12-22  1:57 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 1506 bytes --]

There is an updated pull request by classabbyamp against master on the void-packages repository

https://github.com/classabbyamp/void-packages jdk-alts
https://github.com/void-linux/void-packages/pull/47866

[RFC] fix the openjdk alternatives mess
The current way the alternatives groups work for openjdk packages really sucks. They overlap and cause pkgdb errors, can get out-of-sync, and more. This approach hopes to fix (or at least improve) that.

The new package `openjdk-common` replaces the xbps trigger that added the profile script for openjdk (which was a flawed approach and should have never been done).

Instead of using alternative groups for specific JRE/JDK binaries, this approach uses just two symlinks, `/usr/lib/jvm/default-jdk` and `/usr/lib/jvm/default-jre`, which point to the selected `JAVA_HOME` (`/usr/lib/jvm/openjdkN`).  The profile script in `openjdk-common` prefers `default-jdk` to `default-jre`, and just adds them to `PATH` and `MANPATH` instead of putting things in `/usr/bin`.

With this approach, the selected JDK and JRE can probably still get out of sync, but the preference behaviour of the profile script should help mitigate this. I don't think it's currently possible to sanely deconflict/sync the alternatives groups.

*(testing in progress)*

#### Testing the changes
- I tested the changes in this PR: **YES**|**briefly**|**NO**

[ci skip]

closes #47416

A patch file from https://github.com/void-linux/void-packages/pull/47866.patch is attached

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-jdk-alts-47866.patch --]
[-- Type: text/x-diff, Size: 31093 bytes --]

From 4d93a5fcc87e7f8962acacbe0345adf8927504ff Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 21 Dec 2023 17:36:47 -0500
Subject: [PATCH 1/7] xbps-triggers: update to 0.127.

get rid of the openjdk profile hook. it should not have been done like this.
---
 srcpkgs/xbps-triggers/files/openjdk-profile | 39 ---------------------
 srcpkgs/xbps-triggers/template              |  2 +-
 2 files changed, 1 insertion(+), 40 deletions(-)
 delete mode 100755 srcpkgs/xbps-triggers/files/openjdk-profile

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 151c21665a664e0bb167141858cb3cc47be5d61c Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 21 Dec 2023 17:32:52 -0500
Subject: [PATCH 2/7] 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..a6f774d417361
--- /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/openjdk.sh
+}

From c1a18eb3442c9e91899d6b8811160f59f2870e40 Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 21 Dec 2023 17:37:34 -0500
Subject: [PATCH 3/7] 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 a97bbb3cbcaf28a0d0252a8d9626dfb3ce8208b5 Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 21 Dec 2023 17:41:58 -0500
Subject: [PATCH 4/7] 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 a52c1d7dcbedbfdc958e5f060fb9b333cf279721 Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 21 Dec 2023 17:40:49 -0500
Subject: [PATCH 5/7] 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     |  8 +++-
 3 files changed, 8 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..2d79c0ddd30dc 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,9 @@ openjdk11-jmods_package() {
 		vmove $_jdk_home/jmods
 	}
 }
+
+openjdk11-bin_package() {
+	short_desc+=" (transitional dummy package)"
+	depends="${sourcepkg}>=${version}_${revision}"
+	build_style=meta
+}

From 94ebd4f04ffbc9b9f00311b2706eadcac242a04f Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 21 Dec 2023 17:42:46 -0500
Subject: [PATCH 6/7] 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 2d79c0ddd30dc..2754a8d136081 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 182ef2f559bb1051609c53d7c49d9a0a3453c002 Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 21 Dec 2023 17:44:04 -0500
Subject: [PATCH 7/7] 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
 	}
 }
 

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PR PATCH] [Updated] [RFC] fix the openjdk alternatives mess
  2023-12-21 23:38 [PR PATCH] [RFC] fix the openjdk alternatives mess classabbyamp
                   ` (2 preceding siblings ...)
  2023-12-22  1:57 ` classabbyamp
@ 2023-12-22  2:34 ` classabbyamp
  2023-12-22  3:04 ` classabbyamp
                   ` (4 subsequent siblings)
  8 siblings, 0 replies; 10+ messages in thread
From: classabbyamp @ 2023-12-22  2:34 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 1506 bytes --]

There is an updated pull request by classabbyamp against master on the void-packages repository

https://github.com/classabbyamp/void-packages jdk-alts
https://github.com/void-linux/void-packages/pull/47866

[RFC] fix the openjdk alternatives mess
The current way the alternatives groups work for openjdk packages really sucks. They overlap and cause pkgdb errors, can get out-of-sync, and more. This approach hopes to fix (or at least improve) that.

The new package `openjdk-common` replaces the xbps trigger that added the profile script for openjdk (which was a flawed approach and should have never been done).

Instead of using alternative groups for specific JRE/JDK binaries, this approach uses just two symlinks, `/usr/lib/jvm/default-jdk` and `/usr/lib/jvm/default-jre`, which point to the selected `JAVA_HOME` (`/usr/lib/jvm/openjdkN`).  The profile script in `openjdk-common` prefers `default-jdk` to `default-jre`, and just adds them to `PATH` and `MANPATH` instead of putting things in `/usr/bin`.

With this approach, the selected JDK and JRE can probably still get out of sync, but the preference behaviour of the profile script should help mitigate this. I don't think it's currently possible to sanely deconflict/sync the alternatives groups.

*(testing in progress)*

#### Testing the changes
- I tested the changes in this PR: **YES**|**briefly**|**NO**

[ci skip]

closes #47416

A patch file from https://github.com/void-linux/void-packages/pull/47866.patch is attached

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-jdk-alts-47866.patch --]
[-- Type: text/x-diff, Size: 31093 bytes --]

From 4d93a5fcc87e7f8962acacbe0345adf8927504ff Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 21 Dec 2023 17:36:47 -0500
Subject: [PATCH 1/7] xbps-triggers: update to 0.127.

get rid of the openjdk profile hook. it should not have been done like this.
---
 srcpkgs/xbps-triggers/files/openjdk-profile | 39 ---------------------
 srcpkgs/xbps-triggers/template              |  2 +-
 2 files changed, 1 insertion(+), 40 deletions(-)
 delete mode 100755 srcpkgs/xbps-triggers/files/openjdk-profile

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 7d3275e479cad91f0453cf021813b1eb1216d1fa Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 21 Dec 2023 17:32:52 -0500
Subject: [PATCH 2/7] 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..65faafe295e44
--- /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 openjdk.sh
+}

From 50f24aa6e4e9387d6242a7f81e8f800c651c2636 Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 21 Dec 2023 17:37:34 -0500
Subject: [PATCH 3/7] 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 ea3ee6579e0e3a60c5347d0db30b63da409f133d Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 21 Dec 2023 17:41:58 -0500
Subject: [PATCH 4/7] 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 0f84b124516ecfcc80627f19d43a9a4326dddb56 Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 21 Dec 2023 17:40:49 -0500
Subject: [PATCH 5/7] 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     |  8 +++-
 3 files changed, 8 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..2d79c0ddd30dc 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,9 @@ openjdk11-jmods_package() {
 		vmove $_jdk_home/jmods
 	}
 }
+
+openjdk11-bin_package() {
+	short_desc+=" (transitional dummy package)"
+	depends="${sourcepkg}>=${version}_${revision}"
+	build_style=meta
+}

From 7530ac823c1dfb942cfe490b938b5ad8c5948a45 Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 21 Dec 2023 17:42:46 -0500
Subject: [PATCH 6/7] 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 2d79c0ddd30dc..2754a8d136081 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 02b3c0941897aa84e8893e304d1ad5006ab278de Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 21 Dec 2023 17:44:04 -0500
Subject: [PATCH 7/7] 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
 	}
 }
 

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PR PATCH] [Updated] [RFC] fix the openjdk alternatives mess
  2023-12-21 23:38 [PR PATCH] [RFC] fix the openjdk alternatives mess classabbyamp
                   ` (3 preceding siblings ...)
  2023-12-22  2:34 ` classabbyamp
@ 2023-12-22  3:04 ` classabbyamp
  2023-12-22 20:03 ` classabbyamp
                   ` (3 subsequent siblings)
  8 siblings, 0 replies; 10+ messages in thread
From: classabbyamp @ 2023-12-22  3:04 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 1460 bytes --]

There is an updated pull request by classabbyamp against master on the void-packages repository

https://github.com/classabbyamp/void-packages jdk-alts
https://github.com/void-linux/void-packages/pull/47866

[RFC] fix the openjdk alternatives mess
The current way the alternatives groups work for openjdk packages really sucks. They overlap and cause pkgdb errors, can get out-of-sync, and more. This approach hopes to fix (or at least improve) that.

The new package `openjdk-common` replaces the xbps trigger that added the profile script for openjdk (which was a flawed approach and should have never been done).

Instead of using alternative groups for specific JRE/JDK binaries, this approach uses just two symlinks, `/usr/lib/jvm/default-jdk` and `/usr/lib/jvm/default-jre`, which point to the selected `JAVA_HOME` (`/usr/lib/jvm/openjdkN`).  The profile script in `openjdk-common` prefers `default-jdk` to `default-jre`, and just adds them to `PATH` and `MANPATH` instead of putting things in `/usr/bin`.

With this approach, the selected JDK and JRE can probably still get out of sync, but the preference behaviour of the profile script should help mitigate this. I don't think it's currently possible to sanely deconflict/sync the alternatives groups.

#### Testing the changes
- I tested the changes in this PR: **YES**

[ci skip]

closes #47416

A patch file from https://github.com/void-linux/void-packages/pull/47866.patch is attached

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-jdk-alts-47866.patch --]
[-- Type: text/x-diff, Size: 31123 bytes --]

From 4d93a5fcc87e7f8962acacbe0345adf8927504ff Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 21 Dec 2023 17:36:47 -0500
Subject: [PATCH 1/7] xbps-triggers: update to 0.127.

get rid of the openjdk profile hook. it should not have been done like this.
---
 srcpkgs/xbps-triggers/files/openjdk-profile | 39 ---------------------
 srcpkgs/xbps-triggers/template              |  2 +-
 2 files changed, 1 insertion(+), 40 deletions(-)
 delete mode 100755 srcpkgs/xbps-triggers/files/openjdk-profile

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 7d3275e479cad91f0453cf021813b1eb1216d1fa Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 21 Dec 2023 17:32:52 -0500
Subject: [PATCH 2/7] 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..65faafe295e44
--- /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 openjdk.sh
+}

From 50f24aa6e4e9387d6242a7f81e8f800c651c2636 Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 21 Dec 2023 17:37:34 -0500
Subject: [PATCH 3/7] 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 ea3ee6579e0e3a60c5347d0db30b63da409f133d Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 21 Dec 2023 17:41:58 -0500
Subject: [PATCH 4/7] 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 0301c66baebb3c213fcb5963313d4728414dd03b Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 21 Dec 2023 17:40:49 -0500
Subject: [PATCH 5/7] 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 2d1b700e5dcd0ea111c73c0c8af060b12dbcc47a Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 21 Dec 2023 17:42:46 -0500
Subject: [PATCH 6/7] 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 3969b770480d4d99865cd5aeee47ccc1e5d9b784 Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 21 Dec 2023 17:44:04 -0500
Subject: [PATCH 7/7] 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
 	}
 }
 

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PR PATCH] [Updated] [RFC] fix the openjdk alternatives mess
  2023-12-21 23:38 [PR PATCH] [RFC] fix the openjdk alternatives mess classabbyamp
                   ` (4 preceding siblings ...)
  2023-12-22  3:04 ` classabbyamp
@ 2023-12-22 20:03 ` classabbyamp
  2023-12-22 22:05 ` classabbyamp
                   ` (2 subsequent siblings)
  8 siblings, 0 replies; 10+ messages in thread
From: classabbyamp @ 2023-12-22 20:03 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 1460 bytes --]

There is an updated pull request by classabbyamp against master on the void-packages repository

https://github.com/classabbyamp/void-packages jdk-alts
https://github.com/void-linux/void-packages/pull/47866

[RFC] fix the openjdk alternatives mess
The current way the alternatives groups work for openjdk packages really sucks. They overlap and cause pkgdb errors, can get out-of-sync, and more. This approach hopes to fix (or at least improve) that.

The new package `openjdk-common` replaces the xbps trigger that added the profile script for openjdk (which was a flawed approach and should have never been done).

Instead of using alternative groups for specific JRE/JDK binaries, this approach uses just two symlinks, `/usr/lib/jvm/default-jdk` and `/usr/lib/jvm/default-jre`, which point to the selected `JAVA_HOME` (`/usr/lib/jvm/openjdkN`).  The profile script in `openjdk-common` prefers `default-jdk` to `default-jre`, and just adds them to `PATH` and `MANPATH` instead of putting things in `/usr/bin`.

With this approach, the selected JDK and JRE can probably still get out of sync, but the preference behaviour of the profile script should help mitigate this. I don't think it's currently possible to sanely deconflict/sync the alternatives groups.

#### Testing the changes
- I tested the changes in this PR: **YES**

[ci skip]

closes #47416

A patch file from https://github.com/void-linux/void-packages/pull/47866.patch is attached

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-jdk-alts-47866.patch --]
[-- Type: text/x-diff, Size: 31119 bytes --]

From 56345e93023ab121342266ce59f2a222e7f9575d Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 21 Dec 2023 17:36:47 -0500
Subject: [PATCH 1/7] xbps-triggers: update to 0.127.

get rid of the openjdk profile hook. it should not have been done like this.
---
 srcpkgs/xbps-triggers/files/openjdk-profile | 39 ---------------------
 srcpkgs/xbps-triggers/template              |  2 +-
 2 files changed, 1 insertion(+), 40 deletions(-)
 delete mode 100755 srcpkgs/xbps-triggers/files/openjdk-profile

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 ce2eb40fb883040484ad7d5ffc9d3153fe247a4d Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 21 Dec 2023 17:32:52 -0500
Subject: [PATCH 2/7] 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 ea5d03a079ffbadbd23599429a4b6764279a9312 Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 21 Dec 2023 17:37:34 -0500
Subject: [PATCH 3/7] 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 80661c0478dba9eb4f6a277aeed5dc15842561ff Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 21 Dec 2023 17:41:58 -0500
Subject: [PATCH 4/7] 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 b1d0293b9f9e10bd22b65ed1e023b5391bd696e4 Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 21 Dec 2023 17:40:49 -0500
Subject: [PATCH 5/7] 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 bfa3cca499ca706d0961a464909ef84e897bac0d Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 21 Dec 2023 17:42:46 -0500
Subject: [PATCH 6/7] 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 2511df5c125581b2f8147755c2b548b614f1db09 Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Thu, 21 Dec 2023 17:44:04 -0500
Subject: [PATCH 7/7] 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
 	}
 }
 

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PR PATCH] [Updated] [RFC] fix the openjdk alternatives mess
  2023-12-21 23:38 [PR PATCH] [RFC] fix the openjdk alternatives mess classabbyamp
                   ` (5 preceding siblings ...)
  2023-12-22 20:03 ` classabbyamp
@ 2023-12-22 22:05 ` classabbyamp
  2023-12-23  0:27 ` classabbyamp
  2023-12-24 13:39 ` [PR PATCH] [Merged]: " classabbyamp
  8 siblings, 0 replies; 10+ messages in thread
From: classabbyamp @ 2023-12-22 22:05 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 1460 bytes --]

There is an updated pull request by classabbyamp against master on the void-packages repository

https://github.com/classabbyamp/void-packages jdk-alts
https://github.com/void-linux/void-packages/pull/47866

[RFC] fix the openjdk alternatives mess
The current way the alternatives groups work for openjdk packages really sucks. They overlap and cause pkgdb errors, can get out-of-sync, and more. This approach hopes to fix (or at least improve) that.

The new package `openjdk-common` replaces the xbps trigger that added the profile script for openjdk (which was a flawed approach and should have never been done).

Instead of using alternative groups for specific JRE/JDK binaries, this approach uses just two symlinks, `/usr/lib/jvm/default-jdk` and `/usr/lib/jvm/default-jre`, which point to the selected `JAVA_HOME` (`/usr/lib/jvm/openjdkN`).  The profile script in `openjdk-common` prefers `default-jdk` to `default-jre`, and just adds them to `PATH` and `MANPATH` instead of putting things in `/usr/bin`.

With this approach, the selected JDK and JRE can probably still get out of sync, but the preference behaviour of the profile script should help mitigate this. I don't think it's currently possible to sanely deconflict/sync the alternatives groups.

#### Testing the changes
- I tested the changes in this PR: **YES**

[ci skip]

closes #47416

A patch file from https://github.com/void-linux/void-packages/pull/47866.patch is attached

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-jdk-alts-47866.patch --]
[-- Type: text/x-diff, Size: 32219 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 1/7] 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 2/7] 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 3/7] 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 4/7] 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 5/7] 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 6/7] 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 7/7] 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
 	}
 }
 

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PR PATCH] [Updated] [RFC] fix the openjdk alternatives mess
  2023-12-21 23:38 [PR PATCH] [RFC] fix the openjdk alternatives mess classabbyamp
                   ` (6 preceding siblings ...)
  2023-12-22 22:05 ` classabbyamp
@ 2023-12-23  0:27 ` classabbyamp
  2023-12-24 13:39 ` [PR PATCH] [Merged]: " classabbyamp
  8 siblings, 0 replies; 10+ messages in thread
From: classabbyamp @ 2023-12-23  0:27 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 1460 bytes --]

There is an updated pull request by classabbyamp against master on the void-packages repository

https://github.com/classabbyamp/void-packages jdk-alts
https://github.com/void-linux/void-packages/pull/47866

[RFC] fix the openjdk alternatives mess
The current way the alternatives groups work for openjdk packages really sucks. They overlap and cause pkgdb errors, can get out-of-sync, and more. This approach hopes to fix (or at least improve) that.

The new package `openjdk-common` replaces the xbps trigger that added the profile script for openjdk (which was a flawed approach and should have never been done).

Instead of using alternative groups for specific JRE/JDK binaries, this approach uses just two symlinks, `/usr/lib/jvm/default-jdk` and `/usr/lib/jvm/default-jre`, which point to the selected `JAVA_HOME` (`/usr/lib/jvm/openjdkN`).  The profile script in `openjdk-common` prefers `default-jdk` to `default-jre`, and just adds them to `PATH` and `MANPATH` instead of putting things in `/usr/bin`.

With this approach, the selected JDK and JRE can probably still get out of sync, but the preference behaviour of the profile script should help mitigate this. I don't think it's currently possible to sanely deconflict/sync the alternatives groups.

#### Testing the changes
- I tested the changes in this PR: **YES**

[ci skip]

closes #47416

A patch file from https://github.com/void-linux/void-packages/pull/47866.patch is attached

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-jdk-alts-47866.patch --]
[-- Type: text/x-diff, Size: 38558 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 1/8] 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 2/8] 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 3/8] 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 4/8] 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 5/8] 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 6/8] 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 7/8] 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 8/8] *: 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() {

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PR PATCH] [Merged]: [RFC] fix the openjdk alternatives mess
  2023-12-21 23:38 [PR PATCH] [RFC] fix the openjdk alternatives mess classabbyamp
                   ` (7 preceding siblings ...)
  2023-12-23  0:27 ` classabbyamp
@ 2023-12-24 13:39 ` classabbyamp
  8 siblings, 0 replies; 10+ messages in thread
From: classabbyamp @ 2023-12-24 13:39 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 1276 bytes --]

There's a merged pull request on the void-packages repository

[RFC] fix the openjdk alternatives mess
https://github.com/void-linux/void-packages/pull/47866

Description:
The current way the alternatives groups work for openjdk packages really sucks. They overlap and cause pkgdb errors, can get out-of-sync, and more. This approach hopes to fix (or at least improve) that.

The new package `openjdk-common` replaces the xbps trigger that added the profile script for openjdk (which was a flawed approach and should have never been done).

Instead of using alternative groups for specific JRE/JDK binaries, this approach uses just two symlinks, `/usr/lib/jvm/default-jdk` and `/usr/lib/jvm/default-jre`, which point to the selected `JAVA_HOME` (`/usr/lib/jvm/openjdkN`).  The profile script in `openjdk-common` prefers `default-jdk` to `default-jre`, and just adds them to `PATH` and `MANPATH` instead of putting things in `/usr/bin`.

With this approach, the selected JDK and JRE can probably still get out of sync, but the preference behaviour of the profile script should help mitigate this. I don't think it's currently possible to sanely deconflict/sync the alternatives groups.

#### Testing the changes
- I tested the changes in this PR: **YES**

[ci skip]

^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2023-12-24 13:39 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-12-21 23:38 [PR PATCH] [RFC] fix the openjdk alternatives mess classabbyamp
2023-12-22  1:23 ` ahesford
2023-12-22  1:55 ` [PR PATCH] [Updated] " classabbyamp
2023-12-22  1:57 ` classabbyamp
2023-12-22  2:34 ` classabbyamp
2023-12-22  3:04 ` classabbyamp
2023-12-22 20:03 ` classabbyamp
2023-12-22 22:05 ` classabbyamp
2023-12-23  0:27 ` classabbyamp
2023-12-24 13:39 ` [PR PATCH] [Merged]: " 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).