From: kurt@intricatesoftware.com Subject: [update] devel/jdk/11 add sparc64 support To: ports@openbsd.org Date: Wed, 8 May 2024 02:32:33 +0000 I've been chipping away at adding sparc64 support to jdk/11 for a while now. I made the push to finish it off and commit it upstream. I believe it is ready for release now. okay? Index: java.port.mk =================================================================== RCS file: /cvs/ports/devel/jdk/java.port.mk,v retrieving revision 1.43 diff -u -p -u -r1.43 java.port.mk --- java.port.mk 11 Dec 2023 14:38:55 -0000 1.43 +++ java.port.mk 8 May 2024 02:19:22 -0000 @@ -27,7 +27,7 @@ MODJAVA_VER?= ERRORS+="with an optional + suffix." .endif -.if ${MODJAVA_VER:S/+//} == "1.8" +.if ${MODJAVA_VER:S/+//} == "1.8" || ${MODJAVA_VER:S/+//} == "11" ONLY_FOR_ARCHS?= i386 amd64 aarch64 sparc64 .else ONLY_FOR_ARCHS?= i386 amd64 aarch64 Index: 11/Makefile =================================================================== RCS file: /cvs/ports/devel/jdk/11/Makefile,v retrieving revision 1.59 diff -u -p -u -r1.59 Makefile --- 11/Makefile 1 May 2024 20:55:10 -0000 1.59 +++ 11/Makefile 8 May 2024 02:19:22 -0000 @@ -1,4 +1,4 @@ -ONLY_FOR_ARCHS= i386 amd64 aarch64 +ONLY_FOR_ARCHS= i386 amd64 aarch64 sparc64 USE_WXNEEDED= Yes USE_NOBTCFI= Yes DPB_PROPERTIES= parallel @@ -6,7 +6,7 @@ DPB_PROPERTIES= parallel COMMENT= OpenJDK Software Development Kit v${VERSION_STR} BASE_VER= 11.0.23 PATCH_VER= 9 -BSD_PORT_REL= 1 +BSD_PORT_REL= 2 VERSION_STR= ${BASE_VER}+${PATCH_VER}-${BSD_PORT_REL} PACKAGE_VER= ${BASE_VER}.${PATCH_VER}.${BSD_PORT_REL} PKGNAME= jdk-${PACKAGE_VER} @@ -44,7 +44,8 @@ NO_TEST= Yes SUPDISTFILES.boot = \ openjdk-jdk11u-bootjdk-i386-${BOOTJDK_DATE}.tar.gz \ openjdk-jdk11u-bootjdk-amd64-${BOOTJDK_DATE}.tar.gz \ - openjdk-jdk11u-bootjdk-aarch64-${BOOTJDK_DATE}.tar.gz + openjdk-jdk11u-bootjdk-aarch64-${BOOTJDK_DATE}.tar.gz \ + openjdk-jdk11u-bootjdk-sparc64-${BOOTJDK_DATE}.tar.gz COMPILER= base-clang ports-gcc @@ -59,7 +60,8 @@ BUILD_DEPENDS+= jdk->=11v0,<12v0:devel/j BOOT_JDK= ${LOCALBASE}/jdk-11 .else BOOT_JDK_DIST= openjdk-jdk11u-bootjdk-${MACHINE_ARCH}-${BOOTJDK_DATE}.tar.gz -. if (${MACHINE_ARCH}==amd64) || (${MACHINE_ARCH}==i386) || (${MACHINE_ARCH}==aarch64) +. if (${MACHINE_ARCH}==amd64) || (${MACHINE_ARCH}==i386) || \ + (${MACHINE_ARCH}==aarch64) || (${MACHINE_ARCH}==sparc64) DISTFILES.boot= ${BOOT_JDK_DIST} . endif MAKE_ENV+= LD_LIBRARY_PATH=${WRKDIR}/bootjdk-libs @@ -111,6 +113,7 @@ CONFIGURE_ARGS= DOT="" FLOCK="" GIT="" H --with-giflib=system \ --with-giflib-include=${LOCALBASE}/include \ --with-giflib-lib=${LOCALBASE}/lib \ + --with-stdc++lib=dynamic \ --disable-option-checking \ --disable-ccache \ --disable-hotspot-gtest \ @@ -150,7 +153,7 @@ PKG_ARGS+= -Dci=1 PKG_ARGS+= -Dci=0 .endif -JVMARCH= ${MACHINE_ARCH:S/i386/x86/:S/amd64/x86_64/} +JVMARCH= ${MACHINE_ARCH:S/i386/x86/:S/amd64/x86_64/:S/sparc64/sparcv9/} BUILDDIR= ${WRKDIST}/build/bsd-${JVMARCH}-normal-server-release IMAGEDIR= ${BUILDDIR}/images/jdk WRKTMP= ${WRKDIR}/tmp Index: 11/distinfo =================================================================== RCS file: /cvs/ports/devel/jdk/11/distinfo,v retrieving revision 1.28 diff -u -p -u -r1.28 distinfo --- 11/distinfo 1 May 2024 20:55:10 -0000 1.28 +++ 11/distinfo 8 May 2024 02:19:22 -0000 @@ -1,8 +1,10 @@ -SHA256 (jdk/jdk-11.0.23+9-1.tar.gz) = VhXVLxIwL0yRoA2jtMwMjS17paibiY3H5ET6CEOQBAA= +SHA256 (jdk/jdk-11.0.23+9-2.tar.gz) = 3StfPuSAq7KH17NtXsn6AtPUoTQYKNss4nA1JYyOEf8= SHA256 (jdk/openjdk-jdk11u-bootjdk-aarch64-20240331.tar.gz) = 6skKydxPeLmFShPvL3bEFAhpQCZtABnsr3lZAQNLhBo= SHA256 (jdk/openjdk-jdk11u-bootjdk-amd64-20240331.tar.gz) = jL36o7kWGZ3V92z+P9iuwXjy7/sajPCO0hNQhmPpvfU= SHA256 (jdk/openjdk-jdk11u-bootjdk-i386-20240331.tar.gz) = B/UNqvHV7dTlo00uNzK1DZs1Pxftujj7O0ojDTi3sQ8= -SIZE (jdk/jdk-11.0.23+9-1.tar.gz) = 116449887 +SHA256 (jdk/openjdk-jdk11u-bootjdk-sparc64-20240331.tar.gz) = eU7fzUu7xWUcrkacuv25/18rzC/w7grqOL1rW3FzwdM= +SIZE (jdk/jdk-11.0.23+9-2.tar.gz) = 116467928 SIZE (jdk/openjdk-jdk11u-bootjdk-aarch64-20240331.tar.gz) = 114820919 SIZE (jdk/openjdk-jdk11u-bootjdk-amd64-20240331.tar.gz) = 115315575 SIZE (jdk/openjdk-jdk11u-bootjdk-i386-20240331.tar.gz) = 104499540 +SIZE (jdk/openjdk-jdk11u-bootjdk-sparc64-20240331.tar.gz) = 107472498 Index: 11/patches/patch-src_hotspot_os_bsd_os_bsd_cpp =================================================================== RCS file: 11/patches/patch-src_hotspot_os_bsd_os_bsd_cpp diff -N 11/patches/patch-src_hotspot_os_bsd_os_bsd_cpp --- 11/patches/patch-src_hotspot_os_bsd_os_bsd_cpp 2 May 2024 15:42:52 -0000 1.4 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,17 +0,0 @@ -Use the correct number of cpus when hw.smt=0 - -Index: src/hotspot/os/bsd/os_bsd.cpp ---- src/hotspot/os/bsd/os_bsd.cpp.orig -+++ src/hotspot/os/bsd/os_bsd.cpp -@@ -327,7 +327,11 @@ void os::Bsd::initialize_system_info() { - - // get processors count via hw.ncpus sysctl - mib[0] = CTL_HW; -+#if defined(HW_NCPUONLINE) -+ mib[1] = HW_NCPUONLINE; -+#else - mib[1] = HW_NCPU; -+#endif - len = sizeof(cpu_val); - if (sysctl(mib, 2, &cpu_val, &len, NULL, 0) != -1 && cpu_val >= 1) { - assert(len == sizeof(cpu_val), "unexpected data size"); Index: 11/patches/patch-src_hotspot_share_gc_shared_gc_globals_hpp =================================================================== RCS file: 11/patches/patch-src_hotspot_share_gc_shared_gc_globals_hpp diff -N 11/patches/patch-src_hotspot_share_gc_shared_gc_globals_hpp --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ 11/patches/patch-src_hotspot_share_gc_shared_gc_globals_hpp 8 May 2024 02:19:22 -0000 @@ -0,0 +1,19 @@ +Reduce the number of sched_yield(2) before sleeping 10ms to work-around an +issue on sparc64 + +Index: src/hotspot/share/gc/shared/gc_globals.hpp +--- src/hotspot/share/gc/shared/gc_globals.hpp.orig ++++ src/hotspot/share/gc/shared/gc_globals.hpp +@@ -376,10 +376,10 @@ + develop(uintx, PromotionFailureALotInterval, 5, \ + "Total collections between promotion failures a lot") \ + \ +- experimental(uintx, WorkStealingSleepMillis, 1, \ ++ experimental(uintx, WorkStealingSleepMillis, 10, \ + "Sleep time when sleep is used for yields") \ + \ +- experimental(uintx, WorkStealingYieldsBeforeSleep, 5000, \ ++ experimental(uintx, WorkStealingYieldsBeforeSleep, 1, \ + "Number of yields before a sleep is done during work stealing") \ + \ + experimental(uintx, WorkStealingHardSpins, 4096, \