%global python3_pkgversion 3.14 # While the headers are architecture independent, the package must be # built separately on all architectures so that the tests are run # properly. See also # https://fedoraproject.org/wiki/Packaging:Guidelines#Packaging_Header_Only_Libraries %global debug_package %{nil} %ifarch ppc64le # The tests are not LTO-compatible on power %global _lto_cflags %{nil} %endif # Exclude automatic provides without python3.14 in the name %global __provides_exclude cmake|pkgconfig # Whether to run the tests, enabled by default %bcond tests 1 Name: python%{python3_pkgversion}-pybind11 Version: 2.13.6 Release: %autorelease Summary: Seamless operability between C++11 and Python License: BSD-3-Clause URL: https://github.com/pybind/pybind11 Source0: https://github.com/pybind/pybind11/archive/v%{version}/pybind11-%{version}.tar.gz # Use the `/usr` prefix for the python commands Patch1: pybind11-2.13.6-Use_usr_prefix.patch # Drop cmake and ninja from build-requires Patch2: pybind11-2.13.6-Drop_some_build-requires.patch # Adjust test for different syntax in python3.14 # Upstream commit: https://github.com/pybind/pybind11/commit/094343c Patch3: Adjust-test-for-python3.14.patch # Needed to build the python libraries BuildRequires: python%{python3_pkgversion}-devel # Test depdendencies are not exposed %if %{with tests} BuildRequires: python%{python3_pkgversion}-pytest BuildRequires: python%{python3_pkgversion}-numpy BuildRequires: python%{python3_pkgversion}-scipy %endif BuildRequires: eigen3-devel BuildRequires: gcc-c++ BuildRequires: cmake Requires: %{name}-devel%{?_isa} = %{version}-%{release} %global base_description \ pybind11 is a lightweight header-only library that exposes C++ types \ in Python and vice versa, mainly to create Python bindings of existing \ C++ code. %description %{base_description} %package devel Summary: Development headers for pybind11 # This package does not have namespaced file locations, so if we build the # pybind11-devel subpackage in any other stack as well, the files from these # packages will conflict. The package name is namespaced so that customers can # decide which to install, but the packages will conflict with each other. # Whenever python3.X-pybind11-devel is introduced, it needs to explicitly # conflict with all the previous python3.X-pybind11-devel packages as well as # the non-namespaced pybind11-devel package from the main Python stack. Conflicts: pybind11-devel < %{version}-%{release} Conflicts: python3.11-pybind11-devel < %{version}-%{release} Conflicts: python3.12-pybind11-devel < %{version}-%{release} # https://fedoraproject.org/wiki/Packaging:Guidelines#Packaging_Header_Only_Libraries Provides: %{name}-static = %{version}-%{release} %description devel %{base_description} This package contains the development headers for pybind11. %package -n python%{python3_pkgversion}-%{name} Summary: %{summary} Requires: %{name}-devel%{?_isa} = %{version}-%{release} %description -n python%{python3_pkgversion}-%{name} %{base_description} This package contains the Python 3 files. %prep %autosetup -n pybind11-%{version} -p1 %generate_buildrequires %pyproject_buildrequires %build # Build with CMake first to install the devel files in OS native paths # When -DCMAKE_BUILD_TYPE is set to Release, the tests in %%check might segfault. # However, we do not ship any binaries, and therefore Debug # build type does not affect the results. # https://bugzilla.redhat.com/show_bug.cgi?id=1921199 %cmake \ -DCMAKE_BUILD_TYPE=Debug \ %{?with_tests:-DPYBIND11_TEST=ON} \ %{!?with_tests:-DPYBIND11_TEST=OFF} \ -DUSE_PYTHON_INCLUDE_DIR=FALSE \ -DPython_EXECUTABLE=/usr/bin/python%{python3_pkgversion} \ -DPython_INCLUDE_DIR=/usr/include/python%{python3_pkgversion} %cmake_build # Build again with the python build system to get the python files %pyproject_wheel %install %cmake_install %pyproject_install %pyproject_save_files pybind11 # Remove the devel files in the python package rm -rf %{buildroot}%{python3_sitelib}/pybind11/include/ rm -rf %{buildroot}%{python3_sitelib}/pybind11/share/ sed -i '/pybind11\/include/d' %{pyproject_files} sed -i '/pybind11\/share/d' %{pyproject_files} %if %{with tests} %check %cmake_build --target check %endif %files devel %license LICENSE %doc README.rst %{_includedir}/pybind11/ %{_datadir}/cmake/pybind11/ %{_bindir}/pybind11-config %{_datadir}/pkgconfig/pybind11.pc %files -n python%{python3_pkgversion}-pybind11 -f %{pyproject_files} %changelog %autochangelog