On 27/10/2020 11.21, Philippe Mathieu-Daudé wrote: > From: Alexander von Gluck IV <kallis...@unixzen.com> > > Signed-off-by: Alexander von Gluck IV <kallis...@unixzen.com> > [PMD: Avoid recreating the image each time] > Signed-off-by: Philippe Mathieu-Daudé <f4...@amsat.org> > --- > tests/keys/vagrant | 27 +++++++++ > tests/keys/vagrant.pub | 1 + > tests/vm/Makefile.include | 3 +- > tests/vm/basevm.py | 5 +- > tests/vm/haiku.x86_64 | 116 ++++++++++++++++++++++++++++++++++++++ > 5 files changed, 149 insertions(+), 3 deletions(-) > create mode 100644 tests/keys/vagrant > create mode 100644 tests/keys/vagrant.pub > create mode 100755 tests/vm/haiku.x86_64 > > diff --git a/tests/keys/vagrant b/tests/keys/vagrant > new file mode 100644 > index 00000000000..7d6a083909e > --- /dev/null > +++ b/tests/keys/vagrant > @@ -0,0 +1,27 @@ > +-----BEGIN RSA PRIVATE KEY----- > +MIIEogIBAAKCAQEA6NF8iallvQVp22WDkTkyrtvp9eWW6A8YVr+kz4TjGYe7gHzI > +w+niNltGEFHzD8+v1I2YJ6oXevct1YeS0o9HZyN1Q9qgCgzUFtdOKLv6IedplqoP > +kcmF0aYet2PkEDo3MlTBckFXPITAMzF8dJSIFo9D8HfdOV0IAdx4O7PtixWKn5y2 > +hMNG0zQPyUecp4pzC6kivAIhyfHilFR61RGL+GPXQ2MWZWFYbAGjyiYJnAmCP3NO > +Td0jMZEnDkbUvxhMmBYSdETk1rRgm+R4LOzFUGaHqHDLKLX+FIPKcF96hrucXzcW > +yLbIbEgE98OHlnVYCzRdK8jlqm8tehUc9c9WhQIBIwKCAQEA4iqWPJXtzZA68mKd > +ELs4jJsdyky+ewdZeNds5tjcnHU5zUYE25K+ffJED9qUWICcLZDc81TGWjHyAqD1 > +Bw7XpgUwFgeUJwUlzQurAv+/ySnxiwuaGJfhFM1CaQHzfXphgVml+fZUvnJUTvzf > +TK2Lg6EdbUE9TarUlBf/xPfuEhMSlIE5keb/Zz3/LUlRg8yDqz5w+QWVJ4utnKnK > +iqwZN0mwpwU7YSyJhlT4YV1F3n4YjLswM5wJs2oqm0jssQu/BT0tyEXNDYBLEF4A > +sClaWuSJ2kjq7KhrrYXzagqhnSei9ODYFShJu8UWVec3Ihb5ZXlzO6vdNQ1J9Xsf > +4m+2ywKBgQD6qFxx/Rv9CNN96l/4rb14HKirC2o/orApiHmHDsURs5rUKDx0f9iP > +cXN7S1uePXuJRK/5hsubaOCx3Owd2u9gD6Oq0CsMkE4CUSiJcYrMANtx54cGH7Rk > +EjFZxK8xAv1ldELEyxrFqkbE4BKd8QOt414qjvTGyAK+OLD3M2QdCQKBgQDtx8pN > +CAxR7yhHbIWT1AH66+XWN8bXq7l3RO/ukeaci98JfkbkxURZhtxV/HHuvUhnPLdX > +3TwygPBYZFNo4pzVEhzWoTtnEtrFueKxyc3+LjZpuo+mBlQ6ORtfgkr9gBVphXZG > +YEzkCD3lVdl8L4cw9BVpKrJCs1c5taGjDgdInQKBgHm/fVvv96bJxc9x1tffXAcj > +3OVdUN0UgXNCSaf/3A/phbeBQe9xS+3mpc4r6qvx+iy69mNBeNZ0xOitIjpjBo2+ > +dBEjSBwLk5q5tJqHmy/jKMJL4n9ROlx93XS+njxgibTvU6Fp9w+NOFD/HvxB3Tcz > +6+jJF85D5BNAG3DBMKBjAoGBAOAxZvgsKN+JuENXsST7F89Tck2iTcQIT8g5rwWC > +P9Vt74yboe2kDT531w8+egz7nAmRBKNM751U/95P9t88EDacDI/Z2OwnuFQHCPDF > +llYOUI+SpLJ6/vURRbHSnnn8a/XG+nzedGH5JGqEJNQsz+xT2axM0/W/CRknmGaJ > +kda/AoGANWrLCz708y7VYgAtW2Uf1DPOIYMdvo6fxIB5i9ZfISgcJ/bbCUkFrhoH > ++vq/5CIWxCPp0f85R4qxxQ5ihxJ0YDQT9Jpx4TMss4PSavPaBH3RXow5Ohe+bYoQ > +NE5OgEXk2wVfZczCZpigBKbKZHNYcelXtTt/nP3rsCuGcM4h53s= > +-----END RSA PRIVATE KEY----- > diff --git a/tests/keys/vagrant.pub b/tests/keys/vagrant.pub > new file mode 100644 > index 00000000000..b8d012d787f > --- /dev/null > +++ b/tests/keys/vagrant.pub > @@ -0,0 +1 @@ > +ssh-rsa > AAAAB3NzaC1yc2EAAAABIwAAAQEA6NF8iallvQVp22WDkTkyrtvp9eWW6A8YVr+kz4TjGYe7gHzIw+niNltGEFHzD8+v1I2YJ6oXevct1YeS0o9HZyN1Q9qgCgzUFtdOKLv6IedplqoPkcmF0aYet2PkEDo3MlTBckFXPITAMzF8dJSIFo9D8HfdOV0IAdx4O7PtixWKn5y2hMNG0zQPyUecp4pzC6kivAIhyfHilFR61RGL+GPXQ2MWZWFYbAGjyiYJnAmCP3NOTd0jMZEnDkbUvxhMmBYSdETk1rRgm+R4LOzFUGaHqHDLKLX+FIPKcF96hrucXzcWyLbIbEgE98OHlnVYCzRdK8jlqm8tehUc9c9WhQ== > well-known vagrant key for qemu-test, do not use on any machine exposed to > an external network > diff --git a/tests/vm/Makefile.include b/tests/vm/Makefile.include > index 61f893ffdc0..e94d95ec541 100644 > --- a/tests/vm/Makefile.include > +++ b/tests/vm/Makefile.include > @@ -4,7 +4,7 @@ > > EFI_AARCH64 = $(wildcard $(BUILD_DIR)/pc-bios/edk2-aarch64-code.fd) > > -IMAGES := freebsd netbsd openbsd centos fedora > +IMAGES := freebsd netbsd openbsd centos fedora haiku.x86_64 > ifneq ($(GENISOIMAGE),) > IMAGES += ubuntu.i386 centos > ifneq ($(EFI_AARCH64),) > @@ -41,6 +41,7 @@ endif > else > @echo " (install genisoimage to build centos/ubuntu images)" > endif > + @echo " vm-build-haiku.x86_64 - Build QEMU in Haiku VM" > @echo "" > @echo " vm-build-all - Build QEMU in all VMs" > @echo " vm-clean-all - Clean up VM images" > diff --git a/tests/vm/basevm.py b/tests/vm/basevm.py > index 3fac20e929a..00f1d5ca8da 100644 > --- a/tests/vm/basevm.py > +++ b/tests/vm/basevm.py > @@ -44,6 +44,7 @@ > 'machine' : 'pc', > 'guest_user' : "qemu", > 'guest_pass' : "qemupass", > + 'root_user' : "root", > 'root_pass' : "qemupass", > 'ssh_key_file' : SSH_KEY_FILE, > 'ssh_pub_key_file': SSH_PUB_KEY_FILE, > @@ -245,13 +246,13 @@ def ssh(self, *cmd): > return self._ssh_do(self._config["guest_user"], cmd, False) > > def ssh_root(self, *cmd): > - return self._ssh_do("root", cmd, False) > + return self._ssh_do(self._config["root_user"], cmd, False) > > def ssh_check(self, *cmd): > self._ssh_do(self._config["guest_user"], cmd, True) > > def ssh_root_check(self, *cmd): > - self._ssh_do("root", cmd, True) > + self._ssh_do(self._config["root_user"], cmd, True) > > def build_image(self, img): > raise NotImplementedError > diff --git a/tests/vm/haiku.x86_64 b/tests/vm/haiku.x86_64 > new file mode 100755 > index 00000000000..634ef774870 > --- /dev/null > +++ b/tests/vm/haiku.x86_64 > @@ -0,0 +1,116 @@ > +#!/usr/bin/env python3 > +# > +# Haiku VM image > +# > +# Copyright 2020 Haiku, Inc. > +# > +# Authors: > +# Alexander von Gluck IV <kallis...@unixzen.com> > +# > +# This code is licensed under the GPL version 2 or later. See > +# the COPYING file in the top-level directory. > +# > + > +import os > +import re > +import sys > +import time > +import socket > +import subprocess > +import basevm > + > +VAGRANT_KEY_FILE = os.path.join(os.path.dirname(__file__), > + "..", "keys", "vagrant") > + > +VAGRANT_PUB_KEY_FILE = os.path.join(os.path.dirname(__file__), > + "..", "keys", "vagrant.pub") > + > +HAIKU_CONFIG = { > + 'cpu' : "max", > + 'machine' : 'pc', > + 'guest_user' : "vagrant", > + 'guest_pass' : "", > + 'root_user' : "vagrant", > + 'root_pass' : "", > + 'ssh_key_file' : VAGRANT_KEY_FILE, > + 'ssh_pub_key_file': VAGRANT_PUB_KEY_FILE, > + 'memory' : "4G", > + 'extra_args' : [], > + 'qemu_args' : "-device VGA", > + 'dns' : "", > + 'ssh_port' : 0, > + 'install_cmds' : "", > + 'boot_dev_type' : "block", > + 'ssh_timeout' : 1, > +} > + > +class HaikuVM(basevm.BaseVM): > + name = "haiku" > + arch = "x86_64" > + > + link = > "https://app.vagrantup.com/haiku-os/boxes/r1beta2-x86_64/versions/20200702/providers/libvirt.box" > + csum = "41c38b316e0cbdbc66b5dbaf3612b866700a4f35807cb1eb266a5bf83e9e68d5" > + > + poweroff = "shutdown" > + > + requirements = [ > + "devel:libbz2", > + "devel:libcapstone", > + "devel:libcurl", > + "devel:libfdt", > + "devel:libgcrypt", > + "devel:libgl", > + "devel:libglib_2.0", > + "devel:libgnutls", > + "devel:libgpg_error", > + "devel:libintl", > + "devel:libjpeg", > + "devel:liblzo2", > + "devel:libncursesw", > + "devel:libnettle", > + "devel:libpixman_1", > + "devel:libpng16", > + "devel:libsdl2_2.0", > + "devel:libsnappy", > + "devel:libssh2", > + "devel:libtasn1", > + "devel:libusb_1.0", > + "devel:libz", > + "setuptools_python3" > + ]
When running this image, I now get: ERROR: Cannot find Ninja And even if I add "ninja" to the list, it fails after configuration: make: *** No rule to make target 'qemu-img', needed by 'check-block'. Stop. ... so this needs some more fine-tuning for the new build system? Thomas