diff mbox series

qga: Allow building of the guest agent without system emulators or tools

Message ID 20221109173750.201615-1-thuth@redhat.com (mailing list archive)
State New, archived
Headers show
Series qga: Allow building of the guest agent without system emulators or tools | expand

Commit Message

Thomas Huth Nov. 9, 2022, 5:37 p.m. UTC
If configuring with "--disable-system --disable-user --enable-guest-agent"
the linking currently fails with:

qga/qemu-ga.p/commands.c.o: In function `qmp_command_info':
build/../../home/thuth/devel/qemu/qga/commands.c:70: undefined reference to `qmp_command_name'
build/../../home/thuth/devel/qemu/qga/commands.c:71: undefined reference to `qmp_command_is_enabled'
build/../../home/thuth/devel/qemu/qga/commands.c:72: undefined reference to `qmp_has_success_response'
qga/qemu-ga.p/commands.c.o: In function `qmp_guest_info':
build/../../home/thuth/devel/qemu/qga/commands.c:82: undefined reference to `qmp_for_each_command'
qga/qemu-ga.p/commands.c.o: In function `qmp_guest_exec':
build/../../home/thuth/devel/qemu/qga/commands.c:410: undefined reference to `qbase64_decode'
qga/qemu-ga.p/channel-posix.c.o: In function `ga_channel_open':
build/../../home/thuth/devel/qemu/qga/channel-posix.c:214: undefined reference to `unix_listen'
build/../../home/thuth/devel/qemu/qga/channel-posix.c:228: undefined reference to `socket_parse'
build/../../home/thuth/devel/qemu/qga/channel-posix.c:234: undefined reference to `socket_listen'
qga/qemu-ga.p/commands-posix.c.o: In function `qmp_guest_file_write':
build/../../home/thuth/devel/qemu/qga/commands-posix.c:527: undefined reference to `qbase64_decode'

Let's make sure that we also compile and link the required files if
the system emulators have not been enabled.

Signed-off-by: Thomas Huth <thuth@redhat.com>
---
 qapi/meson.build  | 2 +-
 stubs/meson.build | 2 +-
 util/meson.build  | 2 +-
 3 files changed, 3 insertions(+), 3 deletions(-)

Comments

Konstantin Kostiuk Nov. 9, 2022, 5:50 p.m. UTC | #1
Reviewed-by: Konstantin Kostiuk <kkostiuk@redhat.com>

On Wed, Nov 9, 2022 at 7:37 PM Thomas Huth <thuth@redhat.com> wrote:

