On Wed, Jun 16, 2021 at 06:22:25PM +0200, Philippe Mathieu-Daudé wrote: > Code consuming the "crypto/tlscreds*.h" APIs doesn't need > to access its internals. Move the structure definitions to > the "tlscredspriv.h" private header (only accessible by > implementations). The public headers (in include/) still > forward-declare the structures typedef. > > This solves a bug introduced by commit 7de2e856533 which made > migration/qemu-file-channel.c include "io/channel-tls.h", > itself sometime depends on GNUTLS, 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 <s...@weilnetz.de> > Suggested-by: Daniel P. Berrangé <berra...@redhat.com> > Resolves: https://gitlab.com/qemu-project/qemu/-/issues/407 > Fixes: 7de2e856533 ("yank: Unregister function when using TLS migration") > Signed-off-by: Philippe Mathieu-Daudé <phi...@redhat.com> > --- > crypto/tlscredspriv.h | 45 ++++++++++++++++++++++++++++++ > include/crypto/tls-cipher-suites.h | 6 ---- > include/crypto/tlscreds.h | 16 ----------- > include/crypto/tlscredsanon.h | 12 -------- > include/crypto/tlscredspsk.h | 12 -------- > include/crypto/tlscredsx509.h | 10 ------- > crypto/tls-cipher-suites.c | 7 +++++ > crypto/tlscredsanon.c | 2 ++ > crypto/tlscredspsk.c | 2 ++ > crypto/tlscredsx509.c | 1 + > crypto/tlssession.c | 1 + > 11 files changed, 58 insertions(+), 56 deletions(-) >
> diff --git a/crypto/tlscredsanon.c b/crypto/tlscredsanon.c > index bea5f76c55d..6fb83639ecd 100644 > --- a/crypto/tlscredsanon.c > +++ b/crypto/tlscredsanon.c > @@ -29,6 +29,8 @@ > > #ifdef CONFIG_GNUTLS > > +#include <gnutls/gnutls.h> > + > > static int > qcrypto_tls_creds_anon_load(QCryptoTLSCredsAnon *creds, > diff --git a/crypto/tlscredspsk.c b/crypto/tlscredspsk.c > index f5a31108d15..752f2d92bee 100644 > --- a/crypto/tlscredspsk.c > +++ b/crypto/tlscredspsk.c > @@ -29,6 +29,8 @@ > > #ifdef CONFIG_GNUTLS > > +#include <gnutls/gnutls.h> > + > static int > lookup_key(const char *pskfile, const char *username, gnutls_datum_t *key, > Error **errp) > diff --git a/crypto/tlscredsx509.c b/crypto/tlscredsx509.c > index d9d6f4421e5..32948a6bdc4 100644 > --- a/crypto/tlscredsx509.c > +++ b/crypto/tlscredsx509.c > @@ -30,6 +30,7 @@ > > #ifdef CONFIG_GNUTLS > > +#include <gnutls/gnutls.h> > #include <gnutls/x509.h> > > I was expecting all these files, and tlscreds.c to include tlscredspriv.h, otherwise how do they see the struct definition they need ? Regards, Daniel -- |: https://berrange.com -o- https://www.flickr.com/photos/dberrange :| |: https://libvirt.org -o- https://fstop138.berrange.com :| |: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|