90834f5de6
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 51ab5f8bd7
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
|