From: Miss Islington (bot) <31488909+miss-islington@users.noreply.github.com> Date: Tue, 17 Jun 2025 08:31:10 +0000 (+0200) Subject: [3.14] gh-134632: Fix `build-details.json` to use `INCLUDEPY` path (GH-134633) (... X-Git-Tag: v3.14.0b3~4 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=1bd034de9dcc960f25c419221540ff5a5ac04049;p=thirdparty%2FPython%2Fcpython.git [3.14] gh-134632: Fix `build-details.json` to use `INCLUDEPY` path (GH-134633) (#135605) gh-134632: Fix `build-details.json` to use `INCLUDEPY` path (GH-134633) * gh-134632: Fix `build-details.json` to use `INCLUDEPY` path Fix ``build-details.json`` generation to use ``INCLUDEPY``, in order to reference the ``pythonX.Y`` subdirectory of the include directory, as required in :pep:`739`, instead of the top-level include directory. * test_build_details: Add tests for the c_api section * test_build_details: Expect pkgconfig for CPython unconditionally (cherry picked from commit 0d582def34babca7417ece8a9e4e16cc2a752d44) Co-authored-by: Michał Górny --- diff --git a/Lib/test/test_build_details.py b/Lib/test/test_build_details.py index 05ce163a3378..33ade161fb50 100644 --- a/Lib/test/test_build_details.py +++ b/Lib/test/test_build_details.py @@ -123,6 +123,13 @@ class CPythonBuildDetailsTests(unittest.TestCase, FormatTestsBase): self.assertEqual(os.path.realpath(value), os.path.realpath(sys.executable)) + @needs_installed_python + def test_c_api(self): + value = self.key('c_api') + self.assertTrue(os.path.exists(os.path.join(value['headers'], 'Python.h'))) + version = sysconfig.get_config_var('VERSION') + self.assertTrue(os.path.exists(os.path.join(value['pkgconfig_path'], f'python-{version}.pc'))) + if __name__ == '__main__': unittest.main() diff --git a/Misc/NEWS.d/next/Build/2025-05-24-16-59-20.gh-issue-134632.i0W2hc.rst b/Misc/NEWS.d/next/Build/2025-05-24-16-59-20.gh-issue-134632.i0W2hc.rst new file mode 100644 index 000000000000..f41c8744b8aa --- /dev/null +++ b/Misc/NEWS.d/next/Build/2025-05-24-16-59-20.gh-issue-134632.i0W2hc.rst @@ -0,0 +1,3 @@ +Fixed ``build-details.json`` generation to use ``INCLUDEPY``, in order to +reference the ``pythonX.Y`` subdirectory of the include directory, as +required in :pep:`739`, instead of the top-level include directory. diff --git a/Tools/build/generate-build-details.py b/Tools/build/generate-build-details.py index 87e262065ec8..8cd23e2f54f5 100644 --- a/Tools/build/generate-build-details.py +++ b/Tools/build/generate-build-details.py @@ -75,7 +75,7 @@ def generate_data(schema_version: str) -> collections.defaultdict[str, Any]: PY3LIBRARY = sysconfig.get_config_var('PY3LIBRARY') LIBPYTHON = sysconfig.get_config_var('LIBPYTHON') LIBPC = sysconfig.get_config_var('LIBPC') - INCLUDEDIR = sysconfig.get_config_var('INCLUDEDIR') + INCLUDEPY = sysconfig.get_config_var('INCLUDEPY') if os.name == 'posix': # On POSIX, LIBRARY is always the static library, while LDLIBRARY is the @@ -123,7 +123,7 @@ def generate_data(schema_version: str) -> collections.defaultdict[str, Any]: if has_static_library: data['libpython']['static'] = os.path.join(LIBDIR, LIBRARY) - data['c_api']['headers'] = INCLUDEDIR + data['c_api']['headers'] = INCLUDEPY if LIBPC: data['c_api']['pkgconfig_path'] = LIBPC