> If configuring with "--disable-system --disable-user --enable-guest-agent"
> the linking currently fails with:
>
> qga/qemu-ga.p/commands.c.o: In function `qmp_command_info':
> build/../../home/thuth/devel/qemu/qga/commands.c:70: undefined reference
> to `qmp_command_name'
> build/../../home/thuth/devel/qemu/qga/commands.c:71: undefined reference
> to `qmp_command_is_enabled'
> build/../../home/thuth/devel/qemu/qga/commands.c:72: undefined reference
> to `qmp_has_success_response'
> qga/qemu-ga.p/commands.c.o: In function `qmp_guest_info':
> build/../../home/thuth/devel/qemu/qga/commands.c:82: undefined reference
> to `qmp_for_each_command'
> qga/qemu-ga.p/commands.c.o: In function `qmp_guest_exec':
> build/../../home/thuth/devel/qemu/qga/commands.c:410: undefined reference
> to `qbase64_decode'
> qga/qemu-ga.p/channel-posix.c.o: In function `ga_channel_open':
> build/../../home/thuth/devel/qemu/qga/channel-posix.c:214: undefined
> reference to `unix_listen'
> build/../../home/thuth/devel/qemu/qga/channel-posix.c:228: undefined
> reference to `socket_parse'
> build/../../home/thuth/devel/qemu/qga/channel-posix.c:234: undefined
> reference to `socket_listen'
> qga/qemu-ga.p/commands-posix.c.o: In function `qmp_guest_file_write':
> build/../../home/thuth/devel/qemu/qga/commands-posix.c:527: undefined
> reference to `qbase64_decode'
>
> Let's make sure that we also compile and link the required files if
> the system emulators have not been enabled.
>
> Signed-off-by: Thomas Huth <thuth@redhat.com>
> ---
>  qapi/meson.build  | 2 +-
>  stubs/meson.build | 2 +-
>  util/meson.build  | 2 +-
>  3 files changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/qapi/meson.build b/qapi/meson.build
> index 9a36c15c04..fbdb442fdf 100644
> --- a/qapi/meson.build
> +++ b/qapi/meson.build
> @@ -13,7 +13,7 @@ util_ss.add(files(
>  if have_system
>    util_ss.add(files('qapi-type-helpers.c'))
>  endif
> -if have_system or have_tools
> +if have_system or have_tools or have_ga
>    util_ss.add(files(
>      'qmp-dispatch.c',
>      'qmp-event.c',
> diff --git a/stubs/meson.build b/stubs/meson.build
> index 4314161f5f..c96a74f095 100644
> --- a/stubs/meson.build
> +++ b/stubs/meson.build
> @@ -49,7 +49,7 @@ stub_ss.add(files('vmstate.c'))
>  stub_ss.add(files('vm-stop.c'))
>  stub_ss.add(files('win32-kbd-hook.c'))
>  stub_ss.add(files('cpu-synchronize-state.c'))
> -if have_block
> +if have_block or have_ga
>    stub_ss.add(files('replay-tools.c'))
>  endif
>  if have_system
> diff --git a/util/meson.build b/util/meson.build
> index 59c1f467bb..b260539bd5 100644
> --- a/util/meson.build
> +++ b/util/meson.build
> @@ -68,7 +68,7 @@ if have_system
>    util_ss.add(when: 'CONFIG_LINUX', if_true: files('userfaultfd.c'))
>  endif
>
> -if have_block
> +if have_block or have_ga
>    util_ss.add(files('aiocb.c', 'async.c', 'aio-wait.c'))
>    util_ss.add(files('base64.c'))
>    util_ss.add(files('buffer.c'))
> --
> 2.31.1
>
>
Philippe Mathieu-Daudé Nov. 9, 2022, 9:56 p.m. UTC | #2
On 9/11/22 18:37, Thomas Huth wrote:
> If configuring with "--disable-system --disable-user --enable-guest-agent"
> the linking currently fails with:
> 
> qga/qemu-ga.p/commands.c.o: In function `qmp_command_info':
> build/../../home/thuth/devel/qemu/qga/commands.c:70: undefined reference to `qmp_command_name'
> build/../../home/thuth/devel/qemu/qga/commands.c:71: undefined reference to `qmp_command_is_enabled'
> build/../../home/thuth/devel/qemu/qga/commands.c:72: undefined reference to `qmp_has_success_response'
> qga/qemu-ga.p/commands.c.o: In function `qmp_guest_info':
> build/../../home/thuth/devel/qemu/qga/commands.c:82: undefined reference to `qmp_for_each_command'
> qga/qemu-ga.p/commands.c.o: In function `qmp_guest_exec':
> build/../../home/thuth/devel/qemu/qga/commands.c:410: undefined reference to `qbase64_decode'
> qga/qemu-ga.p/channel-posix.c.o: In function `ga_channel_open':
> build/../../home/thuth/devel/qemu/qga/channel-posix.c:214: undefined reference to `unix_listen'
> build/../../home/thuth/devel/qemu/qga/channel-posix.c:228: undefined reference to `socket_parse'
> build/../../home/thuth/devel/qemu/qga/channel-posix.c:234: undefined reference to `socket_listen'
> qga/qemu-ga.p/commands-posix.c.o: In function `qmp_guest_file_write':
> build/../../home/thuth/devel/qemu/qga/commands-posix.c:527: undefined reference to `qbase64_decode'
> 
> Let's make sure that we also compile and link the required files if
> the system emulators have not been enabled.
> 
> Signed-off-by: Thomas Huth <thuth@redhat.com>
> ---
>   qapi/meson.build  | 2 +-
>   stubs/meson.build | 2 +-
>   util/meson.build  | 2 +-
>   3 files changed, 3 insertions(+), 3 deletions(-)

> diff --git a/util/meson.build b/util/meson.build
> index 59c1f467bb..b260539bd5 100644
> --- a/util/meson.build
> +++ b/util/meson.build
> @@ -68,7 +68,7 @@ if have_system
>     util_ss.add(when: 'CONFIG_LINUX', if_true: files('userfaultfd.c'))
>   endif
>   
> -if have_block
> +if have_block or have_ga
>     util_ss.add(files('aiocb.c', 'async.c', 'aio-wait.c'))
>     util_ss.add(files('base64.c'))
>     util_ss.add(files('buffer.c'))

This can be eventually reduced for 'have_ga':

-- 8< --
diff --git a/util/meson.build b/util/meson.build
index 59c1f467bbe..690e8be903e 100644
--- a/util/meson.build
+++ b/util/meson.build
@@ -68,28 +68,30 @@
    util_ss.add(when: 'CONFIG_LINUX', if_true: files('userfaultfd.c'))
  endif

-if have_block
+if have_block or have_ga
    util_ss.add(files('aiocb.c', 'async.c', 'aio-wait.c'))
    util_ss.add(files('base64.c'))
+ 
util_ss.add(files('coroutine-@0@.c'.format(config_host['CONFIG_COROUTINE_BACKEND'])))
+  util_ss.add(files('lockcnt.c'))
+  util_ss.add(files('main-loop.c'))
+  util_ss.add(files('qemu-coroutine.c', 'qemu-coroutine-lock.c', 
'qemu-coroutine-io.c'))
+  util_ss.add(files('qemu-coroutine-sleep.c'))
+  util_ss.add(files('qemu-co-shared-resource.c'))
+  util_ss.add(files('qemu-co-timeout.c'))
+  util_ss.add(files('iov.c', 'qemu-sockets.c', 'uri.c'))
+  util_ss.add(files('thread-pool.c', 'qemu-timer.c'))
+endif
+if have_block
    util_ss.add(files('buffer.c'))
    util_ss.add(files('bufferiszero.c'))
- 
util_ss.add(files('coroutine-@0@.c'.format(config_host['CONFIG_COROUTINE_BACKEND'])))
    util_ss.add(files('hbitmap.c'))
    util_ss.add(files('hexdump.c'))
    util_ss.add(files('iova-tree.c'))
-  util_ss.add(files('iov.c', 'qemu-sockets.c', 'uri.c'))
-  util_ss.add(files('lockcnt.c'))
-  util_ss.add(files('main-loop.c'))
    util_ss.add(files('nvdimm-utils.c'))
-  util_ss.add(files('qemu-coroutine.c', 'qemu-coroutine-lock.c', 
'qemu-coroutine-io.c'))
    util_ss.add(when: 'CONFIG_LINUX', if_true: [
      files('vhost-user-server.c'), vhost_user
    ])
    util_ss.add(files('block-helpers.c'))
-  util_ss.add(files('qemu-coroutine-sleep.c'))
-  util_ss.add(files('qemu-co-shared-resource.c'))
-  util_ss.add(files('qemu-co-timeout.c'))
-  util_ss.add(files('thread-pool.c', 'qemu-timer.c'))
    util_ss.add(files('readline.c'))
    util_ss.add(files('throttle.c'))
    util_ss.add(files('timed-average.c'))
---

Regardless:

Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Markus Armbruster Nov. 10, 2022, 5:49 a.m. UTC | #3
Philippe Mathieu-Daudé <philmd@linaro.org> writes:

> On 9/11/22 18:37, Thomas Huth wrote:
>> If configuring with "--disable-system --disable-user --enable-guest-agent"
>> the linking currently fails with:
>> 
>> qga/qemu-ga.p/commands.c.o: In function `qmp_command_info':
>> build/../../home/thuth/devel/qemu/qga/commands.c:70: undefined reference to `qmp_command_name'
>> build/../../home/thuth/devel/qemu/qga/commands.c:71: undefined reference to `qmp_command_is_enabled'
>> build/../../home/thuth/devel/qemu/qga/commands.c:72: undefined reference to `qmp_has_success_response'
>> qga/qemu-ga.p/commands.c.o: In function `qmp_guest_info':
>> build/../../home/thuth/devel/qemu/qga/commands.c:82: undefined reference to `qmp_for_each_command'
>> qga/qemu-ga.p/commands.c.o: In function `qmp_guest_exec':
>> build/../../home/thuth/devel/qemu/qga/commands.c:410: undefined reference to `qbase64_decode'
>> qga/qemu-ga.p/channel-posix.c.o: In function `ga_channel_open':
>> build/../../home/thuth/devel/qemu/qga/channel-posix.c:214: undefined reference to `unix_listen'
>> build/../../home/thuth/devel/qemu/qga/channel-posix.c:228: undefined reference to `socket_parse'
>> build/../../home/thuth/devel/qemu/qga/channel-posix.c:234: undefined reference to `socket_listen'
>> qga/qemu-ga.p/commands-posix.c.o: In function `qmp_guest_file_write':
>> build/../../home/thuth/devel/qemu/qga/commands-posix.c:527: undefined reference to `qbase64_decode'
>> 
>> Let's make sure that we also compile and link the required files if
>> the system emulators have not been enabled.
>> 
>> Signed-off-by: Thomas Huth <thuth@redhat.com>

I wonder for how long this has been broken.

Should we add such a configuration to CI?

>> ---
>>   qapi/meson.build  | 2 +-
>>   stubs/meson.build | 2 +-
>>   util/meson.build  | 2 +-
>>   3 files changed, 3 insertions(+), 3 deletions(-)
>
>> diff --git a/util/meson.build b/util/meson.build
>> index 59c1f467bb..b260539bd5 100644
>> --- a/util/meson.build
>> +++ b/util/meson.build
>> @@ -68,7 +68,7 @@ if have_system
>>     util_ss.add(when: 'CONFIG_LINUX', if_true: files('userfaultfd.c'))
>>   endif
>>   
>> -if have_block
>> +if have_block or have_ga
>>     util_ss.add(files('aiocb.c', 'async.c', 'aio-wait.c'))
>>     util_ss.add(files('base64.c'))
>>     util_ss.add(files('buffer.c'))
>
> This can be eventually reduced for 'have_ga':
>
> -- 8< --
> diff --git a/util/meson.build b/util/meson.build
> index 59c1f467bbe..690e8be903e 100644
> --- a/util/meson.build
> +++ b/util/meson.build
> @@ -68,28 +68,30 @@
>    util_ss.add(when: 'CONFIG_LINUX', if_true: files('userfaultfd.c'))
>  endif
>
> -if have_block
> +if have_block or have_ga
>    util_ss.add(files('aiocb.c', 'async.c', 'aio-wait.c'))
>    util_ss.add(files('base64.c'))
> + 
> util_ss.add(files('coroutine-@0@.c'.format(config_host['CONFIG_COROUTINE_BACKEND'])))
> +  util_ss.add(files('lockcnt.c'))
> +  util_ss.add(files('main-loop.c'))
> +  util_ss.add(files('qemu-coroutine.c', 'qemu-coroutine-lock.c', 
> 'qemu-coroutine-io.c'))
> +  util_ss.add(files('qemu-coroutine-sleep.c'))
> +  util_ss.add(files('qemu-co-shared-resource.c'))
> +  util_ss.add(files('qemu-co-timeout.c'))
> +  util_ss.add(files('iov.c', 'qemu-sockets.c', 'uri.c'))
> +  util_ss.add(files('thread-pool.c', 'qemu-timer.c'))
> +endif
> +if have_block
>    util_ss.add(files('buffer.c'))
>    util_ss.add(files('bufferiszero.c'))
> - 
> util_ss.add(files('coroutine-@0@.c'.format(config_host['CONFIG_COROUTINE_BACKEND'])))
>    util_ss.add(files('hbitmap.c'))
>    util_ss.add(files('hexdump.c'))
>    util_ss.add(files('iova-tree.c'))
> -  util_ss.add(files('iov.c', 'qemu-sockets.c', 'uri.c'))
> -  util_ss.add(files('lockcnt.c'))
> -  util_ss.add(files('main-loop.c'))
>    util_ss.add(files('nvdimm-utils.c'))
> -  util_ss.add(files('qemu-coroutine.c', 'qemu-coroutine-lock.c', 
> 'qemu-coroutine-io.c'))
>    util_ss.add(when: 'CONFIG_LINUX', if_true: [
>      files('vhost-user-server.c'), vhost_user
>    ])
>    util_ss.add(files('block-helpers.c'))
> -  util_ss.add(files('qemu-coroutine-sleep.c'))
> -  util_ss.add(files('qemu-co-shared-resource.c'))
> -  util_ss.add(files('qemu-co-timeout.c'))
> -  util_ss.add(files('thread-pool.c', 'qemu-timer.c'))
>    util_ss.add(files('readline.c'))
>    util_ss.add(files('throttle.c'))
>    util_ss.add(files('timed-average.c'))

Better!

> ---
>
> Regardless:
>
> Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Thomas Huth Nov. 10, 2022, 8:31 a.m. UTC | #4
On 09/11/2022 22.56, Philippe Mathieu-Daudé wrote:
> On 9/11/22 18:37, Thomas Huth wrote:
>> If configuring with "--disable-system --disable-user --enable-guest-agent"
>> the linking currently fails with:
>>
>> qga/qemu-ga.p/commands.c.o: In function `qmp_command_info':
>> build/../../home/thuth/devel/qemu/qga/commands.c:70: undefined reference 
>> to `qmp_command_name'
>> build/../../home/thuth/devel/qemu/qga/commands.c:71: undefined reference 
>> to `qmp_command_is_enabled'
>> build/../../home/thuth/devel/qemu/qga/commands.c:72: undefined reference 
>> to `qmp_has_success_response'
>> qga/qemu-ga.p/commands.c.o: In function `qmp_guest_info':
>> build/../../home/thuth/devel/qemu/qga/commands.c:82: undefined reference 
>> to `qmp_for_each_command'
>> qga/qemu-ga.p/commands.c.o: In function `qmp_guest_exec':
>> build/../../home/thuth/devel/qemu/qga/commands.c:410: undefined reference 
>> to `qbase64_decode'
>> qga/qemu-ga.p/channel-posix.c.o: In function `ga_channel_open':
>> build/../../home/thuth/devel/qemu/qga/channel-posix.c:214: undefined 
>> reference to `unix_listen'
>> build/../../home/thuth/devel/qemu/qga/channel-posix.c:228: undefined 
>> reference to `socket_parse'
>> build/../../home/thuth/devel/qemu/qga/channel-posix.c:234: undefined 
>> reference to `socket_listen'
>> qga/qemu-ga.p/commands-posix.c.o: In function `qmp_guest_file_write':
>> build/../../home/thuth/devel/qemu/qga/commands-posix.c:527: undefined 
>> reference to `qbase64_decode'
>>
>> Let's make sure that we also compile and link the required files if
>> the system emulators have not been enabled.
>>
>> Signed-off-by: Thomas Huth <thuth@redhat.com>
>> ---
>>   qapi/meson.build  | 2 +-
>>   stubs/meson.build | 2 +-
>>   util/meson.build  | 2 +-
>>   3 files changed, 3 insertions(+), 3 deletions(-)
> 
>> diff --git a/util/meson.build b/util/meson.build
>> index 59c1f467bb..b260539bd5 100644
>> --- a/util/meson.build
>> +++ b/util/meson.build
>> @@ -68,7 +68,7 @@ if have_system
>>     util_ss.add(when: 'CONFIG_LINUX', if_true: files('userfaultfd.c'))
>>   endif
>> -if have_block
>> +if have_block or have_ga
>>     util_ss.add(files('aiocb.c', 'async.c', 'aio-wait.c'))
>>     util_ss.add(files('base64.c'))
>>     util_ss.add(files('buffer.c'))
> 
> This can be eventually reduced for 'have_ga':
> 
> -- 8< --
> diff --git a/util/meson.build b/util/meson.build
> index 59c1f467bbe..690e8be903e 100644
> --- a/util/meson.build
> +++ b/util/meson.build
> @@ -68,28 +68,30 @@
>     util_ss.add(when: 'CONFIG_LINUX', if_true: files('userfaultfd.c'))
>   endif
> 
> -if have_block
> +if have_block or have_ga
>     util_ss.add(files('aiocb.c', 'async.c', 'aio-wait.c'))

Thanks for the idea! By breaking up the lines that contain multiple files, 
it seems that it can even be refined further.
I'll send a v2.

  Thomas
Thomas Huth Nov. 10, 2022, 8:35 a.m. UTC | #5
On 10/11/2022 06.49, Markus Armbruster wrote:
> Philippe Mathieu-Daudé <philmd@linaro.org> writes:
> 
>> On 9/11/22 18:37, Thomas Huth wrote:
>>> If configuring with "--disable-system --disable-user --enable-guest-agent"
>>> the linking currently fails with:
>>>
>>> qga/qemu-ga.p/commands.c.o: In function `qmp_command_info':
>>> build/../../home/thuth/devel/qemu/qga/commands.c:70: undefined reference to `qmp_command_name'
>>> build/../../home/thuth/devel/qemu/qga/commands.c:71: undefined reference to `qmp_command_is_enabled'
>>> build/../../home/thuth/devel/qemu/qga/commands.c:72: undefined reference to `qmp_has_success_response'
>>> qga/qemu-ga.p/commands.c.o: In function `qmp_guest_info':
>>> build/../../home/thuth/devel/qemu/qga/commands.c:82: undefined reference to `qmp_for_each_command'
>>> qga/qemu-ga.p/commands.c.o: In function `qmp_guest_exec':
>>> build/../../home/thuth/devel/qemu/qga/commands.c:410: undefined reference to `qbase64_decode'
>>> qga/qemu-ga.p/channel-posix.c.o: In function `ga_channel_open':
>>> build/../../home/thuth/devel/qemu/qga/channel-posix.c:214: undefined reference to `unix_listen'
>>> build/../../home/thuth/devel/qemu/qga/channel-posix.c:228: undefined reference to `socket_parse'
>>> build/../../home/thuth/devel/qemu/qga/channel-posix.c:234: undefined reference to `socket_listen'
>>> qga/qemu-ga.p/commands-posix.c.o: In function `qmp_guest_file_write':
>>> build/../../home/thuth/devel/qemu/qga/commands-posix.c:527: undefined reference to `qbase64_decode'
>>>
>>> Let's make sure that we also compile and link the required files if
>>> the system emulators have not been enabled.
>>>
>>> Signed-off-by: Thomas Huth <thuth@redhat.com>
> 
> I wonder for how long this has been broken.
> 
> Should we add such a configuration to CI?

Some month ago, I'd say: Sure! ... but considering that gitlab now limits 
the available CI minutes and that apparently nobody really cares about this 
configuration (otherwise someone would have complained about this earlier), 
I think it's not that important to have a separate CI test for this 
configuration.

  Thomas
Philippe Mathieu-Daudé Nov. 10, 2022, 9:49 a.m. UTC | #6
On 10/11/22 09:35, Thomas Huth wrote:
> On 10/11/2022 06.49, Markus Armbruster wrote:
>> Philippe Mathieu-Daudé <philmd@linaro.org> writes:
>>
>>> On 9/11/22 18:37, Thomas Huth wrote:
>>>> If configuring with "--disable-system --disable-user 
>>>> --enable-guest-agent"
>>>> the linking currently fails with:
>>>>
>>>> qga/qemu-ga.p/commands.c.o: In function `qmp_command_info':
>>>> build/../../home/thuth/devel/qemu/qga/commands.c:70: undefined 
>>>> reference to `qmp_command_name'

>>>> Let's make sure that we also compile and link the required files if
>>>> the system emulators have not been enabled.
>>>>
>>>> Signed-off-by: Thomas Huth <thuth@redhat.com>
>>
>> I wonder for how long this has been broken.
>>
>> Should we add such a configuration to CI?
> 
> Some month ago, I'd say: Sure! ... but considering that gitlab now 
> limits the available CI minutes and that apparently nobody really cares 
> about this configuration (otherwise someone would have complained about 
> this earlier), I think it's not that important to have a separate CI 
> test for this configuration.

We could eventually add a job restricted to qemu-project CI (not in
forks).
Thomas Huth Nov. 10, 2022, 9:57 a.m. UTC | #7
On 10/11/2022 10.49, Philippe Mathieu-Daudé wrote:
> On 10/11/22 09:35, Thomas Huth wrote:
>> On 10/11/2022 06.49, Markus Armbruster wrote:
>>> Philippe Mathieu-Daudé <philmd@linaro.org> writes:
>>>
>>>> On 9/11/22 18:37, Thomas Huth wrote:
>>>>> If configuring with "--disable-system --disable-user --enable-guest-agent"
>>>>> the linking currently fails with:
>>>>>
>>>>> qga/qemu-ga.p/commands.c.o: In function `qmp_command_info':
>>>>> build/../../home/thuth/devel/qemu/qga/commands.c:70: undefined 
>>>>> reference to `qmp_command_name'
> 
>>>>> Let's make sure that we also compile and link the required files if
>>>>> the system emulators have not been enabled.
>>>>>
>>>>> Signed-off-by: Thomas Huth <thuth@redhat.com>
>>>
>>> I wonder for how long this has been broken.
>>>
>>> Should we add such a configuration to CI?
>>
>> Some month ago, I'd say: Sure! ... but considering that gitlab now limits 
>> the available CI minutes and that apparently nobody really cares about 
>> this configuration (otherwise someone would have complained about this 
>> earlier), I think it's not that important to have a separate CI test for 
>> this configuration.
> 
> We could eventually add a job restricted to qemu-project CI (not in
> forks).

The problem is: Who's going to create such jobs? Someone needs to write the 
yaml stuff and test it first. And at least I pretty much lost motivation to 
work on new yaml stuff, since this burns my private CI minutes (which I 
rather need for my maintainer duties instead).

  Thomas
Daniel P. Berrangé Nov. 10, 2022, 10:05 a.m. UTC | #8
On Thu, Nov 10, 2022 at 10:57:27AM +0100, Thomas Huth wrote:
> On 10/11/2022 10.49, Philippe Mathieu-Daudé wrote:
> > On 10/11/22 09:35, Thomas Huth wrote:
> > > On 10/11/2022 06.49, Markus Armbruster wrote:
> > > > Philippe Mathieu-Daudé <philmd@linaro.org> writes:
> > > > 
> > > > > On 9/11/22 18:37, Thomas Huth wrote:
> > > > > > If configuring with "--disable-system --disable-user --enable-guest-agent"
> > > > > > the linking currently fails with:
> > > > > > 
> > > > > > qga/qemu-ga.p/commands.c.o: In function `qmp_command_info':
> > > > > > build/../../home/thuth/devel/qemu/qga/commands.c:70:
> > > > > > undefined reference to `qmp_command_name'
> > 
> > > > > > Let's make sure that we also compile and link the required files if
> > > > > > the system emulators have not been enabled.
> > > > > > 
> > > > > > Signed-off-by: Thomas Huth <thuth@redhat.com>
> > > > 
> > > > I wonder for how long this has been broken.
> > > > 
> > > > Should we add such a configuration to CI?
> > > 
> > > Some month ago, I'd say: Sure! ... but considering that gitlab now
> > > limits the available CI minutes and that apparently nobody really
> > > cares about this configuration (otherwise someone would have
> > > complained about this earlier), I think it's not that important to
> > > have a separate CI test for this configuration.
> > 
> > We could eventually add a job restricted to qemu-project CI (not in
> > forks).
> 
> The problem is: Who's going to create such jobs? Someone needs to write the
> yaml stuff and test it first. And at least I pretty much lost motivation to
> work on new yaml stuff, since this burns my private CI minutes (which I
> rather need for my maintainer duties instead).

Top tip: if you're working on GitLab CI changes, create a separate
QEMU fork in a different namespace for your adhoc testing, separate
from your normal maintainer work.

CI minutes are limited per namespace, ie group or user account, and
AFAIK, there is no limit on the number of groups you can create.

eg, create a group called /thuth-ci, and fork QEMU into that and
you've doubled the number of CI minutes available, so you can afford
to mess around with CI changes and not risk ability to do your other
normal work.

Now of course this ability to create many groups can be abused and
I expect GitLab would take a dim view of such abuse. So I would only
use this creation of extra groups for this very specific use case of
needing to battle test CI YAML changes.

With regards,
Daniel
diff mbox series

Patch

diff --git a/qapi/meson.build b/qapi/meson.build
index 9a36c15c04..fbdb442fdf 100644
--- a/qapi/meson.build
+++ b/qapi/meson.build
@@ -13,7 +13,7 @@  util_ss.add(files(
 if have_system
   util_ss.add(files('qapi-type-helpers.c'))
 endif
-if have_system or have_tools
+if have_system or have_tools or have_ga
   util_ss.add(files(
     'qmp-dispatch.c',
     'qmp-event.c',
diff --git a/stubs/meson.build b/stubs/meson.build
index 4314161f5f..c96a74f095 100644
--- a/stubs/meson.build
+++ b/stubs/meson.build
@@ -49,7 +49,7 @@  stub_ss.add(files('vmstate.c'))
 stub_ss.add(files('vm-stop.c'))
 stub_ss.add(files('win32-kbd-hook.c'))
 stub_ss.add(files('cpu-synchronize-state.c'))
-if have_block
+if have_block or have_ga
   stub_ss.add(files('replay-tools.c'))
 endif
 if have_system
diff --git a/util/meson.build b/util/meson.build
index 59c1f467bb..b260539bd5 100644
--- a/util/meson.build
+++ b/util/meson.build
@@ -68,7 +68,7 @@  if have_system
   util_ss.add(when: 'CONFIG_LINUX', if_true: files('userfaultfd.c'))
 endif
 
-if have_block
+if have_block or have_ga
   util_ss.add(files('aiocb.c', 'async.c', 'aio-wait.c'))
   util_ss.add(files('base64.c'))
   util_ss.add(files('buffer.c'))