[v3,0/3] py: Improve native and cross-compilation of Python bindings
mbox series

Message ID 20250819012402.8395-1-laurent.pinchart@ideasonboard.com
Headers show
Series
  • py: Improve native and cross-compilation of Python bindings
Related show

Message

Laurent Pinchart Aug. 19, 2025, 1:23 a.m. UTC
Hello,

This patch series resurects an old patch from William ([1]) that fixes
the installation path of Python bindings on Debian when compiling
libcamera natively. I've stumbled upon a similar issue on Gentoo, which
pushed me to investigate how meson handles Python extension modules, and
how Debian implements "original" and "clever" very unconventional
conventions for installation paths. The result of that investigation is
summarized in a reply to [1], I will not duplicate it here.

Patch 1/3 is a rebased version of William's patch. The next two patches
are new, they attempt to also improve cross-compilation by using the
meson python module to locate the Python dependency (2/3) and calculate
the installation path (3/3). Please see individual patches for details
of the pros and cons.

I have tested this series with native compilation on Debian 11, 12 and
13 as well as on Gentoo, and cross-compilation using Debian 12
multiarch as well manually compiling libcamera against a Buildroot
environment. All three patches bring in my opinion a net improvement,
even if cross-compilation on Debian 12 required specifying the
installation path manually.

[1] https://patchwork.libcamera.org/patch/19186/

Laurent Pinchart (2):
  py: libcamera: Get dependency from meson python module unconditionally
  py: libcamera: Always use install path from meson python module

William Vinnicombe (1):
  py: libcamera: Improve python binding installation

 src/py/libcamera/meson.build | 41 ++++++++++++++++++++++++------------
 src/py/meson.build           |  5 +++--
 test/py/meson.build          |  3 ---
 3 files changed, 30 insertions(+), 19 deletions(-)


base-commit: af43c2f945c42cc7d111de63abed9ca3df830ca4
prerequisite-patch-id: 1298ff340024778a333472d63b8bf28c618ccad7
prerequisite-patch-id: 1967c9e8fb4ab43fc8b1fe9784737a36bc882076
prerequisite-patch-id: dd4ee79a61e075a5e2037b9aae68938d008f92dd
prerequisite-patch-id: c3106cd30df87783fcdb30b84402d0ba232baf0e
--
Regards,

Laurent Pinchart

Comments

Tomi Valkeinen Aug. 20, 2025, 9:58 a.m. UTC | #1
Hi,

On 19/08/2025 04:23, Laurent Pinchart wrote:
> Hello,
> 
> This patch series resurects an old patch from William ([1]) that fixes
> the installation path of Python bindings on Debian when compiling
> libcamera natively. I've stumbled upon a similar issue on Gentoo, which
> pushed me to investigate how meson handles Python extension modules, and
> how Debian implements "original" and "clever" very unconventional
> conventions for installation paths. The result of that investigation is
> summarized in a reply to [1], I will not duplicate it here.
> 
> Patch 1/3 is a rebased version of William's patch. The next two patches
> are new, they attempt to also improve cross-compilation by using the
> meson python module to locate the Python dependency (2/3) and calculate
> the installation path (3/3). Please see individual patches for details
> of the pros and cons.
> 
> I have tested this series with native compilation on Debian 11, 12 and
> 13 as well as on Gentoo, and cross-compilation using Debian 12
> multiarch as well manually compiling libcamera against a Buildroot
> environment. All three patches bring in my opinion a net improvement,
> even if cross-compilation on Debian 12 required specifying the
> installation path manually.
> 
> [1] https://patchwork.libcamera.org/patch/19186/
> 
> Laurent Pinchart (2):
>   py: libcamera: Get dependency from meson python module unconditionally
>   py: libcamera: Always use install path from meson python module
> 
> William Vinnicombe (1):
>   py: libcamera: Improve python binding installation
> 
>  src/py/libcamera/meson.build | 41 ++++++++++++++++++++++++------------
>  src/py/meson.build           |  5 +++--
>  test/py/meson.build          |  3 ---
>  3 files changed, 30 insertions(+), 19 deletions(-)
> 
> 
> base-commit: af43c2f945c42cc7d111de63abed9ca3df830ca4
> prerequisite-patch-id: 1298ff340024778a333472d63b8bf28c618ccad7
> prerequisite-patch-id: 1967c9e8fb4ab43fc8b1fe9784737a36bc882076
> prerequisite-patch-id: dd4ee79a61e075a5e2037b9aae68938d008f92dd
> prerequisite-patch-id: c3106cd30df87783fcdb30b84402d0ba232baf0e
> --
> Regards,
> 
> Laurent Pinchart
> 

I've tested this, and while I have only compile tested, everything seems
to go right. I did upgrade my buildroot so that I got different py
versions for my OS and my buildroot, still worked fine =).

For the series:

Reviewed-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>

 Tomi