diff mbox series

[RFC] migration: Add missing dependency on GNUTLS

Message ID 20210614052623.1657103-1-f4bug@amsat.org
State New
Headers show
Series [RFC] migration: Add missing dependency on GNUTLS | expand

Commit Message

Philippe Mathieu-Daudé June 14, 2021, 5:26 a.m. UTC
Commit 7de2e856533 made migration/qemu-file-channel.c include
"io/channel-tls.h" but forgot to add the new GNUTLS dependency
on Meson, leading to build failure on OSX:

  [2/35] Compiling C object libmigration.fa.p/migration_qemu-file-channel.c.o
  FAILED: libmigration.fa.p/migration_qemu-file-channel.c.o
  cc -Ilibmigration.fa.p -I. -I.. -Iqapi [ ... ] -o libmigration.fa.p/migration_qemu-file-channel.c.o -c ../migration/qemu-file-channel.c
  In file included from ../migration/qemu-file-channel.c:29:
  In file included from include/io/channel-tls.h:26:
  In file included from include/crypto/tlssession.h:24:
  include/crypto/tlscreds.h:28:10: fatal error: 'gnutls/gnutls.h' file not found
  #include <gnutls/gnutls.h>
           ^~~~~~~~~~~~~~~~~
  1 error generated.

Reported-by: Stefan Weil <sw@weilnetz.de>
Resolves: https://gitlab.com/qemu-project/qemu/-/issues/407
Fixes: 7de2e856533 ("yank: Unregister function when using TLS migration")
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
---
RFC: Not tested on OSX. Stefan, do you know why this isn't covered
     on Cirrus-CI?  https://cirrus-ci.com/build/4876003651616768
---
 migration/meson.build | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Daniel P. Berrangé June 14, 2021, 8:30 a.m. UTC | #1
On Mon, Jun 14, 2021 at 07:26:23AM +0200, Philippe Mathieu-Daudé wrote:
> Commit 7de2e856533 made migration/qemu-file-channel.c include
> "io/channel-tls.h" but forgot to add the new GNUTLS dependency
> on Meson, leading to build failure on OSX:
> 
>   [2/35] Compiling C object libmigration.fa.p/migration_qemu-file-channel.c.o
>   FAILED: libmigration.fa.p/migration_qemu-file-channel.c.o
>   cc -Ilibmigration.fa.p -I. -I.. -Iqapi [ ... ] -o libmigration.fa.p/migration_qemu-file-channel.c.o -c ../migration/qemu-file-channel.c
>   In file included from ../migration/qemu-file-channel.c:29:
>   In file included from include/io/channel-tls.h:26:
>   In file included from include/crypto/tlssession.h:24:
>   include/crypto/tlscreds.h:28:10: fatal error: 'gnutls/gnutls.h' file not found
>   #include <gnutls/gnutls.h>
>            ^~~~~~~~~~~~~~~~~
>   1 error generated.
> 
> Reported-by: Stefan Weil <sw@weilnetz.de>
> Resolves: https://gitlab.com/qemu-project/qemu/-/issues/407
> Fixes: 7de2e856533 ("yank: Unregister function when using TLS migration")
> Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
> ---
> RFC: Not tested on OSX. Stefan, do you know why this isn't covered
>      on Cirrus-CI?  https://cirrus-ci.com/build/4876003651616768
> ---
>  migration/meson.build | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)

Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>


Regards,
Daniel
Stefan Weil June 14, 2021, 8:44 a.m. UTC | #2
Am 14.06.21 um 07:26 schrieb Philippe Mathieu-Daudé:

> Commit 7de2e856533 made migration/qemu-file-channel.c include
> "io/channel-tls.h" but forgot to add the new GNUTLS dependency
> on Meson, leading to build failure on OSX:
>
>    [2/35] Compiling C object libmigration.fa.p/migration_qemu-file-channel.c.o
>    FAILED: libmigration.fa.p/migration_qemu-file-channel.c.o
>    cc -Ilibmigration.fa.p -I. -I.. -Iqapi [ ... ] -o libmigration.fa.p/migration_qemu-file-channel.c.o -c ../migration/qemu-file-channel.c
>    In file included from ../migration/qemu-file-channel.c:29:
>    In file included from include/io/channel-tls.h:26:
>    In file included from include/crypto/tlssession.h:24:
>    include/crypto/tlscreds.h:28:10: fatal error: 'gnutls/gnutls.h' file not found
>    #include <gnutls/gnutls.h>
>             ^~~~~~~~~~~~~~~~~
>    1 error generated.
>
> Reported-by: Stefan Weil <sw@weilnetz.de>
> Resolves: https://gitlab.com/qemu-project/qemu/-/issues/407
> Fixes: 7de2e856533 ("yank: Unregister function when using TLS migration")
> Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
> ---
> RFC: Not tested on OSX. Stefan, do you know why this isn't covered
>       on Cirrus-CI?  https://cirrus-ci.com/build/4876003651616768


