Skip to content

Fix this project and upgrade it to the latest JRuby #5

@ctrueden

Description

@ctrueden

I tried to upgrade this component to the new jruby-base, which has proper dependencies with no uber-JARs (see jruby/jruby#6205 for details).

Here is the patch I tried
diff --git a/pom.xml b/pom.xml
index 840d79a..31198db 100644
--- a/pom.xml
+++ b/pom.xml
@@ -93,8 +93,8 @@ Institute of Molecular Cell Biology and Genetics.</license.copyrightOwners>
                <!-- NB: Deploy releases to the SciJava Maven repository. -->
                <releaseProfiles>sign,deploy-to-scijava</releaseProfiles>
 
-               <jruby.version>9.1.17.0</jruby.version>
-               <jruby-core.version>${jruby.version}</jruby-core.version>
+               <jruby.version>9.3.3.0</jruby.version>
+               <jruby-base.version>${jruby.version}</jruby-base.version>
                <jruby-stdlib.version>${jruby.version}</jruby-stdlib.version>
        </properties>
 
@@ -108,8 +108,8 @@ Institute of Molecular Cell Biology and Genetics.</license.copyrightOwners>
                <!-- Third-party dependencies -->
                <dependency>
                        <groupId>org.jruby</groupId>
-                       <artifactId>jruby-core</artifactId>
-                       <version>${jruby-core.version}</version>
+                       <artifactId>jruby-base</artifactId>
+                       <version>${jruby-base.version}</version>
                </dependency>
                <dependency>
                        <groupId>org.jruby</groupId>

Unfortunately, the tests then fail as follows:

org.jruby.exceptions.NoMethodError: (NoMethodError) undefined method `getLanguageByName' for nil:NilClass
	at RUBY.<main>(hello.rb:3)
[ERROR] Tests run: 3, Failures: 2, Errors: 0, Skipped: 0, Time elapsed: 2.524 s <<< FAILURE! - in org.scijava.plugins.scripting.jruby.JRubyTest
[ERROR] testParameters(org.scijava.plugins.scripting.jruby.JRubyTest)  Time elapsed: 0.132 s  <<< FAILURE!
java.lang.AssertionError: expected:<Ruby> but was:<null>
	at org.scijava.plugins.scripting.jruby.JRubyTest.testParameters(JRubyTest.java:97)

[ERROR] testLocals(org.scijava.plugins.scripting.jruby.JRubyTest)  Time elapsed: 0.007 s  <<< FAILURE!
java.lang.AssertionError: expected:<17> but was:<null>
	at org.scijava.plugins.scripting.jruby.JRubyTest.testLocals(JRubyTest.java:77)
Here are the dependency changes this update causes
diff --git a/before b/after
index c4aca19..ae41d51 100644
--- a/before
+++ b/after
@@ -1,26 +1,31 @@
-com.github.jnr jffi jar 1.2.16 compile
-com.github.jnr jffi jar native 1.2.16 compile
-com.github.jnr jnr-constants jar 0.9.9 compile
-com.github.jnr jnr-enxio jar 0.16 compile
-com.github.jnr jnr-netdb jar 1.1.6 compile
-com.github.jnr jnr-posix jar 3.0.44 compile
-com.github.jnr jnr-unixsocket jar 0.17 compile
+com.github.jnr jffi jar 1.3.9 compile
+com.github.jnr jffi jar native 1.3.9 compile
+com.github.jnr jnr-a64asm jar 1.0.0 compile
+com.github.jnr jnr-constants jar 0.10.3 compile
+com.github.jnr jnr-enxio jar 0.32.13 compile
+com.github.jnr jnr-ffi jar 2.2.11 compile
+com.github.jnr jnr-netdb jar 1.2.0 compile
+com.github.jnr jnr-posix jar 3.1.15 compile
+com.github.jnr jnr-unixsocket jar 0.38.17 compile
 com.github.jnr jnr-x86asm jar 1.0.2 compile
-com.headius invokebinder jar 1.10 compile
-com.headius modulator jar 1.0 compile
-com.headius options jar 1.4 compile
-com.headius unsafe-fences jar 1.0 compile
+com.headius backport9 jar 1.12 compile
+com.headius invokebinder jar 1.12 compile
+com.headius options jar 1.6 compile
 com.jcraft jzlib jar 1.1.3 compile
-com.martiansoftware nailgun-server jar 0.9.1 compile
 joda-time joda-time jar 2.10.1 compile
 junit junit jar 4.12 test
+me.qmx.jitescript jitescript jar 0.4.1 compile
 org.bushe eventbus jar 1.4 compile
 org.hamcrest hamcrest-core jar 1.3 test
-org.jruby.extras bytelist jar 1.0.15 compile
-org.jruby.jcodings jcodings jar 1.0.27 compile
-org.jruby.joni joni jar 2.1.15 compile
+org.jruby.jcodings jcodings jar 1.0.55 compile
+org.jruby.joni joni jar 2.1.40 compile
 org.jruby dirgra jar 0.3 compile
-org.jruby jruby-core jar 9.1.17.0 compile
-org.jruby jruby-stdlib jar 9.1.17.0 compile
+org.jruby jruby-base jar 9.3.3.0 compile
+org.jruby jruby-stdlib jar 9.3.3.0 compile
+org.ow2.asm asm-analysis jar 9.2 compile
+org.ow2.asm asm-commons jar 9.2 compile
+org.ow2.asm asm-tree jar 9.2 compile
+org.ow2.asm asm-util jar 9.2 compile
+org.ow2.asm asm jar 9.2 compile
 org.scijava parsington jar 1.0.4 compile
 org.scijava scijava-common jar 2.77.0 compile

I also tried with jruby-core 9.3.3.0 (i.e. not switching to jruby-base), and the same problem occurs. Dependency-wise though, the newer jruby-core bundles more things internally, so the dependency list becomes quite short in that case.

It must be a change in the behavior of JRuby. Maybe a new bug, or maybe something we need to adjust for. Further investigation needed.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions