[libcamera-devel] [PATCH] py: libcamera: Improve python binding installation

William Vinnicombe william.vinnicombe at raspberrypi.com
Thu Oct 26 12:15:48 CEST 2023


Hi both,

Thanks for your comments - I hadn't considered cross compilation, but from
looking into it I can see that this change would cause the problems you've
mentioned. Would it be an acceptable solution to wrap these changes within
"if meson.is_cross_build() else ..." so that cross compilation uses the
previous code still, but native compilation uses the meson python module?
If so, I'll submit a v2 with those changes.

Thanks,

William

On Thu, 26 Oct 2023 at 06:39, Tomi Valkeinen <
tomi.valkeinen at ideasonboard.com> wrote:

> On 25/10/2023 14:04, Laurent Pinchart wrote:
> > Hi William,
> >
> > (CC'ing Tomi)
> >
> > Thank you for the patch.
> >
> > On Wed, Oct 25, 2023 at 10:36:49AM +0100, William Vinnicombe via
> libcamera-devel wrote:
> >> The existing meson.build file installs the bindings to an architecture
> >> specific libdir (eg /usr/local/lib/aarch64-linux-gnu/), which is not
> >> picked up by default python which only looks in the non architecture
> >> specific libdir (eg /usr/local/lib/python3.11/). It also will always
> >> build using the system python, rather than building using the same
> >> python as meson is using. This prevents a user being able to build the
> >> bindings for a different version of python, without changing their
> >> system python to that version.
> >>
> >> Modify the build process to use the meson Python module to build the
> >> python bindings targets, so it installs them to the correct directories
> >> for python, and builds them for the version of python that meson is
> >> running with.
> >>
> >> Signed-off-by: William Vinnicombe <william.vinnicombe at raspberrypi.com>
> >> ---
> >>   src/py/libcamera/meson.build | 23 ++++++++++++-----------
> >>   1 file changed, 12 insertions(+), 11 deletions(-)
> >>
> >> diff --git a/src/py/libcamera/meson.build b/src/py/libcamera/meson.build
> >> index f58c7198..e9e3f915 100644
> >> --- a/src/py/libcamera/meson.build
> >> +++ b/src/py/libcamera/meson.build
> >> @@ -1,6 +1,8 @@
> >>   # SPDX-License-Identifier: CC0-1.0
> >>
> >> -py3_dep = dependency('python3', required : get_option('pycamera'))
> >> +
> >> +py = import('python').find_installation('python3', required :
> get_option('pycamera'))
> >> +py3_dep = py.dependency(required : get_option('pycamera'))
> >
> > Does this still work when cross-compiling ? I recall we tried the meson
> > python module, and it had problems with cross-compilation. Tomi may know
> > more.
>
> Right. When cross-compiling, you don't want that "[the build process]
> builds them for the version of python that meson is running with", as
> meson is running (for me) in x86 environment, but the target is arm.
>
> I'm not sure if there's been any work on fixing all that in the meson
> side, but the last time I talked to them they didn't have any clear
> ideas how to fix it.
>
> Perhaps this can be solved by manually dealing with all the python
> details in the meson.build file, and adding a meson option so that the
> user can tell which python to use.
>
>   Tomi
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.libcamera.org/pipermail/libcamera-devel/attachments/20231026/e635c45e/attachment.htm>


More information about the libcamera-devel mailing list