Selaa lähdekoodia

meson: qtest: set "depends" correctly

This does not have any effect on Meson's behavior itself, since "meson test"
always rebuilds everything (that is one reason why we are not using it...).
However, mtest2make can use this information to do a selective rebuild
for the requested suite.

Cc: Thomas Huth <thuth@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Paolo Bonzini 5 vuotta sitten
vanhempi
commit
fd5eef85fe
2 muutettua tiedostoa jossa 11 lisäystä ja 4 poistoa
  1. 4 3
      meson.build
  2. 7 1
      tests/qtest/meson.build

+ 4 - 3
meson.build

@@ -1103,7 +1103,7 @@ common_all = static_library('common',
 
 
 feature_to_c = find_program('scripts/feature_to_c.sh')
 feature_to_c = find_program('scripts/feature_to_c.sh')
 
 
-emulators = []
+emulators = {}
 foreach target : target_dirs
 foreach target : target_dirs
   config_target = config_target_mak[target]
   config_target = config_target_mak[target]
   target_name = config_target['TARGET_NAME']
   target_name = config_target['TARGET_NAME']
@@ -1222,7 +1222,8 @@ foreach target : target_dirs
     }]
     }]
   endif
   endif
   foreach exe: execs
   foreach exe: execs
-    emulators += executable(exe['name'], exe['sources'],
+    emulators += {exe['name']:
+         executable(exe['name'], exe['sources'],
                install: true,
                install: true,
                c_args: c_args,
                c_args: c_args,
                dependencies: arch_deps + deps + exe['dependencies'],
                dependencies: arch_deps + deps + exe['dependencies'],
@@ -1231,6 +1232,7 @@ foreach target : target_dirs
                link_depends: [block_syms, qemu_syms] + exe.get('link_depends', []),
                link_depends: [block_syms, qemu_syms] + exe.get('link_depends', []),
                link_args: link_args,
                link_args: link_args,
                gui_app: exe['gui'])
                gui_app: exe['gui'])
+    }
 
 
     if 'CONFIG_TRACE_SYSTEMTAP' in config_host
     if 'CONFIG_TRACE_SYSTEMTAP' in config_host
       foreach stp: [
       foreach stp: [
@@ -1276,7 +1278,6 @@ if xkbcommon.found()
                            dependencies: [qemuutil, xkbcommon], install: have_tools)
                            dependencies: [qemuutil, xkbcommon], install: have_tools)
 endif
 endif
 
 
-qemu_block_tools = []
 if have_tools
 if have_tools
   qemu_img = executable('qemu-img', [files('qemu-img.c'), hxdep],
   qemu_img = executable('qemu-img', [files('qemu-img.c'), hxdep],
              dependencies: [authz, block, crypto, io, qom, qemuutil], install: true)
              dependencies: [authz, block, crypto, io, qom, qemuutil], install: true)

+ 7 - 1
tests/qtest/meson.build

@@ -228,10 +228,15 @@ foreach dir : target_dirs
   endif
   endif
 
 
   target_base = dir.split('-')[0]
   target_base = dir.split('-')[0]
+  qtest_emulator = emulators['qemu-system-' + target_base]
   qtests = get_variable('qtests_' + target_base, []) + qtests_generic
   qtests = get_variable('qtests_' + target_base, []) + qtests_generic
 
 
+  test_deps = []
   qtest_env = environment()
   qtest_env = environment()
-  qtest_env.set('QTEST_QEMU_IMG', './qemu-img')
+  if have_tools
+    qtest_env.set('QTEST_QEMU_IMG', './qemu-img')
+    test_deps += [qemu_img]
+  endif
   qtest_env.set('G_TEST_DBUS_DAEMON', meson.source_root() / 'tests/dbus-vmstate-daemon.sh')
   qtest_env.set('G_TEST_DBUS_DAEMON', meson.source_root() / 'tests/dbus-vmstate-daemon.sh')
   qtest_env.set('QTEST_QEMU_BINARY', './qemu-system-' + target_base)
   qtest_env.set('QTEST_QEMU_BINARY', './qemu-system-' + target_base)
   
   
@@ -248,6 +253,7 @@ foreach dir : target_dirs
     # FIXME: missing dependency on the emulator binary and qemu-img
     # FIXME: missing dependency on the emulator binary and qemu-img
     test('qtest-@0@: @1@'.format(target_base, test),
     test('qtest-@0@: @1@'.format(target_base, test),
          qtest_executables[test],
          qtest_executables[test],
+         depends: [test_deps, qtest_emulator],
          env: qtest_env,
          env: qtest_env,
          args: ['--tap', '-k'],
          args: ['--tap', '-k'],
          protocol: 'tap',
          protocol: 'tap',