[libcamera-devel] [PATCH v2 02/13] py: meson: add pystubs build target

Kieran Bingham kieran.bingham at ideasonboard.com
Tue May 17 18:21:16 CEST 2022


Quoting Tomi Valkeinen (2022-05-17 15:33:14)
> Add a 'pystubs' build target for building the python stubs.
> 
> For now this needs to be ran manually. I didn't figure out how to
> generate the stubs after the libcamera bindings are built.
> 
> Signed-off-by: Tomi Valkeinen <tomi.valkeinen at ideasonboard.com>

Hrm ... It sounds like this wants to be some sort of post-build step.

Searching quickly seems to find only things like:
  https://github.com/mesonbuild/meson/issues/2957

Which seems to suggest a custom target (which is the full target, to
build pycamera, and the stubs?) and have it depend on the pycamera
shared_module().

But I'm not sure if that's a full understanding of what you're trying to
achieve here.

Anyway, having a target is better than expecting a user to execute a
manual command successfully - (but I fear at the moment, this won't get
used directly?)


Reviewed-by: Kieran Bingham <kieran.bingham at ideasonboard.com>

> ---
>  src/py/libcamera/meson.build | 14 +++++++++++++-
>  1 file changed, 13 insertions(+), 1 deletion(-)
> 
> diff --git a/src/py/libcamera/meson.build b/src/py/libcamera/meson.build
> index 38f619d0..32e74504 100644
> --- a/src/py/libcamera/meson.build
> +++ b/src/py/libcamera/meson.build
> @@ -60,6 +60,18 @@ run_command('ln', '-fsT', '../../../../src/py/libcamera/__init__.py',
>  
>  install_data(['__init__.py'], install_dir : destdir)
>  
> -# \todo Generate stubs when building. See https://peps.python.org/pep-0484/#stub-files
> +# \todo Generate stubs when building, and install them.
> +# See https://peps.python.org/pep-0484/#stub-files
>  # Note: Depends on pybind11-stubgen. To generate pylibcamera stubs:
>  # $ PYTHONPATH=build/src/py pybind11-stubgen --no-setup-py -o build/src/py libcamera
> +# The target below can be ran manually, but how to create a meson target that
> +# is run if pycamera is built?
> +
> +stubgen = find_program('pybind11-stubgen', required : false)
> +
> +if stubgen.found()
> +    run_target('pystubs',
> +               depends: pycamera,
> +               env: {'PYTHONPATH': meson.project_build_root() / 'src' / 'py'},
> +               command: [stubgen, '--no-setup-py', '-o', meson.project_build_root() / 'src' / 'py', 'libcamera'])
> +endif
> -- 
> 2.34.1
>


More information about the libcamera-devel mailing list