Cirrus-CI does not install gnutls. That's easy to fix by adding it to 
the list of installed packages.

And the patch does not fix the issue. I already had tried that and 
similar changes in migration/meson.build.

Regards

Stefan
Peter Maydell June 15, 2021, 9:39 a.m. UTC | #3
On Mon, 14 Jun 2021 at 06:28, Philippe Mathieu-Daudé <f4bug@amsat.org> wrote:
>
> Commit 7de2e856533 made migration/qemu-file-channel.c include
> "io/channel-tls.h" but forgot to add the new GNUTLS dependency
> on Meson, leading to build failure on OSX:
>
>   [2/35] Compiling C object libmigration.fa.p/migration_qemu-file-channel.c.o
>   FAILED: libmigration.fa.p/migration_qemu-file-channel.c.o
>   cc -Ilibmigration.fa.p -I. -I.. -Iqapi [ ... ] -o libmigration.fa.p/migration_qemu-file-channel.c.o -c ../migration/qemu-file-channel.c
>   In file included from ../migration/qemu-file-channel.c:29:
>   In file included from include/io/channel-tls.h:26:
>   In file included from include/crypto/tlssession.h:24:
>   include/crypto/tlscreds.h:28:10: fatal error: 'gnutls/gnutls.h' file not found
>   #include <gnutls/gnutls.h>
>            ^~~~~~~~~~~~~~~~~
>   1 error generated.
>
> Reported-by: Stefan Weil <sw@weilnetz.de>
> Resolves: https://gitlab.com/qemu-project/qemu/-/issues/407
> Fixes: 7de2e856533 ("yank: Unregister function when using TLS migration")
> Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>

Is there really no way to get Meson to handle this kind
of thing properly (ie "just put all the include paths in the CFLAGS
for every compilation") rather than requiring us to add dependency
markers all over the meson.build files every time we add some
extra #include somewhere ? This is demonstrably horribly fragile
the way we have it at the moment :-(

-- PMM
Daniel P. Berrangé June 15, 2021, 9:45 a.m. UTC | #4
On Tue, Jun 15, 2021 at 10:39:08AM +0100, Peter Maydell wrote:
> On Mon, 14 Jun 2021 at 06:28, Philippe Mathieu-Daudé <f4bug@amsat.org> wrote:
> >
> > Commit 7de2e856533 made migration/qemu-file-channel.c include
> > "io/channel-tls.h" but forgot to add the new GNUTLS dependency
> > on Meson, leading to build failure on OSX:
> >
> >   [2/35] Compiling C object libmigration.fa.p/migration_qemu-file-channel.c.o
> >   FAILED: libmigration.fa.p/migration_qemu-file-channel.c.o
> >   cc -Ilibmigration.fa.p -I. -I.. -Iqapi [ ... ] -o libmigration.fa.p/migration_qemu-file-channel.c.o -c ../migration/qemu-file-channel.c
> >   In file included from ../migration/qemu-file-channel.c:29:
> >   In file included from include/io/channel-tls.h:26:
> >   In file included from include/crypto/tlssession.h:24:
> >   include/crypto/tlscreds.h:28:10: fatal error: 'gnutls/gnutls.h' file not found
> >   #include <gnutls/gnutls.h>
> >            ^~~~~~~~~~~~~~~~~
> >   1 error generated.
> >
> > Reported-by: Stefan Weil <sw@weilnetz.de>
> > Resolves: https://gitlab.com/qemu-project/qemu/-/issues/407
> > Fixes: 7de2e856533 ("yank: Unregister function when using TLS migration")
> > Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
> 
> Is there really no way to get Meson to handle this kind
> of thing properly (ie "just put all the include paths in the CFLAGS
> for every compilation") rather than requiring us to add dependency
> markers all over the meson.build files every time we add some
> extra #include somewhere ? This is demonstrably horribly fragile
> the way we have it at the moment :-(

A better way to fix this might be to figure out a change to make the
crypto struct definitions be private in the .c file, since the public
callers should not need to see them. That would let us remove the
#include for gnutls from the header.

Regards,
Daniel
diff mbox series

Patch

diff --git a/migration/meson.build b/migration/meson.build
index f8714dcb154..5b5a3f7b337 100644
--- a/migration/meson.build
+++ b/migration/meson.build
@@ -8,7 +8,7 @@ 
   'qemu-file.c',
   'yank_functions.c',
 )
-softmmu_ss.add(migration_files)
+softmmu_ss.add(migration_files, gnutls)
 
 softmmu_ss.add(files(
   'block-dirty-bitmap.c',