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.
diff --git a/Include/cpython/coreconfig.h b/Include/cpython/coreconfig.h
index 827a19a..53493ff 100644
--- a/Include/cpython/coreconfig.h
+++ b/Include/cpython/coreconfig.h
@@ -365,6 +365,9 @@
If set to -1 (default), inherit Py_FrozenFlag value. */
int _frozen;
+ /* If non-zero, use "main" Python initialization */
+ int _init_main;
+
} _PyCoreConfig;
#ifdef MS_WINDOWS
@@ -398,7 +401,8 @@
.buffered_stdio = -1, \
._install_importlib = 1, \
._check_hash_pycs_mode = "default", \
- ._frozen = -1}
+ ._frozen = -1, \
+ ._init_main = 1}
/* Note: _PyCoreConfig_INIT sets other fields to 0/NULL */
diff --git a/Include/cpython/pylifecycle.h b/Include/cpython/pylifecycle.h
index 1db1d21..496dcb2 100644
--- a/Include/cpython/pylifecycle.h
+++ b/Include/cpython/pylifecycle.h
@@ -20,9 +20,6 @@
PyAPI_FUNC(_PyInitError) _Py_PreInitializeFromConfig(
const _PyCoreConfig *coreconfig);
-PyAPI_FUNC(_PyInitError) _Py_InitializeCore(
- const _PyCoreConfig *config,
- PyInterpreterState **interp);
PyAPI_FUNC(int) _Py_IsCoreInitialized(void);
@@ -32,7 +29,8 @@
/* Initialization and finalization */
PyAPI_FUNC(_PyInitError) _Py_InitializeFromConfig(
- const _PyCoreConfig *config);
+ const _PyCoreConfig *config,
+ PyInterpreterState **interp_p);
PyAPI_FUNC(void) _Py_NO_RETURN _Py_ExitInitError(_PyInitError err);
/* Py_PyAtExit is for the atexit module, Py_AtExit is for low-level