Github messages for voidlinux
 help / color / mirror / Atom feed
From: classabbyamp <classabbyamp@users.noreply.github.com>
To: ml@inbox.vuxu.org
Subject: [PR PATCH] [RFC] fix the openjdk alternatives mess
Date: Fri, 22 Dec 2023 00:38:15 +0100	[thread overview]
Message-ID: <gh-mailinglist-notifications-41a7ca26-5023-4802-975b-f1789d68868e-void-packages-47866@inbox.vuxu.org> (raw)

[-- 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
 	}
 }
 

             reply	other threads:[~2023-12-21 23:38 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-12-21 23:38 classabbyamp [this message]
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

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=gh-mailinglist-notifications-41a7ca26-5023-4802-975b-f1789d68868e-void-packages-47866@inbox.vuxu.org \
    --to=classabbyamp@users.noreply.github.com \
    --cc=ml@inbox.vuxu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).