Needed by freeze_importlib. */
int _install_importlib;
- /* Value of the --check-hash-based-pycs configure option. Valid values:
+ /* Value of the --check-hash-based-pycs command line option:
- "default" means the 'check_source' flag in hash-based pycs
determines invalidation
- "never" causes the interpreter to always assume hash-based pycs are
valid
- Set by the --check-hash-based-pycs command line option.
The default value is "default".
See PEP 552 "Deterministic pycs" for more details. */
- const char *_check_hash_pycs_mode;
+ wchar_t *check_hash_pycs_mode;
/* If greater than 0, suppress _PyPathConfig_Calculate() warnings.
.user_site_directory = -1, \
.buffered_stdio = -1, \
._install_importlib = 1, \
- ._check_hash_pycs_mode = "default", \
+ .check_hash_pycs_mode = NULL, \
._frozen = -1, \
._init_main = 1}
/* Note: _PyCoreConfig_INIT sets other fields to 0/NULL */
'run_filename': None,
'_install_importlib': 1,
- '_check_hash_pycs_mode': 'default',
+ 'check_hash_pycs_mode': 'default',
'_frozen': 0,
'_init_main': 1,
}
'user_site_directory': 0,
'faulthandler': 1,
- '_check_hash_pycs_mode': 'always',
+ 'check_hash_pycs_mode': 'always',
'_frozen': 1,
}
self.check_config("init_from_config", config, preconfig)
CLEAR(config->run_command);
CLEAR(config->run_module);
CLEAR(config->run_filename);
+ CLEAR(config->check_hash_pycs_mode);
#undef CLEAR
}
COPY_WSTR_ATTR(run_command);
COPY_WSTR_ATTR(run_module);
COPY_WSTR_ATTR(run_filename);
- COPY_ATTR(_check_hash_pycs_mode);
+ COPY_WSTR_ATTR(check_hash_pycs_mode);
COPY_ATTR(_frozen);
COPY_ATTR(_init_main);
SET_ITEM_WSTR(run_module);
SET_ITEM_WSTR(run_filename);
SET_ITEM_INT(_install_importlib);
- SET_ITEM_STR(_check_hash_pycs_mode);
+ SET_ITEM_WSTR(check_hash_pycs_mode);
SET_ITEM_INT(_frozen);
SET_ITEM_INT(_init_main);
config_parse_cmdline(_PyCoreConfig *config, _PyPreCmdline *precmdline,
_PyWstrList *warnoptions)
{
+ _PyInitError err;
const _PyWstrList *argv = &precmdline->argv;
int print_version = 0;
case 0:
// Handle long option.
assert(longindex == 0); // Only one long option now.
- if (!wcscmp(_PyOS_optarg, L"always")) {
- config->_check_hash_pycs_mode = "always";
- } else if (!wcscmp(_PyOS_optarg, L"never")) {
- config->_check_hash_pycs_mode = "never";
- } else if (!wcscmp(_PyOS_optarg, L"default")) {
- config->_check_hash_pycs_mode = "default";
+ if (wcscmp(_PyOS_optarg, L"always") == 0
+ || wcscmp(_PyOS_optarg, L"never") == 0
+ || wcscmp(_PyOS_optarg, L"default") == 0)
+ {
+ err = _PyCoreConfig_SetWideString(&config->check_hash_pycs_mode,
+ _PyOS_optarg);
+ if (_Py_INIT_FAILED(err)) {
+ return err;
+ }
} else {
fprintf(stderr, "--check-hash-based-pycs must be one of "
"'default', 'always', or 'never'\n");
goto done;
}
+ if (config->check_hash_pycs_mode == NULL) {
+ err = _PyCoreConfig_SetWideString(&config->check_hash_pycs_mode, L"default");
+ if (_Py_INIT_FAILED(err)) {
+ goto done;
+ }
+ }
+
err = _Py_INIT_OK();
done:
#ifdef MS_WINDOWS
assert(config->legacy_windows_stdio >= 0);
#endif
- assert(config->_check_hash_pycs_mode != NULL);
+ assert(config->check_hash_pycs_mode != NULL);
assert(config->_install_importlib >= 0);
assert(config->_frozen >= 0);