bpo-36142: Exclude coreconfig.h from Py_LIMITED_API (GH-12111)
The whole coreconfig.h header is now excluded from Py_LIMITED_API. Move functions definitions into a new internal pycore_coreconfig.h header. * Move Include/coreconfig.h to Include/cpython/coreconfig.h * coreconfig.h header is now excluded from Py_LIMITED_API * Move functions to pycore_coreconfig.h
This commit is contained in:
parent
ab71f8b793
commit
f684d83d86
|
@ -128,7 +128,7 @@
|
||||||
#include "codecs.h"
|
#include "codecs.h"
|
||||||
#include "pyerrors.h"
|
#include "pyerrors.h"
|
||||||
|
|
||||||
#include "coreconfig.h"
|
#include "cpython/coreconfig.h"
|
||||||
#include "pystate.h"
|
#include "pystate.h"
|
||||||
#include "context.h"
|
#include "context.h"
|
||||||
|
|
||||||
|
|
|
@ -1,11 +1,12 @@
|
||||||
#ifndef Py_PYCORECONFIG_H
|
#ifndef Py_PYCORECONFIG_H
|
||||||
#define Py_PYCORECONFIG_H
|
#define Py_PYCORECONFIG_H
|
||||||
|
#ifndef Py_LIMITED_API
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/* _PyInitError */
|
||||||
|
|
||||||
#ifndef Py_LIMITED_API
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
const char *prefix;
|
const char *prefix;
|
||||||
const char *msg;
|
const char *msg;
|
||||||
|
@ -32,8 +33,7 @@ typedef struct {
|
||||||
#define _Py_INIT_FAILED(err) \
|
#define _Py_INIT_FAILED(err) \
|
||||||
(err.msg != NULL)
|
(err.msg != NULL)
|
||||||
|
|
||||||
#endif /* !defined(Py_LIMITED_API) */
|
/* _PyCoreConfig */
|
||||||
|
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
/* Install signal handlers? Yes by default. */
|
/* Install signal handlers? Yes by default. */
|
||||||
|
@ -339,32 +339,12 @@ typedef struct {
|
||||||
/* Note: _PyCoreConfig_INIT sets other fields to 0/NULL */
|
/* Note: _PyCoreConfig_INIT sets other fields to 0/NULL */
|
||||||
|
|
||||||
|
|
||||||
#ifndef Py_LIMITED_API
|
/* Functions used for testing */
|
||||||
PyAPI_FUNC(_PyInitError) _PyCoreConfig_Read(_PyCoreConfig *config);
|
|
||||||
PyAPI_FUNC(void) _PyCoreConfig_Clear(_PyCoreConfig *);
|
|
||||||
PyAPI_FUNC(int) _PyCoreConfig_Copy(
|
|
||||||
_PyCoreConfig *config,
|
|
||||||
const _PyCoreConfig *config2);
|
|
||||||
PyAPI_FUNC(_PyInitError) _PyCoreConfig_InitPathConfig(_PyCoreConfig *config);
|
|
||||||
PyAPI_FUNC(_PyInitError) _PyCoreConfig_SetPathConfig(
|
|
||||||
const _PyCoreConfig *config);
|
|
||||||
PyAPI_FUNC(void) _PyCoreConfig_GetGlobalConfig(_PyCoreConfig *config);
|
|
||||||
PyAPI_FUNC(void) _PyCoreConfig_SetGlobalConfig(const _PyCoreConfig *config);
|
|
||||||
PyAPI_FUNC(const char*) _PyCoreConfig_GetEnv(
|
|
||||||
const _PyCoreConfig *config,
|
|
||||||
const char *name);
|
|
||||||
PyAPI_FUNC(int) _PyCoreConfig_GetEnvDup(
|
|
||||||
const _PyCoreConfig *config,
|
|
||||||
wchar_t **dest,
|
|
||||||
wchar_t *wname,
|
|
||||||
char *name);
|
|
||||||
|
|
||||||
/* Used by _testcapi.get_global_config() and _testcapi.get_core_config() */
|
|
||||||
PyAPI_FUNC(PyObject *) _Py_GetGlobalVariablesAsDict(void);
|
PyAPI_FUNC(PyObject *) _Py_GetGlobalVariablesAsDict(void);
|
||||||
PyAPI_FUNC(PyObject *) _PyCoreConfig_AsDict(const _PyCoreConfig *config);
|
PyAPI_FUNC(PyObject *) _PyCoreConfig_AsDict(const _PyCoreConfig *config);
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
#endif /* !Py_LIMITED_API */
|
||||||
#endif /* !Py_PYCORECONFIG_H */
|
#endif /* !Py_PYCORECONFIG_H */
|
|
@ -6,6 +6,8 @@
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#include "cpython/coreconfig.h"
|
||||||
|
|
||||||
/* Placeholders while working on the new configuration API
|
/* Placeholders while working on the new configuration API
|
||||||
*
|
*
|
||||||
* See PEP 432 for final anticipated contents
|
* See PEP 432 for final anticipated contents
|
||||||
|
|
|
@ -0,0 +1,33 @@
|
||||||
|
#ifndef Py_INTERNAL_CORECONFIG_H
|
||||||
|
#define Py_INTERNAL_CORECONFIG_H
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if !defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_BUILTIN)
|
||||||
|
# error "this header requires Py_BUILD_CORE or Py_BUILD_CORE_BUILTIN defined"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
PyAPI_FUNC(_PyInitError) _PyCoreConfig_Read(_PyCoreConfig *config);
|
||||||
|
PyAPI_FUNC(void) _PyCoreConfig_Clear(_PyCoreConfig *);
|
||||||
|
PyAPI_FUNC(int) _PyCoreConfig_Copy(
|
||||||
|
_PyCoreConfig *config,
|
||||||
|
const _PyCoreConfig *config2);
|
||||||
|
PyAPI_FUNC(_PyInitError) _PyCoreConfig_InitPathConfig(_PyCoreConfig *config);
|
||||||
|
PyAPI_FUNC(_PyInitError) _PyCoreConfig_SetPathConfig(
|
||||||
|
const _PyCoreConfig *config);
|
||||||
|
PyAPI_FUNC(void) _PyCoreConfig_GetGlobalConfig(_PyCoreConfig *config);
|
||||||
|
PyAPI_FUNC(void) _PyCoreConfig_SetGlobalConfig(const _PyCoreConfig *config);
|
||||||
|
PyAPI_FUNC(const char*) _PyCoreConfig_GetEnv(
|
||||||
|
const _PyCoreConfig *config,
|
||||||
|
const char *name);
|
||||||
|
PyAPI_FUNC(int) _PyCoreConfig_GetEnvDup(
|
||||||
|
const _PyCoreConfig *config,
|
||||||
|
wchar_t **dest,
|
||||||
|
wchar_t *wname,
|
||||||
|
char *name);
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#endif /* !Py_INTERNAL_CORECONFIG_H */
|
|
@ -8,7 +8,6 @@ extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "pythread.h"
|
#include "pythread.h"
|
||||||
#include "coreconfig.h"
|
|
||||||
|
|
||||||
/* This limitation is for performance and simplicity. If needed it can be
|
/* This limitation is for performance and simplicity. If needed it can be
|
||||||
removed (with effort). */
|
removed (with effort). */
|
||||||
|
|
|
@ -994,7 +994,6 @@ PYTHON_HEADERS= \
|
||||||
$(srcdir)/Include/codecs.h \
|
$(srcdir)/Include/codecs.h \
|
||||||
$(srcdir)/Include/compile.h \
|
$(srcdir)/Include/compile.h \
|
||||||
$(srcdir)/Include/complexobject.h \
|
$(srcdir)/Include/complexobject.h \
|
||||||
$(srcdir)/Include/coreconfig.h \
|
|
||||||
$(srcdir)/Include/descrobject.h \
|
$(srcdir)/Include/descrobject.h \
|
||||||
$(srcdir)/Include/dictobject.h \
|
$(srcdir)/Include/dictobject.h \
|
||||||
$(srcdir)/Include/dtoa.h \
|
$(srcdir)/Include/dtoa.h \
|
||||||
|
@ -1071,6 +1070,7 @@ PYTHON_HEADERS= \
|
||||||
$(srcdir)/Include/Python-ast.h \
|
$(srcdir)/Include/Python-ast.h \
|
||||||
\
|
\
|
||||||
$(srcdir)/Include/cpython/abstract.h \
|
$(srcdir)/Include/cpython/abstract.h \
|
||||||
|
$(srcdir)/Include/cpython/coreconfig.h \
|
||||||
$(srcdir)/Include/cpython/dictobject.h \
|
$(srcdir)/Include/cpython/dictobject.h \
|
||||||
$(srcdir)/Include/cpython/object.h \
|
$(srcdir)/Include/cpython/object.h \
|
||||||
$(srcdir)/Include/cpython/objimpl.h \
|
$(srcdir)/Include/cpython/objimpl.h \
|
||||||
|
@ -1085,6 +1085,7 @@ PYTHON_HEADERS= \
|
||||||
$(srcdir)/Include/internal/pycore_ceval.h \
|
$(srcdir)/Include/internal/pycore_ceval.h \
|
||||||
$(srcdir)/Include/internal/pycore_condvar.h \
|
$(srcdir)/Include/internal/pycore_condvar.h \
|
||||||
$(srcdir)/Include/internal/pycore_context.h \
|
$(srcdir)/Include/internal/pycore_context.h \
|
||||||
|
$(srcdir)/Include/internal/pycore_coreconfig.h \
|
||||||
$(srcdir)/Include/internal/pycore_fileutils.h \
|
$(srcdir)/Include/internal/pycore_fileutils.h \
|
||||||
$(srcdir)/Include/internal/pycore_getopt.h \
|
$(srcdir)/Include/internal/pycore_getopt.h \
|
||||||
$(srcdir)/Include/internal/pycore_gil.h \
|
$(srcdir)/Include/internal/pycore_gil.h \
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
The whole coreconfig.h header is now excluded from Py_LIMITED_API. Move
|
||||||
|
functions definitions into a new internal pycore_coreconfig.h header.
|
|
@ -2,6 +2,7 @@
|
||||||
|
|
||||||
#include "Python.h"
|
#include "Python.h"
|
||||||
#include "osdefs.h"
|
#include "osdefs.h"
|
||||||
|
#include "pycore_coreconfig.h"
|
||||||
#include "pycore_getopt.h"
|
#include "pycore_getopt.h"
|
||||||
#include "pycore_pathconfig.h"
|
#include "pycore_pathconfig.h"
|
||||||
#include "pycore_pylifecycle.h"
|
#include "pycore_pylifecycle.h"
|
||||||
|
|
|
@ -110,8 +110,8 @@
|
||||||
<ClInclude Include="..\Include\compile.h" />
|
<ClInclude Include="..\Include\compile.h" />
|
||||||
<ClInclude Include="..\Include\complexobject.h" />
|
<ClInclude Include="..\Include\complexobject.h" />
|
||||||
<ClInclude Include="..\Include\context.h" />
|
<ClInclude Include="..\Include\context.h" />
|
||||||
<ClInclude Include="..\Include\coreconfig.h" />
|
|
||||||
<ClInclude Include="..\Include\cpython\abstract.h" />
|
<ClInclude Include="..\Include\cpython\abstract.h" />
|
||||||
|
<ClInclude Include="..\Include\cpython\coreconfig.h" />
|
||||||
<ClInclude Include="..\Include\cpython\dictobject.h" />
|
<ClInclude Include="..\Include\cpython\dictobject.h" />
|
||||||
<ClInclude Include="..\Include\cpython\object.h" />
|
<ClInclude Include="..\Include\cpython\object.h" />
|
||||||
<ClInclude Include="..\Include\cpython\objimpl.h" />
|
<ClInclude Include="..\Include\cpython\objimpl.h" />
|
||||||
|
@ -141,6 +141,7 @@
|
||||||
<ClInclude Include="..\Include\internal\pycore_ceval.h" />
|
<ClInclude Include="..\Include\internal\pycore_ceval.h" />
|
||||||
<ClInclude Include="..\Include\internal\pycore_condvar.h" />
|
<ClInclude Include="..\Include\internal\pycore_condvar.h" />
|
||||||
<ClInclude Include="..\Include\internal\pycore_context.h" />
|
<ClInclude Include="..\Include\internal\pycore_context.h" />
|
||||||
|
<ClInclude Include="..\Include\internal\pycore_coreconfig.h" />
|
||||||
<ClInclude Include="..\Include\internal\pycore_fileutils.h" />
|
<ClInclude Include="..\Include\internal\pycore_fileutils.h" />
|
||||||
<ClInclude Include="..\Include\internal\pycore_getopt.h" />
|
<ClInclude Include="..\Include\internal\pycore_getopt.h" />
|
||||||
<ClInclude Include="..\Include\internal\pycore_gil.h" />
|
<ClInclude Include="..\Include\internal\pycore_gil.h" />
|
||||||
|
|
|
@ -81,10 +81,10 @@
|
||||||
<ClInclude Include="..\Include\context.h">
|
<ClInclude Include="..\Include\context.h">
|
||||||
<Filter>Include</Filter>
|
<Filter>Include</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\Include\coreconfig.h">
|
<ClInclude Include="..\Include\cpython\abstract.h">
|
||||||
<Filter>Include</Filter>
|
<Filter>Include</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\Include\cpython\abstract.h">
|
<ClInclude Include="..\Include\cpython\coreconfig.h">
|
||||||
<Filter>Include</Filter>
|
<Filter>Include</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\Include\cpython\dictobject.h">
|
<ClInclude Include="..\Include\cpython\dictobject.h">
|
||||||
|
@ -174,6 +174,9 @@
|
||||||
<ClInclude Include="..\Include\internal\pycore_context.h">
|
<ClInclude Include="..\Include\internal\pycore_context.h">
|
||||||
<Filter>Include</Filter>
|
<Filter>Include</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\Include\internal\pycore_coreconfig.h">
|
||||||
|
<Filter>Include</Filter>
|
||||||
|
</ClInclude>
|
||||||
<ClInclude Include="..\Include\internal\pycore_fileutils.h">
|
<ClInclude Include="..\Include\internal\pycore_fileutils.h">
|
||||||
<Filter>Include</Filter>
|
<Filter>Include</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
#include "Python.h"
|
#include "Python.h"
|
||||||
|
#include "pycore_coreconfig.h"
|
||||||
#include "pycore_fileutils.h"
|
#include "pycore_fileutils.h"
|
||||||
#include "pycore_pylifecycle.h"
|
#include "pycore_pylifecycle.h"
|
||||||
#include "pycore_pymem.h"
|
#include "pycore_pymem.h"
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
|
|
||||||
#include "Python.h"
|
#include "Python.h"
|
||||||
#include "osdefs.h"
|
#include "osdefs.h"
|
||||||
|
#include "pycore_coreconfig.h"
|
||||||
#include "pycore_fileutils.h"
|
#include "pycore_fileutils.h"
|
||||||
#include "pycore_pathconfig.h"
|
#include "pycore_pathconfig.h"
|
||||||
#include "pycore_pymem.h"
|
#include "pycore_pymem.h"
|
||||||
|
|
|
@ -4,6 +4,7 @@
|
||||||
|
|
||||||
#include "Python-ast.h"
|
#include "Python-ast.h"
|
||||||
#undef Yield /* undefine macro conflicting with <winbase.h> */
|
#undef Yield /* undefine macro conflicting with <winbase.h> */
|
||||||
|
#include "pycore_coreconfig.h"
|
||||||
#include "pycore_context.h"
|
#include "pycore_context.h"
|
||||||
#include "pycore_fileutils.h"
|
#include "pycore_fileutils.h"
|
||||||
#include "pycore_hamt.h"
|
#include "pycore_hamt.h"
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
/* Thread and interpreter state structures and their interfaces */
|
/* Thread and interpreter state structures and their interfaces */
|
||||||
|
|
||||||
#include "Python.h"
|
#include "Python.h"
|
||||||
|
#include "pycore_coreconfig.h"
|
||||||
#include "pycore_pymem.h"
|
#include "pycore_pymem.h"
|
||||||
#include "pycore_pystate.h"
|
#include "pycore_pystate.h"
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue