From 1fdbc0638580c384f122a7021f570398ad1adb7e Mon Sep 17 00:00:00 2001 From: Philip Withnall Date: Thu, 2 Nov 2023 14:14:04 +0000 Subject: [PATCH] meson: Add missing dependencies for utility files for gdbus-codegen MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Various parts of the build (such as `objectmanager-rst-gen`) depend on running `gdbus-codegen` after it’s been built, but they currently only encode a dependency to the main codegen Python file and not the supporting files. This can cause `gdbus-codegen` to fail with an `ImportError` if the build races so that `objectmanager-rst-gen` is built before the codegen supporting files. Example failure here: https://gitlab.gnome.org/pwithnall/glib/-/jobs/3266471 ``` FAILED: gio/tests/gdbus-object-manager-example/objectmanager-rst-gen-org.gtk.GDBus.Example.ObjectManager.Animal.rst gio/tests/gdbus-object-manager-example/objectmanager-rst-gen-org.gtk.GDBus.Example.ObjectManager.Cat.rst /usr/bin/python3 gio/gdbus-2.0/codegen/gdbus-codegen --interface-prefix org.gtk.GDBus.Example.ObjectManager. --generate-rst objectmanager-rst-gen --output-directory gio/tests/gdbus-object-manager-example ../gio/tests/gdbus-object-manager-example/gdbus-example-objectmanager.xml Traceback (most recent call last): File "/builds/pwithnall/glib/_build/gio/gdbus-2.0/codegen/gdbus-codegen", line 53, in from codegen import codegen_main File "/builds/pwithnall/glib/_build/gio/gdbus-2.0/codegen/codegen_main.py", line 29, in from . import dbustypes File "/builds/pwithnall/glib/_build/gio/gdbus-2.0/codegen/dbustypes.py", line 22, in from . import utils ImportError: cannot import name 'utils' from 'codegen' (/builds/pwithnall/glib/_build/gio/gdbus-2.0/codegen/__init__.py) ``` Signed-off-by: Philip Withnall --- gio/tests/gdbus-object-manager-example/meson.build | 7 ++++++- gio/tests/meson.build | 5 +++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/gio/tests/gdbus-object-manager-example/meson.build b/gio/tests/gdbus-object-manager-example/meson.build index df0999233..83b4fc06c 100644 --- a/gio/tests/gdbus-object-manager-example/meson.build +++ b/gio/tests/gdbus-object-manager-example/meson.build @@ -20,7 +20,10 @@ gdbus_example_objectmanager_generated = custom_target('objectmanager-gen', '--generate-docbook', 'objectmanager-gen', '--symbol-decorator', 'GDBUS_OBJECT_MANAGER_EXAMPLE_AVAILABLE_IN_ALL', '--symbol-decorator-header', 'gdbus-example-objectmanager-visibility.h', - '@INPUT@']) + '@INPUT@'], + depend_files : gdbus_codegen_built_files, + depends : gdbus_codegen_built_targets, +) gdbus_example_objectmanager_rst_gen = custom_target('objectmanager-rst-gen', input: gdbus_example_objectmanager_xml, @@ -36,6 +39,8 @@ gdbus_example_objectmanager_rst_gen = custom_target('objectmanager-rst-gen', '--output-directory', '@OUTDIR@', '@INPUT@', ], + depend_files: gdbus_codegen_built_files, + depends: gdbus_codegen_built_targets, ) extra_c_args = [] diff --git a/gio/tests/meson.build b/gio/tests/meson.build index 0146a66a7..6e21535ec 100644 --- a/gio/tests/meson.build +++ b/gio/tests/meson.build @@ -373,6 +373,7 @@ if host_machine.system() != 'windows' output : ['gdbus-test-codegen-generated.h', 'gdbus-test-codegen-generated.c'], depend_files : gdbus_codegen_built_files, + depends : gdbus_codegen_built_targets, command : [python, gdbus_codegen, '--interface-prefix', 'org.project.', '--output-directory', '@OUTDIR@', @@ -389,6 +390,7 @@ if host_machine.system() != 'windows' output : ['gdbus-test-codegen-generated-min-required-2-64.h', 'gdbus-test-codegen-generated-min-required-2-64.c'], depend_files : gdbus_codegen_built_files, + depends : gdbus_codegen_built_targets, command : [python, gdbus_codegen, '--glib-min-required', '2.64', '--interface-prefix', 'org.project.', @@ -405,6 +407,7 @@ if host_machine.system() != 'windows' input : ['test-codegen.xml'], output : ['gdbus-test-codegen-generated-interface-info.h'], depend_files : gdbus_codegen_built_files, + depends : gdbus_codegen_built_targets, command : [python, gdbus_codegen, '--interface-info-header', annotate_args, @@ -414,6 +417,7 @@ if host_machine.system() != 'windows' input : ['test-codegen.xml'], output : ['gdbus-test-codegen-generated-interface-info.c'], depend_files : gdbus_codegen_built_files, + depends : gdbus_codegen_built_targets, command : [python, gdbus_codegen, '--interface-info-body', annotate_args, @@ -528,6 +532,7 @@ if host_machine.system() != 'windows' output : ['fake-document-portal-generated.h', 'fake-document-portal-generated.c'], depend_files : gdbus_codegen_built_files, + depends : gdbus_codegen_built_targets, command : [python, gdbus_codegen, '--interface-prefix', 'org.freedesktop.portal.', '--output-directory', '@OUTDIR@',