[libcamera-devel] [PATCH 2/2] v4l2: Move the v4l2-compat to libcamera/

Laurent Pinchart laurent.pinchart at ideasonboard.com
Wed May 3 15:06:04 CEST 2023


Hi Javier and Kieran,

On Wed, May 03, 2023 at 02:51:38PM +0200, Javier Martinez Canillas via libcamera-devel wrote:
> On 5/1/23 17:55, Kieran Bingham wrote:
> > Move the v4l2-compat.so shared library installation to the libcamera
> > library directory. This is the same location that IPA modules live and
> > will allow the 'generically sounding' v4l2-compat.so to be more clearly
> > identified as a libcamera compatibility layer.
> > 
> > Signed-off-by: Kieran Bingham <kieran.bingham at ideasonboard.com>
> > ---
> > We could also rename this to libcamera-v4l2-compat.so, and/or we could

I think libcamera/v4l2-compat.so is enough from a namespacing point of
view.

> > also re-consider whether the libcamera-hal.so file should also live
> > under the libcamera/ libdir by default.

That's a question specific to Android (and Chrome OS), I don't recall
what the Android rules are.

> >  src/v4l2/meson.build | 3 ++-
> >  1 file changed, 2 insertions(+), 1 deletion(-)
> > 
> > diff --git a/src/v4l2/meson.build b/src/v4l2/meson.build
> > index f132103cb503..114fddf7302a 100644
> > --- a/src/v4l2/meson.build
> > +++ b/src/v4l2/meson.build
> > @@ -31,6 +31,7 @@ v4l2_compat = shared_library('v4l2-compat',
> >                               v4l2_compat_sources,
> >                               name_prefix : '',
> >                               install : true,
> > +                             install_dir : libcamera_libdir,
> >                               dependencies : [libcamera_private, libdl],
> >                               cpp_args : v4l2_compat_cpp_args)
> >  
> > @@ -38,7 +39,7 @@ v4l2_compat = shared_library('v4l2-compat',
> >  # adaptation layer.
> >  
> >  cdata = configuration_data()
> > -cdata.set('LIBCAMERA_V4L2_SO', get_option('prefix') / get_option('libdir') / 'v4l2-compat.so')
> > +cdata.set('LIBCAMERA_V4L2_SO', get_option('prefix') / libcamera_libdir / 'v4l2-compat.so')
> 
> As Laurent mentioned in another thread, I think that:
> 
> +cdata.set('LIBCAMERA_V4L2_SO', get_option('libexecdir') / 'libcamera' / 'v4l2-compat.so')

I think you need

	get_option('prefix') / get_option('libexecdir') / 'libcamera' / 'v4l2-compat.so'

> would be better and more consistent with how other projects install
> shared objects that are not meant to be public.

According to
https://refspecs.linuxfoundation.org/FHS_3.0/fhs/ch04s07.html,

"/usr/libexec includes internal binaries that are not intended to be
executed directly by users or shell scripts. Applications may use a
single subdirectory under /usr/libexec."

This being said, valgrind installs LD_PRELOAD-able .so files in libexec,
and there are some other .so from different packages there too. I thus
think it makes sense to store v4l2-compat.so in libexec.

If we go for libexec, the first patch in this series could also be
dropped. We could keep it for additional safety, but until we store
other files in that directory, it's a bit pointless.

> That would also solve the issue I had when trying to enable the v4l2
> compatibility layer and ship it in a separate libcamera-v4l2 sub-package.
> 
> If you post a v2 with that change, feel free to add my:
> 
> Reviewed-by: Javier Martinez Canillas <javierm at redhat.com>

-- 
Regards,

Laurent Pinchart


More information about the libcamera-devel mailing list