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