Skip to content

Commit 5203174

Browse files
committed
[GR-24931] Move the initial site.py import to the context initialization.
PullRequest: graalpython/1129
2 parents ac416df + 4e9e6bf commit 5203174

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 {
@@ -401,6 +401,9 @@ protected void launch(Builder contextBuilder) {
401401
contextBuilder.option("python.QuietFlag", Boolean.toString(quietFlag));
402402
contextBuilder.option("python.NoUserSiteFlag", Boolean.toString(noUserSite));
403403
contextBuilder.option("python.NoSiteFlag", Boolean.toString(noSite));
404+
if (!noSite) {
405+
contextBuilder.option("python.ForceImportSite", "true");
406+
}
404407
contextBuilder.option("python.IgnoreEnvironmentFlag", Boolean.toString(ignoreEnv));
405408
contextBuilder.option("python.UnbufferedIO", Boolean.toString(unbufferedIO));
406409

@@ -424,9 +427,6 @@ protected void launch(Builder contextBuilder) {
424427
print("Type \"help\", \"copyright\", \"credits\" or \"license\" for more information.");
425428
}
426429
}
427-
if (!noSite) {
428-
evalInternal(context, "import site\n");
429-
}
430430
if (!quietFlag && stdinIsInteractive) {
431431
System.err.println("Please note: This Python implementation is in the very early stages, " +
432432
"and can run little more than basic benchmarks at this point.");
@@ -823,7 +823,7 @@ static List<String> getCmdline(List<String> args, List<String> subProcessDefs) {
823823
cmd.add("-cp");
824824
cmd.add(ManagementFactory.getRuntimeMXBean().getClassPath());
825825
for (String subProcArg : subProcessDefs) {
826-
assert subProcArg.startsWith("D") || subProcArg.startsWith("X");
826+
assert subProcArg.startsWith("D") || subProcArg.startsWith("agent");
827827
cmd.add("-" + subProcArg);
828828
}
829829
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
@@ -96,6 +96,7 @@
9696
import com.oracle.truffle.api.frame.VirtualFrame;
9797
import com.oracle.truffle.api.interop.UnsupportedMessageException;
9898
import com.oracle.truffle.api.profiles.BranchProfile;
99+
import com.oracle.truffle.api.source.Source;
99100
import com.oracle.truffle.api.utilities.CyclicAssumption;
100101

101102
public final class PythonContext {
@@ -375,12 +376,23 @@ public void initialize() {
375376
core.initialize(this);
376377
setupRuntimeInformation(false);
377378
core.postInitialize();
379+
if (!ImageInfo.inImageBuildtimeCode()) {
380+
importSiteIfForced();
381+
}
378382
}
379383

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

386398
/**

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)