Compared to v1, this adds another patch in front, so that tests are not disabled unnecessarily by --disable-blobs.
Paolo Bonzini (2): meson: unpack edk2 firmware even if --disable-blobs tests: qtest: bios-tables-test depends on the unpacked edk2 ROMs meson.build | 14 +++++++------- pc-bios/descriptors/meson.build | 4 ++-- pc-bios/meson.build | 5 +++-- tests/qtest/meson.build | 6 +++--- 4 files changed, 15 insertions(+), 14 deletions(-) -- 2.27.0 >From ae2af96bfb54cdef880b5bf3eb651574dba1c5d9 Mon Sep 17 00:00:00 2001 From: Paolo Bonzini <pbonz...@redhat.com> Date: Thu, 23 Sep 2021 06:25:23 -0400 Subject: [PATCH v2 1/2] meson: unpack edk2 firmware even if --disable-blobs The edk2 firmware blobs are needed to run bios-tables-test. Unpack them if any UEFI-enabled target is selected, so that the test can run. This is a bit more than is actually necessary, since bios-tables-test does not run for all UEFI-enabled targets, but it is the easiest way to write this logic. Signed-off-by: Paolo Bonzini <pbonz...@redhat.com> --- meson.build | 16 ++++++++-------- pc-bios/descriptors/meson.build | 4 ++-- pc-bios/meson.build | 2 +- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/meson.build b/meson.build index 3945a6cc2d..4cd8b67ad0 100644 --- a/meson.build +++ b/meson.build @@ -95,15 +95,15 @@ if targetos != 'darwin' endif edk2_targets = [ 'arm-softmmu', 'aarch64-softmmu', 'i386-softmmu', 'x86_64-softmmu' ] -install_edk2_blobs = false -if get_option('install_blobs') - foreach target : target_dirs - install_edk2_blobs = install_edk2_blobs or target in edk2_targets - endforeach -endif +unpack_edk2_blobs = false +foreach target : edk2_targets + if target in target_dirs + bzip2 = find_program('bzip2', required: get_option('install_blobs')) + unpack_edk2_blobs = bzip2.found() + break + endif +endforeach -bzip2 = find_program('bzip2', required: install_edk2_blobs) - ################## # Compiler flags # ################## diff --git a/pc-bios/descriptors/meson.build b/pc-bios/descriptors/meson.build index 29efa16d99..66f85d01c4 100644 --- a/pc-bios/descriptors/meson.build +++ b/pc-bios/descriptors/meson.build @@ -1,4 +1,4 @@ -if install_edk2_blobs +if unpack_edk2_blobs and get_option('install_blobs') foreach f: [ '50-edk2-i386-secure.json', '50-edk2-x86_64-secure.json', @@ -10,7 +10,7 @@ if install_edk2_blobs configure_file(input: files(f), output: f, configuration: {'DATADIR': get_option('prefix') / qemu_datadir}, - install: get_option('install_blobs'), + install: true, install_dir: qemu_datadir / 'firmware') endforeach endif diff --git a/pc-bios/meson.build b/pc-bios/meson.build index f2b32598af..a3b3d87891 100644 --- a/pc-bios/meson.build +++ b/pc-bios/meson.build @@ -1,4 +1,4 @@ -if install_edk2_blobs +if unpack_edk2_blobs fds = [ 'edk2-aarch64-code.fd', 'edk2-arm-code.fd', -- 2.27.0 >From 18a1be0cea50d3321612da484335842ac9961d6b Mon Sep 17 00:00:00 2001 From: Paolo Bonzini <pbonz...@redhat.com> Date: Thu, 23 Sep 2021 04:09:08 -0400 Subject: [PATCH v2 2/2] tests: qtest: bios-tables-test depends on the unpacked edk2 ROMs Skip the test if bzip2 is not available, and run it after they are uncompressed. Signed-off-by: Paolo Bonzini <pbonz...@redhat.com> --- pc-bios/meson.build | 3 ++- tests/qtest/meson.build | 6 +++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/pc-bios/meson.build b/pc-bios/meson.build index a3b3d87891..a44c9bc127 100644 --- a/pc-bios/meson.build +++ b/pc-bios/meson.build @@ -1,3 +1,4 @@ +roms = [] if unpack_edk2_blobs fds = [ 'edk2-aarch64-code.fd', @@ -11,7 +12,7 @@ if unpack_edk2_blobs ] foreach f : fds - custom_target(f, + roms += custom_target(f, build_by_default: have_system, output: f, input: '@0@.bz2'.format(f), diff --git a/tests/qtest/meson.build b/tests/qtest/meson.build index e1f4df3df8..c9d8458062 100644 --- a/tests/qtest/meson.build +++ b/tests/qtest/meson.build @@ -68,12 +68,12 @@ qtests_i386 = \ (config_all_devices.has_key('CONFIG_RTL8139_PCI') ? ['rtl8139-test'] : []) + \ (config_all_devices.has_key('CONFIG_E1000E_PCI_EXPRESS') ? ['fuzz-e1000e-test'] : []) + \ (config_all_devices.has_key('CONFIG_ESP_PCI') ? ['am53c974-test'] : []) + \ + (unpack_edk2_blobs ? ['bios-tables-test'] : []) + \ qtests_pci + \ ['fdc-test', 'ide-test', 'hd-geo-test', 'boot-order-test', - 'bios-tables-test', 'rtc-test', 'i440fx-test', 'fw_cfg-test', @@ -180,7 +180,7 @@ qtests_arm = \ # TODO: once aarch64 TCG is fixed on ARM 32 bit host, make bios-tables-test unconditional qtests_aarch64 = \ - (cpu != 'arm' ? ['bios-tables-test'] : []) + \ + (cpu != 'arm' and unpack_edk2_blobs ? ['bios-tables-test'] : []) + \ (config_all_devices.has_key('CONFIG_TPM_TIS_SYSBUS') ? ['tpm-tis-device-test'] : []) + \ (config_all_devices.has_key('CONFIG_TPM_TIS_SYSBUS') ? ['tpm-tis-device-swtpm-test'] : []) + \ ['arm-cpu-features', @@ -269,7 +269,7 @@ foreach dir : target_dirs qtest_emulator = emulators['qemu-system-' + target_base] target_qtests = get_variable('qtests_' + target_base, []) + qtests_generic - test_deps = [] + test_deps = roms qtest_env = environment() if have_tools qtest_env.set('QTEST_QEMU_IMG', './qemu-img') -- 2.27.0