diff mbox series

package/qemu: allow building only the guest agent

Message ID 20230322231511.551442-1-unixmania@gmail.com
State Accepted
Headers show
Series package/qemu: allow building only the guest agent | expand

Commit Message

Carlos Santos March 22, 2023, 11:15 p.m. UTC
From: Carlos Santos <unixmania@gmail.com>

Most of the tools are useful only on virtualization hosts. After the
upgrade to QEMU 7.2.0, it is possible to build only quemu-ga, which
makes more sense when we build guest VM images.

Also do not build the other tools by default if none of the emulators is
selected, since the user does not necessarily wants them. Ideally, it
should not be possible to select qemu without selecting at least one of
the subcomponents but it is hard to guess what the user wants.

Signed-off-by: Carlos Santos <unixmania@gmail.com>
---
NOTE

This was also possible on older QEMU versions, but required a trick to
force compiling the code required to link qemu-ga without building the
other tools:

   ./configure --enable-system --target-list="" --disable-tools --enable-guest-agent
---
 package/qemu/Config.in | 8 +++++++-
 package/qemu/qemu.mk   | 6 ++++++
 2 files changed, 13 insertions(+), 1 deletion(-)

Comments

Thomas Petazzoni March 24, 2023, 10:15 a.m. UTC | #1
On Wed, 22 Mar 2023 20:15:11 -0300
unixmania@gmail.com wrote:

> -	select BR2_PACKAGE_QEMU_TOOLS if !BR2_PACKAGE_QEMU_SYSTEM && !BR2_PACKAGE_QEMU_LINUX_USER

Is the build working OK if neither the tools, nor qemu-system, nor
qemu-user nor qemu-qa are enabled?

Thanks!

Thomas
Carlos Santos March 25, 2023, 1:14 a.m. UTC | #2
On Fri, Mar 24, 2023 at 7:15 AM Thomas Petazzoni
<thomas.petazzoni@bootlin.com> wrote:
>
> On Wed, 22 Mar 2023 20:15:11 -0300
> unixmania@gmail.com wrote:
>
> > -     select BR2_PACKAGE_QEMU_TOOLS if !BR2_PACKAGE_QEMU_SYSTEM && !BR2_PACKAGE_QEMU_LINUX_USER
>
> Is the build working OK if neither the tools, nor qemu-system, nor
> qemu-user nor qemu-qa are enabled?
>
> Thanks!
>
> Thomas
> --
> Thomas Petazzoni, co-owner and CEO, Bootlin
> Embedded Linux and Kernel engineering and training
> https://bootlin.com

Yes. It just does not install anything useful:

$ cat build/qemu-7.2.0/.files-list.txt
qemu,./usr/share/qemu/keymaps/sl
qemu,./usr/share/qemu/keymaps/sv
qemu,./usr/include/qemu-plugin.h
qemu,./usr/share/qemu/keymaps/ar
qemu,./usr/share/qemu/keymaps/bepo
qemu,./usr/share/qemu/keymaps/cz
qemu,./usr/share/qemu/keymaps/da
qemu,./usr/share/qemu/keymaps/de
qemu,./usr/share/qemu/keymaps/de-ch
qemu,./usr/share/qemu/keymaps/en-gb
qemu,./usr/share/qemu/keymaps/en-us
qemu,./usr/share/qemu/keymaps/es
qemu,./usr/share/qemu/keymaps/et
qemu,./usr/share/qemu/keymaps/fi
qemu,./usr/share/qemu/keymaps/fo
qemu,./usr/share/qemu/keymaps/fr
qemu,./usr/share/qemu/keymaps/fr-be
qemu,./usr/share/qemu/keymaps/fr-ca
qemu,./usr/share/qemu/keymaps/fr-ch
qemu,./usr/share/qemu/keymaps/hr
qemu,./usr/share/qemu/keymaps/hu
qemu,./usr/share/qemu/keymaps/is
qemu,./usr/share/qemu/keymaps/it
qemu,./usr/share/qemu/keymaps/ja
qemu,./usr/share/qemu/keymaps/lv
qemu,./usr/share/qemu/keymaps/lt
qemu,./usr/share/qemu/keymaps/mk
qemu,./usr/share/qemu/keymaps/nl
qemu,./usr/share/qemu/keymaps/no
qemu,./usr/share/qemu/keymaps/pl
qemu,./usr/share/qemu/keymaps/pt
qemu,./usr/share/qemu/keymaps/pt-br
qemu,./usr/share/qemu/keymaps/ru
qemu,./usr/share/qemu/keymaps/th
qemu,./usr/share/qemu/trace-events-all
qemu,./usr/share/qemu/keymaps/tr

The keymaps should not be installed if no qemu-system is built. I
already sent a patch upstream attempting to fix the problem but the
problem is still there:

https://lists.gnu.org/archive/html/qemu-devel/2023-01/msg00084.html

I also have a patch to install trace-events-all only if necessary.
Unfortunately, making these changes happen in qemu takes a long time.
Thomas Petazzoni March 31, 2023, 10:20 a.m. UTC | #3
Hello,

On Fri, 24 Mar 2023 22:14:18 -0300
Carlos Santos <unixmania@gmail.com> wrote:

> Yes. It just does not install anything useful:

OK. As long as it builds, that's fine :-)

> The keymaps should not be installed if no qemu-system is built. I
> already sent a patch upstream attempting to fix the problem but the
> problem is still there:
> 
> https://lists.gnu.org/archive/html/qemu-devel/2023-01/msg00084.html
> 
> I also have a patch to install trace-events-all only if necessary.
> Unfortunately, making these changes happen in qemu takes a long time.

Thanks for this work, definitely useful!

Best regards,

