mirror of https://github.com/python/cpython
bpo-35081: And pycore_lifecycle.h and pycore_pathconfig.h (GH-10273)
* And pycore_lifecycle.h and pycore_pathconfig.h headers to Include/internal/ * Move Py_BUILD_CORE specific code from coreconfig.h and pylifecycle.h to pycore_pathconfig.h and pycore_lifecycle.h * Move _Py_wstrlist_XXX() definitions and _PyPathConfig code from pycore_state.h to pycore_pathconfig.h * Move "Init" and "Fini" function definitions from pylifecycle.c to pycore_lifecycle.h.
This commit is contained in:
parent
e281f7d80c
commit
a1c249c405
|
@ -361,17 +361,6 @@ PyAPI_FUNC(int) _PyCoreConfig_GetEnvDup(
|
|||
#endif
|
||||
|
||||
|
||||
#ifdef Py_BUILD_CORE
|
||||
PyAPI_FUNC(int) _Py_SetFileSystemEncoding(
|
||||
const char *encoding,
|
||||
const char *errors);
|
||||
PyAPI_FUNC(void) _Py_ClearFileSystemEncoding(void);
|
||||
#endif
|
||||
|
||||
#ifndef Py_LIMITED_API
|
||||
PyAPI_FUNC(PyObject*) _Py_wstrlist_as_pylist(int len, wchar_t **list);
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
|
|
@ -0,0 +1,50 @@
|
|||
#ifndef Py_INTERNAL_LIFECYCLE_H
|
||||
#define Py_INTERNAL_LIFECYCLE_H
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#ifndef Py_BUILD_CORE
|
||||
# error "Py_BUILD_CORE must be defined to include this header"
|
||||
#endif
|
||||
|
||||
PyAPI_FUNC(int) _Py_UnixMain(int argc, char **argv);
|
||||
|
||||
PyAPI_FUNC(int) _Py_SetFileSystemEncoding(
|
||||
const char *encoding,
|
||||
const char *errors);
|
||||
PyAPI_FUNC(void) _Py_ClearFileSystemEncoding(void);
|
||||
|
||||
PyAPI_FUNC(void) _Py_ClearStandardStreamEncoding(void);
|
||||
|
||||
PyAPI_FUNC(int) _Py_IsLocaleCoercionTarget(const char *ctype_loc);
|
||||
|
||||
extern int _PyUnicode_Init(void);
|
||||
extern int _PyStructSequence_Init(void);
|
||||
extern int _PyLong_Init(void);
|
||||
extern _PyInitError _PyFaulthandler_Init(int enable);
|
||||
extern int _PyTraceMalloc_Init(int enable);
|
||||
|
||||
extern void _Py_ReadyTypes(void);
|
||||
|
||||
PyAPI_FUNC(void) _PyExc_Fini(void);
|
||||
PyAPI_FUNC(void) _PyImport_Fini(void);
|
||||
PyAPI_FUNC(void) _PyImport_Fini2(void);
|
||||
PyAPI_FUNC(void) _PyGC_Fini(void);
|
||||
PyAPI_FUNC(void) _PyType_Fini(void);
|
||||
PyAPI_FUNC(void) _Py_HashRandomization_Fini(void);
|
||||
extern void _PyUnicode_Fini(void);
|
||||
extern void PyLong_Fini(void);
|
||||
extern void _PyFaulthandler_Fini(void);
|
||||
extern void _PyHash_Fini(void);
|
||||
extern int _PyTraceMalloc_Fini(void);
|
||||
|
||||
extern void _PyGILState_Init(PyInterpreterState *, PyThreadState *);
|
||||
extern void _PyGILState_Fini(void);
|
||||
|
||||
PyAPI_FUNC(void) _PyGC_DumpShutdownStats(void);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif /* !Py_INTERNAL_LIFECYCLE_H */
|
|
@ -0,0 +1,68 @@
|
|||
#ifndef Py_INTERNAL_PATHCONFIG_H
|
||||
#define Py_INTERNAL_PATHCONFIG_H
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
PyAPI_FUNC(void) _Py_wstrlist_clear(
|
||||
int len,
|
||||
wchar_t **list);
|
||||
PyAPI_FUNC(wchar_t**) _Py_wstrlist_copy(
|
||||
int len,
|
||||
wchar_t **list);
|
||||
PyAPI_FUNC(_PyInitError) _Py_wstrlist_append(
|
||||
int *len,
|
||||
wchar_t ***list,
|
||||
const wchar_t *str);
|
||||
PyAPI_FUNC(PyObject*) _Py_wstrlist_as_pylist(
|
||||
int len,
|
||||
wchar_t **list);
|
||||
|
||||
typedef struct _PyPathConfig {
|
||||
/* Full path to the Python program */
|
||||
wchar_t *program_full_path;
|
||||
wchar_t *prefix;
|
||||
#ifdef MS_WINDOWS
|
||||
wchar_t *dll_path;
|
||||
#else
|
||||
wchar_t *exec_prefix;
|
||||
#endif
|
||||
/* Set by Py_SetPath(), or computed by _PyPathConfig_Init() */
|
||||
wchar_t *module_search_path;
|
||||
/* Python program name */
|
||||
wchar_t *program_name;
|
||||
/* Set by Py_SetPythonHome() or PYTHONHOME environment variable */
|
||||
wchar_t *home;
|
||||
/* isolated and site_import are used to set Py_IsolatedFlag and
|
||||
Py_NoSiteFlag flags on Windows in read_pth_file(). These fields
|
||||
are ignored when their value are equal to -1 (unset). */
|
||||
int isolated;
|
||||
int site_import;
|
||||
} _PyPathConfig;
|
||||
|
||||
#define _PyPathConfig_INIT \
|
||||
{.module_search_path = NULL, \
|
||||
.isolated = -1, \
|
||||
.site_import = -1}
|
||||
/* Note: _PyPathConfig_INIT sets other fields to 0/NULL */
|
||||
|
||||
PyAPI_DATA(_PyPathConfig) _Py_path_config;
|
||||
|
||||
PyAPI_FUNC(void) _PyPathConfig_ClearGlobal(void);
|
||||
PyAPI_FUNC(_PyInitError) _PyPathConfig_SetGlobal(
|
||||
const struct _PyPathConfig *config);
|
||||
|
||||
PyAPI_FUNC(_PyInitError) _PyPathConfig_Calculate_impl(
|
||||
_PyPathConfig *config,
|
||||
const _PyCoreConfig *core_config);
|
||||
PyAPI_FUNC(PyObject*) _PyPathConfig_ComputeArgv0(int argc, wchar_t **argv);
|
||||
PyAPI_FUNC(int) _Py_FindEnvConfigValue(
|
||||
FILE *env_file,
|
||||
const wchar_t *key,
|
||||
wchar_t *value,
|
||||
size_t value_size);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif /* !Py_INTERNAL_PATHCONFIG_H */
|
|
@ -11,8 +11,9 @@ extern "C" {
|
|||
#include "pystate.h"
|
||||
#include "pythread.h"
|
||||
|
||||
#include "pycore_mem.h"
|
||||
#include "pycore_ceval.h"
|
||||
#include "pycore_mem.h"
|
||||
#include "pycore_pathconfig.h"
|
||||
#include "pycore_warnings.h"
|
||||
|
||||
|
||||
|
@ -40,52 +41,6 @@ struct _gilstate_runtime_state {
|
|||
#define _PyGILState_check_enabled _PyRuntime.gilstate.check_enabled
|
||||
|
||||
|
||||
typedef struct _PyPathConfig {
|
||||
/* Full path to the Python program */
|
||||
wchar_t *program_full_path;
|
||||
wchar_t *prefix;
|
||||
#ifdef MS_WINDOWS
|
||||
wchar_t *dll_path;
|
||||
#else
|
||||
wchar_t *exec_prefix;
|
||||
#endif
|
||||
/* Set by Py_SetPath(), or computed by _PyPathConfig_Init() */
|
||||
wchar_t *module_search_path;
|
||||
/* Python program name */
|
||||
wchar_t *program_name;
|
||||
/* Set by Py_SetPythonHome() or PYTHONHOME environment variable */
|
||||
wchar_t *home;
|
||||
/* isolated and site_import are used to set Py_IsolatedFlag and
|
||||
Py_NoSiteFlag flags on Windows in read_pth_file(). These fields
|
||||
are ignored when their value are equal to -1 (unset). */
|
||||
int isolated;
|
||||
int site_import;
|
||||
} _PyPathConfig;
|
||||
|
||||
#define _PyPathConfig_INIT \
|
||||
{.module_search_path = NULL, \
|
||||
.isolated = -1, \
|
||||
.site_import = -1}
|
||||
/* Note: _PyPathConfig_INIT sets other fields to 0/NULL */
|
||||
|
||||
PyAPI_DATA(_PyPathConfig) _Py_path_config;
|
||||
|
||||
PyAPI_FUNC(_PyInitError) _PyPathConfig_Calculate_impl(
|
||||
_PyPathConfig *config,
|
||||
const _PyCoreConfig *core_config);
|
||||
PyAPI_FUNC(void) _PyPathConfig_ClearGlobal(void);
|
||||
|
||||
PyAPI_FUNC(void) _Py_wstrlist_clear(
|
||||
int len,
|
||||
wchar_t **list);
|
||||
PyAPI_FUNC(wchar_t**) _Py_wstrlist_copy(
|
||||
int len,
|
||||
wchar_t **list);
|
||||
PyAPI_FUNC(_PyInitError) _Py_wstrlist_append(
|
||||
int *len,
|
||||
wchar_t ***list,
|
||||
const wchar_t *str);
|
||||
|
||||
/* interpreter state */
|
||||
|
||||
PyAPI_FUNC(PyInterpreterState *) _PyInterpreterState_LookUpID(PY_INT64_T);
|
||||
|
|
|
@ -20,9 +20,6 @@ PyAPI_FUNC(wchar_t *) Py_GetPythonHome(void);
|
|||
PyAPI_FUNC(int) Py_SetStandardStreamEncoding(const char *encoding,
|
||||
const char *errors);
|
||||
#endif
|
||||
#ifdef Py_BUILD_CORE
|
||||
PyAPI_FUNC(void) _Py_ClearStandardStreamEncoding(void);
|
||||
#endif
|
||||
|
||||
|
||||
#ifndef Py_LIMITED_API
|
||||
|
@ -82,27 +79,12 @@ PyAPI_FUNC(int) Py_FdIsInteractive(FILE *, const char *);
|
|||
|
||||
/* Bootstrap __main__ (defined in Modules/main.c) */
|
||||
PyAPI_FUNC(int) Py_Main(int argc, wchar_t **argv);
|
||||
#ifdef Py_BUILD_CORE
|
||||
PyAPI_FUNC(int) _Py_UnixMain(int argc, char **argv);
|
||||
#endif
|
||||
|
||||
/* In getpath.c */
|
||||
PyAPI_FUNC(wchar_t *) Py_GetProgramFullPath(void);
|
||||
PyAPI_FUNC(wchar_t *) Py_GetPrefix(void);
|
||||
PyAPI_FUNC(wchar_t *) Py_GetExecPrefix(void);
|
||||
PyAPI_FUNC(wchar_t *) Py_GetPath(void);
|
||||
#ifdef Py_BUILD_CORE
|
||||
struct _PyPathConfig;
|
||||
|
||||
PyAPI_FUNC(_PyInitError) _PyPathConfig_SetGlobal(
|
||||
const struct _PyPathConfig *config);
|
||||
PyAPI_FUNC(PyObject*) _PyPathConfig_ComputeArgv0(int argc, wchar_t **argv);
|
||||
PyAPI_FUNC(int) _Py_FindEnvConfigValue(
|
||||
FILE *env_file,
|
||||
const wchar_t *key,
|
||||
wchar_t *value,
|
||||
size_t value_size);
|
||||
#endif
|
||||
PyAPI_FUNC(void) Py_SetPath(const wchar_t *);
|
||||
#ifdef MS_WINDOWS
|
||||
int _Py_CheckPython3(void);
|
||||
|
@ -134,16 +116,6 @@ PyAPI_FUNC(_PyInitError) _Py_HashRandomization_Init(const _PyCoreConfig *);
|
|||
|
||||
/* Various internal finalizers */
|
||||
|
||||
#ifdef Py_BUILD_CORE
|
||||
PyAPI_FUNC(void) _PyExc_Fini(void);
|
||||
PyAPI_FUNC(void) _PyImport_Fini(void);
|
||||
PyAPI_FUNC(void) _PyImport_Fini2(void);
|
||||
PyAPI_FUNC(void) _PyGC_DumpShutdownStats(void);
|
||||
PyAPI_FUNC(void) _PyGC_Fini(void);
|
||||
PyAPI_FUNC(void) _PyType_Fini(void);
|
||||
PyAPI_FUNC(void) _Py_HashRandomization_Fini(void);
|
||||
#endif /* Py_BUILD_CORE */
|
||||
|
||||
#ifndef Py_LIMITED_API
|
||||
PyAPI_FUNC(void) PyMethod_Fini(void);
|
||||
PyAPI_FUNC(void) PyFrame_Fini(void);
|
||||
|
@ -179,9 +151,6 @@ PyAPI_FUNC(void) _Py_CoerceLegacyLocale(int warn);
|
|||
PyAPI_FUNC(int) _Py_LegacyLocaleDetected(void);
|
||||
PyAPI_FUNC(char *) _Py_SetLocaleFromEnv(int category);
|
||||
#endif
|
||||
#ifdef Py_BUILD_CORE
|
||||
PyAPI_FUNC(int) _Py_IsLocaleCoercionTarget(const char *ctype_loc);
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
|
|
@ -1030,7 +1030,9 @@ PYTHON_HEADERS= \
|
|||
$(srcdir)/Include/internal/pycore_context.h \
|
||||
$(srcdir)/Include/internal/pycore_getopt.h \
|
||||
$(srcdir)/Include/internal/pycore_gil.h \
|
||||
$(srcdir)/Include/internal/pycore_lifecycle.h \
|
||||
$(srcdir)/Include/internal/pycore_mem.h \
|
||||
$(srcdir)/Include/internal/pycore_pathconfig.h \
|
||||
$(srcdir)/Include/internal/pycore_state.h \
|
||||
$(srcdir)/Include/internal/pycore_warnings.h \
|
||||
$(DTRACE_HEADERS)
|
||||
|
|
|
@ -8,10 +8,12 @@
|
|||
#define PY_SSIZE_T_CLEAN
|
||||
|
||||
#include "Python.h"
|
||||
#include <float.h>
|
||||
#include "structmember.h"
|
||||
#include "datetime.h"
|
||||
#include "marshal.h"
|
||||
#include "pycore_pathconfig.h"
|
||||
#include "pythread.h"
|
||||
#include "structmember.h"
|
||||
#include <float.h>
|
||||
#include <signal.h>
|
||||
|
||||
#ifdef MS_WINDOWS
|
||||
|
@ -22,7 +24,6 @@
|
|||
#include <sys/wait.h> /* For W_STOPCODE */
|
||||
#endif
|
||||
|
||||
#include "pythread.h"
|
||||
static PyObject *TestError; /* set to exception object in init */
|
||||
|
||||
/* Raise TestError with test_name + ": " + msg, and return NULL. */
|
||||
|
|
|
@ -1,8 +1,9 @@
|
|||
/* Return the initial module search path. */
|
||||
|
||||
#include "Python.h"
|
||||
#include "pycore_state.h"
|
||||
#include "osdefs.h"
|
||||
#include "pycore_pathconfig.h"
|
||||
#include "pycore_state.h"
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <string.h>
|
||||
|
|
|
@ -2,8 +2,10 @@
|
|||
|
||||
#include "Python.h"
|
||||
#include "osdefs.h"
|
||||
#include "pycore_mem.h"
|
||||
#include "pycore_getopt.h"
|
||||
#include "pycore_lifecycle.h"
|
||||
#include "pycore_mem.h"
|
||||
#include "pycore_pathconfig.h"
|
||||
#include "pycore_state.h"
|
||||
|
||||
#include <locale.h>
|
||||
|
|
|
@ -119,7 +119,9 @@
|
|||
<ClInclude Include="..\Include\internal\pycore_getopt.h" />
|
||||
<ClInclude Include="..\Include\internal\pycore_gil.h" />
|
||||
<ClInclude Include="..\Include\internal\pycore_hamt.h" />
|
||||
<ClInclude Include="..\Include\internal\pycore_lifecycle.h" />
|
||||
<ClInclude Include="..\Include\internal\pycore_mem.h" />
|
||||
<ClInclude Include="..\Include\internal\pycore_pathconfig.h" />
|
||||
<ClInclude Include="..\Include\internal\pycore_state.h" />
|
||||
<ClInclude Include="..\Include\internal\pycore_warnings.h" />
|
||||
<ClInclude Include="..\Include\intrcheck.h" />
|
||||
|
|
|
@ -156,9 +156,15 @@
|
|||
<ClInclude Include="..\Include\internal\pycore_hamt.h">
|
||||
<Filter>Include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\Include\internal\pycore_lifecycle.h">
|
||||
<Filter>Include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\Include\internal\pycore_mem.h">
|
||||
<Filter>Include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\Include\internal\pycore_pathconfig.h">
|
||||
<Filter>Include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\Include\internal\pycore_state.h">
|
||||
<Filter>Include</Filter>
|
||||
</ClInclude>
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
/* Minimal main program -- everything is loaded from the library */
|
||||
|
||||
#include "Python.h"
|
||||
#include "pycore_lifecycle.h"
|
||||
|
||||
#ifdef MS_WINDOWS
|
||||
int
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
#include "Python.h"
|
||||
#include "pycore_lifecycle.h"
|
||||
#include "pycore_mem.h"
|
||||
#include "pycore_pathconfig.h"
|
||||
#include "pycore_state.h"
|
||||
#include <locale.h>
|
||||
#ifdef HAVE_LANGINFO_H
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
#include "Python-ast.h"
|
||||
#undef Yield /* undefine macro conflicting with winbase.h */
|
||||
#include "pycore_hash.h"
|
||||
#include "pycore_lifecycle.h"
|
||||
#include "pycore_mem.h"
|
||||
#include "pycore_state.h"
|
||||
#include "errcode.h"
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
#include "Python.h"
|
||||
#include "osdefs.h"
|
||||
#include "pycore_mem.h"
|
||||
#include "pycore_pathconfig.h"
|
||||
#include "pycore_state.h"
|
||||
#include <wchar.h>
|
||||
|
||||
|
|
|
@ -6,7 +6,9 @@
|
|||
#undef Yield /* undefine macro conflicting with winbase.h */
|
||||
#include "pycore_context.h"
|
||||
#include "pycore_hamt.h"
|
||||
#include "pycore_lifecycle.h"
|
||||
#include "pycore_mem.h"
|
||||
#include "pycore_pathconfig.h"
|
||||
#include "pycore_state.h"
|
||||
#include "grammar.h"
|
||||
#include "node.h"
|
||||
|
@ -62,20 +64,6 @@ static _PyInitError initsigs(void);
|
|||
static void call_py_exitfuncs(PyInterpreterState *);
|
||||
static void wait_for_thread_shutdown(void);
|
||||
static void call_ll_exitfuncs(void);
|
||||
extern int _PyUnicode_Init(void);
|
||||
extern int _PyStructSequence_Init(void);
|
||||
extern void _PyUnicode_Fini(void);
|
||||
extern int _PyLong_Init(void);
|
||||
extern void PyLong_Fini(void);
|
||||
extern _PyInitError _PyFaulthandler_Init(int enable);
|
||||
extern void _PyFaulthandler_Fini(void);
|
||||
extern void _PyHash_Fini(void);
|
||||
extern int _PyTraceMalloc_Init(int enable);
|
||||
extern int _PyTraceMalloc_Fini(void);
|
||||
extern void _Py_ReadyTypes(void);
|
||||
|
||||
extern void _PyGILState_Init(PyInterpreterState *, PyThreadState *);
|
||||
extern void _PyGILState_Fini(void);
|
||||
|
||||
_PyRuntimeState _PyRuntime = _PyRuntimeState_INIT;
|
||||
|
||||
|
|
|
@ -15,10 +15,12 @@ Data members:
|
|||
*/
|
||||
|
||||
#include "Python.h"
|
||||
#include "pycore_mem.h"
|
||||
#include "pycore_state.h"
|
||||
#include "code.h"
|
||||
#include "frameobject.h"
|
||||
#include "pycore_lifecycle.h"
|
||||
#include "pycore_mem.h"
|
||||
#include "pycore_pathconfig.h"
|
||||
#include "pycore_state.h"
|
||||
#include "pythread.h"
|
||||
|
||||
#include "osdefs.h"
|
||||
|
|
Loading…
Reference in New Issue