Package: openjdk-17
Version: 17.0.9~4ea-1
Severity: wishlist
Tags: patch
User: debian-de...@lists.debian.org
Usertags: loongarch64
Dear Maintainers,
I hope this email finds you well. We would like to add openjdk-17 zero
build support for loong64.
The attached patch includes three parts of changes:
(1) Add the loong64 variable to debian/rules and debian/control.
(2) Synchronization with code in JDK-8315020. This part of the code has
not been backported to jdk17u, so we need to handle it additionally.
(3 patches/add-basic_machine-in-autoconf-config.patch adds loongarch info.
Thank you for your time and consideration of this request.
Thanks,
Xuefeng Pan
commit c36214ebd3d6e0b2652fcafa95706dc4da4cf7ce
Author: panxuefeng <panxuef...@loongson.cn>
Date: Thu Sep 14 01:50:48 2023 +0000
Support zero build for loong64
diff --git a/changelog b/changelog
index 7541fd7..1ba8363 100644
--- a/changelog
+++ b/changelog
@@ -1,3 +1,9 @@
+openjdk-17 (17.0.9~4ea-1+loong64) unreleased; urgency=medium
+
+ * Add openjdk-17 zero support for loong64
+
+ -- Xuefeng Pan <panxuef...@loongson.cn> Wed, 13 Sep 2023 16:36:56 +0800
+
openjdk-17 (17.0.9~4ea-1) unstable; urgency=medium
* OpenJDK 17.0.9 early access, build 4.
diff --git a/control b/control
index 2172a5d..3513955 100644
--- a/control
+++ b/control
@@ -24,7 +24,7 @@ Vcs-Browser: https://salsa.debian.org/openjdk-team/openjdk/tree/openjdk-17
Vcs-Git: https://salsa.debian.org/openjdk-team/openjdk.git -b openjdk-17
Package: openjdk-17-jdk-headless
-Architecture: alpha amd64 armel armhf arm64 i386 ia64 mips mipsel mips64 mips64el powerpc ppc64 ppc64el m68k riscv64 sh4 sparc sparc64 s390x x32
+Architecture: alpha amd64 armel armhf arm64 i386 ia64 loong64 mips mipsel mips64 mips64el powerpc ppc64 ppc64el m68k riscv64 sh4 sparc sparc64 s390x x32
Multi-Arch: same
Pre-Depends: ${dpkg:Depends}
Depends: openjdk-17-jre-headless (= ${binary:Version}),
@@ -45,7 +45,7 @@ Description: OpenJDK Development Kit (JDK) (headless)
applets, and components using the Java programming language.
Package: openjdk-17-jre-headless
-Architecture: alpha amd64 armel armhf arm64 i386 ia64 mips mipsel mips64 mips64el powerpc ppc64 ppc64el m68k riscv64 sh4 sparc sparc64 s390x x32
+Architecture: alpha amd64 armel armhf arm64 i386 ia64 loong64 mips mipsel mips64 mips64el powerpc ppc64 ppc64el m68k riscv64 sh4 sparc sparc64 s390x x32
Multi-Arch: same
Pre-Depends: ${dpkg:Depends}
Depends: ${jredefault:Depends}, ${cacert:Depends},
@@ -72,7 +72,7 @@ Description: OpenJDK Java runtime, using ${vm:Name} (headless)
using ${vm:Name}.
Package: openjdk-17-jdk
-Architecture: alpha amd64 armel armhf arm64 i386 ia64 mips mipsel mips64 mips64el powerpc ppc64 ppc64el m68k riscv64 sh4 sparc sparc64 s390x x32
+Architecture: alpha amd64 armel armhf arm64 i386 ia64 loong64 mips mipsel mips64 mips64el powerpc ppc64 ppc64el m68k riscv64 sh4 sparc sparc64 s390x x32
Multi-Arch: same
Pre-Depends: ${dpkg:Depends}
Depends: openjdk-17-jre (= ${binary:Version}),
@@ -89,7 +89,7 @@ Description: OpenJDK Development Kit (JDK)
applets, and components using the Java programming language.
Package: openjdk-17-jre
-Architecture: alpha amd64 armel armhf arm64 i386 ia64 mips mipsel mips64 mips64el powerpc ppc64 ppc64el m68k riscv64 sh4 sparc sparc64 s390x x32
+Architecture: alpha amd64 armel armhf arm64 i386 ia64 loong64 mips mipsel mips64 mips64el powerpc ppc64 ppc64el m68k riscv64 sh4 sparc sparc64 s390x x32
Multi-Arch: same
Pre-Depends: ${dpkg:Depends}
Depends: openjdk-17-jre-headless (= ${binary:Version}),
@@ -110,7 +110,7 @@ Description: OpenJDK Java runtime, using ${vm:Name}
programs, using ${vm:Name}.
Package: openjdk-17-demo
-Architecture: alpha amd64 armel armhf arm64 i386 ia64 mips mipsel mips64 mips64el powerpc ppc64 ppc64el m68k riscv64 sh4 sparc sparc64 s390x x32
+Architecture: alpha amd64 armel armhf arm64 i386 ia64 loong64 mips mipsel mips64 mips64el powerpc ppc64 ppc64el m68k riscv64 sh4 sparc sparc64 s390x x32
Priority: optional
Pre-Depends: ${dpkg:Depends}
Depends: openjdk-17-jre (= ${binary:Version}),
@@ -150,7 +150,7 @@ Description: OpenJDK Development Kit (JDK) documentation
This package contains the API documentation.
Package: openjdk-17-dbg
-Architecture: alpha amd64 armel armhf arm64 i386 ia64 mips mipsel mips64 mips64el powerpc ppc64 ppc64el m68k riscv64 sh4 sparc sparc64 s390x x32
+Architecture: alpha amd64 armel armhf arm64 i386 ia64 loong64 mips mipsel mips64 mips64el powerpc ppc64 ppc64el m68k riscv64 sh4 sparc sparc64 s390x x32
Multi-Arch: same
Priority: optional
Section: debug
diff --git a/patches/add-basic_machine-in-autoconf-config.patch b/patches/add-basic_machine-in-autoconf-config.patch
new file mode 100644
index 0000000..1044de3
--- /dev/null
+++ b/patches/add-basic_machine-in-autoconf-config.patch
@@ -0,0 +1,12 @@
+diff --git a/make/autoconf/build-aux/autoconf-config.sub b/make/autoconf/build-aux/autoconf-config.sub
+index 1aab2b303e3..df7cfd4034a 100644
+--- a/make/autoconf/build-aux/autoconf-config.sub
++++ b/make/autoconf/build-aux/autoconf-config.sub
+@@ -275,6 +275,7 @@ case $basic_machine in
+ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
+ | i370 | i860 | i960 | ia64 \
+ | ip2k | iq2000 \
++ | loongarch32 | loongarch64 \
+ | m32c | m32r | m32rle | m68000 | m68k | m88k \
+ | maxq | mb | microblaze | mcore | mep \
+ | mips | mipsbe | mipseb | mipsel | mipsle \
diff --git a/patches/series b/patches/series
index ba70a3a..71394a8 100644
--- a/patches/series
+++ b/patches/series
@@ -36,3 +36,5 @@ update-permission-test.patch
ldap-timeout-test-use-ip.patch
test-use-ip-address.patch
exclude-broken-tests.patch
+add-basic_machine-in-autoconf-config.patch
+sync-with-jdk-8315020.patch
diff --git a/patches/sync-with-jdk-8315020.patch b/patches/sync-with-jdk-8315020.patch
new file mode 100644
index 0000000..d76b38b
--- /dev/null
+++ b/patches/sync-with-jdk-8315020.patch
@@ -0,0 +1,31 @@
+diff --git a/make/autoconf/platform.m4 b/make/autoconf/platform.m4
+index 5752d3bd1a6..eb66266262b 100644
+--- a/make/autoconf/platform.m4
++++ b/make/autoconf/platform.m4
+@@ -573,6 +573,8 @@ AC_DEFUN([PLATFORM_SETUP_LEGACY_VARS_HELPER],
+ HOTSPOT_$1_CPU_DEFINE=S390
+ elif test "x$OPENJDK_$1_CPU" = xs390x; then
+ HOTSPOT_$1_CPU_DEFINE=S390
++ elif test "x$OPENJDK_$1_CPU" = xloongarch64; then
++ HOTSPOT_$1_CPU_DEFINE=LOONGARCH64
+ elif test "x$OPENJDK_$1_CPU" != x; then
+ HOTSPOT_$1_CPU_DEFINE=$(echo $OPENJDK_$1_CPU | tr a-z A-Z)
+ fi
+diff --git a/src/hotspot/os/linux/os_linux.cpp b/src/hotspot/os/linux/os_linux.cpp
+index 99dd4c82420..4c63f292e86 100644
+--- a/src/hotspot/os/linux/os_linux.cpp
++++ b/src/hotspot/os/linux/os_linux.cpp
+@@ -1791,11 +1791,11 @@ void * os::dll_load(const char *filename, char *ebuf, int ebuflen) {
+ static Elf32_Half running_arch_code=EM_SH;
+ #elif (defined RISCV)
+ static Elf32_Half running_arch_code=EM_RISCV;
+-#elif (defined LOONGARCH)
++#elif (defined LOONGARCH64)
+ static Elf32_Half running_arch_code=EM_LOONGARCH;
+ #else
+ #error Method os::dll_load requires that one of following is defined:\
+- AARCH64, ALPHA, ARM, AMD64, IA32, IA64, LOONGARCH, M68K, MIPS, MIPSEL, PARISC, __powerpc__, __powerpc64__, RISCV, S390, SH, __sparc
++ AARCH64, ALPHA, ARM, AMD64, IA32, IA64, LOONGARCH64, M68K, MIPS, MIPSEL, PARISC, __powerpc__, __powerpc64__, RISCV, S390, SH, __sparc
+ #endif
+
+ // Identify compatibility class for VM's architecture and library's architecture
diff --git a/rules b/rules
index 2648034..b5497e4 100755
--- a/rules
+++ b/rules
@@ -57,7 +57,7 @@ multiarch_dir = /$(DEB_HOST_MULTIARCH)
hotspot_archs = amd64 i386 arm64 armhf ppc64 ppc64el riscv64 s390x
jtreg_archs = $(hotspot_archs) alpha ia64 powerpc ppc64 sh4 x32
-jtreg_archs += armel mipsel mips64el
+jtreg_archs += armel loong64 mipsel mips64el
jtreg_archs += riscv64
# FIXME: use bootcycle builds for zero archs?
@@ -161,7 +161,7 @@ jtreg_pkg = jtreg6
testng_pkg= libtestng7-java
with_check = $(if $(findstring nocheck, $(DEB_BUILD_OPTIONS)),,yes)
-ifneq (,$(filter $(DEB_HOST_ARCH), alpha armel ia64 mipsel mips64el powerpc x32))
+ifneq (,$(filter $(DEB_HOST_ARCH), alpha armel ia64 loong64 mipsel mips64el powerpc x32))
with_check = disabled running check on $(DEB_HOST_ARCH)
endif
ifeq ($(distribution)-$(distrel),Ubuntu-riscv64)
@@ -181,7 +181,7 @@ endif
with_wqy_zenhai = $(if $(filter $(distrel),lenny),,yes)
-arch_map := alpha=alpha arm=arm armel=arm armhf=arm arm64=aarch64 amd64=amd64 hppa=parisc i386=i586 m68k=m68k mips=mips mipsel=mipsel mips64=mips64 mips64el=mips64el powerpc=ppc ppc64=ppc64 ppc64el=ppc64le riscv64=riscv64 sparc=sparc sparc64=sparcv9 sh4=sh s390x=s390x ia64=ia64 x32=x32
+arch_map := alpha=alpha arm=arm armel=arm armhf=arm arm64=aarch64 amd64=amd64 hppa=parisc i386=i586 loong64=loong64 m68k=m68k mips=mips mipsel=mipsel mips64=mips64 mips64el=mips64el powerpc=ppc ppc64=ppc64 ppc64el=ppc64le riscv64=riscv64 sparc=sparc sparc64=sparcv9 sh4=sh s390x=s390x ia64=ia64 x32=x32
jvmarch := $(strip $(patsubst $(DEB_HOST_ARCH_CPU)=%, %, \
$(filter $(DEB_HOST_ARCH_CPU)=%, $(arch_map))))
@@ -191,7 +191,7 @@ endif
default_vm = $(if $(filter $(DEB_HOST_ARCH), $(hotspot_archs)),hotspot,zero)
-any_archs = alpha amd64 armel armhf arm64 i386 ia64 mips mipsel mips64 mips64el powerpc ppc64 ppc64el m68k riscv64 sh4 sparc sparc64 s390x x32
+any_archs = alpha amd64 armel armhf arm64 i386 ia64 loong64 mips mipsel mips64 mips64el powerpc ppc64 ppc64el m68k riscv64 sh4 sparc sparc64 s390x x32
altzero_archs = $(hotspot_archs)
ifneq (,$(filter $(distrel),trusty))
@@ -598,7 +598,7 @@ all_tools = jar jarsigner java javac javadoc javap jcmd \
jdk_hl_tools = jar jarsigner javac javadoc javap jcmd jdb \
jdeprscan jdeps jfr jimage jinfo jlink jmap jmod jps \
jrunscript jshell jstack jstat jstatd serialver
-ifeq (,$(filter $(DEB_HOST_ARCH), alpha armel ia64 m68k mips mipsel mips64el powerpc s390x sh4 sparc64 x32))
+ifeq (,$(filter $(DEB_HOST_ARCH), alpha armel ia64 loong64 m68k mips mipsel mips64el powerpc s390x sh4 sparc64 x32))
all_tools += jhsdb
jdk_hl_tools += jhsdb
endif
@@ -979,7 +979,7 @@ stamps/configure: stamps/unpack
mkdir -p bin
ifeq (0,1)
-ifeq (,$(filter $(DEB_HOST_ARCH), alpha amd64 arm64 hppa mips64 mips64el ppc64 ppc64el s390x sparc64 x32))
+ifeq (,$(filter $(DEB_HOST_ARCH), alpha amd64 arm64 hppa loong64 mips64 mips64el ppc64 ppc64el s390x sparc64 x32))
( \
echo '#! /bin/sh'; \
echo 'if [ -x /usr/bin/linux32 ]; then'; \
@@ -1083,7 +1083,7 @@ build: pre-build $(build_stamps)
stamps/build: stamps/configure
@echo '========== $@ =========='
-ifneq (,$(filter $(DEB_HOST_ARCH), alpha armel armhf ia64 m68k mips mipsel mips64 mips64el powerpc riscv64 s390x sh4 sparc sparc64))
+ifneq (,$(filter $(DEB_HOST_ARCH), alpha armel armhf ia64 loong64 m68k mips mipsel mips64 mips64el powerpc riscv64 s390x sh4 sparc sparc64))
sh -c 'sh debian/buildwatch.sh $(CURDIR)/$(builddir) &'
endif
if $(EXTRA_BUILD_ENV) $(MAKE) --no-print-directory -C $(builddir) $(build_target); then \