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

William Vinnicombe william.vinnicombe at raspberrypi.com
Thu Oct 26 14:33:27 CEST 2023


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

> On 26/10/2023 13:15, William Vinnicombe wrote:
> > 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.
>
> I don't see why not, presuming it works =). Do you have a
> cross-compilation environment (e.g. buildroot) for testing?
>

I have tested my v2 with buildroot and it seems to be working as expected,
so I'll push that to the mailing list now. Although probably worth someone
else testing it too, as I don't have much experience with cross-compiling.


>
>   Tomi
>
> >
> > Thanks,
> >
> > William
> >
> > On Thu, 26 Oct 2023 at 06:39, Tomi Valkeinen
> > <tomi.valkeinen at ideasonboard.com
> > <mailto: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
> >     <mailto: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/eb86abbe/attachment.htm>


More information about the libcamera-devel mailing list