[libcamera-devel] [PATCH] libcamera: Enable vimc pipeline handler when tests are enabled

Sebastian Fricke sebastian.fricke at posteo.net
Tue Feb 23 07:08:57 CET 2021


Hey Laurent,

On 23.02.2021 03:15, Laurent Pinchart wrote:
>The

Hmm something must have gone wrong here right?

>
>Signed-off-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
>---
> include/libcamera/ipa/meson.build  |  2 +-
> meson.build                        | 13 ++++++++++++-
> src/ipa/meson.build                |  2 +-
> src/libcamera/pipeline/meson.build |  2 +-
> 4 files changed, 15 insertions(+), 4 deletions(-)
>
>diff --git a/include/libcamera/ipa/meson.build b/include/libcamera/ipa/meson.build
>index a4d3f868dd41..2d72c1fcc8d6 100644
>--- a/include/libcamera/ipa/meson.build
>+++ b/include/libcamera/ipa/meson.build
>@@ -72,7 +72,7 @@ ipa_mojoms = []
> foreach file : ipa_mojom_files
>     name = file.split('.')[0]
>
>-    if not get_option('pipelines').contains(name)
>+    if name not in pipelines

This is probably nitpicking but it seems like you perform two changes in
this patch, I see that you added the pipelines variable and adjusted
code sequences that use it accordingly and that you enable vimc for
tests. Shouldn't those two things be separated?

>         continue
>     endif
>
>diff --git a/meson.build b/meson.build
>index be77191d22c4..1768f6eaf98e 100644
>--- a/meson.build
>+++ b/meson.build
>@@ -111,6 +111,17 @@ py_modules = []
> # Libraries used by multiple components
> liblttng = cc.find_library('lttng-ust', required : get_option('tracing'))
>
>+# Pipeline handlers
>+#
>+# Tests require the vimc pipeline handler, include it automatically when tests
>+# are enabled.
>+pipelines = get_option('pipelines')
>+
>+if get_option('test') and 'vimc' not in pipelines
>+    message('Enabling vimc pipeline handler to support tests')
>+    pipelines += ['vimc']
>+endif
>+
> # Utilities are parsed first to provide support for other components.
> subdir('utils')
>
>@@ -156,5 +167,5 @@ py_mod.find_installation('python3', modules: py_modules)
>
> ## Summarise Configurations
> summary({
>-            'Enabled pipelines': get_option('pipelines'),
>+            'Enabled pipelines': pipelines,
>         }, section : 'Configuration')
>diff --git a/src/ipa/meson.build b/src/ipa/meson.build
>index 9d623f227a1f..df385eae84d3 100644
>--- a/src/ipa/meson.build
>+++ b/src/ipa/meson.build
>@@ -22,7 +22,7 @@ ipa_sign = files('ipa-sign.sh')
> ipas = ['ipu3', 'raspberrypi', 'rkisp1', 'vimc']
> ipa_names = []
>
>-foreach pipeline : get_option('pipelines')
>+foreach pipeline : pipelines
>     if ipas.contains(pipeline)
>         subdir(pipeline)
>         ipa_names += join_paths(ipa_install_dir, ipa_name + '.so')
>diff --git a/src/libcamera/pipeline/meson.build b/src/libcamera/pipeline/meson.build
>index 46424493aa37..30dc5b97f1dc 100644
>--- a/src/libcamera/pipeline/meson.build
>+++ b/src/libcamera/pipeline/meson.build
>@@ -1,5 +1,5 @@
> # SPDX-License-Identifier: CC0-1.0
>
>-foreach pipeline : get_option('pipelines')
>+foreach pipeline : pipelines
>     subdir(pipeline)
> endforeach
>-- 
>Regards,
>
>Laurent Pinchart

I've compiled with this patch and run tests.

```
meson --reconfigure build -Dpipelines=rkisp1
ninja -C build test
# output
...
   Configuration
     Enabled pipelines: rkisp1

Found ninja-1.10.1 at /usr/bin/ninja
[20/67] Linking target test/ipa/ipa_interface_test
FAILED: test/ipa/ipa_interface_test 
c++  -o test/ipa/ipa_interface_test test/ipa/ipa_interface_test.p/ipa_interface_test.cpp.o -Wl,--as-needed -Wl,--no-undefined -Wshadow -include config.h -Wl,--start-group src/ipa/libipa/libipa.a src/libcamera/libcamera.so test/libtest/liblibtest.a -Wl,--end-group '-Wl,-rpath,$ORIGIN/../../src/libcamera' -Wl,-rpath-link,/home/basti/libcamera/build/src/libcamera
/usr/bin/ld: test/ipa/ipa_interface_test.p/ipa_interface_test.cpp.o: in function `std::_MakeUniq<libcamera::ipa::vimc::IPAProxyVimc>::__single_object std::make_unique<libcamera::ipa::vimc::IPAProxyVimc, libcamera::IPAModule*&, bool>(libcamera::IPAModule*&, bool&&)':
/usr/include/c++/10/bits/unique_ptr.h:962: undefined reference to `libcamera::ipa::vimc::IPAProxyVimc::IPAProxyVimc(libcamera::IPAModule*, bool)'
collect2: error: ld returned 1 exit status
[27/67] Linking target test/media_device/media_device_print_test
ninja: build stopped: subcommand failed.


# After applying the patch
ninja -C build test
#output
...
   Configuration
     Enabled pipelines: rkisp1
                        vimc

Found ninja-1.10.1 at /usr/bin/ninja
[69/70] Running all tests.
```

If you like you can add:
Tested-by: Sebastian Fricke<sebastian.fricke at posteo.net>

Greetings and thank you,

Sebastian

>
>_______________________________________________
>libcamera-devel mailing list
>libcamera-devel at lists.libcamera.org
>https://lists.libcamera.org/listinfo/libcamera-devel


More information about the libcamera-devel mailing list