bpo-36444: Add _PyCoreConfig._init_main (GH-12572)

* Add _PyCoreConfig._init_main: if equals to zero,
  _Py_InitializeFromConfig() doesn't call
  _Py_InitializeMainInterpreter().
* Add interp_p parameter to _Py_InitializeFromConfig().
* pymain_init() now calls _Py_InitializeFromConfig().
* Make _Py_InitializeCore() private.
This commit is contained in:
Victor Stinner 2019-03-27 02:04:16 +01:00 committed by GitHub
parent 8b9dbc017a
commit 484f20d2ff
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
9 changed files with 47 additions and 46 deletions

View file

@ -84,8 +84,9 @@ main(int argc, char *argv[])
/* Don't install importlib, since it could execute outdated bytecode. */
config._install_importlib = 0;
config._frozen = 1;
config._init_main = 0;
_PyInitError err = _Py_InitializeFromConfig(&config);
_PyInitError err = _Py_InitializeFromConfig(&config, NULL);
/* No need to call _PyCoreConfig_Clear() since we didn't allocate any
memory: program_name is a constant string. */
if (_Py_INIT_FAILED(err)) {

View file

@ -529,7 +529,7 @@ static int test_init_from_config(void)
Py_FrozenFlag = 0;
config._frozen = 1;
err = _Py_InitializeFromConfig(&config);
err = _Py_InitializeFromConfig(&config, NULL);
/* Don't call _PyCoreConfig_Clear() since all strings are static */
if (_Py_INIT_FAILED(err)) {
_Py_ExitInitError(err);
@ -638,7 +638,7 @@ static int test_init_isolated(void)
config.program_name = L"./_testembed";
test_init_env_dev_mode_putenvs();
err = _Py_InitializeFromConfig(&config);
err = _Py_InitializeFromConfig(&config, NULL);
if (_Py_INIT_FAILED(err)) {
_Py_ExitInitError(err);
}
@ -669,7 +669,7 @@ static int test_preinit_isolated1(void)
config.program_name = L"./_testembed";
test_init_env_dev_mode_putenvs();
err = _Py_InitializeFromConfig(&config);
err = _Py_InitializeFromConfig(&config, NULL);
if (_Py_INIT_FAILED(err)) {
_Py_ExitInitError(err);
}
@ -706,7 +706,7 @@ static int test_preinit_isolated2(void)
config.program_name = L"./_testembed";
test_init_env_dev_mode_putenvs();
err = _Py_InitializeFromConfig(&config);
err = _Py_InitializeFromConfig(&config, NULL);
if (_Py_INIT_FAILED(err)) {
_Py_ExitInitError(err);
}
@ -723,7 +723,7 @@ static int test_init_dev_mode(void)
putenv("PYTHONMALLOC=");
config.dev_mode = 1;
config.program_name = L"./_testembed";
_PyInitError err = _Py_InitializeFromConfig(&config);
_PyInitError err = _Py_InitializeFromConfig(&config, NULL);
if (_Py_INIT_FAILED(err)) {
_Py_ExitInitError(err);
}