[PATCH] test: Fix test-crypto-secret when compiling without keyring support

Juan Quintela posted 1 patch 1 year, 2 months ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20230301110058.1255-1-quintela@redhat.com
Maintainers: "Daniel P. Berrangé" <berrange@redhat.com>
There is a newer version of this series
tests/unit/test-crypto-secret.c | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
[PATCH] test: Fix test-crypto-secret when compiling without keyring support
Posted by Juan Quintela 1 year, 2 months ago
Linux keyring support is protected by CONFIG_KEYUTILS.
Use CONFIG_SECRET_KEYRING.

Signed-off-by: Juan Quintela <quintela@redhat.com>

---

Previous version of this patch changed the meson build rules.
Daniel told me that the proper fix was to change the #ifdef test.
---
 tests/unit/test-crypto-secret.c | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/tests/unit/test-crypto-secret.c b/tests/unit/test-crypto-secret.c
index 34a4aecc12..ccb9dbcd49 100644
--- a/tests/unit/test-crypto-secret.c
+++ b/tests/unit/test-crypto-secret.c
@@ -24,7 +24,7 @@
 #include "crypto/secret.h"
 #include "qapi/error.h"
 #include "qemu/module.h"
-#ifdef CONFIG_KEYUTILS
+#ifdef CONFIG_SECRET_KEYRING
 #include "crypto/secret_keyring.h"
 #include <keyutils.h>
 #endif
@@ -128,7 +128,7 @@ static void test_secret_indirect_emptyfile(void)
     g_free(fname);
 }
 
-#ifdef CONFIG_KEYUTILS
+#ifdef CONFIG_SECRET_KEYRING
 
 #define DESCRIPTION "qemu_test_secret"
 #define PAYLOAD "Test Payload"
@@ -268,7 +268,7 @@ static void test_secret_keyring_bad_key_access_right(void)
     keyctl_unlink(key, KEY_SPEC_PROCESS_KEYRING);
 }
 
