[PATCH] meson: build all modules by default

Paolo Bonzini posted 1 patch 2 years, 3 months ago
Test checkpatch passed
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20220107120143.522834-1-pbonzini@redhat.com
Maintainers: Paolo Bonzini <pbonzini@redhat.com>, Laurent Vivier <lvivier@redhat.com>, Thomas Huth <thuth@redhat.com>
meson.build             | 4 +++-
tests/qtest/meson.build | 3 +--
2 files changed, 4 insertions(+), 3 deletions(-)
[PATCH] meson: build all modules by default
Posted by Paolo Bonzini 2 years, 3 months ago
With more recent versions of Meson, the build.ninja file is more selective
as to what is built by default, and not building the modules results in test
failures.

Mark the modules as built-by-default and, to make the dependencies more
precise, also require them to be up-to-date before running tests.

Resolves: https://gitlab.com/qemu-project/qemu/-/issues/801
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
 meson.build             | 4 +++-
 tests/qtest/meson.build | 3 +--
 2 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/meson.build b/meson.build
index 6489ff8425..703eefea13 100644
--- a/meson.build
+++ b/meson.build
@@ -2866,8 +2866,10 @@ common_ss.add(hwcore)
 # Targets #
 ###########
 
+emulator_modules = []
 foreach m : block_mods + softmmu_mods
-  shared_module(m.name(),
+  emulator_modules += shared_module(m.name(),
+                build_by_default: true,
                 name_prefix: '',
                 link_whole: m,
                 install: true,
diff --git a/tests/qtest/meson.build b/tests/qtest/meson.build
index 37e1eaa449..26937deb6d 100644
--- a/tests/qtest/meson.build
+++ b/tests/qtest/meson.build
@@ -335,10 +335,9 @@ foreach dir : target_dirs
         test: executable(test, src, dependencies: deps)
       }
     endif
-    # FIXME: missing dependency on the emulator binary and qemu-img
     test('qtest-@0@/@1@'.format(target_base, test),
          qtest_executables[test],
-         depends: [test_deps, qtest_emulator],
+         depends: [test_deps, qtest_emulator, emulator_modules],
          env: qtest_env,
          args: ['--tap', '-k'],
          protocol: 'tap',
-- 
2.33.1


Re: [PATCH] meson: build all modules by default
Posted by Li Zhang 2 years, 3 months ago
On 1/7/22 1:01 PM, Paolo Bonzini wrote:
> With more recent versions of Meson, the build.ninja file is more selective
> as to what is built by default, and not building the modules results in test
> failures.
> 
> Mark the modules as built-by-default and, to make the dependencies more
> precise, also require them to be up-to-date before running tests.
> 
> Resolves: https://gitlab.com/qemu-project/qemu/-/issues/801
> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
> ---
>   meson.build             | 4 +++-
>   tests/qtest/meson.build | 3 +--
>   2 files changed, 4 insertions(+), 3 deletions(-)
> 
> diff --git a/meson.build b/meson.build
> index 6489ff8425..703eefea13 100644
> --- a/meson.build
> +++ b/meson.build
> @@ -2866,8 +2866,10 @@ common_ss.add(hwcore)
>   # Targets #
>   ###########
>   
> +emulator_modules = []
>   foreach m : block_mods + softmmu_mods
> -  shared_module(m.name(),
> +  emulator_modules += shared_module(m.name(),
> +                build_by_default: true,
>                   name_prefix: '',
>                   link_whole: m,
>                   install: true,
> diff --git a/tests/qtest/meson.build b/tests/qtest/meson.build
> index 37e1eaa449..26937deb6d 100644
> --- a/tests/qtest/meson.build
> +++ b/tests/qtest/meson.build
> @@ -335,10 +335,9 @@ foreach dir : target_dirs
>           test: executable(test, src, dependencies: deps)
>         }
>       endif
> -    # FIXME: missing dependency on the emulator binary and qemu-img
>       test('qtest-@0@/@1@'.format(target_base, test),
>            qtest_executables[test],
> -         depends: [test_deps, qtest_emulator],
> +         depends: [test_deps, qtest_emulator, emulator_modules],
>            env: qtest_env,
>            args: ['--tap', '-k'],
>            protocol: 'tap',
> 

Thanks. The issue is fixed.

Tested-by: Li Zhang <lizhang@suse.de>

Thanks
Li