meson: Provide sdbusplus env for gen* custom targets
Currently local meson build fails with the following errors:
"""
[345/756] Generating generated.cpp with a custom command
FAILED: generated.cpp
...
import sdbusplus.property
ModuleNotFoundError: No module named 'sdbusplus'
[346/756] Generating gen_serialization.hpp with a custom command
FAILED: gen_serialization.hpp
...
import sdbusplus.property
ModuleNotFoundError: No module named 'sdbusplus'
"""
This is happening because 'pimgen.py' script used in gen* custom
targets refers to python modules from the external 'sdbusplus' project.
Therefore in case of a local build it is necessary to provide search
path to the relevant sdbusplus subproject folder. Fix this with the
help of 'PYTHONPATH' environment variable.
Tested:
Local meson build no longer fails with the 'ModuleNotFoundError's.
Change-Id: Ic65c30cacc516a083dfa44a4b5736e2efbacf617
Signed-off-by: Konstantin Aladyshev <aladyshev22@gmail.com>
diff --git a/meson.build b/meson.build
index 1e4516b..9d76519 100644
--- a/meson.build
+++ b/meson.build
@@ -41,7 +41,7 @@
cereal_dep = cereal_proj.dependency('cereal')
endif
-sdbusplus_dep = dependency('sdbusplus')
+sdbusplus_dep = dependency('sdbusplus', required : false)
phosphor_dbus_interfaces_dep = dependency('phosphor-dbus-interfaces')
phosphor_logging_dep = dependency('phosphor-logging')
@@ -63,6 +63,13 @@
ifacesdir = phosphor_dbus_interfaces_dep.get_variable('yamldir')
endif
+sdbusplus_python_env = {}
+if not sdbusplus_dep.found()
+ sdbusplus_proj = subproject('sdbusplus')
+ sdbusplus_dep = sdbusplus_proj.get_variable('sdbusplus_dep')
+ sdbusplus_python_env = {'PYTHONPATH': meson.current_source_dir() / 'subprojects' / 'sdbusplus' / 'tools'}
+endif
+
generated_cpp = custom_target(
'generated.cpp',
command : [
@@ -74,6 +81,7 @@
'-b', conf_data.get_unquoted('BUSNAME'),
'generate-cpp'
],
+ env: sdbusplus_python_env,
output : 'generated.cpp')
gen_serialization_hpp = custom_target(
@@ -87,6 +95,7 @@
'-b', conf_data.get_unquoted('BUSNAME'),
'generate-serialization'
],
+ env: sdbusplus_python_env,
output : 'gen_serialization.hpp')
sources += [