[v1] py: Set `PYTHONPATH` in devenv
diff mbox series

Message ID 20250501141250.4140986-1-barnabas.pocze@ideasonboard.com
State New
Headers show
Series
  • [v1] py: Set `PYTHONPATH` in devenv
Related show

Commit Message

Barnabás Pőcze May 1, 2025, 2:12 p.m. UTC
If the python bindings are built, then set the `PYTHONPATH` environmental
variable in the meson devenv accordingly to make it easy to use.

  $ meson devenv -C build
  [libcamera] $ echo $PYTHONPATH
  /libcamera/build/src/py
  [libcamera] $ python
  Python 3.13.3 (main, Apr  9 2025, 07:44:25) [GCC 14.2.1 20250207] on linux
  Type "help", "copyright", "credits" or "license" for more information.
  >>> import libcamera
  >>> cm = libcamera.CameraManager.singleton()
  [...]
  [129:52:33.293860558] [4133380]  INFO Camera camera_manager.cpp:326 libcamera v0.5.0+169-7dbe74b5-dirty (2025-05-01)
  [...]

Signed-off-by: Barnabás Pőcze <barnabas.pocze@ideasonboard.com>
---
 src/py/libcamera/meson.build | 16 ----------------
 src/py/meson.build           | 12 ++++++++++++
 2 files changed, 12 insertions(+), 16 deletions(-)

Comments

Kieran Bingham May 1, 2025, 2:21 p.m. UTC | #1
Quoting Barnabás Pőcze (2025-05-01 15:12:50)
> If the python bindings are built, then set the `PYTHONPATH` environmental
> variable in the meson devenv accordingly to make it easy to use.
> 
>   $ meson devenv -C build
>   [libcamera] $ echo $PYTHONPATH
>   /libcamera/build/src/py
>   [libcamera] $ python
>   Python 3.13.3 (main, Apr  9 2025, 07:44:25) [GCC 14.2.1 20250207] on linux
>   Type "help", "copyright", "credits" or "license" for more information.
>   >>> import libcamera
>   >>> cm = libcamera.CameraManager.singleton()
>   [...]
>   [129:52:33.293860558] [4133380]  INFO Camera camera_manager.cpp:326 libcamera v0.5.0+169-7dbe74b5-dirty (2025-05-01)
>   [...]
> 
> Signed-off-by: Barnabás Pőcze <barnabas.pocze@ideasonboard.com>

Nice touch!


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

> ---
>  src/py/libcamera/meson.build | 16 ----------------
>  src/py/meson.build           | 12 ++++++++++++
>  2 files changed, 12 insertions(+), 16 deletions(-)
> 
> diff --git a/src/py/libcamera/meson.build b/src/py/libcamera/meson.build
> index 456ee7932..33ab65798 100644
> --- a/src/py/libcamera/meson.build
> +++ b/src/py/libcamera/meson.build
> @@ -1,21 +1,5 @@
>  # SPDX-License-Identifier: CC0-1.0
>  
> -py3_dep = dependency('python3', required : get_option('pycamera'))
> -
> -if not py3_dep.found()
> -    pycamera_enabled = false
> -    subdir_done()
> -endif
> -
> -pybind11_dep = dependency('pybind11', required : get_option('pycamera'))
> -
> -if not pybind11_dep.found()
> -    pycamera_enabled = false
> -    subdir_done()
> -endif
> -
> -pycamera_enabled = true
> -
>  pycamera_sources = files([
>      'py_camera_manager.cpp',
>      'py_color_space.cpp',
> diff --git a/src/py/meson.build b/src/py/meson.build
> index a4586b4ae..922806971 100644
> --- a/src/py/meson.build
> +++ b/src/py/meson.build
> @@ -1,3 +1,15 @@
>  # SPDX-License-Identifier: CC0-1.0
>  
> +py3_dep = dependency('python3', required : get_option('pycamera'))
> +pybind11_dep = dependency('pybind11', required : get_option('pycamera'))
> +
> +pycamera_enabled = py3_dep.found() and pybind11_dep.found()
> +if not pycamera_enabled
> +    subdir_done()
> +endif
> +
>  subdir('libcamera')
> +
> +pycamera_devenv = environment()
> +pycamera_devenv.prepend('PYTHONPATH', meson.current_build_dir())
> +meson.add_devenv(pycamera_devenv)
> -- 
> 2.49.0
>

Patch
diff mbox series

diff --git a/src/py/libcamera/meson.build b/src/py/libcamera/meson.build
index 456ee7932..33ab65798 100644
--- a/src/py/libcamera/meson.build
+++ b/src/py/libcamera/meson.build
@@ -1,21 +1,5 @@ 
 # SPDX-License-Identifier: CC0-1.0
 
-py3_dep = dependency('python3', required : get_option('pycamera'))
-
-if not py3_dep.found()
-    pycamera_enabled = false
-    subdir_done()
-endif
-
-pybind11_dep = dependency('pybind11', required : get_option('pycamera'))
-
-if not pybind11_dep.found()
-    pycamera_enabled = false
-    subdir_done()
-endif
-
-pycamera_enabled = true
-
 pycamera_sources = files([
     'py_camera_manager.cpp',
     'py_color_space.cpp',
diff --git a/src/py/meson.build b/src/py/meson.build
index a4586b4ae..922806971 100644
--- a/src/py/meson.build
+++ b/src/py/meson.build
@@ -1,3 +1,15 @@ 
 # SPDX-License-Identifier: CC0-1.0
 
+py3_dep = dependency('python3', required : get_option('pycamera'))
+pybind11_dep = dependency('pybind11', required : get_option('pycamera'))
+
+pycamera_enabled = py3_dep.found() and pybind11_dep.found()
+if not pycamera_enabled
+    subdir_done()
+endif
+
 subdir('libcamera')
+
+pycamera_devenv = environment()
+pycamera_devenv.prepend('PYTHONPATH', meson.current_build_dir())
+meson.add_devenv(pycamera_devenv)