* [PATCH 0/2] crypto: fix build with gcrypt
@ 2020-08-28 13:27 Daniel P. Berrangé
2020-08-28 13:27 ` [PATCH 1/2] crypto: fix build without gcrypt and gnutls Daniel P. Berrangé
2020-08-28 13:27 ` [PATCH 2/2] gitlab: expand test coverage for crypto builds Daniel P. Berrangé
0 siblings, 2 replies; 8+ messages in thread
From: Daniel P. Berrangé @ 2020-08-28 13:27 UTC (permalink / raw)
To: qemu-devel
Cc: Fam Zheng, Thomas Huth, Daniel P. Berrangé, Alex Bennée,
Richard Henderson, Wainer dos Santos Moschetta, Paolo Bonzini,
Philippe Mathieu-Daudé
The build system failed to add gcrypt flags and also didn't link to
gnutls in all scenarios. This was missed because of the lack of CI
coverage for various build scenarios
Daniel P. Berrangé (2):
crypto: fix build without gcrypt and gnutls
gitlab: expand test coverage for crypto builds
.gitlab-ci.yml | 66 +++++++++++++++++++++++++
configure | 2 +
crypto/meson.build | 24 ++++-----
meson.build | 5 ++
tests/docker/dockerfiles/centos7.docker | 2 +
tests/docker/dockerfiles/centos8.docker | 1 +
6 files changed, 88 insertions(+), 12 deletions(-)
--
2.26.2
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH 1/2] crypto: fix build without gcrypt and gnutls
2020-08-28 13:27 [PATCH 0/2] crypto: fix build with gcrypt Daniel P. Berrangé
@ 2020-08-28 13:27 ` Daniel P. Berrangé
2020-08-28 15:13 ` Richard Henderson
2020-09-01 13:25 ` Alex Bennée
2020-08-28 13:27 ` [PATCH 2/2] gitlab: expand test coverage for crypto builds Daniel P. Berrangé
1 sibling, 2 replies; 8+ messages in thread
From: Daniel P. Berrangé @ 2020-08-28 13:27 UTC (permalink / raw)
To: qemu-devel
Cc: Fam Zheng, Thomas Huth, Daniel P. Berrangé, Alex Bennée,
Richard Henderson, Wainer dos Santos Moschetta, Paolo Bonzini,
Philippe Mathieu-Daudé
If nettle is disabled and gcrypt enabled, the compiler and linker flags
needed for gcrypt are not passed.
Gnutls was also not added as a dependancy wen gcrypt is enabled.
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
---
configure | 2 ++
crypto/meson.build | 24 ++++++++++++------------
meson.build | 5 +++++
3 files changed, 19 insertions(+), 12 deletions(-)
diff --git a/configure b/configure
index 6ecaff429b..4effe769c9 100755
--- a/configure
+++ b/configure
@@ -6973,6 +6973,8 @@ if test "$gcrypt" = "yes" ; then
if test "$gcrypt_hmac" = "yes" ; then
echo "CONFIG_GCRYPT_HMAC=y" >> $config_host_mak
fi
+ echo "GCRYPT_CFLAGS=$gcrypt_cflags" >> $config_host_mak
+ echo "GCRYPT_LIBS=$gcrypt_libs" >> $config_host_mak
fi
if test "$nettle" = "yes" ; then
echo "CONFIG_NETTLE=y" >> $config_host_mak
diff --git a/crypto/meson.build b/crypto/meson.build
index 18da7c8541..af12b85aae 100644
--- a/crypto/meson.build
+++ b/crypto/meson.build
@@ -23,23 +23,23 @@ crypto_ss.add(files(
'tlssession.c',
))
-if 'CONFIG_GCRYPT' in config_host
- wo_nettle = files('hash-gcrypt.c', 'pbkdf-gcrypt.c')
+if 'CONFIG_NETTLE' in config_host
+ crypto_ss.add(files('hash-nettle.c', 'hmac-nettle.c', 'pbkdf-nettle.c'), nettle)
+elif 'CONFIG_GCRYPT' in config_host
+ crypto_ss.add(files('hash-gcrypt.c', 'pbkdf-gcrypt.c'), gcrypt)
+ if 'CONFIG_GCRYPT_HMAC' in config_host
+ crypto_ss.add(files('hmac-gcrypt.c'))
+ else
+ crypto_ss.add(files('hmac-glib.c'))
+ endif
else
- wo_nettle = files('hash-glib.c', 'pbkdf-stub.c')
-endif
-if 'CONFIG_GCRYPT_HMAC' not in config_host
- wo_nettle += files('hmac-glib.c')
+ crypto_ss.add(files('hash-glib.c', 'hmac-glib.c', 'pbkdf-stub.c'))
endif
-crypto_ss.add(when: [nettle, 'CONFIG_NETTLE'],
- if_true: files('hash-nettle.c', 'hmac-nettle.c', 'pbkdf-nettle.c'),
- if_false: wo_nettle)
crypto_ss.add(when: 'CONFIG_SECRET_KEYRING', if_true: files('secret_keyring.c'))
crypto_ss.add(when: 'CONFIG_QEMU_PRIVATE_XTS', if_true: files('xts.c'))
-crypto_ss.add(when: 'CONFIG_GCRYPT_HMAC', if_true: files('hmac-gcrypt.c'))
crypto_ss.add(when: 'CONFIG_AF_ALG', if_true: files('afalg.c', 'cipher-afalg.c', 'hash-afalg.c'))
-crypto_ss.add(when: 'CONFIG_GNUTLS', if_true: files('tls-cipher-suites.c'))
+crypto_ss.add(when: [gnutls, 'CONFIG_GNUTLS'], if_true: files('tls-cipher-suites.c'))
crypto_ss = crypto_ss.apply(config_host, strict: false)
libcrypto = static_library('crypto', crypto_ss.sources() + genh,
@@ -53,7 +53,7 @@ crypto = declare_dependency(link_whole: libcrypto,
util_ss.add(files('aes.c'))
util_ss.add(files('init.c'))
if 'CONFIG_GCRYPT' in config_host
- util_ss.add(files('random-gcrypt.c'))
+ util_ss.add(files('random-gcrypt.c'), gcrypt)
elif 'CONFIG_GNUTLS' in config_host
util_ss.add(files('random-gnutls.c'), gnutls)
elif 'CONFIG_RNG_NONE' in config_host
diff --git a/meson.build b/meson.build
index 74f8ea0c2e..c5f672028f 100644
--- a/meson.build
+++ b/meson.build
@@ -114,6 +114,11 @@ urcubp = not_found
if 'CONFIG_TRACE_UST' in config_host
urcubp = declare_dependency(link_args: config_host['URCU_BP_LIBS'].split())
endif
+gcrypt = not_found
+if 'CONFIG_GCRYPT' in config_host
+ gcrypt = declare_dependency(compile_args: config_host['GCRYPT_CFLAGS'].split(),
+ link_args: config_host['GCRYPT_LIBS'].split())
+endif
nettle = not_found
if 'CONFIG_NETTLE' in config_host
nettle = declare_dependency(compile_args: config_host['NETTLE_CFLAGS'].split(),
--
2.26.2
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 2/2] gitlab: expand test coverage for crypto builds
2020-08-28 13:27 [PATCH 0/2] crypto: fix build with gcrypt Daniel P. Berrangé
2020-08-28 13:27 ` [PATCH 1/2] crypto: fix build without gcrypt and gnutls Daniel P. Berrangé
@ 2020-08-28 13:27 ` Daniel P. Berrangé
2020-08-31 8:14 ` Thomas Huth
1 sibling, 1 reply; 8+ messages in thread
From: Daniel P. Berrangé @ 2020-08-28 13:27 UTC (permalink / raw)
To: qemu-devel
Cc: Fam Zheng, Thomas Huth, Daniel P. Berrangé, Alex Bennée,
Richard Henderson, Wainer dos Santos Moschetta, Paolo Bonzini,
Philippe Mathieu-Daudé
Most jobs test the latest nettle library. This adds explicit coverage
for latest gcrypt using Fedora, and old gcrypt and nettle using
CentOS-7. The latter does a minimal tools-only build, as we only need to
validate that the crypto code builds and unit tests pass. Finally a job
disabling both nettle and gcrypt is provided to validate that gnutls
still works.
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
---
.gitlab-ci.yml | 66 +++++++++++++++++++++++++
tests/docker/dockerfiles/centos7.docker | 2 +
tests/docker/dockerfiles/centos8.docker | 1 +
3 files changed, 69 insertions(+)
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index b7967b9a13..85cf1f6cfd 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -130,6 +130,7 @@ build-system-fedora:
<<: *native_build_job_definition
variables:
IMAGE: fedora
+ CONFIGURE_ARGS: --disable-gcrypt --enable-nettle
TARGETS: tricore-softmmu unicore32-softmmu microblaze-softmmu mips-softmmu
xtensa-softmmu m68k-softmmu riscv32-softmmu ppc-softmmu sparc64-softmmu
MAKE_CHECK_ARGS: check-build
@@ -160,6 +161,7 @@ build-system-centos:
<<: *native_build_job_definition
variables:
IMAGE: centos8
+ CONFIGURE_ARGS: --disable-nettle --enable-gcrypt
TARGETS: ppc64-softmmu lm32-softmmu or1k-softmmu s390x-softmmu
x86_64-softmmu rx-softmmu sh4-softmmu nios2-softmmu
MAKE_CHECK_ARGS: check-build
@@ -196,6 +198,7 @@ build-disabled:
--disable-guest-agent --disable-curses --disable-libxml2 --disable-tpm
--disable-qom-cast-debug --disable-spice --disable-vhost-vsock
--disable-vhost-net --disable-vhost-crypto --disable-vhost-user
+ --disable-nettle --disable-gcrypt --disable-gnutls
TARGETS: i386-softmmu ppc64-softmmu mips64-softmmu i386-linux-user
MAKE_CHECK_ARGS: check-qtest SPEED=slow
@@ -271,3 +274,66 @@ build-tci:
done
- QTEST_QEMU_BINARY="./qemu-system-x86_64" ./tests/qtest/pxe-test
- QTEST_QEMU_BINARY="./qemu-system-s390x" ./tests/qtest/pxe-test -m slow
+
+# Most jobs test latest gcrypto or nettle builds
+#
+# These jobs test old gcrypt and nettle from RHEL7
+# which had some API differences.
+build-crypto-old-nettle:
+ <<: *native_build_job_definition
+ variables:
+ IMAGE: centos7
+ CONFIGURE_ARGS: --disable-system --disable-user --enable-tools --disable-gcrypt --enable-nettle
+ MAKE_CHECK_ARGS: check-build
+ artifacts:
+ paths:
+ - build
+
+check-crypto-old-nettle:
+ <<: *native_test_job_definition
+ needs:
+ - job: build-crypto-old-nettle
+ artifacts: true
+ variables:
+ IMAGE: centos7
+ MAKE_CHECK_ARGS: check
+
+
+build-crypto-old-gcrypt:
+ <<: *native_build_job_definition
+ variables:
+ IMAGE: centos7
+ CONFIGURE_ARGS: --disable-system --disable-user --enable-tools --disable-nettle --enable-gcrypt
+ MAKE_CHECK_ARGS: check-build
+ artifacts:
+ paths:
+ - build
+
+check-crypto-old-gcrypt:
+ <<: *native_test_job_definition
+ needs:
+ - job: build-crypto-old-gcrypt
+ artifacts: true
+ variables:
+ IMAGE: centos7
+ MAKE_CHECK_ARGS: check
+
+
+build-crypto-only-gnutls:
+ <<: *native_build_job_definition
+ variables:
+ IMAGE: centos7
+ CONFIGURE_ARGS: --disable-system --disable-user --enable-tools --disable-nettle --disable-gcrypt --enable-gnutls
+ MAKE_CHECK_ARGS: check-build
+ artifacts:
+ paths:
+ - build
+
+check-crypto-only-gnutls:
+ <<: *native_test_job_definition
+ needs:
+ - job: build-crypto-only-gnutls
+ artifacts: true
+ variables:
+ IMAGE: centos7
+ MAKE_CHECK_ARGS: check
diff --git a/tests/docker/dockerfiles/centos7.docker b/tests/docker/dockerfiles/centos7.docker
index e197acdc3c..46277773bf 100644
--- a/tests/docker/dockerfiles/centos7.docker
+++ b/tests/docker/dockerfiles/centos7.docker
@@ -15,9 +15,11 @@ ENV PACKAGES \
gettext \
git \
glib2-devel \
+ gnutls-devel \
libaio-devel \
libepoxy-devel \
libfdt-devel \
+ libgcrypt-devel \
librdmacm-devel \
libzstd-devel \
lzo-devel \
diff --git a/tests/docker/dockerfiles/centos8.docker b/tests/docker/dockerfiles/centos8.docker
index 9852c5b9ee..f435616d6a 100644
--- a/tests/docker/dockerfiles/centos8.docker
+++ b/tests/docker/dockerfiles/centos8.docker
@@ -13,6 +13,7 @@ ENV PACKAGES \
glib2-devel \
libaio-devel \
libepoxy-devel \
+ libgcrypt-devel \
lzo-devel \
make \
mesa-libEGL-devel \
--
2.26.2
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH 1/2] crypto: fix build without gcrypt and gnutls
2020-08-28 13:27 ` [PATCH 1/2] crypto: fix build without gcrypt and gnutls Daniel P. Berrangé
@ 2020-08-28 15:13 ` Richard Henderson
2020-08-28 15:23 ` Daniel P. Berrangé
2020-09-01 13:25 ` Alex Bennée
1 sibling, 1 reply; 8+ messages in thread
From: Richard Henderson @ 2020-08-28 15:13 UTC (permalink / raw)
To: Daniel P. Berrangé, qemu-devel
Cc: Fam Zheng, Thomas Huth, Alex Bennée,
Wainer dos Santos Moschetta, Paolo Bonzini,
Philippe Mathieu-Daudé
On 8/28/20 6:27 AM, Daniel P. Berrangé wrote:
> If nettle is disabled and gcrypt enabled, the compiler and linker flags
> needed for gcrypt are not passed.
>
> Gnutls was also not added as a dependancy wen gcrypt is enabled.
>
> Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
This still needs something else. I get
Linking target qemu-x86_64
/usr/bin/ld: libqemuutil.a(crypto_init.c.o): in function `qcrypto_init':
/home/rth/qemu/bld-g/../qemu/crypto/init.c:111: undefined reference to
`gnutls_global_init'
/usr/bin/ld: /home/rth/qemu/bld-g/../qemu/crypto/init.c:113: undefined
reference to `gnutls_strerror'
collect2: error: ld returned 1 exit status
make: *** [Makefile.ninja:1570: qemu-x86_64] Error 1
r~
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 1/2] crypto: fix build without gcrypt and gnutls
2020-08-28 15:13 ` Richard Henderson
@ 2020-08-28 15:23 ` Daniel P. Berrangé
2020-08-28 16:59 ` Richard Henderson
0 siblings, 1 reply; 8+ messages in thread
From: Daniel P. Berrangé @ 2020-08-28 15:23 UTC (permalink / raw)
To: Richard Henderson
Cc: Fam Zheng, Thomas Huth, Philippe Mathieu-Daudé, qemu-devel,
Wainer dos Santos Moschetta, Paolo Bonzini, Alex Bennée
On Fri, Aug 28, 2020 at 08:13:26AM -0700, Richard Henderson wrote:
> On 8/28/20 6:27 AM, Daniel P. Berrangé wrote:
> > If nettle is disabled and gcrypt enabled, the compiler and linker flags
> > needed for gcrypt are not passed.
> >
> > Gnutls was also not added as a dependancy wen gcrypt is enabled.
> >
> > Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
>
> This still needs something else. I get
>
> Linking target qemu-x86_64
> /usr/bin/ld: libqemuutil.a(crypto_init.c.o): in function `qcrypto_init':
> /home/rth/qemu/bld-g/../qemu/crypto/init.c:111: undefined reference to
> `gnutls_global_init'
> /usr/bin/ld: /home/rth/qemu/bld-g/../qemu/crypto/init.c:113: undefined
> reference to `gnutls_strerror'
> collect2: error: ld returned 1 exit status
> make: *** [Makefile.ninja:1570: qemu-x86_64] Error 1
Can you tell me what configure args you're using and host OS distro
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 :|
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 1/2] crypto: fix build without gcrypt and gnutls
2020-08-28 15:23 ` Daniel P. Berrangé
@ 2020-08-28 16:59 ` Richard Henderson
0 siblings, 0 replies; 8+ messages in thread
From: Richard Henderson @ 2020-08-28 16:59 UTC (permalink / raw)
To: Daniel P. Berrangé
Cc: Fam Zheng, Thomas Huth, Philippe Mathieu-Daudé, qemu-devel,
Wainer dos Santos Moschetta, Paolo Bonzini, Alex Bennée
On 8/28/20 8:23 AM, Daniel P. Berrangé wrote:
> On Fri, Aug 28, 2020 at 08:13:26AM -0700, Richard Henderson wrote:
>> On 8/28/20 6:27 AM, Daniel P. Berrangé wrote:
>>> If nettle is disabled and gcrypt enabled, the compiler and linker flags
>>> needed for gcrypt are not passed.
>>>
>>> Gnutls was also not added as a dependancy wen gcrypt is enabled.
>>>
>>> Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
>>
>> This still needs something else. I get
>>
>> Linking target qemu-x86_64
>> /usr/bin/ld: libqemuutil.a(crypto_init.c.o): in function `qcrypto_init':
>> /home/rth/qemu/bld-g/../qemu/crypto/init.c:111: undefined reference to
>> `gnutls_global_init'
>> /usr/bin/ld: /home/rth/qemu/bld-g/../qemu/crypto/init.c:113: undefined
>> reference to `gnutls_strerror'
>> collect2: error: ld returned 1 exit status
>> make: *** [Makefile.ninja:1570: qemu-x86_64] Error 1
>
> Can you tell me what configure args you're using and host OS distro
../qemu/configure --enable-gcrypt \
--target-list=x86_64-softmmu,x86_64-linux-user
On ubuntu 20 (focal).
r~
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 2/2] gitlab: expand test coverage for crypto builds
2020-08-28 13:27 ` [PATCH 2/2] gitlab: expand test coverage for crypto builds Daniel P. Berrangé
@ 2020-08-31 8:14 ` Thomas Huth
0 siblings, 0 replies; 8+ messages in thread
From: Thomas Huth @ 2020-08-31 8:14 UTC (permalink / raw)
To: Daniel P. Berrangé, qemu-devel
Cc: Fam Zheng, Alex Bennée, Richard Henderson,
Wainer dos Santos Moschetta, Paolo Bonzini,
Philippe Mathieu-Daudé
On 28/08/2020 15.27, Daniel P. Berrangé wrote:
> Most jobs test the latest nettle library. This adds explicit coverage
> for latest gcrypt using Fedora, and old gcrypt and nettle using
> CentOS-7. The latter does a minimal tools-only build, as we only need to
> validate that the crypto code builds and unit tests pass. Finally a job
> disabling both nettle and gcrypt is provided to validate that gnutls
> still works.
>
> Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
> ---
> .gitlab-ci.yml | 66 +++++++++++++++++++++++++
> tests/docker/dockerfiles/centos7.docker | 2 +
> tests/docker/dockerfiles/centos8.docker | 1 +
> 3 files changed, 69 insertions(+)
Acked-by: Thomas Huth <thuth@redhat.com>
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 1/2] crypto: fix build without gcrypt and gnutls
2020-08-28 13:27 ` [PATCH 1/2] crypto: fix build without gcrypt and gnutls Daniel P. Berrangé
2020-08-28 15:13 ` Richard Henderson
@ 2020-09-01 13:25 ` Alex Bennée
1 sibling, 0 replies; 8+ messages in thread
From: Alex Bennée @ 2020-09-01 13:25 UTC (permalink / raw)
To: Daniel P. Berrangé
Cc: Fam Zheng, Thomas Huth, Richard Henderson, qemu-devel,
Wainer dos Santos Moschetta, Paolo Bonzini,
Philippe Mathieu-Daudé
Daniel P. Berrangé <berrange@redhat.com> writes:
> If nettle is disabled and gcrypt enabled, the compiler and linker flags
> needed for gcrypt are not passed.
>
> Gnutls was also not added as a dependancy wen gcrypt is enabled.
nit: when
--
Alex Bennée
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2020-09-01 13:26 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-08-28 13:27 [PATCH 0/2] crypto: fix build with gcrypt Daniel P. Berrangé
2020-08-28 13:27 ` [PATCH 1/2] crypto: fix build without gcrypt and gnutls Daniel P. Berrangé
2020-08-28 15:13 ` Richard Henderson
2020-08-28 15:23 ` Daniel P. Berrangé
2020-08-28 16:59 ` Richard Henderson
2020-09-01 13:25 ` Alex Bennée
2020-08-28 13:27 ` [PATCH 2/2] gitlab: expand test coverage for crypto builds Daniel P. Berrangé
2020-08-31 8:14 ` Thomas Huth
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).