support/scripts/boot-qemu-image.py: boot Qemu images with Qemu-system.
authorJugurtha BELKALEM <jugurtha.belkalem@smile.fr>
Mon, 17 Feb 2020 20:50:29 +0000 (21:50 +0100)
committerYann E. MORIN <yann.morin.1998@free.fr>
Mon, 13 Apr 2020 19:51:13 +0000 (21:51 +0200)
commit0c7935063851accf3db4c9eb2fc4f11c3da0c391
treee785bfb5ff39afe137ef2998d01f6b04831eebf1
parent302d3bc4a0d8d40d6b8bb6fe58cbd3c296e5a0d4
support/scripts/boot-qemu-image.py: boot Qemu images with Qemu-system.

This script is intended to be used by gitlab CI to test at runtime Qemu
images generated by Buildroot's Qemu defconfigs.

This allows to troubleshoot different issues that may be associated with
defective builds by lanching a qemu machine, sending root password,
waiting for login shell and then perform a shutdown.

This script is inspired by toolchain builder [1] and the Buildroot
testing infrastructure.

The gitlab CI will call this script for each defconfig build but only
Qemu defconfig will be runtime tested, all others defconfig are ignored.

Some Qemu defconfig must be used with a specific Qemu version (fork)
that is not always available, so the script doesn't error out when it
can't spawn a missing command. That condition is anyway printed in the
log.

Finally, the script start Qemu like it's done for the Buildroot
testing infrastructure (using pexpect).

Note:
We noticed some timeout issues with pexpect when the Qemu machine is
powered off. That's because Qemu process doesn't stop even if the
system is halted (after "System halted"). So the script doesn't error
out when such timeout occure. The behaviour depends on the architecture
emulated by Qemu.

[1] https://github.com/bootlin/toolchains-builder/blob/master/build.sh

Signed-off-by: Jugurtha BELKALEM <jugurtha.belkalem@smile.fr>
Signed-off-by: Romain Naour <romain.naour@smile.fr>
Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
support/scripts/boot-qemu-image.py [new file with mode: 0755]