Skip to content

Commit

Permalink
[GR-52332] Use shaded JCodings and JOni library dependencies.
Browse files Browse the repository at this point in the history
PullRequest: truffleruby/4162
  • Loading branch information
woess authored and eregon committed Feb 28, 2024
2 parents 5096ddd + 82c1ccb commit f6ffeb3
Show file tree
Hide file tree
Showing 34 changed files with 176 additions and 122 deletions.
16 changes: 8 additions & 8 deletions common.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
"Jsonnet files should not include this file directly but use ci/common.jsonnet instead."
],

"mx_version": "7.11.0",
"mx_version": "7.13.1",

"COMMENT.jdks": "When adding or removing JDKs keep in sync with JDKs in ci/common.jsonnet",
"jdks": {
Expand Down Expand Up @@ -44,13 +44,13 @@
"labsjdk-ee-21Debug": {"name": "labsjdk", "version": "ee-21.0.2+13-jvmci-23.1-b33-debug", "platformspecific": true },
"labsjdk-ee-21-llvm": {"name": "labsjdk", "version": "ee-21.0.2+13-jvmci-23.1-b33-sulong", "platformspecific": true },

"oraclejdk-latest": {"name": "jpg-jdk", "version": "23", "build_id": "jdk-23+10", "platformspecific": true, "extrabundles": ["static-libs"]},
"labsjdk-ce-latest": {"name": "labsjdk", "version": "ce-23+10-jvmci-b01", "platformspecific": true },
"labsjdk-ce-latestDebug": {"name": "labsjdk", "version": "ce-23+10-jvmci-b01-debug", "platformspecific": true },
"labsjdk-ce-latest-llvm": {"name": "labsjdk", "version": "ce-23+10-jvmci-b01-sulong", "platformspecific": true },
"labsjdk-ee-latest": {"name": "labsjdk", "version": "ee-23+10-jvmci-b01", "platformspecific": true },
"labsjdk-ee-latestDebug": {"name": "labsjdk", "version": "ee-23+10-jvmci-b01-debug", "platformspecific": true },
"labsjdk-ee-latest-llvm": {"name": "labsjdk", "version": "ee-23+10-jvmci-b01-sulong", "platformspecific": true }
"oraclejdk-latest": {"name": "jpg-jdk", "version": "23", "build_id": "jdk-23+11", "platformspecific": true, "extrabundles": ["static-libs"]},
"labsjdk-ce-latest": {"name": "labsjdk", "version": "ce-23+11-jvmci-b01", "platformspecific": true },
"labsjdk-ce-latestDebug": {"name": "labsjdk", "version": "ce-23+11-jvmci-b01-debug", "platformspecific": true },
"labsjdk-ce-latest-llvm": {"name": "labsjdk", "version": "ce-23+11-jvmci-b01-sulong", "platformspecific": true },
"labsjdk-ee-latest": {"name": "labsjdk", "version": "ee-23+11-jvmci-b01", "platformspecific": true },
"labsjdk-ee-latestDebug": {"name": "labsjdk", "version": "ee-23+11-jvmci-b01-debug", "platformspecific": true },
"labsjdk-ee-latest-llvm": {"name": "labsjdk", "version": "ee-23+11-jvmci-b01-sulong", "platformspecific": true }
},

