Skip to content

Commit a9a8018

Browse files
committed
fix graal_python_executable_list uses
1 parent f230a67 commit a9a8018

File tree

4 files changed

+16
-5
lines changed

4 files changed

+16
-5
lines changed

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/PosixSubprocessModuleBuiltins.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@
6161
import com.oracle.graal.python.builtins.objects.list.PList;
6262
import com.oracle.graal.python.builtins.objects.module.PythonModule;
6363
import com.oracle.graal.python.builtins.objects.str.PString;
64+
import com.oracle.graal.python.nodes.SpecialAttributeNames;
6465
import com.oracle.graal.python.nodes.expression.CastToBooleanNode;
6566
import com.oracle.graal.python.nodes.expression.CastToListNode;
6667
import com.oracle.graal.python.nodes.function.PythonBuiltinBaseNode;
@@ -120,7 +121,7 @@ synchronized int forkExec(PList args, @SuppressWarnings("unused") PList execList
120121
// builder
121122
PythonModule sysModule = getCore().lookupBuiltinModule("sys");
122123
if (!TruffleOptions.AOT && !argStrings.isEmpty() && argStrings.get(0).equals(sysModule.getAttribute("executable"))) {
123-
PList exec_list = (PList) sysModule.getAttribute("executable_list");
124+
PList exec_list = (PList) sysModule.getAttribute(SpecialAttributeNames.GRAAL_PYTHON_EXECUTABLE_LIST);
124125
Object[] internalArray = exec_list.getSequenceStorage().getCopyOfInternalArray();
125126
argStrings.remove(0);
126127
for (int i = internalArray.length - 1; i >= 0; i--) {

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/SysModuleBuiltins.java

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@
6060
import com.oracle.graal.python.builtins.objects.exception.PBaseException;
6161
import com.oracle.graal.python.builtins.objects.ints.PInt;
6262
import com.oracle.graal.python.builtins.objects.str.PString;
63+
import com.oracle.graal.python.nodes.SpecialAttributeNames;
6364
import com.oracle.graal.python.nodes.call.special.LookupAndCallUnaryNode;
6465
import com.oracle.graal.python.nodes.call.special.LookupAndCallUnaryNode.NoAttributeHandler;
6566
import com.oracle.graal.python.nodes.function.PythonBuiltinBaseNode;
@@ -114,12 +115,11 @@ public void initialize(PythonCore core) {
114115
builtinConstants.put("dont_write_bytecode", true);
115116

116117
String executable = PythonOptions.getOption(core.getContext(), PythonOptions.ExecutablePath);
117-
if (!executable.isEmpty() && core.getContext().isExecutableAccessAllowed()) {
118-
builtinConstants.put("executable", executable);
119-
} else if (TruffleOptions.AOT || !core.getContext().isExecutableAccessAllowed()) {
118+
if (TruffleOptions.AOT || !core.getContext().isExecutableAccessAllowed()) {
120119
// cannot set the path at this time since the binary is not yet known; will be patched
121120
// in the context
122121
builtinConstants.put("executable", PNone.NONE);
122+
builtinConstants.put(SpecialAttributeNames.GRAAL_PYTHON_EXECUTABLE_LIST, PNone.NONE);
123123
} else {
124124
StringBuilder sb = new StringBuilder();
125125
ArrayList<String> exec_list = new ArrayList<>();
@@ -142,7 +142,12 @@ public void initialize(PythonCore core) {
142142
sb.append("com.oracle.graal.python.shell.GraalPythonMain");
143143
exec_list.add("com.oracle.graal.python.shell.GraalPythonMain");
144144
builtinConstants.put("executable", sb.toString());
145-
builtinConstants.put("executable_list", core.factory().createList(exec_list.toArray()));
145+
builtinConstants.put(SpecialAttributeNames.GRAAL_PYTHON_EXECUTABLE_LIST, core.factory().createList(exec_list.toArray()));
146+
}
147+
148+
String executable = PythonOptions.getOption(core.getContext(), PythonOptions.ExecutablePath);
149+
if (!executable.isEmpty() && core.getContext().isExecutableAccessAllowed()) {
150+
builtinConstants.put("executable", executable);
146151
}
147152

148153
builtinConstants.put("modules", core.factory().createDict());

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/nodes/SpecialAttributeNames.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,4 +72,7 @@ public abstract class SpecialAttributeNames {
7272
public static final String __DICTOFFSET__ = "__dictoffset__";
7373
public static final String __ITEMSIZE__ = "__itemsize__";
7474
public static final String __WEAKREF__ = "__weakref__";
75+
76+
// GraalPython specific
77+
public static final String GRAAL_PYTHON_EXECUTABLE_LIST = "graal_python_executable_list";
7578
}

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@
4747
import com.oracle.graal.python.builtins.objects.common.HashingStorage;
4848
import com.oracle.graal.python.builtins.objects.dict.PDict;
4949
import com.oracle.graal.python.builtins.objects.module.PythonModule;
50+
import com.oracle.graal.python.nodes.SpecialAttributeNames;
5051
import com.oracle.graal.python.runtime.exception.PException;
5152
import com.oracle.truffle.api.Assumption;
5253
import com.oracle.truffle.api.CallTarget;
@@ -241,6 +242,7 @@ private void setupRuntimeInformation() {
241242
if (sysModule.getAttribute("executable") == PNone.NONE) {
242243
sysModule.setAttribute("executable", ProcessProperties.getExecutableName());
243244
}
245+
sysModule.setAttribute(SpecialAttributeNames.GRAAL_PYTHON_EXECUTABLE_LIST, core.factory().createList(new Object[]{ProcessProperties.getExecutableName()}));
244246
}
245247
sysModules = (PDict) sysModule.getAttribute("modules");
246248
builtinsModule = (PythonModule) sysModules.getItem("builtins");

0 commit comments

Comments
 (0)