Use PyInitConfig API in _freeze_module.c (#137423)
This commit is contained in:
@@ -45,27 +45,40 @@ static const char header[] =
|
||||
static void
|
||||
runtime_init(void)
|
||||
{
|
||||
PyConfig config;
|
||||
PyConfig_InitIsolatedConfig(&config);
|
||||
PyInitConfig *config = PyInitConfig_Create();
|
||||
if (config == NULL) {
|
||||
printf("memory allocation failed\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
config.site_import = 0;
|
||||
|
||||
PyStatus status;
|
||||
status = PyConfig_SetString(&config, &config.program_name,
|
||||
L"./_freeze_module");
|
||||
if (PyStatus_Exception(status)) {
|
||||
PyConfig_Clear(&config);
|
||||
Py_ExitStatusException(status);
|
||||
if (PyInitConfig_SetInt(config, "site_import", 0) < 0) {
|
||||
goto error;
|
||||
}
|
||||
if (PyInitConfig_SetStr(config, "program_name", "./_freeze_module") < 0) {
|
||||
goto error;
|
||||
}
|
||||
|
||||
/* Don't install importlib, since it could execute outdated bytecode. */
|
||||
config._install_importlib = 0;
|
||||
config._init_main = 0;
|
||||
if (PyInitConfig_SetInt(config, "_install_importlib", 0) < 0) {
|
||||
goto error;
|
||||
}
|
||||
if (PyInitConfig_SetInt(config, "_init_main", 0) < 0) {
|
||||
goto error;
|
||||
}
|
||||
|
||||
status = Py_InitializeFromConfig(&config);
|
||||
PyConfig_Clear(&config);
|
||||
if (PyStatus_Exception(status)) {
|
||||
Py_ExitStatusException(status);
|
||||
if (Py_InitializeFromInitConfig(config) < 0) {
|
||||
goto error;
|
||||
}
|
||||
PyInitConfig_Free(config);
|
||||
return;
|
||||
|
||||
error:
|
||||
{
|
||||
const char *err_msg;
|
||||
(void)PyInitConfig_GetError(config, &err_msg);
|
||||
printf("Python init error: %s\n", err_msg);
|
||||
PyInitConfig_Free(config);
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user