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

Tomi Valkeinen tomi.valkeinen at ideasonboard.com
Mon May 16 16:10:10 CEST 2022


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>
---
 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..fbd33139 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