summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVictor Stinner <vstinner@redhat.com>2018-08-01 16:18:07 (GMT)
committerGitHub <noreply@github.com>2018-08-01 16:18:07 (GMT)
commit80b762f010097ab8137782e5fbdc89c5c620ed4e (patch)
tree153bd836a83680ade86f0fd00b07f8dfcb71a03e
parent6c785c0ebdadc84d80a53d896c38fd7ada8ae1f6 (diff)
downloadcpython-80b762f010097ab8137782e5fbdc89c5c620ed4e.zip
cpython-80b762f010097ab8137782e5fbdc89c5c620ed4e.tar.gz
cpython-80b762f010097ab8137782e5fbdc89c5c620ed4e.tar.bz2
bpo-31650: Remove _Py_CheckHashBasedPycsMode global config var (GH-8608)
bpo-31650, bpo-34170: Replace _Py_CheckHashBasedPycsMode with _PyCoreConfig._check_hash_pycs_mode. Modify PyInit__imp() and zipimport to get the parameter from the current interpreter core configuration. Remove Include/internal/import.h file.
-rw-r--r--Include/coreconfig.h3
-rw-r--r--Include/internal/import.h6
-rw-r--r--Modules/zipimport.c6
-rw-r--r--Programs/_testembed.c2
-rw-r--r--Python/coreconfig.c10
-rw-r--r--Python/import.c4
6 files changed, 7 insertions, 24 deletions
diff --git a/Include/coreconfig.h b/Include/coreconfig.h
index 4401729..b279907 100644
--- a/Include/coreconfig.h
+++ b/Include/coreconfig.h
@@ -241,7 +241,7 @@ typedef struct {
valid
Set by the --check-hash-based-pycs command line option.
- If set to NULL (default), inherit _Py_CheckHashBasedPycsMode value.
+ The default value is "default".
See PEP 552 "Deterministic pycs" for more details. */
const char *_check_hash_pycs_mode;
@@ -286,6 +286,7 @@ typedef struct {
.buffered_stdio = -1, \
_PyCoreConfig_WINDOWS_INIT \
._install_importlib = 1, \
+ ._check_hash_pycs_mode = "default", \
._frozen = -1}
/* Note: _PyCoreConfig_INIT sets other fields to 0/NULL */
diff --git a/Include/internal/import.h b/Include/internal/import.h
deleted file mode 100644
index 4746e75..0000000
--- a/Include/internal/import.h
+++ /dev/null
@@ -1,6 +0,0 @@
-#ifndef Py_INTERNAL_IMPORT_H
-#define Py_INTERNAL_IMPORT_H
-
-extern const char *_Py_CheckHashBasedPycsMode;
-
-#endif
diff --git a/Modules/zipimport.c b/Modules/zipimport.c
index 8501366..57e7a13 100644
--- a/Modules/zipimport.c
+++ b/Modules/zipimport.c
@@ -1,5 +1,4 @@
#include "Python.h"
-#include "internal/import.h"
#include "internal/pystate.h"
#include "structmember.h"
#include "osdefs.h"
@@ -1352,12 +1351,13 @@ unmarshal_code(PyObject *pathname, PyObject *data, time_t mtime)
uint32_t flags = get_uint32(buf + 4);
if (flags != 0) {
+ _PyCoreConfig *config = &PyThreadState_GET()->interp->core_config;
// Hash-based pyc. We currently refuse to handle checked hash-based
// pycs. We could validate hash-based pycs against the source, but it
// seems likely that most people putting hash-based pycs in a zipfile
// will use unchecked ones.
- if (strcmp(_Py_CheckHashBasedPycsMode, "never") &&
- (flags != 0x1 || !strcmp(_Py_CheckHashBasedPycsMode, "always")))
+ if (strcmp(config->_check_hash_pycs_mode, "never") &&
+ (flags != 0x1 || !strcmp(config->_check_hash_pycs_mode, "always")))
Py_RETURN_NONE;
} else if ((mtime != 0 && !eq_mtime(get_uint32(buf + 8), mtime))) {
if (Py_VerboseFlag) {
diff --git a/Programs/_testembed.c b/Programs/_testembed.c
index 1c72580..3ed42d6 100644
--- a/Programs/_testembed.c
+++ b/Programs/_testembed.c
@@ -436,8 +436,6 @@ static int test_init_global_config(void)
/* FIXME: test Py_LegacyWindowsFSEncodingFlag */
/* FIXME: test Py_LegacyWindowsStdioFlag */
- /* _Py_CheckHashBasedPycsMode is not public, and so not tested */
-
Py_Initialize();
dump_config();
Py_Finalize();
diff --git a/Python/coreconfig.c b/Python/coreconfig.c
index 7dabe5f..829592c 100644
--- a/Python/coreconfig.c
+++ b/Python/coreconfig.c
@@ -1,5 +1,4 @@
#include "Python.h"
-#include "internal/import.h"
#include "internal/pystate.h"
@@ -52,7 +51,6 @@ int Py_IsolatedFlag = 0; /* for -I, isolate from user's env */
int Py_LegacyWindowsFSEncodingFlag = 0; /* Uses mbcs instead of utf-8 */
int Py_LegacyWindowsStdioFlag = 0; /* Uses FileIO instead of WindowsConsoleIO */
#endif
-const char *_Py_CheckHashBasedPycsMode = "default";
void
@@ -317,10 +315,6 @@ _PyCoreConfig_GetGlobalConfig(_PyCoreConfig *config)
COPY_NOT_FLAG(write_bytecode, Py_DontWriteBytecodeFlag);
COPY_NOT_FLAG(user_site_directory, Py_NoUserSiteDirectory);
- if (config->_check_hash_pycs_mode == NULL) {
- config->_check_hash_pycs_mode = _Py_CheckHashBasedPycsMode;
- }
-
#undef COPY_FLAG
#undef COPY_NOT_FLAG
}
@@ -359,10 +353,6 @@ _PyCoreConfig_SetGlobalConfig(const _PyCoreConfig *config)
COPY_NOT_FLAG(write_bytecode, Py_DontWriteBytecodeFlag);
COPY_NOT_FLAG(user_site_directory, Py_NoUserSiteDirectory);
- if (config->_check_hash_pycs_mode != NULL) {
- _Py_CheckHashBasedPycsMode = config->_check_hash_pycs_mode;
- }
-
/* Random or non-zero hash seed */
Py_HashRandomizationFlag = (config->use_hash_seed == 0 ||
config->hash_seed != 0);
diff --git a/Python/import.c b/Python/import.c
index de132a3..71d5ea1 100644
--- a/Python/import.c
+++ b/Python/import.c
@@ -5,7 +5,6 @@
#include "Python-ast.h"
#undef Yield /* undefine macro conflicting with winbase.h */
#include "internal/hash.h"
-#include "internal/import.h"
#include "internal/pystate.h"
#include "errcode.h"
#include "marshal.h"
@@ -2290,7 +2289,8 @@ PyInit__imp(void)
d = PyModule_GetDict(m);
if (d == NULL)
goto failure;
- PyObject *pyc_mode = PyUnicode_FromString(_Py_CheckHashBasedPycsMode);
+ _PyCoreConfig *config = &PyThreadState_GET()->interp->core_config;
+ PyObject *pyc_mode = PyUnicode_FromString(config->_check_hash_pycs_mode);
if (pyc_mode == NULL) {
goto failure;
}