Browse Source
Signed-off-by: Alexander von Gluck IV <kallisti5@unixzen.com> [PMD: Avoid recreating the image each time] Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org> [thuth: Add ninja package, /usr/bin/env hack and --disable-slirp] Message-Id: <20201114165137.15379-5-thuth@redhat.com> Buglink: https://bugs.launchpad.net/qemu/+bug/1715203 Signed-off-by: Thomas Huth <thuth@redhat.com>pull/102/head
committed by
Thomas Huth
5 changed files with 152 additions and 3 deletions
@ -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----- |
|||
@ -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 |
|||
@ -0,0 +1,119 @@ |
|||
#!/usr/bin/env python3 |
|||
# |
|||
# Haiku VM image |
|||
# |
|||
# Copyright 2020 Haiku, Inc. |
|||
# |
|||
# Authors: |
|||
# Alexander von Gluck IV <kallisti5@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", |
|||
"ninja", |
|||
"setuptools_python3" |
|||
] |
|||
|
|||
# https://dev.haiku-os.org/ticket/16512 virtio disk1 shows up as 0 (reversed order) |
|||
BUILD_SCRIPT = """ |
|||
set -e; |
|||
rm -rf /tmp/qemu-test.* |
|||
cd $(mktemp -d /tmp/qemu-test.XXXXXX); |
|||
mkdir src build; cd src; |
|||
tar -xf /dev/disk/virtual/virtio_block/0/raw; |
|||
mkdir -p /usr/bin |
|||
ln -s /boot/system/bin/env /usr/bin/env |
|||
cd ../build |
|||
../src/configure --disable-slirp {configure_opts}; |
|||
make --output-sync -j{jobs} {target} {verbose}; |
|||
""" |
|||
|
|||
def build_image(self, img): |
|||
self.print_step("Downloading disk image") |
|||
tarball = self._download_with_cache(self.link, sha256sum=self.csum) |
|||
|
|||
self.print_step("Extracting disk image") |
|||
|
|||
subprocess.check_call(["tar", "xzf", tarball, "./box.img", "-O"], |
|||
stdout=open(img, 'wb')) |
|||
|
|||
self.print_step("Preparing disk image") |
|||
self.boot(img) |
|||
|
|||
# Wait for ssh to be available. |
|||
self.wait_ssh(wait_root=True, cmd="exit 0") |
|||
|
|||
# Install packages |
|||
self.ssh_root("pkgman install -y %s" % " ".join(self.requirements)) |
|||
self.graceful_shutdown() |
|||
|
|||
self.print_step("All done") |
|||
|
|||
if __name__ == "__main__": |
|||
sys.exit(basevm.main(HaikuVM, config=HAIKU_CONFIG)) |
|||
Loading…
Reference in new issue