"eclipse": {
Expand Down
9 changes: 6 additions & 3 deletions mx.truffleruby/mx_truffleruby.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,9 @@
import mx_subst
import mx_spotbugs

# re-export custom mx project classes, so they can be used from suite.py
from mx_sdk_shaded import ShadedLibraryProject # pylint: disable=unused-import

# Fail early and clearly when trying to build with a too old JDK
jdk = mx.get_jdk(mx.JavaCompliance('11+'), 'building TruffleRuby which requires JDK 11 or newer')
if mx_sdk_vm.base_jdk_version() < 11:
Expand Down Expand Up @@ -289,9 +292,9 @@ def ruby_maven_deploy_public(args):
'truffleruby:TRUFFLERUBY-SHARED',
'truffleruby:TRUFFLERUBY-ANNOTATIONS',
'sdk:JLINE3',
# Libraries
'truffleruby:JCODINGS',
'truffleruby:JONI',
# Library distributions
'truffle:TRUFFLE_JCODINGS',
'truffleruby:TRUFFLERUBY_JONI',
],
support_distributions=[
'truffleruby:TRUFFLERUBY_GRAALVM_SUPPORT_PLATFORM_AGNOSTIC',
Expand Down
92 changes: 71 additions & 21 deletions mx.truffleruby/suite.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
{
"name": "regex",
"subdir": True,
"version": "d6243acce05af06b17d63dddb2972e739141dc6d",
"version": "3f39def1e63211bae1359722528902f979a8afcf",
"urls": [
{"url": "https://github.com/oracle/graal.git", "kind": "git"},
{"url": "https://curio.ssw.jku.at/nexus/content/repositories/snapshots", "kind": "binary"},
Expand All @@ -29,7 +29,7 @@
{
"name": "sulong",
"subdir": True,
"version": "d6243acce05af06b17d63dddb2972e739141dc6d",
"version": "3f39def1e63211bae1359722528902f979a8afcf",
"urls": [
{"url": "https://github.com/oracle/graal.git", "kind": "git"},
{"url": "https://curio.ssw.jku.at/nexus/content/repositories/snapshots", "kind": "binary"},
Expand Down Expand Up @@ -69,18 +69,6 @@

# ------------- Libraries -------------

"JCODINGS": {
"moduleName": "org.jruby.jcodings",
"maven": {
"groupId": "org.jruby.jcodings",
"artifactId": "jcodings",
"version": "1.0.58"
},
"digest": "sha512:625210aa07d1e08bf2f5fdc9da6c491a4e5a56e7db297cba1aa73636670ac1d62f3fd763716ef6ede862456b17169272ed9c8461d07100f95262163dc9c18ef8",
"sourceDigest": "sha512:d0f883f658310f7ad091aea08df28f1f5fe12080d6cb266cd91aec7e34cda1d57736d32618e8632b329854367d6e4d5fc91b5eb8ac9b823b26113fae3f75f50c",
"license": ["MIT"],
},

"JONI": {
"moduleName": "org.jruby.joni",
"maven": {
Expand Down Expand Up @@ -273,9 +261,9 @@
"sulong:SULONG_API",
"sulong:SULONG_NFI",
"sdk:JLINE3",
# Libraries, keep in sync with TRUFFLERUBY.exclude and truffle_jars (in mx_truffleruby.py)
"truffleruby:JCODINGS",
"truffleruby:JONI",
# Library distributions, keep in sync with truffle_jars in mx_truffleruby.py
"truffle:TRUFFLE_JCODINGS",
"truffleruby:TRUFFLERUBY_JONI",
],
"annotationProcessors": [
"truffle:TRUFFLE_DSL_PROCESSOR",
Expand Down Expand Up @@ -424,6 +412,38 @@
"BSD-simplified", # MRI
],
},

"org.graalvm.shadowed.org.joni": {
# Shadowed JONI library (org.jruby.joni:joni)
"dir": "src/shadowed/joni",
"sourceDirs": ["java"],
"javaCompliance": "17+",
"spotbugsIgnoresGenerated": True,
"dependencies": [
"truffle:TRUFFLE_JCODINGS",
],
"shadedDependencies": [
"truffleruby:JONI",
],
"class": "ShadedLibraryProject",
"shade": {
"packages": {
"org.joni": "org.graalvm.shadowed.org.joni",
"org.jcodings": "org.graalvm.shadowed.org.jcodings",
},
"exclude": [
"META-INF/MANIFEST.MF",
"META-INF/maven/org.jruby.joni/joni/*", # pom.xml, pom.properties
"module-info.java",
"org/joni/bench/*.java",
],
},
"description": "JOni library shadowed for TruffleRuby.",
# We need to force javac because the generated sources in this project produce warnings in JDT.
"forceJavac": "true",
"javac.lint.overrides": "none",
"jacoco": "exclude",
},
},

"distributions": {
Expand Down Expand Up @@ -511,14 +531,13 @@
"sulong:SULONG_API",
"sulong:SULONG_NFI",
"sdk:JLINE3",
# Library distributions, keep in sync with truffle_jars in mx_truffleruby.py
"truffle:TRUFFLE_JCODINGS",
"truffleruby:TRUFFLERUBY_JONI",
# runtime-only dependencies
"truffle:TRUFFLE_NFI_LIBFFI",
"sulong:SULONG_NATIVE",
],
"exclude": [ # Keep in sync with org.truffleruby dependencies and truffle_jars in mx_truffleruby.py
"truffleruby:JCODINGS",
"truffleruby:JONI",
],
"description": "Core module of Ruby on Truffle",
"license": [
"EPL-2.0", # JRuby (we're choosing EPL out of EPL,GPL,LGPL)
Expand Down Expand Up @@ -859,5 +878,36 @@
},
"noMavenJavadoc": True,
},

"TRUFFLERUBY_JONI": {
# JONI library shadowed for TruffleRuby.
"moduleInfo": {
"name": "org.graalvm.shadowed.joni",
"requires": [
"org.graalvm.shadowed.jcodings",
],
"exports": [
"org.graalvm.shadowed.org.joni to org.graalvm.ruby",
"org.graalvm.shadowed.org.joni.constants to org.graalvm.ruby",
"org.graalvm.shadowed.org.joni.exception to org.graalvm.ruby",
],
},
"javaCompliance": "17+",
"dependencies": [
"org.graalvm.shadowed.org.joni",
],
"distDependencies": [
"truffle:TRUFFLE_JCODINGS",
],
"description": "JOni module shadowed for TruffleRuby.",
"license": ["MIT"],
"maven": {
"groupId": "org.graalvm.shadowed",
"artifactId": "joni",
"tag": ["default", "public"],
},
"allowsJavadocWarnings": True,
"compress": True,
},
},
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@

Args = -H:MaxRuntimeCompileMethods=5400 \
-H:+AddAllCharsets \
--initialize-at-build-time=org.truffleruby,org.jcodings,org.joni,org.prism
--initialize-at-build-time=org.truffleruby,org.graalvm.shadowed.org.joni,org.prism
7 changes: 4 additions & 3 deletions src/main/java/org/truffleruby/cext/CExtNodes.java
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,9 @@
import com.oracle.truffle.api.strings.MutableTruffleString;
import com.oracle.truffle.api.strings.TruffleString;
import com.oracle.truffle.api.strings.TruffleString.ErrorHandling;
import org.jcodings.Encoding;
import org.jcodings.IntHolder;
import org.graalvm.shadowed.org.jcodings.Config;
import org.graalvm.shadowed.org.jcodings.Encoding;
import org.graalvm.shadowed.org.jcodings.IntHolder;
import org.truffleruby.Layouts;
import org.truffleruby.RubyContext;
import org.truffleruby.RubyLanguage;
Expand Down Expand Up @@ -1675,7 +1676,7 @@ public abstract static class RbTrMbcPutNode extends CoreMethodArrayArgumentsNode
Object rbTrEncMbcPut(RubyEncoding enc, int code,
@Cached TruffleString.FromByteArrayNode fromByteArrayNode) {
final Encoding encoding = enc.jcoding;
final byte buf[] = new byte[org.jcodings.Config.ENC_CODE_TO_MBC_MAXLEN];
final byte buf[] = new byte[Config.ENC_CODE_TO_MBC_MAXLEN];
final int resultLength = encoding.codeToMbc(code, buf, 0);
final byte result[] = new byte[resultLength];
if (resultLength > 0) {
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/org/truffleruby/core/CoreLibrary.java
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@

import com.oracle.truffle.api.RootCallTarget;
import com.oracle.truffle.api.exception.AbstractTruffleException;
import org.jcodings.transcode.EConvFlags;
import org.graalvm.shadowed.org.jcodings.transcode.EConvFlags;
import org.truffleruby.RubyContext;
import org.truffleruby.RubyLanguage;
import org.truffleruby.annotations.CoreMethod;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,13 +20,13 @@
import com.oracle.truffle.api.profiles.InlinedBranchProfile;
import com.oracle.truffle.api.strings.InternalByteArray;
import com.oracle.truffle.api.strings.TruffleString;
import org.jcodings.Encoding;
import org.jcodings.Ptr;
import org.jcodings.transcode.EConv;
import org.jcodings.transcode.EConvFlags;
import org.jcodings.transcode.EConvResult;
import org.jcodings.transcode.Transcoder;
import org.jcodings.transcode.TranscoderDB;
import org.graalvm.shadowed.org.jcodings.Encoding;
import org.graalvm.shadowed.org.jcodings.Ptr;
import org.graalvm.shadowed.org.jcodings.transcode.EConv;
import org.graalvm.shadowed.org.jcodings.transcode.EConvFlags;
import org.graalvm.shadowed.org.jcodings.transcode.EConvResult;
import org.graalvm.shadowed.org.jcodings.transcode.Transcoder;
import org.graalvm.shadowed.org.jcodings.transcode.TranscoderDB;
import org.truffleruby.annotations.CoreMethod;
import org.truffleruby.builtins.CoreMethodArrayArgumentsNode;
import org.truffleruby.builtins.CoreMethodNode;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,8 @@
import com.oracle.truffle.api.interop.InteropLibrary;
import org.graalvm.nativeimage.ImageInfo;
import org.graalvm.nativeimage.ProcessProperties;
import org.jcodings.Encoding;
import org.jcodings.EncodingDB;
import org.graalvm.shadowed.org.jcodings.Encoding;
import org.graalvm.shadowed.org.jcodings.EncodingDB;
import org.truffleruby.RubyContext;
import org.truffleruby.RubyLanguage;
import org.truffleruby.annotations.SuppressFBWarnings;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,8 @@
import com.oracle.truffle.api.profiles.InlinedConditionProfile;
import com.oracle.truffle.api.strings.AbstractTruffleString;
import com.oracle.truffle.api.strings.TruffleString;
import org.jcodings.Config;
import org.jcodings.EncodingDB;
import org.graalvm.shadowed.org.jcodings.Config;
import org.graalvm.shadowed.org.jcodings.EncodingDB;
import org.truffleruby.annotations.CoreMethod;
import org.truffleruby.builtins.CoreMethodArrayArgumentsNode;
import org.truffleruby.annotations.CoreModule;
Expand Down
20 changes: 10 additions & 10 deletions src/main/java/org/truffleruby/core/encoding/Encodings.java
Original file line number Diff line number Diff line change
Expand Up @@ -15,16 +15,16 @@
import com.oracle.truffle.api.CompilerDirectives;
import com.oracle.truffle.api.CompilerDirectives.TruffleBoundary;
import com.oracle.truffle.api.strings.TruffleString;
import org.jcodings.Encoding;
import org.jcodings.EncodingDB;
import org.jcodings.specific.ASCIIEncoding;
import org.jcodings.specific.ISO8859_1Encoding;
import org.jcodings.specific.USASCIIEncoding;
import org.jcodings.specific.UTF16BEEncoding;
import org.jcodings.specific.UTF16LEEncoding;
import org.jcodings.specific.UTF32BEEncoding;
import org.jcodings.specific.UTF32LEEncoding;
import org.jcodings.specific.UTF8Encoding;
import org.graalvm.shadowed.org.jcodings.Encoding;
import org.graalvm.shadowed.org.jcodings.EncodingDB;
import org.graalvm.shadowed.org.jcodings.specific.ASCIIEncoding;
import org.graalvm.shadowed.org.jcodings.specific.ISO8859_1Encoding;
import org.graalvm.shadowed.org.jcodings.specific.USASCIIEncoding;
import org.graalvm.shadowed.org.jcodings.specific.UTF16BEEncoding;
import org.graalvm.shadowed.org.jcodings.specific.UTF16LEEncoding;
import org.graalvm.shadowed.org.jcodings.specific.UTF32BEEncoding;
import org.graalvm.shadowed.org.jcodings.specific.UTF32LEEncoding;
import org.graalvm.shadowed.org.jcodings.specific.UTF8Encoding;
import org.truffleruby.RubyLanguage;
import org.truffleruby.core.string.FrozenStringLiterals;
import org.truffleruby.core.string.ImmutableRubyString;
Expand Down
6 changes: 3 additions & 3 deletions src/main/java/org/truffleruby/core/encoding/RubyEncoding.java
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,9 @@
import com.oracle.truffle.api.library.ExportLibrary;
import com.oracle.truffle.api.library.ExportMessage;
import com.oracle.truffle.api.strings.TruffleString;
import org.jcodings.Encoding;
import org.jcodings.specific.ASCIIEncoding;
import org.jcodings.specific.USASCIIEncoding;
import org.graalvm.shadowed.org.jcodings.Encoding;
import org.graalvm.shadowed.org.jcodings.specific.ASCIIEncoding;
import org.graalvm.shadowed.org.jcodings.specific.USASCIIEncoding;
import org.truffleruby.RubyContext;
import org.truffleruby.core.kernel.KernelNodes;
import org.truffleruby.core.klass.RubyClass;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
package org.truffleruby.core.encoding;

import com.oracle.truffle.api.object.Shape;
import org.jcodings.transcode.EConv;
import org.graalvm.shadowed.org.jcodings.transcode.EConv;
import org.truffleruby.core.klass.RubyClass;
import org.truffleruby.language.RubyDynamicObject;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
import com.oracle.truffle.api.nodes.Node;
import com.oracle.truffle.api.profiles.InlinedConditionProfile;
import com.oracle.truffle.api.strings.AbstractTruffleString;
import org.jcodings.Encoding;
import org.graalvm.shadowed.org.jcodings.Encoding;

import com.oracle.truffle.api.strings.TruffleString;
import org.truffleruby.core.array.ArrayUtils;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,11 +38,11 @@
import java.util.Map;
import java.util.Set;

import org.jcodings.transcode.TranscoderDB;
import org.jcodings.unicode.UnicodeCodeRange;
import org.jcodings.unicode.UnicodeEncoding;
import org.jcodings.util.CaseInsensitiveBytesHash;
import org.jcodings.util.Hash;
import org.graalvm.shadowed.org.jcodings.transcode.TranscoderDB;
import org.graalvm.shadowed.org.jcodings.unicode.UnicodeCodeRange;
import org.graalvm.shadowed.org.jcodings.unicode.UnicodeEncoding;
import org.graalvm.shadowed.org.jcodings.util.CaseInsensitiveBytesHash;
import org.graalvm.shadowed.org.jcodings.util.Hash;

import com.oracle.truffle.api.TruffleOptions;
import org.truffleruby.core.string.StringUtils;
Expand Down
18 changes: 9 additions & 9 deletions src/main/java/org/truffleruby/core/regexp/ClassicRegexp.java
Original file line number Diff line number Diff line change
Expand Up @@ -41,15 +41,15 @@

import com.oracle.truffle.api.strings.AbstractTruffleString;
import com.oracle.truffle.api.strings.TruffleStringBuilder;
import org.jcodings.Encoding;
import org.jcodings.specific.EUCJPEncoding;
import org.jcodings.specific.SJISEncoding;
import org.jcodings.specific.USASCIIEncoding;
import org.jcodings.specific.UTF8Encoding;
import org.joni.Option;
import org.joni.Regex;
import org.joni.Syntax;
import org.joni.exception.JOniException;
import org.graalvm.shadowed.org.jcodings.Encoding;
import org.graalvm.shadowed.org.jcodings.specific.EUCJPEncoding;
import org.graalvm.shadowed.org.jcodings.specific.SJISEncoding;
import org.graalvm.shadowed.org.jcodings.specific.USASCIIEncoding;
import org.graalvm.shadowed.org.jcodings.specific.UTF8Encoding;
import org.graalvm.shadowed.org.joni.Option;
import org.graalvm.shadowed.org.joni.Regex;
import org.graalvm.shadowed.org.joni.Syntax;
import org.graalvm.shadowed.org.joni.exception.JOniException;
import org.truffleruby.RubyContext;
import org.truffleruby.annotations.SuppressFBWarnings;
import org.truffleruby.collections.ByteArrayBuilder;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
import java.util.function.Function;

import com.oracle.truffle.api.CompilerDirectives.TruffleBoundary;
import org.joni.Regex;
import org.graalvm.shadowed.org.joni.Regex;
import org.truffleruby.collections.ConcurrentOperations;
import org.truffleruby.core.encoding.RubyEncoding;

Expand Down
8 changes: 4 additions & 4 deletions src/main/java/org/truffleruby/core/regexp/MatchDataNodes.java
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,10 @@
import com.oracle.truffle.api.profiles.InlinedLoopConditionProfile;
import com.oracle.truffle.api.strings.AbstractTruffleString;
import com.oracle.truffle.api.strings.TruffleString;
import org.joni.NameEntry;
import org.joni.Regex;
import org.joni.Region;
import org.joni.exception.ValueException;
import org.graalvm.shadowed.org.joni.NameEntry;
import org.graalvm.shadowed.org.joni.Regex;
import org.graalvm.shadowed.org.joni.Region;
import org.graalvm.shadowed.org.joni.exception.ValueException;
import org.truffleruby.annotations.CoreMethod;
import org.truffleruby.builtins.CoreMethodArrayArgumentsNode;
import org.truffleruby.annotations.CoreModule;
Expand Down
Loading

0 comments on commit f6ffeb3

Please sign in to comment.