-#endif /* CONFIG_KEYUTILS */
+#endif /* CONFIG_SECRET_KEYRING */
 
 static void test_secret_noconv_base64_good(void)
 {
@@ -571,7 +571,7 @@ int main(int argc, char **argv)
     g_test_add_func("/crypto/secret/indirect/emptyfile",
                     test_secret_indirect_emptyfile);
 
-#ifdef CONFIG_KEYUTILS
+#ifdef CONFIG_SECRET_KEYRING
     g_test_add_func("/crypto/secret/keyring/good",
                     test_secret_keyring_good);
     g_test_add_func("/crypto/secret/keyring/revoked_key",
@@ -582,7 +582,7 @@ int main(int argc, char **argv)
                     test_secret_keyring_bad_serial_key);
     g_test_add_func("/crypto/secret/keyring/bad_key_access_right",
                     test_secret_keyring_bad_key_access_right);
-#endif /* CONFIG_KEYUTILS */
+#endif /* CONFIG_SECRET_KEYRING */
 
     g_test_add_func("/crypto/secret/noconv/base64/good",
                     test_secret_noconv_base64_good);
-- 
2.39.2
Re: [PATCH] test: Fix test-crypto-secret when compiling without keyring support
Posted by Thomas Huth 1 year, 2 months ago
On 01/03/2023 12.00, Juan Quintela wrote:
> Linux keyring support is protected by CONFIG_KEYUTILS.
> Use CONFIG_SECRET_KEYRING.
> 
> Signed-off-by: Juan Quintela <quintela@redhat.com>
> 
> ---
> 
> Previous version of this patch changed the meson build rules.
> Daniel told me that the proper fix was to change the #ifdef test.
> ---
>   tests/unit/test-crypto-secret.c | 10 +++++-----
>   1 file changed, 5 insertions(+), 5 deletions(-)

This seems to cause failures in the CI:

https://gitlab.com/thuth/qemu/-/jobs/3870672310#L1443
https://gitlab.com/thuth/qemu/-/jobs/3870672331#L2353

../tests/unit/test-crypto-secret.c:29:10: fatal error: keyutils.h: No such file or directory
    29 | #include <keyutils.h>
       |          ^~~~~~~~~~~~
compilation terminated.

And when building locally, I got:

FAILED: tests/unit/test-crypto-secret
tests/unit/test-crypto-secret.p/test-crypto-secret.c.o: In function `test_secret_keyring_expired_key':
../../devel/qemu/tests/unit/test-crypto-secret.c:194: undefined reference to `add_key'
../../devel/qemu/tests/unit/test-crypto-secret.c:197: undefined reference to `keyctl_set_timeout'
../../devel/qemu/tests/unit/test-crypto-secret.c:212: undefined reference to `keyctl_unlink'
tests/unit/test-crypto-secret.p/test-crypto-secret.c.o: In function `test_secret_keyring_revoked_key':
../../devel/qemu/tests/unit/test-crypto-secret.c:169: undefined reference to `add_key'
../../devel/qemu/tests/unit/test-crypto-secret.c:172: undefined reference to `keyctl_revoke'
../../devel/qemu/tests/unit/test-crypto-secret.c:186: undefined reference to `keyctl_unlink'
tests/unit/test-crypto-secret.p/test-crypto-secret.c.o: In function `test_secret_keyring_good':
../../devel/qemu/tests/unit/test-crypto-secret.c:141: undefined reference to `add_key'
../../devel/qemu/tests/unit/test-crypto-secret.c:155: undefined reference to `keyctl_unlink'
collect2: error: ld returned 1 exit status

  Thomas
Re: [PATCH] test: Fix test-crypto-secret when compiling without keyring support
Posted by Juan Quintela 1 year, 2 months ago
Thomas Huth <thuth@redhat.com> wrote:
> On 01/03/2023 12.00, Juan Quintela wrote:
>> Linux keyring support is protected by CONFIG_KEYUTILS.
>> Use CONFIG_SECRET_KEYRING.
>> Signed-off-by: Juan Quintela <quintela@redhat.com>
>> ---
>> Previous version of this patch changed the meson build rules.
>> Daniel told me that the proper fix was to change the #ifdef test.
>> ---
>>   tests/unit/test-crypto-secret.c | 10 +++++-----
>>   1 file changed, 5 insertions(+), 5 deletions(-)
>
> This seems to cause failures in the CI:
>
> https://gitlab.com/thuth/qemu/-/jobs/3870672310#L1443
> https://gitlab.com/thuth/qemu/-/jobs/3870672331#L2353

What is your configuration?
Here (Fedora 37) it works perfectly with --enable/disable-keyring.
But I have installed keyutils-libs-devel, and it appears that there is
no way to disable keyutils support through the command line.

/me removes package and retries.


> ../tests/unit/test-crypto-secret.c:29:10: fatal error: keyutils.h: No such file or directory
>    29 | #include <keyutils.h>
>       |          ^~~~~~~~~~~~
> compilation terminated.
>
> And when building locally, I got:
>
> FAILED: tests/unit/test-crypto-secret
> tests/unit/test-crypto-secret.p/test-crypto-secret.c.o: In function `test_secret_keyring_expired_key':
> ../../devel/qemu/tests/unit/test-crypto-secret.c:194: undefined reference to `add_key'
> ../../devel/qemu/tests/unit/test-crypto-secret.c:197: undefined reference to `keyctl_set_timeout'
> ../../devel/qemu/tests/unit/test-crypto-secret.c:212: undefined reference to `keyctl_unlink'
> tests/unit/test-crypto-secret.p/test-crypto-secret.c.o: In function `test_secret_keyring_revoked_key':
> ../../devel/qemu/tests/unit/test-crypto-secret.c:169: undefined reference to `add_key'
> ../../devel/qemu/tests/unit/test-crypto-secret.c:172: undefined reference to `keyctl_revoke'
> ../../devel/qemu/tests/unit/test-crypto-secret.c:186: undefined reference to `keyctl_unlink'
> tests/unit/test-crypto-secret.p/test-crypto-secret.c.o: In function `test_secret_keyring_good':
> ../../devel/qemu/tests/unit/test-crypto-secret.c:141: undefined reference to `add_key'
> ../../devel/qemu/tests/unit/test-crypto-secret.c:155: undefined reference to `keyctl_unlink'
> collect2: error: ld returned 1 exit status
>
>  Thomas
Re: [PATCH] test: Fix test-crypto-secret when compiling without keyring support
Posted by Daniel P. Berrangé 1 year, 2 months ago
On Fri, Mar 03, 2023 at 01:47:40PM +0100, Thomas Huth wrote:
> On 01/03/2023 12.00, Juan Quintela wrote:
> > Linux keyring support is protected by CONFIG_KEYUTILS.
> > Use CONFIG_SECRET_KEYRING.
> > 
> > Signed-off-by: Juan Quintela <quintela@redhat.com>
> > 
> > ---
> > 
> > Previous version of this patch changed the meson build rules.
> > Daniel told me that the proper fix was to change the #ifdef test.
> > ---
> >   tests/unit/test-crypto-secret.c | 10 +++++-----
> >   1 file changed, 5 insertions(+), 5 deletions(-)
> 
> This seems to cause failures in the CI:
> 
> https://gitlab.com/thuth/qemu/-/jobs/3870672310#L1443
> https://gitlab.com/thuth/qemu/-/jobs/3870672331#L2353
> 
> ../tests/unit/test-crypto-secret.c:29:10: fatal error: keyutils.h: No such file or directory
>    29 | #include <keyutils.h>
>       |          ^~~~~~~~~~~~
> compilation terminated.

Hmm, so we actually have to test for both #ifdefs then

With 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 :|
Re: [PATCH] test: Fix test-crypto-secret when compiling without keyring support
Posted by Juan Quintela 1 year, 2 months ago
Daniel P. Berrangé <berrange@redhat.com> wrote:
> On Fri, Mar 03, 2023 at 01:47:40PM +0100, Thomas Huth wrote:
>> On 01/03/2023 12.00, Juan Quintela wrote:
>> > Linux keyring support is protected by CONFIG_KEYUTILS.
>> > Use CONFIG_SECRET_KEYRING.
>> > 
>> > Signed-off-by: Juan Quintela <quintela@redhat.com>
>> > 
>> > ---
>> > 
>> > Previous version of this patch changed the meson build rules.
>> > Daniel told me that the proper fix was to change the #ifdef test.
>> > ---
>> >   tests/unit/test-crypto-secret.c | 10 +++++-----
>> >   1 file changed, 5 insertions(+), 5 deletions(-)
>> 
>> This seems to cause failures in the CI:
>> 
>> https://gitlab.com/thuth/qemu/-/jobs/3870672310#L1443
>> https://gitlab.com/thuth/qemu/-/jobs/3870672331#L2353
>> 
>> ../tests/unit/test-crypto-secret.c:29:10: fatal error: keyutils.h: No such file or directory
>>    29 | #include <keyutils.h>
>>       |          ^~~~~~~~~~~~
>> compilation terminated.
>
> Hmm, so we actually have to test for both #ifdefs then

Yeap.

I was trying to do something "clever":

diff --git a/meson.build b/meson.build
index 77d2ae87e4..01f3227d62 100644
--- a/meson.build
+++ b/meson.build
@@ -2309,6 +2309,7 @@ config_host_data.set('CONFIG_USBFS', have_linux_user and cc.compiles('''
   int main(void) { return 0; }'''))
 
 have_keyring = get_option('keyring') \
+  .require(keyutils.found(), error_message: 'keyring requires keyutils libraries') \
   .require(targetos == 'linux', error_message: 'keyring is only available on Linux') \
   .require(cc.compiles('''
     #include <errno.h>
(test-secret *)$ 

But it is only the test what requires CONFIG_KEYUTILS,
crypto/secret_keyring.c don't needs it, so we need to do both ifdefs.

> With regards,
> Daniel
Re: [PATCH] test: Fix test-crypto-secret when compiling without keyring support
Posted by Daniel P. Berrangé 1 year, 2 months ago
On Wed, Mar 01, 2023 at 12:00:58PM +0100, Juan Quintela wrote:
> Linux keyring support is protected by CONFIG_KEYUTILS.
> Use CONFIG_SECRET_KEYRING.
> 
> Signed-off-by: Juan Quintela <quintela@redhat.com>
> 
> ---
> 
> Previous version of this patch changed the meson build rules.
> Daniel told me that the proper fix was to change the #ifdef test.
> ---
>  tests/unit/test-crypto-secret.c | 10 +++++-----
>  1 file changed, 5 insertions(+), 5 deletions(-)

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


With 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 :|