[PATCH] meson: Don't unnecessarily fallback to libyuv wrap
Cheng-Hao Yang
chenghaoyang at chromium.org
Mon Nov 25 07:08:46 CET 2024
Hi Laurent,
Thanks for the fix.
On Mon, Nov 25, 2024 at 8:52 AM Laurent Pinchart
<laurent.pinchart at ideasonboard.com> wrote:
>
> Before commit eeaa7de21b8c ("libcamera: pipeline: Add test pattern for
> VirtualPipelineHandler") the libyuv dependency was only needed for the
> Android adaptation layer. As libyuv isn't packaged by most distribution,
> meson fell back to using a meson wrap if the Android adaptation layer
> was enabled and the library wasn't found.
>
> With commit eeaa7de21b8c, libyuv is also used by the virtual pipeline
> handler, and the meson wrap fallback handling got centralized and became
> unconditional, so the wrap is downloaded even if the components
> depending on libyuv are all disabled. This causes unnecessary downloads
> at setup time, which can be problematic on build systems without an
> internet connection.
>
> Fix this by making the wrap fallback conditional on the components that
> use libyuv.
>
> Fixes: eeaa7de21b8c ("libcamera: pipeline: Add test pattern for VirtualPipelineHandler")
> Signed-off-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
> ---
> src/android/meson.build | 3 +--
> src/meson.build | 8 +++++---
> 2 files changed, 6 insertions(+), 5 deletions(-)
>
> diff --git a/src/android/meson.build b/src/android/meson.build
> index 6341ee8b0bfb..7b226a4b5d35 100644
> --- a/src/android/meson.build
> +++ b/src/android/meson.build
> @@ -4,6 +4,7 @@ android_deps = [
> dependency('libexif', required : get_option('android')),
> dependency('libjpeg', required : get_option('android')),
> libcamera_private,
> + libyuv_dep,
> ]
>
> android_enabled = true
> @@ -15,8 +16,6 @@ foreach dep : android_deps
> endif
> endforeach
>
> -android_deps += [libyuv_dep]
> -
> android_hal_sources = files([
> 'camera3_hal.cpp',
> 'camera_capabilities.cpp',
> diff --git a/src/meson.build b/src/meson.build
> index 91bea7753a2e..76198e9535db 100644
> --- a/src/meson.build
> +++ b/src/meson.build
> @@ -27,11 +27,13 @@ else
> ipa_sign_module = false
> endif
>
> +# libyuv, used by the Android adaptation layer and the virtual pipeline handler.
> +# Fallback to a subproject if libyuv isn't found, as it's typically not provided
> +# by distributions.
> libyuv_dep = dependency('libyuv', required : false)
>
> -# Fallback to a subproject if libyuv isn't found, as it's typically not
> -# provided by distributions.
> -if not libyuv_dep.found()
> +if (pipelines.contains('virtual') or get_option('android').allowed()) and \
> + not libyuv_dep.found()
> cmake = import('cmake')
>
> libyuv_vars = cmake.subproject_options()
>
> base-commit: 9a5f91c78abc8985baff89563992be3644f861b0
Reviewed-by: Harvey Yang <chenghaoyang at chromium.org>
BR,
Harvey
> --
> Regards,
>
> Laurent Pinchart
>
More information about the libcamera-devel
mailing list