
The 'check' script will use "#!/usr/bin/env python3" by default to locate python, but this doesn't work in distros which lack a bare 'python3' binary like NetBSD. We need to explicitly invoke 'check' by referring to the 'python' variable in meson, which resolves to the detected python binary that QEMU intends to use. This fixes a regression introduced by commit 51ab5f8bd795d8980351f8531e54995ff9e6d163 Author: Daniel P. Berrangé <berrange@redhat.com> Date: Wed Mar 15 17:43:23 2023 +0000 iotests: register each I/O test separately with meson Signed-off-by: Daniel P. Berrangé <berrange@redhat.com> Reviewed-by: Paolo Bonzini <pbonzini@redhat.com> Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org> Message-Id: <20230329124539.822022-1-berrange@redhat.com> Signed-off-by: Alex Bennée <alex.bennee@linaro.org> Reviewed-by: Thomas Huth <thuth@redhat.com> Message-Id: <20230403134920.2132362-9-alex.bennee@linaro.org>
72 lines
1.9 KiB
Meson
72 lines
1.9 KiB
Meson
if not have_tools or targetos == 'windows' or get_option('gprof')
|
|
subdir_done()
|
|
endif
|
|
|
|
foreach cflag: config_host['QEMU_CFLAGS'].split()
|
|
if cflag.startswith('-fsanitize') and \
|
|
not cflag.contains('safe-stack') and not cflag.contains('cfi-icall')
|
|
message('Sanitizers are enabled ==> Disabled the qemu-iotests.')
|
|
subdir_done()
|
|
endif
|
|
endforeach
|
|
|
|
bash = find_program('bash', required: false, version: '>= 4.0')
|
|
if not bash.found()
|
|
message('bash >= v4.0 not available ==> Disabled the qemu-iotests.')
|
|
subdir_done()
|
|
endif
|
|
|
|
qemu_iotests_binaries = [qemu_img, qemu_io, qemu_nbd, qsd]
|
|
qemu_iotests_env = {'PYTHON': python.full_path()}
|
|
qemu_iotests_formats = {
|
|
'qcow2': 'quick',
|
|
'raw': 'slow',
|
|
'qed': 'thorough',
|
|
'vmdk': 'thorough',
|
|
'vpc': 'thorough'
|
|
}
|
|
|
|
foreach k, v : emulators
|
|
if k.startswith('qemu-system-')
|
|
qemu_iotests_binaries += v
|
|
endif
|
|
endforeach
|
|
|
|
qemu_iotests_check_cmd = files('check')
|
|
|
|
foreach format, speed: qemu_iotests_formats
|
|
if speed == 'quick'
|
|
suites = 'block'
|
|
else
|
|
suites = ['block-' + speed, speed]
|
|
endif
|
|
|
|
args = ['-tap', '-' + format]
|
|
if speed == 'quick'
|
|
args += ['-g', 'auto']
|
|
endif
|
|
|
|
rc = run_command(
|
|
[python, qemu_iotests_check_cmd] + args + ['-n'],
|
|
check: true,
|
|
)
|
|
|
|
foreach item: rc.stdout().strip().split()
|
|
args = [qemu_iotests_check_cmd,
|
|
'-tap', '-' + format, item,
|
|
'--source-dir', meson.current_source_dir(),
|
|
'--build-dir', meson.current_build_dir()]
|
|
# Some individual tests take as long as 45 seconds
|
|
# Bump the timeout to 3 minutes for some headroom
|
|
# on slow machines to minimize spurious failures
|
|
test('io-' + format + '-' + item,
|
|
python,
|
|
args: args,
|
|
depends: qemu_iotests_binaries,
|
|
env: qemu_iotests_env,
|
|
protocol: 'tap',
|
|
timeout: 180,
|
|
suite: suites)
|
|
endforeach
|
|
endforeach
|