bpo-36763: Remove _PyCoreConfig._init_main (GH-13066)
This commit is contained in:
parent
70005ac0fd
commit
4631da1242
|
@ -391,9 +391,6 @@ typedef struct {
|
||||||
If set to -1 (default), inherit Py_FrozenFlag value. */
|
If set to -1 (default), inherit Py_FrozenFlag value. */
|
||||||
int _frozen;
|
int _frozen;
|
||||||
|
|
||||||
/* If non-zero, use "main" Python initialization */
|
|
||||||
int _init_main;
|
|
||||||
|
|
||||||
} _PyCoreConfig;
|
} _PyCoreConfig;
|
||||||
|
|
||||||
#ifdef MS_WINDOWS
|
#ifdef MS_WINDOWS
|
||||||
|
@ -428,8 +425,7 @@ typedef struct {
|
||||||
.buffered_stdio = -1, \
|
.buffered_stdio = -1, \
|
||||||
._install_importlib = 1, \
|
._install_importlib = 1, \
|
||||||
.check_hash_pycs_mode = NULL, \
|
.check_hash_pycs_mode = NULL, \
|
||||||
._frozen = -1, \
|
._frozen = -1}
|
||||||
._init_main = 1}
|
|
||||||
/* Note: _PyCoreConfig_INIT sets other fields to 0/NULL */
|
/* Note: _PyCoreConfig_INIT sets other fields to 0/NULL */
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
|
|
@ -348,7 +348,6 @@ class InitConfigTests(EmbeddingTestsMixin, unittest.TestCase):
|
||||||
'_install_importlib': 1,
|
'_install_importlib': 1,
|
||||||
'check_hash_pycs_mode': 'default',
|
'check_hash_pycs_mode': 'default',
|
||||||
'_frozen': 0,
|
'_frozen': 0,
|
||||||
'_init_main': 1,
|
|
||||||
}
|
}
|
||||||
if MS_WINDOWS:
|
if MS_WINDOWS:
|
||||||
DEFAULT_PRE_CONFIG.update({
|
DEFAULT_PRE_CONFIG.update({
|
||||||
|
@ -443,7 +442,10 @@ class InitConfigTests(EmbeddingTestsMixin, unittest.TestCase):
|
||||||
raise Exception(f"failed to get the default config: "
|
raise Exception(f"failed to get the default config: "
|
||||||
f"stdout={proc.stdout!r} stderr={proc.stderr!r}")
|
f"stdout={proc.stdout!r} stderr={proc.stderr!r}")
|
||||||
stdout = proc.stdout.decode('utf-8')
|
stdout = proc.stdout.decode('utf-8')
|
||||||
config = json.loads(stdout)
|
try:
|
||||||
|
config = json.loads(stdout)
|
||||||
|
except json.JSONDecodeError:
|
||||||
|
self.fail(f"fail to decode stdout: {stdout!r}")
|
||||||
|
|
||||||
for key, value in expected.items():
|
for key, value in expected.items():
|
||||||
if value is self.GET_DEFAULT_CONFIG:
|
if value is self.GET_DEFAULT_CONFIG:
|
||||||
|
@ -496,7 +498,10 @@ class InitConfigTests(EmbeddingTestsMixin, unittest.TestCase):
|
||||||
|
|
||||||
out, err = self.run_embedded_interpreter(testname, env=env)
|
out, err = self.run_embedded_interpreter(testname, env=env)
|
||||||
# Ignore err
|
# Ignore err
|
||||||
config = json.loads(out)
|
try:
|
||||||
|
config = json.loads(out)
|
||||||
|
except json.JSONDecodeError:
|
||||||
|
self.fail(f"fail to decode stdout: {out!r}")
|
||||||
|
|
||||||
expected_preconfig = dict(self.DEFAULT_PRE_CONFIG, **expected_preconfig)
|
expected_preconfig = dict(self.DEFAULT_PRE_CONFIG, **expected_preconfig)
|
||||||
expected_config = self.get_expected_config(expected_config, env)
|
expected_config = self.get_expected_config(expected_config, env)
|
||||||
|
@ -533,7 +538,6 @@ class InitConfigTests(EmbeddingTestsMixin, unittest.TestCase):
|
||||||
'filesystem_encoding': 'utf-8',
|
'filesystem_encoding': 'utf-8',
|
||||||
'filesystem_errors': self.UTF8_MODE_ERRORS,
|
'filesystem_errors': self.UTF8_MODE_ERRORS,
|
||||||
'user_site_directory': 0,
|
'user_site_directory': 0,
|
||||||
'_frozen': 1,
|
|
||||||
}
|
}
|
||||||
self.check_config("init_global_config", config, preconfig)
|
self.check_config("init_global_config", config, preconfig)
|
||||||
|
|
||||||
|
@ -578,7 +582,6 @@ class InitConfigTests(EmbeddingTestsMixin, unittest.TestCase):
|
||||||
'faulthandler': 1,
|
'faulthandler': 1,
|
||||||
|
|
||||||
'check_hash_pycs_mode': 'always',
|
'check_hash_pycs_mode': 'always',
|
||||||
'_frozen': 1,
|
|
||||||
}
|
}
|
||||||
self.check_config("init_from_config", config, preconfig)
|
self.check_config("init_from_config", config, preconfig)
|
||||||
|
|
||||||
|
|
|
@ -84,7 +84,6 @@ main(int argc, char *argv[])
|
||||||
/* Don't install importlib, since it could execute outdated bytecode. */
|
/* Don't install importlib, since it could execute outdated bytecode. */
|
||||||
config._install_importlib = 0;
|
config._install_importlib = 0;
|
||||||
config._frozen = 1;
|
config._frozen = 1;
|
||||||
config._init_main = 0;
|
|
||||||
|
|
||||||
_PyInitError err = _Py_InitializeFromConfig(&config);
|
_PyInitError err = _Py_InitializeFromConfig(&config);
|
||||||
/* No need to call _PyCoreConfig_Clear() since we didn't allocate any
|
/* No need to call _PyCoreConfig_Clear() since we didn't allocate any
|
||||||
|
|
|
@ -354,8 +354,6 @@ static int test_init_global_config(void)
|
||||||
putenv("PYTHONUNBUFFERED=");
|
putenv("PYTHONUNBUFFERED=");
|
||||||
Py_UnbufferedStdioFlag = 1;
|
Py_UnbufferedStdioFlag = 1;
|
||||||
|
|
||||||
Py_FrozenFlag = 1;
|
|
||||||
|
|
||||||
/* FIXME: test Py_LegacyWindowsFSEncodingFlag */
|
/* FIXME: test Py_LegacyWindowsFSEncodingFlag */
|
||||||
/* FIXME: test Py_LegacyWindowsStdioFlag */
|
/* FIXME: test Py_LegacyWindowsStdioFlag */
|
||||||
|
|
||||||
|
@ -497,9 +495,6 @@ static int test_init_from_config(void)
|
||||||
|
|
||||||
config.check_hash_pycs_mode = L"always";
|
config.check_hash_pycs_mode = L"always";
|
||||||
|
|
||||||
Py_FrozenFlag = 0;
|
|
||||||
config._frozen = 1;
|
|
||||||
|
|
||||||
err = _Py_InitializeFromConfig(&config);
|
err = _Py_InitializeFromConfig(&config);
|
||||||
if (_Py_INIT_FAILED(err)) {
|
if (_Py_INIT_FAILED(err)) {
|
||||||
_Py_ExitInitError(err);
|
_Py_ExitInitError(err);
|
||||||
|
|
|
@ -667,7 +667,6 @@ _PyCoreConfig_Copy(_PyCoreConfig *config, const _PyCoreConfig *config2)
|
||||||
COPY_WSTR_ATTR(run_filename);
|
COPY_WSTR_ATTR(run_filename);
|
||||||
COPY_WSTR_ATTR(check_hash_pycs_mode);
|
COPY_WSTR_ATTR(check_hash_pycs_mode);
|
||||||
COPY_ATTR(_frozen);
|
COPY_ATTR(_frozen);
|
||||||
COPY_ATTR(_init_main);
|
|
||||||
|
|
||||||
#undef COPY_ATTR
|
#undef COPY_ATTR
|
||||||
#undef COPY_WSTR_ATTR
|
#undef COPY_WSTR_ATTR
|
||||||
|
@ -766,7 +765,6 @@ _PyCoreConfig_AsDict(const _PyCoreConfig *config)
|
||||||
SET_ITEM_INT(_install_importlib);
|
SET_ITEM_INT(_install_importlib);
|
||||||
SET_ITEM_WSTR(check_hash_pycs_mode);
|
SET_ITEM_WSTR(check_hash_pycs_mode);
|
||||||
SET_ITEM_INT(_frozen);
|
SET_ITEM_INT(_frozen);
|
||||||
SET_ITEM_INT(_init_main);
|
|
||||||
|
|
||||||
return dict;
|
return dict;
|
||||||
|
|
||||||
|
|
|
@ -988,7 +988,7 @@ init_python(const _PyCoreConfig *config, const _PyArgv *args)
|
||||||
}
|
}
|
||||||
config = &interp->core_config;
|
config = &interp->core_config;
|
||||||
|
|
||||||
if (config->_init_main) {
|
if (!config->_frozen) {
|
||||||
err = _Py_InitializeMainInterpreter(runtime, interp);
|
err = _Py_InitializeMainInterpreter(runtime, interp);
|
||||||
if (_Py_INIT_FAILED(err)) {
|
if (_Py_INIT_FAILED(err)) {
|
||||||
return err;
|
return err;
|
||||||
|
|
Loading…
Reference in New Issue