]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
bpo-36142: Exclude coreconfig.h from Py_LIMITED_API (GH-12111)
authorVictor Stinner <vstinner@redhat.com>
Fri, 1 Mar 2019 02:44:13 +0000 (03:44 +0100)
committerGitHub <noreply@github.com>
Fri, 1 Mar 2019 02:44:13 +0000 (03:44 +0100)
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

14 files changed:
Include/Python.h
Include/cpython/coreconfig.h [moved from Include/coreconfig.h with 93% similarity]
Include/cpython/pystate.h
Include/internal/pycore_coreconfig.h [new file with mode: 0644]
Include/pystate.h
Makefile.pre.in
Misc/NEWS.d/next/C API/2019-03-01-03-23-48.bpo-36142.7F6wJd.rst [new file with mode: 0644]
Modules/main.c
PCbuild/pythoncore.vcxproj
PCbuild/pythoncore.vcxproj.filters
Python/coreconfig.c
Python/pathconfig.c
Python/pylifecycle.c
Python/pystate.c

index aa60175f5235f37240211873a3484a1db3c402fb..55b06aeea9846f8bb6c9cd25e3efba684aa4b55f 100644 (file)
 #include "codecs.h"
 #include "pyerrors.h"
 
-#include "coreconfig.h"
+#include "cpython/coreconfig.h"
 #include "pystate.h"
 #include "context.h"
 
similarity index 93%
rename from Include/coreconfig.h
rename to Include/cpython/coreconfig.h
index 0ed3222a15e142e9a0fc0599b950376b02e9d3df..f7ac3f9cff093ae511df5e16a3eefa7d0243970c 100644 (file)
@@ -1,11 +1,12 @@
 #ifndef Py_PYCORECONFIG_H
 #define Py_PYCORECONFIG_H
