[RFC PATCH v1] libcamera: virtual: Install configuration file
Christian Rauch
Rauch.Christian at gmx.de
Thu Jan 2 15:48:40 CET 2025
Hi,
Am 20.12.24 um 17:32 schrieb Barnabás Pőcze:
> Hi
>
>
> 2024. december 20., péntek 17:05 keltezéssel, Christian Rauch <Rauch.Christian at gmx.de> írta:
>
>> Hi Barnabás,
>>
>> Thank you for looking into this. I am also interested in making the
>> virtual pipeline available in an "install" space for testing
>> applications that use an installed libcamera or binary (Debian, etc.)
>> packages.
>>
>> At the moment, the search path is hard coded through
>> "LIBCAMERA_DATA_DIR", the virtual pipeline will search in
>> "<install>/share/libcamera/pipeline/virtual/virtual.yaml".
>>
>> How would you make the "virtual.yaml.example" available in the CI. Would
>> you move/rename/symlink "virtual.yaml.example" to match that path in CI?
>
> That's correct: https://patchwork.libcamera.org/patch/22407/
>
>
>> If so, instead, I think it would be more convenient to set the
>> configuration file path at runtime with an environment variable instead
>> of changing the installed package. What do you think?
>
> It's not clear to me if you're proposing the addition of a virtual pipeline handler
> specific environmental variable, or if you want something like `LIBCAMERA_PIPELINE_CONFIG_PATH`?
I am not sure about this myself. Having a generic env that can override
'LIBCAMERA_DATA_DIR' would be useful for any pipeline, but a "virtual"
specific variable would also do and more explicitly describe the intent
to use the virtual pipeline with a test configuration.
In general, it would be useful to set test properties at runtime for
applications that use libcamera as an installed library during
development, without the need to change the original libcamera
installation (e.g. from a system package). Such a test configuration
would then be part of the application unit tests. I don't think this
should be placed somewhere in the user's private configuration folder
($XDG_CONFIG_HOME), since this is unlikely something that a regular
(non-developer) user would use.
The virtual pipeline handler could then always be compiled into the
library, and it would only become active, if a configuration file is set
via the environment variable.
Best,
Christian
> And indeed, you're right, but currently the way configuration files are looked up
> and used is a bit fragmented in libcamera. Ideally, that should be unified, and
> possibly support for configuration fragments should be added. In that case this
> file could be installed as "virtual.yaml", and then an appropriately placed fragment
> (e.g. `~/.config/libcamera/libcamera.conf.d/10-enable-virtual.conf`) could simply
> enable the pipeline handler (which would be disabled in the default configuration).
> I hope you can understand that with that goal in mind, I am personally not a fan
> of adding temporary measures for the being. But if I misunderstand your proposal,
> please don't hesitate to correct me.
>
>
> Regards,
> Barnabás Pőcze
>
>
>>
>> Best,
>> Christian
>>
>>
>> Am 19.12.24 um 13:37 schrieb Barnabás Pőcze:
>>> Install the example configuration file of the virtual pipeline
>>> handler as it serves documentation purposes, and to make the
>>> virtual pipeline handler easily usable in CI.
>>>
>>> Nonetheless, the file is installed with the ".example" suffix
>>> so that it will not be used by default, to avoid cluttering
>>> the camera lists of users whose distributions decide to
>>> enable the virtual pipeline handler.
>>>
>>> Signed-off-by: Barnabás Pőcze <pobrn at protonmail.com>
>>> ---
>>> src/libcamera/pipeline/virtual/data/meson.build | 4 ++++
>>> src/libcamera/pipeline/virtual/meson.build | 2 ++
>>> 2 files changed, 6 insertions(+)
>>> create mode 100644 src/libcamera/pipeline/virtual/data/meson.build
>>>
>>> diff --git a/src/libcamera/pipeline/virtual/data/meson.build b/src/libcamera/pipeline/virtual/data/meson.build
>>> new file mode 100644
>>> index 000000000..ce63f9a27
>>> --- /dev/null
>>> +++ b/src/libcamera/pipeline/virtual/data/meson.build
>>> @@ -0,0 +1,4 @@
>>> +install_data('virtual.yaml',
>>> + install_dir : pipeline_data_dir / 'virtual',
>>> + install_tag : 'runtime',
>>> + rename: 'virtual.yaml.example')
>>> diff --git a/src/libcamera/pipeline/virtual/meson.build b/src/libcamera/pipeline/virtual/meson.build
>>> index 4786fe2e0..c84345936 100644
>>> --- a/src/libcamera/pipeline/virtual/meson.build
>>> +++ b/src/libcamera/pipeline/virtual/meson.build
>>> @@ -11,3 +11,5 @@ libjpeg = dependency('libjpeg', required : true)
>>>
>>> libcamera_deps += [libyuv_dep]
>>> libcamera_deps += [libjpeg]
>>> +
>>> +subdir('data')
>>
More information about the libcamera-devel
mailing list