Skip to content

Commit 4e9e6bf

Browse files
committed
Move the initial site.py import to the context initialization (GR-24931).
1 parent c29f564 commit 4e9e6bf

File tree

3 files changed

+20
-5
lines changed

3 files changed

+20
-5
lines changed

graalpython/com.oracle.graal.python.shell/src/com/oracle/graal/python/shell/GraalPythonMain.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,7 @@ protected List<String> preprocessArguments(List<String> givenArgs, Map<String, S
175175
case "-debug-java":
176176
if (wantsExperimental) {
177177
if (!isAOT()) {
178-
subprocessArgs.add("Xrunjdwp:transport=dt_socket,server=y,address=8000,suspend=y");
178+
subprocessArgs.add("agentlib:jdwp=transport=dt_socket,server=y,address=8000,suspend=y");
179179
inputArgs.remove("-debug-java");
180180
}
181181
} else {
@@ -415,6 +415,9 @@ protected void launch(Builder contextBuilder) {
415415
contextBuilder.option("python.QuietFlag", Boolean.toString(quietFlag));
416416
contextBuilder.option("python.NoUserSiteFlag", Boolean.toString(noUserSite));
417417
contextBuilder.option("python.NoSiteFlag", Boolean.toString(noSite));
418+
if (!noSite) {
419+
contextBuilder.option("python.ForceImportSite", "true");
420+
}
418421
contextBuilder.option("python.IgnoreEnvironmentFlag", Boolean.toString(ignoreEnv));
419422
contextBuilder.option("python.UnbufferedIO", Boolean.toString(unbufferedIO));
420423

@@ -438,9 +441,6 @@ protected void launch(Builder contextBuilder) {
438441
print("Type \"help\", \"copyright\", \"credits\" or \"license\" for more information.");
439442
}
440443
}
441-
if (!noSite) {
442-
evalInternal(context, "import site\n");
443-
}
444444
if (!quietFlag && stdinIsInteractive) {
445445
System.err.println("Please note: This Python implementation is in the very early stages, " +
446446
"and can run little more than basic benchmarks at this point.");
@@ -837,7 +837,7 @@ static List<String> getCmdline(List<String> args, List<String> subProcessDefs) {
837837
cmd.add("-cp");
838838
cmd.add(ManagementFactory.getRuntimeMXBean().getClassPath());
839839
for (String subProcArg : subProcessDefs) {
840-
assert subProcArg.startsWith("D") || subProcArg.startsWith("X");
840+
assert subProcArg.startsWith("D") || subProcArg.startsWith("agent");
841841
cmd.add("-" + subProcArg);
842842
}
843843
cmd.add(GraalPythonMain.class.getName());

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/runtime/PythonContext.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,7 @@
9595
import com.oracle.truffle.api.frame.VirtualFrame;
9696
import com.oracle.truffle.api.interop.UnsupportedMessageException;
9797
import com.oracle.truffle.api.profiles.BranchProfile;
98+
import com.oracle.truffle.api.source.Source;
9899
import com.oracle.truffle.api.utilities.CyclicAssumption;
99100

100101
public final class PythonContext {
@@ -373,12 +374,23 @@ public void initialize() {
373374
core.initialize(this);
374375
setupRuntimeInformation(false);
375376
core.postInitialize();
377+
if (!ImageInfo.inImageBuildtimeCode()) {
378+
importSiteIfForced();
379+
}
376380
}
377381

378382
public void patch(Env newEnv) {
379383
setEnv(newEnv);
380384
setupRuntimeInformation(true);
381385
core.postInitialize();
386+
importSiteIfForced();
387+
}
388+
389+
private void importSiteIfForced() {
390+
if (getOption(PythonOptions.ForceImportSite)) {
391+
CallTarget site = env.parsePublic(Source.newBuilder(PythonLanguage.ID, "import site\n", "<internal>").internal(true).build());
392+
site.call();
393+
}
382394
}
383395

384396
/**

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/runtime/PythonOptions.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,9 @@ private PythonOptions() {
153153
@EngineOption @Option(category = OptionCategory.EXPERT, help = "") //
154154
public static final OptionKey<Boolean> ForceInlineGeneratorCalls = new OptionKey<>(false);
155155

156+
@Option(category = OptionCategory.EXPERT, help = "Force to automatically import site.py module.") //
157+
public static final OptionKey<Boolean> ForceImportSite = new OptionKey<>(false);
158+
156159
@Option(category = OptionCategory.EXPERT, help = "Minimal size of string, when lazy strings are used. Default 20") //
157160
public static final OptionKey<Integer> MinLazyStringLength = new OptionKey<>(20);
158161

0 commit comments

Comments
 (0)