
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@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@_client_bodies.h'.format(name) protocol_c = '@0@_protocol.c'.format(name) protocol_h = '@0@_protocol.h'.format(name) protocol_x = '@0@_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@_client_bodies.h'.format(name) + protocol_x = '@0@_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