On 3/10/22 21:53, Joe Slater wrote:
remote_daemon.c and others need the generated header lxc_protocol.h,
but do not have it as a dependency in meson.build. This means that
builds will randomly (ok, very occasionally) fail. Restructure how the
header is built so that remote_daemon can have it as a dependency.
Signed-off-by: Joe Slater <joe.slater(a)windriver.com>
---
src/remote/meson.build | 48 ++++++++++++++++++++++++------------------
1 file changed, 28 insertions(+), 20 deletions(-)
diff --git a/src/remote/meson.build b/src/remote/meson.build
index 0a18826..31a30ee 100644
--- a/src/remote/meson.build
+++ b/src/remote/meson.build
@@ -1,27 +1,11 @@
-remote_driver_sources = [
- 'remote_driver.c',
- 'remote_sockets.c',
-]
-
-remote_driver_generated = []
+remote_xxx_generated = []
foreach name : [ 'remote', 'qemu', 'lxc' ]
- client_bodies_h = '@0(a)_client_bodies.h'.format(name)
protocol_c = '@0(a)_protocol.c'.format(name)
protocol_h = '@0(a)_protocol.h'.format(name)
protocol_x = '@0(a)_protocol.x'.format(name)
- remote_driver_generated += custom_target(
- client_bodies_h,
- input: protocol_x,
- output: client_bodies_h,
- command: [
- gendispatch_prog, '--mode=client', name, name.to_upper(),
'@INPUT@',
- ],
- capture: true,
- )
-
- remote_driver_generated += custom_target(
+ remote_xxx_generated += custom_target(
protocol_h,
input: protocol_x,
output: protocol_h,
@@ -30,7 +14,7 @@ foreach name : [ 'remote', 'qemu', 'lxc' ]
],
)
- remote_driver_generated += custom_target(
+ remote_xxx_generated += custom_target(
protocol_c,
input: protocol_x,
output: protocol_c,
@@ -42,6 +26,30 @@ foreach name : [ 'remote', 'qemu', 'lxc' ]
rpc_probe_files += files(protocol_x)
endforeach
+
+remote_driver_sources = [
+ 'remote_driver.c',
+ 'remote_sockets.c',
+]
+
+remote_driver_generated =remote_xxx_generated
+
+foreach name : [ 'remote', 'qemu', 'lxc' ]
+ client_bodies_h = '@0(a)_client_bodies.h'.format(name)
+ protocol_x = '@0(a)_protocol.x'.format(name)
+
+ remote_driver_generated += custom_target(
+ client_bodies_h,
+ input: protocol_x,
+ output: client_bodies_h,
+ command: [
+ gendispatch_prog, '--mode=client', name, name.to_upper(),
'@INPUT@',
+ ],
+ capture: true,
+ )
+
+endforeach
+
remote_daemon_sources = files(
'remote_daemon.c',
'remote_daemon_config.c',
@@ -49,7 +57,7 @@ remote_daemon_sources = files(
'remote_daemon_stream.c',
)
-remote_daemon_generated = []
+remote_daemon_generated = remote_xxx_generated
So IIUC, this fix consists of two parts:
1) generating client_bodies_h only AFTER protocol.x for all three
drivers was processed,
2) Initializing remote_daemon_generated to remote_xxx_generated (which
contains protocol.x processing targets).
IMO, it's only the second step that's really needed, isn't it? I'm not
against this patch, I'm just trying to confirm I understood the problem
and the fix.
Michal