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