Files
Romain Naour 39b2b6e4a3 package/python-pybind: overwrite 'pybind11/_version.py' with a hard-coded version
Fixes build error with python-pillow since its version bump to 12.0.0
which introduced a dependency to pybind with buildroot commit
5f446a8d6d:

FileNotFoundError: [Errno 2] No such file or directory:
 '/home/bernd/buildroot/output/host/lib/python3.13/site-packages/include/pybind11/detail/common.h'

Implement the solution suggested by Vincent Fazio [1]:
Generate `pybind11/_version.py` file with a hard-coded version to avoid
copying pybind11 headers in HOST_DIR.

Fixes:
  https://gitlab.com/buildroot.org/buildroot/-/jobs/13138981946 (TestPythonPybind)

[1] https://lists.busybox.net/pipermail/buildroot/2026-February/796082.html

Cc: Vincent Fazio <vfazio@xes-inc.com>
Cc: James Hilliard <james.hilliard1@gmail.com>
Cc: Bernd Kuhls <bernd@kuhls.net>
Signed-off-by: Romain Naour <romain.naour@smile.fr>
Tested-by: Vincent Fazio <vfazio@xes-inc.com>
Signed-off-by: Julien Olivain <ju.o@free.fr>
2026-02-22 19:57:17 +01:00

36 lines
1.3 KiB
Makefile

################################################################################
#
# python-pybind
#
################################################################################
PYTHON_PYBIND_VERSION = 3.0.1
PYTHON_PYBIND_SITE = $(call github,pybind,pybind11,v$(PYTHON_PYBIND_VERSION))
PYTHON_PYBIND_LICENSE = BSD-3-Clause
PYTHON_PYBIND_LICENSE_FILES = LICENSE
PYTHON_PYBIND_INSTALL_STAGING = YES
PYTHON_PYBIND_INSTALL_TARGET = NO # Header-only library
PYTHON_PYBIND_DEPENDENCIES = python3
PYTHON_PYBIND_CONF_OPTS = \
-DPYBIND11_INSTALL=ON \
-DPYBIND11_TEST=OFF \
-DPYBIND11_NOPYTHON=ON
PYTHON_PYBIND_INSTALL_PATH = $(HOST_DIR)/lib/python$(PYTHON3_VERSION_MAJOR)/site-packages/pybind11
# Overwrite 'pybind11/_version.py' with a hard-coded version to replace
# 'pybind11/_version.py' installed by default that require
# pybind11/detail/common.h header in HOST_DIR.
# https://github.com/pybind/pybind11/blob/f5fbe867d2d26e4a0a9177a51f6e568868ad3dc8/pyproject.toml#L93
define PYTHON_PYBIND_INSTALL_MODULE
mkdir -p $(PYTHON_PYBIND_INSTALL_PATH)
cp -dpf $(@D)/pybind11/*.py $(PYTHON_PYBIND_INSTALL_PATH)
sed -e 's#@@PYBIND_VERSION@@#$(PYTHON_PYBIND_VERSION)#' \
$(PYTHON_PYBIND_PKGDIR)/python-pybind_version.py.in \
> $(PYTHON_PYBIND_INSTALL_PATH)/_version.py
endef
PYTHON_PYBIND_POST_INSTALL_STAGING_HOOKS += PYTHON_PYBIND_INSTALL_MODULE
$(eval $(cmake-package))