]> granicus.if.org Git - python/commitdiff
bpo-36763: Remove _PyCoreConfig._init_main (GH-13066)
authorVictor Stinner <vstinner@redhat.com>
Thu, 2 May 2019 19:30:21 +0000 (15:30 -0400)
committerGitHub <noreply@github.com>
Thu, 2 May 2019 19:30:21 +0000 (15:30 -0400)
Include/cpython/coreconfig.h
Lib/test/test_embed.py
Programs/_freeze_importlib.c
Programs/_testembed.c
Python/coreconfig.c
Python/pylifecycle.c

index 5672080b784fdee00c9f650f07bff872ee350eac..47a6baa1118fca99ddac2ec76b8de54e1d4d3ff8 100644 (file)
@@ -391,9 +391,6 @@ typedef struct {
        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
@@ -428,8 +425,7 @@ typedef struct {
         .buffered_stdio = -1, \
         ._install_importlib = 1, \
         .check_hash_pycs_mode = NULL, \
-        ._frozen = -1, \
-        ._init_main = 1}
+        ._frozen = -1}
 /* Note: _PyCoreConfig_INIT sets other fields to 0/NULL */
 
 #ifdef __cplusplus
index fb0051957aad0cb8ca57bf18abed623339eb19f1..fdf5793789dfedb646c7e8af2956113d63f7208f 100644 (file)
@@ -348,7 +348,6 @@ class InitConfigTests(EmbeddingTestsMixin, unittest.TestCase):
         '_install_importlib': 1,
         'check_hash_pycs_mode': 'default',
         '_frozen': 0,
-        '_init_main': 1,
     }
     if MS_WINDOWS:
         DEFAULT_PRE_CONFIG.update({
@@ -443,7 +442,10 @@ class InitConfigTests(EmbeddingTestsMixin, unittest.TestCase):
             raise Exception(f"failed to get the default config: "
                             f"stdout={proc.stdout!r} stderr={proc.stderr!r}")
         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():
             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)
         # 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_config = self.get_expected_config(expected_config, env)
@@ -533,7 +538,6 @@ class InitConfigTests(EmbeddingTestsMixin, unittest.TestCase):
             'filesystem_encoding': 'utf-8',
             'filesystem_errors': self.UTF8_MODE_ERRORS,
             'user_site_directory': 0,
-            '_frozen': 1,
         }
         self.check_config("init_global_config", config, preconfig)
 
@@ -578,7 +582,6 @@ class InitConfigTests(EmbeddingTestsMixin, unittest.TestCase):
             'faulthandler': 1,
 
             'check_hash_pycs_mode': 'always',
-            '_frozen': 1,
         }
         self.check_config("init_from_config", config, preconfig)
 
index 6f77e86a9e666682502ce538cfa6ad646bd0f9ad..0818012d8c5abd4dbc7f379046e375ddfe4fc024 100644 (file)
@@ -84,7 +84,6 @@ 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);
     /* No need to call _PyCoreConfig_Clear() since we didn't allocate any
index 2cadf82cb17faada1fcf7fad3c2df49ddd928414..b12594799bfc93474bfc0801ceabea6f187298c0 100644 (file)
@@ -354,8 +354,6 @@ static int test_init_global_config(void)
     putenv("PYTHONUNBUFFERED=");
     Py_UnbufferedStdioFlag = 1;
 
-    Py_FrozenFlag = 1;
-
     /* FIXME: test Py_LegacyWindowsFSEncodingFlag */
     /* FIXME: test Py_LegacyWindowsStdioFlag */
 
@@ -497,9 +495,6 @@ static int test_init_from_config(void)
 
     config.check_hash_pycs_mode = L"always";
 
-    Py_FrozenFlag = 0;
-    config._frozen = 1;
-
     err = _Py_InitializeFromConfig(&config);
     if (_Py_INIT_FAILED(err)) {
         _Py_ExitInitError(err);
index 52026949e202c34fcda882e90b7732aaffc3f298..ac01712127ac0ab438d973f8cb7e5b0e10a84079 100644 (file)
@@ -667,7 +667,6 @@ _PyCoreConfig_Copy(_PyCoreConfig *config, const _PyCoreConfig *config2)
     COPY_WSTR_ATTR(run_filename);
     COPY_WSTR_ATTR(check_hash_pycs_mode);
     COPY_ATTR(_frozen);
-    COPY_ATTR(_init_main);
 
 #undef COPY_ATTR
 #undef COPY_WSTR_ATTR
@@ -766,7 +765,6 @@ _PyCoreConfig_AsDict(const _PyCoreConfig *config)
     SET_ITEM_INT(_install_importlib);
     SET_ITEM_WSTR(check_hash_pycs_mode);
     SET_ITEM_INT(_frozen);
-    SET_ITEM_INT(_init_main);
 
     return dict;
 
index 2ba43b99cf3a4467f6155d1f4579a22041cee6e8..bd4d1d92662a69b3f07c021a7ed0df8d6cc7c952 100644 (file)
@@ -988,7 +988,7 @@ init_python(const _PyCoreConfig *config, const _PyArgv *args)
     }
     config = &interp->core_config;
 
-    if (config->_init_main) {
+    if (!config->_frozen) {
         err = _Py_InitializeMainInterpreter(runtime, interp);
         if (_Py_INIT_FAILED(err)) {
             return err;