+#ifndef Py_LIMITED_API
 #ifdef __cplusplus
 extern "C" {
 #endif
 
+/* _PyInitError */
 
-#ifndef Py_LIMITED_API
 typedef struct {
     const char *prefix;
     const char *msg;
@@ -32,8 +33,7 @@ typedef struct {
 #define _Py_INIT_FAILED(err) \
     (err.msg != NULL)
 
-#endif   /* !defined(Py_LIMITED_API) */
-
+/* _PyCoreConfig */
 
 typedef struct {
     /* Install signal handlers? Yes by default. */
@@ -339,32 +339,12 @@ typedef struct {
 /* Note: _PyCoreConfig_INIT sets other fields to 0/NULL */
 
 
-#ifndef Py_LIMITED_API
-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() */
+/* Functions used for testing */
 PyAPI_FUNC(PyObject *) _Py_GetGlobalVariablesAsDict(void);
 PyAPI_FUNC(PyObject *) _PyCoreConfig_AsDict(const _PyCoreConfig *config);
-#endif
 
 #ifdef __cplusplus
 }
 #endif
+#endif /* !Py_LIMITED_API */
 #endif /* !Py_PYCORECONFIG_H */
index 0da59d96d1f75ee713e3c1c36e76c9c4b46ddf89..3fca78f9ddf2384212ac6abebb69bea827db820f 100644 (file)
@@ -6,6 +6,8 @@
 extern "C" {
 #endif
 
+#include "cpython/coreconfig.h"
+
 /* Placeholders while working on the new configuration API
  *
  * See PEP 432 for final anticipated contents
diff --git a/Include/internal/pycore_coreconfig.h b/Include/internal/pycore_coreconfig.h
new file mode 100644 (file)
index 0000000..b906ac4
--- /dev/null
@@ -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 */
index a541dc8f00969d7efed8faa33234cab5457b1ee3..a79a2e60e21077066e2db4ed7f774e839e7ff836 100644 (file)
@@ -8,7 +8,6 @@ extern "C" {
 #endif
 
 #include "pythread.h"
-#include "coreconfig.h"
 
 /* This limitation is for performance and simplicity. If needed it can be
 removed (with effort). */
index 1c536f813f8df16388bee47fffdf4f5c4d706f09..9c2d3d66a05e77efccb904d2b8ff33e1ec9b34d8 100644 (file)
@@ -994,7 +994,6 @@ PYTHON_HEADERS= \
                $(srcdir)/Include/codecs.h \
                $(srcdir)/Include/compile.h \
                $(srcdir)/Include/complexobject.h \
-               $(srcdir)/Include/coreconfig.h \
                $(srcdir)/Include/descrobject.h \
                $(srcdir)/Include/dictobject.h \
                $(srcdir)/Include/dtoa.h \
@@ -1071,6 +1070,7 @@ PYTHON_HEADERS= \
                $(srcdir)/Include/Python-ast.h \
                \
                $(srcdir)/Include/cpython/abstract.h \
+               $(srcdir)/Include/cpython/coreconfig.h \
                $(srcdir)/Include/cpython/dictobject.h \
                $(srcdir)/Include/cpython/object.h \
                $(srcdir)/Include/cpython/objimpl.h \
@@ -1085,6 +1085,7 @@ PYTHON_HEADERS= \
                $(srcdir)/Include/internal/pycore_ceval.h \
                $(srcdir)/Include/internal/pycore_condvar.h \
                $(srcdir)/Include/internal/pycore_context.h \
+               $(srcdir)/Include/internal/pycore_coreconfig.h \
                $(srcdir)/Include/internal/pycore_fileutils.h \
                $(srcdir)/Include/internal/pycore_getopt.h \
                $(srcdir)/Include/internal/pycore_gil.h \
diff --git a/Misc/NEWS.d/next/C API/2019-03-01-03-23-48.bpo-36142.7F6wJd.rst b/Misc/NEWS.d/next/C API/2019-03-01-03-23-48.bpo-36142.7F6wJd.rst
new file mode 100644 (file)
index 0000000..0005270
--- /dev/null
@@ -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.
index f6e78890085b6f068a407f30a3854b19355de2e8..f373dab20890ac021f726628daa332705746a5de 100644 (file)
@@ -2,6 +2,7 @@
 
 #include "Python.h"
 #include "osdefs.h"
+#include "pycore_coreconfig.h"
 #include "pycore_getopt.h"
 #include "pycore_pathconfig.h"
 #include "pycore_pylifecycle.h"
index b1b9944d1e919030b00316128f2773cfd4e64f18..1ec5f75808f356fc876945dd4ba0568d361349c1 100644 (file)
     <ClInclude Include="..\Include\compile.h" />
     <ClInclude Include="..\Include\complexobject.h" />
     <ClInclude Include="..\Include\context.h" />
-    <ClInclude Include="..\Include\coreconfig.h" />
     <ClInclude Include="..\Include\cpython\abstract.h" />
+    <ClInclude Include="..\Include\cpython\coreconfig.h" />
     <ClInclude Include="..\Include\cpython\dictobject.h" />
     <ClInclude Include="..\Include\cpython\object.h" />
     <ClInclude Include="..\Include\cpython\objimpl.h" />
     <ClInclude Include="..\Include\internal\pycore_ceval.h" />
     <ClInclude Include="..\Include\internal\pycore_condvar.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_getopt.h" />
     <ClInclude Include="..\Include\internal\pycore_gil.h" />
index 9dbd0669f76d9b650ba30e1d1e53c78e5beba2ba..5053dcf1e8d917d4851b581470e114acf6ce179a 100644 (file)
     <ClInclude Include="..\Include\context.h">
       <Filter>Include</Filter>
     </ClInclude>
-    <ClInclude Include="..\Include\coreconfig.h">
+    <ClInclude Include="..\Include\cpython\abstract.h">
       <Filter>Include</Filter>
     </ClInclude>
-    <ClInclude Include="..\Include\cpython\abstract.h">
+    <ClInclude Include="..\Include\cpython\coreconfig.h">
       <Filter>Include</Filter>
     </ClInclude>
     <ClInclude Include="..\Include\cpython\dictobject.h">
     <ClInclude Include="..\Include\internal\pycore_context.h">
       <Filter>Include</Filter>
     </ClInclude>
+    <ClInclude Include="..\Include\internal\pycore_coreconfig.h">
+      <Filter>Include</Filter>
+    </ClInclude>
     <ClInclude Include="..\Include\internal\pycore_fileutils.h">
       <Filter>Include</Filter>
     </ClInclude>
index 2fb4e3fd196ea6808e20dd1fb0a3a98b39c66a13..06dbada6dfb6eb5b5159d2b056754973e70c50fb 100644 (file)
@@ -1,4 +1,5 @@
 #include "Python.h"
+#include "pycore_coreconfig.h"
 #include "pycore_fileutils.h"
 #include "pycore_pylifecycle.h"
 #include "pycore_pymem.h"
index c9bddcf6c674d6ced385ff270ba50a4e177a31b6..eadc09baa9f1f8538cd37e51ffe0e5f6e2e7cb7b 100644 (file)
@@ -2,6 +2,7 @@
 
 #include "Python.h"
 #include "osdefs.h"
+#include "pycore_coreconfig.h"
 #include "pycore_fileutils.h"
 #include "pycore_pathconfig.h"
 #include "pycore_pymem.h"
index eb0fdddb4b3acf395faa103cdcacaabdd3d5e8a9..1d65d3b86f7277be4ac8e7edbe9e6c18fd5f4029 100644 (file)
@@ -4,6 +4,7 @@
 
 #include "Python-ast.h"
 #undef Yield   /* undefine macro conflicting with <winbase.h> */
+#include "pycore_coreconfig.h"
 #include "pycore_context.h"
 #include "pycore_fileutils.h"
 #include "pycore_hamt.h"
index 6fe947d36466e51e0192fe24d52f98eaec21ac02..a9a425c2f49cb91bce75b3ff3d50dd6054630aa7 100644 (file)
@@ -2,6 +2,7 @@
 /* Thread and interpreter state structures and their interfaces */
 
 #include "Python.h"
+#include "pycore_coreconfig.h"
 #include "pycore_pymem.h"
 #include "pycore_pystate.h"