Source: libreoffice
Severity: serious
Tags: ftbfs patch upstream
Justification: fails to build from source (but built successfully in the past)

Dear Maintainer,

Recently, the default-jdk was switched to openjdk-21 in unstable.
However in OpenJDK 21+ Zero VM builds, the location of libjvm.so has
changed from $JAVA_HOME/lib/server to $JAVA_HOME/lib/zero, making the
LO plugin loader unable to locate the JVM thus breaking the build.

Example build log message:

> exception occurred: Could not create Java implementation loader at
> ./stoc/source/javaloader/javaloader.cxx:551

Build logs of 24.2.5-3 that show the failure:

- 
https://buildd.debian.org/status/fetch.php?pkg=libreoffice&arch=mips64el&ver=4%3A24.2.5-3&stamp=1723467805&raw=0
- 
https://buildd.debian.org/status/fetch.php?pkg=libreoffice&arch=loong64&ver=4%3A24.2.5-3&stamp=1724299296&raw=0
- 
https://buildd.debian.org/status/fetch.php?pkg=libreoffice&arch=powerpc&ver=4%3A24.2.5-3&stamp=1723338137&raw=0

I have created a fix upstream at
https://gerrit.libreoffice.org/c/core/+/172248 which I tested locally to
fix the Debian build. Before the fix is integrated upstream, the patch
could be individually applied to allow the current version(s) to build.

Thanks!

-- System Information:
Debian Release: trixie/sid
  APT prefers unreleased
  APT policy: (500, 'unreleased'), (500, 'unstable')
Architecture: loong64 (loongarch64)

Kernel: Linux 6.9.9-gentoo-dist (SMP w/8 CPU threads; PREEMPT)
Kernel taint flags: TAINT_OOT_MODULE
Locale: LANG=C.UTF-8, LC_CTYPE=C.UTF-8 (charmap=UTF-8), LANGUAGE not set
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)
>From 85aecfe4fa9b28baf4b4b44b80f03d14f91c5eb2 Mon Sep 17 00:00:00 2001
From: WANG Xuerui <xe...@gentoo.org>
Date: Thu, 22 Aug 2024 14:22:49 +0800
Subject: [PATCH] sunjre: check all four possible OpenJDK variants for
 libjvm.so

Since OpenJDK 21, the "minimal" and "zero" variants of JVM no longer
reside in the "server" directory in $JAVA_HOME/lib, making the loader
unable to find libjvm.so. This regresses LO builds on platforms with
only those variants of JVM (i.e. without a HotSpot port).

Example error message is like this:

> exception occurred: Could not create Java implementation loader at
> ./stoc/source/javaloader/javaloader.cxx:551

Fix it by probing all four possible variant directories for libjvm.so.
This is tested on Debian unstable (loong64 port) to fix the packaging.

Link: https://bugs.openjdk.org/browse/JDK-8273494
Link: https://github.com/openjdk/jdk/pull/5440
Link: 
https://github.com/openjdk/jdk/commit/8fbcc8239a3fc04e56ebbd287c7bb5db731977b7
Change-Id: I3545f93054d7a3af0181e4c739c82efaaf8aeaed
---
 jvmfwk/plugins/sunmajor/pluginlib/sunjre.cxx | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/jvmfwk/plugins/sunmajor/pluginlib/sunjre.cxx 
b/jvmfwk/plugins/sunmajor/pluginlib/sunjre.cxx
index a0f8cbee1f3e..926a0e469935 100644
--- a/jvmfwk/plugins/sunmajor/pluginlib/sunjre.cxx
+++ b/jvmfwk/plugins/sunmajor/pluginlib/sunjre.cxx
@@ -63,10 +63,15 @@ char const* const* SunInfo::getRuntimePaths(int * size)
         "/lib/jli/libjli.dylib"
 #elif defined UNX
         "/lib/" JFW_PLUGIN_ARCH "/client/libjvm.so",
+        "/lib/" JFW_PLUGIN_ARCH "/minimal/libjvm.so",
         "/lib/" JFW_PLUGIN_ARCH "/server/libjvm.so",
+        "/lib/" JFW_PLUGIN_ARCH "/zero/libjvm.so",
         "/lib/" JFW_PLUGIN_ARCH "/classic/libjvm.so",
         "/lib/" JFW_PLUGIN_ARCH "/jrockit/libjvm.so",
-        "/lib/server/libjvm.so"
+        "/lib/client/libjvm.so",
+        "/lib/minimal/libjvm.so",
+        "/lib/server/libjvm.so",
+        "/lib/zero/libjvm.so"
 #endif
     };
     *size = SAL_N_ELEMENTS(ar);
@@ -78,7 +83,9 @@ char const* const* SunInfo::getLibraryPaths(int* size)
 #if defined UNX && !defined MACOSX
     static char const * ar[] = {
         "/lib/" JFW_PLUGIN_ARCH "/client",
+        "/lib/" JFW_PLUGIN_ARCH "/minimal",
         "/lib/" JFW_PLUGIN_ARCH "/server",
+        "/lib/" JFW_PLUGIN_ARCH "/zero",
         "/lib/" JFW_PLUGIN_ARCH "/native_threads",
         ("/lib/" JFW_PLUGIN_ARCH)
     };
-- 
2.45.2

Reply via email to