Le vendredi 01 mai 2020 à 11:59 +0100, Adam D. Barratt a écrit :
> On Fri, 2020-05-01 at 12:37 +0200, Julien Puydt wrote:
> > No... it's either with Gilles' patch and it works with 11.0.7 or
> > without and it works with 11.0.6... any other combination doesn't
> > work.

With Gilles' improved patch, I could build (hence, run) scilab in two
schroots : one is bare stable with openjdk 11.0.6, and the other stable
with security updates with openjdk 11.0.7.

So you'll find at the end the new commit I have against scilab's stable
6.0.1-10 to make it a 6.0.1-11+deb10u11.

Cheers,

JP

PS:
commit a243d928e74f04edbb13686218dff5d6a6a90999
Author: Julien Puydt <jpu...@debian.org>
Date:   Thu Apr 30 17:22:15 2020 +0200

    Add patch from Gilles Filippini to fix library path loading with
the recent openjdk 11.0.7 upload. (Closes: #955694, #959034)

diff --git a/debian/changelog b/debian/changelog
index cf6e4d47f..6578fd506 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,10 @@
+scilab (6.0.1-11+deb10u1) buster; urgency=medium
+
+  * Add patch from Gilles Filippini to fix library path loading
+  with the recent openjdk 11.0.7 upload. (Closes: #955694, #959034)
+
+ -- Julien Puydt <jpu...@debian.org>  Thu, 30 Apr 2020 17:15:32 +0200
+
 scilab (6.0.1-10) unstable; urgency=medium
 
   [ Alexis Murzeau ]
diff --git a/debian/patches/addLibraryPath.patch
b/debian/patches/addLibraryPath.patch
new file mode 100644
index 000000000..84abb8df3
--- /dev/null
+++ b/debian/patches/addLibraryPath.patch
@@ -0,0 +1,50 @@
+Description: openjdk 11.0.7 changes how reloading java.library.path
works
+ Now it's not possible anymore to force it by setting sys_paths to
null
+ The related jdk changeset is:
+ http://hg.openjdk.java.net/jdk-updates/jdk11u/rev/21710e014d7f
+Author: Gilles Filippini
+Forwarded: http://bugzilla.scilab.org/show_bug.cgi?id=16423
+
+---
scilab.orig/modules/jvm/src/java/org/scilab/modules/jvm/LibraryPath.jav
a
++++
scilab/modules/jvm/src/java/org/scilab/modules/jvm/LibraryPath.java
+@@ -19,7 +19,9 @@
+ /*-------------------------------------------------------------------
-------*/
+ import java.io.IOException;
+ import java.io.File;
++import java.lang.reflect.Method;
+ import java.lang.reflect.Field;
++import java.lang.reflect.InvocationTargetException;
+ /*-------------------------------------------------------------------
-------*/
+ /*
http://forum.java.sun.com/thread.jspa?threadID=135560&start=15&tstart=0
*/
+ /*-------------------------------------------------------------------
-------*/
+@@ -64,14 +66,25 @@
+             /* The order matter here... see bug #4022 */
+             String newLibPath = System.getProperty(JAVALIBRARYPATH) +
File.pathSeparator + p;
+             System.setProperty(JAVALIBRARYPATH, newLibPath);
++            // First try the new initLibraryPaths method
+             try {
+-                Field fieldSysPath =
ClassLoader.class.getDeclaredField("sys_paths");
+-                fieldSysPath.setAccessible(true);
+-                if (fieldSysPath != null) {
++                final Method initLibraryPaths =
ClassLoader.class.getDeclaredMethod("initLibraryPaths");
++                initLibraryPaths.setAccessible(true);
++                initLibraryPaths.invoke(null);
++            } catch (NoSuchMethodException e) {
++                // The initLibraryPaths method doesn't exist
++                // Fallback setting sys_paths to null
++                try {
++                    Field fieldSysPath =
ClassLoader.class.getDeclaredField("sys_paths");
++                    fieldSysPath.setAccessible(true);
+                     fieldSysPath.set(System.class.getClassLoader(),
null);
++                } catch (NoSuchFieldException e1) {
++                    throw new IOException("Error
NoSuchFieldException, could not add path to " + JAVALIBRARYPATH);
++                } catch (IllegalAccessException e1) {
++                    throw new IOException("Error
IllegalAccessException, could not add path to " + JAVALIBRARYPATH);
+                 }
+-            } catch (NoSuchFieldException e) {
+-                throw new IOException("Error NoSuchFieldException,
could not add path to " + JAVALIBRARYPATH);
++            } catch (InvocationTargetException e) {
++                throw new IOException("Error
InvocationTargetException, could not add path to " + JAVALIBRARYPATH);
+             } catch (IllegalAccessException e) {
+                 throw new IOException("Error IllegalAccessException,
could not add path to " + JAVALIBRARYPATH);
+             }
diff --git a/debian/patches/series b/debian/patches/series
index c00c002ff..1979678c0 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1,3 +1,4 @@
+addLibraryPath.patch
 adddemo.diff
 librarypath.diff
 jh.diff

Reply via email to