Thomas
Yann E. MORIN May 13, 2023, 8:25 a.m. UTC | #4
Carlos, All,

On 2023-03-22 20:15 -0300, unixmania@gmail.com spake thusly:
> From: Carlos Santos <unixmania@gmail.com>
> 
> Most of the tools are useful only on virtualization hosts. After the
> upgrade to QEMU 7.2.0, it is possible to build only quemu-ga, which
> makes more sense when we build guest VM images.
> 
> Also do not build the other tools by default if none of the emulators is
> selected, since the user does not necessarily wants them. Ideally, it
> should not be possible to select qemu without selecting at least one of
> the subcomponents but it is hard to guess what the user wants.
> 
> Signed-off-by: Carlos Santos <unixmania@gmail.com>

I am not very happy that this means we can end up with a cconfiguration
where nothing (meaningful) is installed, but fixing this becomes less
obvious...

So be it...

Applied to master, thanks.

Regards,
Yann E. MORIN.

> ---
> NOTE
> 
> This was also possible on older QEMU versions, but required a trick to
> force compiling the code required to link qemu-ga without building the
> other tools:
> 
>    ./configure --enable-system --target-list="" --disable-tools --enable-guest-agent
> ---
>  package/qemu/Config.in | 8 +++++++-
>  package/qemu/qemu.mk   | 6 ++++++
>  2 files changed, 13 insertions(+), 1 deletion(-)
> 
> diff --git a/package/qemu/Config.in b/package/qemu/Config.in
> index a446c0cf68..6a9b08648d 100644
> --- a/package/qemu/Config.in
> +++ b/package/qemu/Config.in
> @@ -26,7 +26,6 @@ menuconfig BR2_PACKAGE_QEMU
>  	depends on BR2_USE_MMU # fork()
>  	select BR2_PACKAGE_LIBGLIB2
>  	select BR2_PACKAGE_ZLIB
> -	select BR2_PACKAGE_QEMU_TOOLS if !BR2_PACKAGE_QEMU_SYSTEM && !BR2_PACKAGE_QEMU_LINUX_USER
>  	help
>  	  QEMU is a generic and open source machine emulator and
>  	  virtualizer.
> @@ -358,4 +357,11 @@ config BR2_PACKAGE_QEMU_TOOLS
>  	  Say 'y' here to include tools packaged with QEMU
>  	  (e.g. qemu-img).
>  
> +config BR2_PACKAGE_QEMU_GUEST_AGENT
> +	bool "Enable guest agent"
> +	help
> +	  Say 'y' here to include an agent to run on guests, which
> +	  communicates with the host over a virtio-serial channel
> +	  named "org.qemu.guest_agent.0".
> +
>  endif # BR2_PACKAGE_QEMU
> diff --git a/package/qemu/qemu.mk b/package/qemu/qemu.mk
> index 3cbeffe213..4194670bb0 100644
> --- a/package/qemu/qemu.mk
> +++ b/package/qemu/qemu.mk
> @@ -165,6 +165,12 @@ else
>  QEMU_OPTS += --disable-tools
>  endif
>  
> +ifeq ($(BR2_PACKAGE_QEMU_GUEST_AGENT),y)
> +QEMU_OPTS += --enable-guest-agent
> +else
> +QEMU_OPTS += --disable-guest-agent
> +endif
> +
>  ifeq ($(BR2_PACKAGE_LIBFUSE3),y)
>  QEMU_OPTS += --enable-fuse --enable-fuse-lseek
>  QEMU_DEPENDENCIES += libfuse3
> -- 
> 2.31.1
> 
> _______________________________________________
> buildroot mailing list
> buildroot@buildroot.org
> https://lists.buildroot.org/mailman/listinfo/buildroot
diff mbox series

Patch

diff --git a/package/qemu/Config.in b/package/qemu/Config.in
index a446c0cf68..6a9b08648d 100644
--- a/package/qemu/Config.in
+++ b/package/qemu/Config.in
@@ -26,7 +26,6 @@  menuconfig BR2_PACKAGE_QEMU
 	depends on BR2_USE_MMU # fork()
 	select BR2_PACKAGE_LIBGLIB2
 	select BR2_PACKAGE_ZLIB
-	select BR2_PACKAGE_QEMU_TOOLS if !BR2_PACKAGE_QEMU_SYSTEM && !BR2_PACKAGE_QEMU_LINUX_USER
 	help
 	  QEMU is a generic and open source machine emulator and
 	  virtualizer.
@@ -358,4 +357,11 @@  config BR2_PACKAGE_QEMU_TOOLS
 	  Say 'y' here to include tools packaged with QEMU
 	  (e.g. qemu-img).
 
+config BR2_PACKAGE_QEMU_GUEST_AGENT
+	bool "Enable guest agent"
+	help
+	  Say 'y' here to include an agent to run on guests, which
+	  communicates with the host over a virtio-serial channel
+	  named "org.qemu.guest_agent.0".
+
 endif # BR2_PACKAGE_QEMU
diff --git a/package/qemu/qemu.mk b/package/qemu/qemu.mk
index 3cbeffe213..4194670bb0 100644
--- a/package/qemu/qemu.mk
+++ b/package/qemu/qemu.mk
@@ -165,6 +165,12 @@  else
 QEMU_OPTS += --disable-tools
 endif
 
+ifeq ($(BR2_PACKAGE_QEMU_GUEST_AGENT),y)
+QEMU_OPTS += --enable-guest-agent
+else
+QEMU_OPTS += --disable-guest-agent
+endif
+
 ifeq ($(BR2_PACKAGE_LIBFUSE3),y)
 QEMU_OPTS += --enable-fuse --enable-fuse-lseek
 QEMU_DEPENDENCIES += libfuse3