From 7b278db284c7472e49e47a6bdcfca7f13552d671 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= Date: Tue, 17 Jun 2025 10:05:04 +0200 Subject: [PATCH] gh-134632: Fix `build-details.json` to use `INCLUDEPY` path (GH-134633) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 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 --- Lib/test/test_build_details.py | 7 +++++++ .../Build/2025-05-24-16-59-20.gh-issue-134632.i0W2hc.rst | 3 +++ Tools/build/generate-build-details.py | 4 ++-- 3 files changed, 12 insertions(+), 2 deletions(-) create mode 100644 Misc/NEWS.d/next/Build/2025-05-24-16-59-20.gh-issue-134632.i0W2hc.rst diff --git a/Lib/test/test_build_details.py b/Lib/test/test_build_details.py index 05ce163a337881..33ade161fb5058 100644 --- a/Lib/test/test_build_details.py +++ b/Lib/test/test_build_details.py @@ -123,6 +123,13 @@ def test_base_interpreter(self): 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 00000000000000..f41c8744b8aaa0 --- /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 87e262065ec87b..8cd23e2f54f529 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