Skip to content

Commit 38ec534

Browse files
committed
workaround for stdlib not ready fro frozen site module on 3.8.5
1 parent b4fec34 commit 38ec534

File tree

3 files changed

+14
-3
lines changed

3 files changed

+14
-3
lines changed

graalpython/com.oracle.graal.python.frozen/freeze_modules.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@
7171
# We must explicitly mark os.path as a frozen module
7272
("ntpath" if os.name == "nt" else "posixpath") + " : os.path",
7373
"os",
74-
"site",
74+
"site : graalpython.site",
7575
"stat",
7676
],
7777
),

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/module/FrozenModules.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -528,7 +528,7 @@ public static final PythonFrozenModule lookup(String name) {
528528
return Map.POSIXPATH;
529529
case "os":
530530
return Map.OS;
531-
case "site":
531+
case "graalpython.site":
532532
return Map.SITE;
533533
case "stat":
534534
return Map.STAT;

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

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@
6969

7070
import com.oracle.graal.python.PythonLanguage;
7171
import com.oracle.graal.python.builtins.Python3Core;
72+
import com.oracle.graal.python.builtins.modules.ImpModuleBuiltins;
7273
import com.oracle.graal.python.builtins.modules.ctypes.CtypesModuleBuiltins.CtypesThreadState;
7374
import com.oracle.graal.python.builtins.objects.PNone;
7475
import com.oracle.graal.python.builtins.objects.PythonAbstractObject;
@@ -98,6 +99,7 @@
9899
import com.oracle.graal.python.builtins.objects.str.PString;
99100
import com.oracle.graal.python.builtins.objects.thread.PLock;
100101
import com.oracle.graal.python.builtins.objects.tuple.PTuple;
102+
import com.oracle.graal.python.lib.PyDictSetItem;
101103
import com.oracle.graal.python.lib.PyObjectCallMethodObjArgs;
102104
import com.oracle.graal.python.nodes.SpecialAttributeNames;
103105
import com.oracle.graal.python.nodes.SpecialMethodNames;
@@ -1180,7 +1182,16 @@ public void patch(Env newEnv) {
11801182
}
11811183

11821184
private void importSiteIfForced() {
1183-
if (getOption(PythonOptions.ForceImportSite)) {
1185+
PythonModule siteModule;
1186+
if (getOption(PythonOptions.ForceImportSite) &&
1187+
getOption(PythonOptions.PythonPath).isEmpty() &&
1188+
(siteModule = ImpModuleBuiltins.importFrozenModuleObject(this, "graalpython.site", true)) != null) {
1189+
// assume we can use the frozen site module
1190+
// TODO: rename graalpython.site again to just site when we upgrade to Python 3.10+
1191+
// or newer and remove this hack
1192+
PyDictSetItem.getUncached().execute(null, getSysModules(), "site", siteModule);
1193+
LOGGER.log(Level.FINE, () -> "import 'site' # <frozen>");
1194+
} else {
11841195
CallTarget site = env.parsePublic(FORCE_IMPORTS_SOURCE);
11851196
site.call();
11861197
}

0 commit comments

Comments
 (0)