Skip to content

Commit 6aad090

Browse files
committed
JLine FFM terminal provider can be disabled at build time using system property
1 parent 42612d3 commit 6aad090

File tree

3 files changed

+15
-1
lines changed

3 files changed

+15
-1
lines changed

sdk/mx.sdk/suite.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1205,6 +1205,8 @@ class UniversalDetector {
12051205
# One must pass --enable-native-access=org.graalvm.shadowed.jline, otherwise
12061206
# JLine silently falls back to exec provider on POSIX, and with a warning
12071207
# to "Dumb" provider on Windows
1208+
# If desired, the FFM terminal on JDK22+ can be disabled at built time using system property:
1209+
# org.graalvm.shadowed.org.jline.terminal.ffm.disable=true
12081210
"moduleInfo": {
12091211
"name": "org.graalvm.shadowed.jline",
12101212
"requires": [

sdk/src/org.graalvm.shadowed.org.jline.jdk22/src/org/graalvm/shadowed/org/jline/terminal/impl/ffm/FFMTerminalProviderLoader.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,16 @@
5252
import org.graalvm.shadowed.org.jline.terminal.spi.TerminalProvider;
5353

5454
public class FFMTerminalProviderLoader {
55+
/**
56+
* Build time flag to disable the FFM provider and avoid pulling FFM related code into the
57+
* image.
58+
*/
59+
static final boolean DISABLED = Boolean.getBoolean("org.graalvm.shadowed.org.jline.terminal.ffm.disable");
60+
5561
public static TerminalProvider load() {
62+
if (DISABLED) {
63+
return null;
64+
}
5665
return new org.graalvm.shadowed.org.jline.terminal.impl.ffm.FfmTerminalProvider();
5766
}
5867
}
@@ -108,6 +117,9 @@ private static DowncallDesc[] getDowncalls() {
108117
}
109118

110119
public void duringSetup(DuringSetupAccess access) {
120+
if (FFMTerminalProviderLoader.DISABLED) {
121+
return;
122+
}
111123
for (DowncallDesc downcall : getDowncalls()) {
112124
RuntimeForeignAccess.registerForDowncall(downcall.fd(), (Object[]) downcall.options());
113125
}

sdk/src/org.graalvm.shadowed.org.jline/src/META-INF/native-image/org.graalvm.shadowed/jline/native-image.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,6 @@
22
# OSUtils detects current OS capabilities in static ctor
33
# FFMTerminalProviderFeature is noop on JDK<=21, on JDK22+ it is overridden using mx overlay mechanism,
44
# and it registers FFM downcalls for FFM terminal provider
5-
Args = --initialize-at-build-time=org.graalvm.shadowed.org.jline \
5+
Args = --initialize-at-build-time=org.graalvm.shadowed.org.jline,org.graalvm.shadowed.org.jline.terminal.impl.ffm.FFMTerminalProviderLoader \
66
--features=org.graalvm.shadowed.org.jline.terminal.impl.ffm.FFMTerminalProviderFeature \
77
--initialize-at-run-time=org.graalvm.shadowed.org.jline.utils.AttributedCharSequence,org.graalvm.shadowed.org.jline.utils.OSUtils,org.graalvm.shadowed.org.jline.terminal.impl.ffm \

0 commit comments

Comments
 (0)