All of lore.kernel.org
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH RFC 0/9] tests: Add VM based build tests (for non-x86_64 and/or non-Linux)
@ 2017-08-16  7:20 Fam Zheng
  2017-08-16  7:20 ` [Qemu-devel] [PATCH RFC 1/9] gitignore: Ignore vm test images Fam Zheng
                   ` (11 more replies)
  0 siblings, 12 replies; 34+ messages in thread
From: Fam Zheng @ 2017-08-16  7:20 UTC (permalink / raw)
  To: qemu-devel
  Cc: berrange, Alex Bennée, Fam Zheng,
	Philippe Mathieu-Daudé,
	stefanha, pbonzini, Peter Maydell, Kamil Rytarowski

Build tests in one 32 bit Linux guest and three BSD images are defined in this
series. This is a more managable way than the manually maintained virtual
machines in patchew. Also, one big advantage of ephemeral VMs over long running
guests is the reduced RAM usage of host, which makes it possible to have one
host test all these BSD variants and probably more.

The BSD guest templates are manually prepared following

https://wiki.qemu.org/Hosts/BSD

as it is not easy to automate. (The ideal approach is like the ubuntu.i386
script, which configures the guest on top of an official released image, fully
automatically.)

Need for help: "gmake check" in the added OpenBSD image fails with -ENOMEM
errors, even if I change "-m 2G" to "-m 8G" when starting VM. Ideas? And there
is a warning from ./configure about OpenBSD going to be unsupported in coming
releases, is it still the case?

Fam

Fam Zheng (9):
  gitignore: Ignore vm test images
  qemu.py: Add variable vga type
  qemu.py: Add "wait()" method
  tests: Add vm test lib
  tests: Add ubuntu.i386 image
  tests: Add FreeBSD image
  tests: Add NetBSD image
  tests: Add OpenBSD image
  Makefile: Add rules to run vm tests

 .gitignore                |   2 +
 Makefile                  |   2 +
 configure                 |   2 +-
 scripts/qemu.py           |   8 +-
 tests/vm/Makefile.include |  41 ++++++++
 tests/vm/basevm.py        | 246 ++++++++++++++++++++++++++++++++++++++++++++++
 tests/vm/freebsd          |  44 +++++++++
 tests/vm/netbsd           |  44 +++++++++
 tests/vm/openbsd          |  45 +++++++++
 tests/vm/ubuntu.i386      |  88 +++++++++++++++++
 10 files changed, 520 insertions(+), 2 deletions(-)
 create mode 100644 tests/vm/Makefile.include
 create mode 100755 tests/vm/basevm.py
 create mode 100755 tests/vm/freebsd
 create mode 100755 tests/vm/netbsd
 create mode 100755 tests/vm/openbsd
 create mode 100755 tests/vm/ubuntu.i386

-- 
2.13.4

^ permalink raw reply	[flat|nested] 34+ messages in thread

* [Qemu-devel] [PATCH RFC 1/9] gitignore: Ignore vm test images
  2017-08-16  7:20 [Qemu-devel] [PATCH RFC 0/9] tests: Add VM based build tests (for non-x86_64 and/or non-Linux) Fam Zheng
@ 2017-08-16  7:20 ` Fam Zheng
  2017-08-16  7:20 ` [Qemu-devel] [PATCH RFC 2/9] qemu.py: Add variable vga type Fam Zheng
                   ` (10 subsequent siblings)
  11 siblings, 0 replies; 34+ messages in thread
From: Fam Zheng @ 2017-08-16  7:20 UTC (permalink / raw)
  To: qemu-devel
  Cc: berrange, Alex Bennée, Fam Zheng,
	Philippe Mathieu-Daudé,
	stefanha, pbonzini, Peter Maydell, Kamil Rytarowski

Signed-off-by: Fam Zheng <famz@redhat.com>
---
 .gitignore | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/.gitignore b/.gitignore
index cf65316863..693e2f3009 100644
--- a/.gitignore
+++ b/.gitignore
@@ -52,6 +52,8 @@
 /vscclient
 /vhost-user-scsi
 /fsdev/virtfs-proxy-helper
+/tests/vm/*.img
+/tests/vm/*.tmp
 *.[1-9]
 *.a
 *.aux
-- 
2.13.4

^ permalink raw reply related	[flat|nested] 34+ messages in thread

* [Qemu-devel] [PATCH RFC 2/9] qemu.py: Add variable vga type
  2017-08-16  7:20 [Qemu-devel] [PATCH RFC 0/9] tests: Add VM based build tests (for non-x86_64 and/or non-Linux) Fam Zheng
  2017-08-16  7:20 ` [Qemu-devel] [PATCH RFC 1/9] gitignore: Ignore vm test images Fam Zheng
@ 2017-08-16  7:20 ` Fam Zheng
  2017-08-16  9:18   ` Kamil Rytarowski
  2017-08-16  7:20 ` [Qemu-devel] [PATCH RFC 3/9] qemu.py: Add "wait()" method Fam Zheng
                   ` (9 subsequent siblings)
  11 siblings, 1 reply; 34+ messages in thread
From: Fam Zheng @ 2017-08-16  7:20 UTC (permalink / raw)
  To: qemu-devel
  Cc: berrange, Alex Bennée, Fam Zheng,
	Philippe Mathieu-Daudé,
	stefanha, pbonzini, Peter Maydell, Kamil Rytarowski

Some guests behave differently when no VGA is detected. Add a variable
to allow override the "none" default.

Signed-off-by: Fam Zheng <famz@redhat.com>
---
 scripts/qemu.py | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/scripts/qemu.py b/scripts/qemu.py
index 880e3e8219..e5f314efdb 100644
--- a/scripts/qemu.py
+++ b/scripts/qemu.py
@@ -39,6 +39,7 @@ class QEMUMachine(object):
         self._iolog = None
         self._socket_scm_helper = socket_scm_helper
         self._debug = debug
+        self._vga = "none"
 
     # This can be used to add an unused monitor instance.
     def add_monitor_telnet(self, ip, port):
@@ -111,7 +112,7 @@ class QEMUMachine(object):
             moncdev = 'socket,id=mon,path=%s' % self._monitor_address
         return ['-chardev', moncdev,
                 '-mon', 'chardev=mon,mode=control',
-                '-display', 'none', '-vga', 'none']
+                '-display', 'none', '-vga', self._vga]
 
     def _pre_launch(self):
         self._qmp = qmp.qmp.QEMUMonitorProtocol(self._monitor_address, server=True,
-- 
2.13.4

^ permalink raw reply related	[flat|nested] 34+ messages in thread

* [Qemu-devel] [PATCH RFC 3/9] qemu.py: Add "wait()" method
  2017-08-16  7:20 [Qemu-devel] [PATCH RFC 0/9] tests: Add VM based build tests (for non-x86_64 and/or non-Linux) Fam Zheng
  2017-08-16  7:20 ` [Qemu-devel] [PATCH RFC 1/9] gitignore: Ignore vm test images Fam Zheng
  2017-08-16  7:20 ` [Qemu-devel] [PATCH RFC 2/9] qemu.py: Add variable vga type Fam Zheng
@ 2017-08-16  7:20 ` Fam Zheng
  2017-08-16  8:32   ` Stefan Hajnoczi
  2017-08-16  7:20 ` [Qemu-devel] [PATCH RFC 4/9] tests: Add vm test lib Fam Zheng
                   ` (8 subsequent siblings)
  11 siblings, 1 reply; 34+ messages in thread
From: Fam Zheng @ 2017-08-16  7:20 UTC (permalink / raw)
  To: qemu-devel
  Cc: berrange, Alex Bennée, Fam Zheng,
	Philippe Mathieu-Daudé,
	stefanha, pbonzini, Peter Maydell, Kamil Rytarowski

Signed-off-by: Fam Zheng <famz@redhat.com>
---
 scripts/qemu.py | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/scripts/qemu.py b/scripts/qemu.py
index e5f314efdb..3e7eb44035 100644
--- a/scripts/qemu.py
+++ b/scripts/qemu.py
@@ -144,6 +144,11 @@ class QEMUMachine(object):
             self._post_shutdown()
             raise
 
+    def wait(self):
+        self._popen.wait()
+        self._qmp.close()
+        self._post_shutdown()
+
     def shutdown(self):
         '''Terminate the VM and clean up'''
         if self.is_running():
-- 
2.13.4

^ permalink raw reply related	[flat|nested] 34+ messages in thread

* [Qemu-devel] [PATCH RFC 4/9] tests: Add vm test lib
  2017-08-16  7:20 [Qemu-devel] [PATCH RFC 0/9] tests: Add VM based build tests (for non-x86_64 and/or non-Linux) Fam Zheng
                   ` (2 preceding siblings ...)
  2017-08-16  7:20 ` [Qemu-devel] [PATCH RFC 3/9] qemu.py: Add "wait()" method Fam Zheng
@ 2017-08-16  7:20 ` Fam Zheng
  2017-08-16  8:55   ` Stefan Hajnoczi
  2017-08-16  7:21 ` [Qemu-devel] [PATCH RFC 5/9] tests: Add ubuntu.i386 image Fam Zheng
                   ` (7 subsequent siblings)
  11 siblings, 1 reply; 34+ messages in thread
From: Fam Zheng @ 2017-08-16  7:20 UTC (permalink / raw)
  To: qemu-devel
  Cc: berrange, Alex Bennée, Fam Zheng,
	Philippe Mathieu-Daudé,
	stefanha, pbonzini, Peter Maydell, Kamil Rytarowski

This is the common code to implement a "VM test" to

  1) Download and initialize a pre-defined VM that has necessary
  dependencies to build QEMU and SSH access.

  2) Archive $SRC_PATH to a .tar file.

  3) Boot the VM, and pass the source tar file to the guest.

  4) SSH into the VM, untar the source tarball, build from the source.

Signed-off-by: Fam Zheng <famz@redhat.com>
---
 tests/vm/basevm.py | 246 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 246 insertions(+)
 create mode 100755 tests/vm/basevm.py

diff --git a/tests/vm/basevm.py b/tests/vm/basevm.py
new file mode 100755
index 0000000000..b266bd6dc7
--- /dev/null
+++ b/tests/vm/basevm.py
@@ -0,0 +1,246 @@
+#!/usr/bin/env python
+#
+# VM testing base class
+#
+# Copyright (C) 2017 Red Hat Inc.
+#
+# Authors:
+#  Fam Zheng <famz@redhat.com>
+#
+# This work is licensed under the terms of the GNU GPL, version 2.  See
+# the COPYING file in the top-level directory.
+#
+
+import os
+import sys
+import logging
+import time
+import datetime
+sys.path.append(os.path.join(os.path.dirname(__file__), "..", "..", "scripts"))
+from qemu import QEMUMachine
+import subprocess
+import hashlib
+import argparse
+import atexit
+import tempfile
+import shutil
+
+SSH_KEY = """\
+-----BEGIN RSA PRIVATE KEY-----
+MIIEowIBAAKCAQEAopAuOlmLV6LVHdFBj8/eeOwI9CqguIJPp7eAQSZvOiB4Ag/R
+coEhl/RBbrV5Yc/SmSD4PTpJO/iM10RwliNjDb4a3I8q3sykRJu9c9PI/YsH8WN9
++NH2NjKPtJIcKTu287IM5JYxyB6nDoOzILbTyJ1TDR/xH6qYEfBAyiblggdjcvhA
+RTf93QIn39F/xLypXvT1K2O9BJEsnJ8lEUvB2UXhKo/JTfSeZF8wPBeowaP9EONk
+7b+nuJOWHGg68Ji6wVi62tjwl2Szch6lxIhZBpnV7QNRKMfYHP6eIyF4pusazzZq
+Telsq6xI2ghecWLzb/MF5A+rklsGx2FNuJSAJwIDAQABAoIBAHHi4o/8VZNivz0x
+cWXn8erzKV6tUoWQvW85Lj/2RiwJvSlsnYZDkx5af1CpEE2HA/pFT8PNRqsd+MWC
+7AEy710cVsM4BYerBFYQaYxwzblaoojo88LSjVPw3h5Z0iLM8+IMVd36nwuc9dpE
+R8TecMZ1+U4Tl6BgqkK+9xToZRdPKdjS8L5MoFhGN+xY0vRbbJbGaV9Q0IHxLBkB
+rEBV7T1mUynneCHRUQlJQEwJmKpT8MH3IjsUXlG5YvnuuvcQJSNTaW2iDLxuOKp8
+cxW8+qL88zpb1D5dppoIu6rlrugN0azSq70ruFJQPc/A8GQrDKoGgRQiagxNY3u+
+vHZzXlECgYEA0dKO3gfkSxsDBb94sQwskMScqLhcKhztEa8kPxTx6Yqh+x8/scx3
+XhJyOt669P8U1v8a/2Al+s81oZzzfQSzO1Q7gEwSrgBcRMSIoRBUw9uYcy02ngb/
+j/ng3DGivfJztjjiSJwb46FHkJ2JR8mF2UisC6UMXk3NgFY/3vWQx78CgYEAxlcG
+T3hfSWSmTgKRczMJuHQOX9ULfTBIqwP5VqkkkiavzigGRirzb5lgnmuTSPTpF0LB
+XVPjR2M4q+7gzP0Dca3pocrvLEoxjwIKnCbYKnyyvnUoE9qHv4Kr+vDbgWpa2LXG
+JbLmE7tgTCIp20jOPPT4xuDvlbzQZBJ5qCQSoZkCgYEAgrotSSihlCnAOFSTXbu4
+CHp3IKe8xIBBNENq0eK61kcJpOxTQvOha3sSsJsU4JAM6+cFaxb8kseHIqonCj1j
+bhOM/uJmwQJ4el/4wGDsbxriYOBKpyq1D38gGhDS1IW6kk3erl6VAb36WJ/OaGum
+eTpN9vNeQWM4Jj2WjdNx4QECgYAwTdd6mU1TmZCrJRL5ZG+0nYc2rbMrnQvFoqUi
+BvWiJovggHzur90zy73tNzPaq9Ls2FQxf5G1vCN8NCRJqEEjeYCR59OSDMu/EXc2
+CnvQ9SevHOdS1oEDEjcCWZCMFzPi3XpRih1gptzQDe31uuiHjf3cqcGPzTlPdfRt
+D8P92QKBgC4UaBvIRwREVJsdZzpIzm224Bpe8LOmA7DeTnjlT0b3lkGiBJ36/Q0p
+VhYh/6cjX4/iuIs7gJbGon7B+YPB8scmOi3fj0+nkJAONue1mMfBNkba6qQTc6Y2
+5mEKw2/O7/JpND7ucU3OK9plcw/qnrWDgHxl0Iz95+OzUIIagxne
+-----END RSA PRIVATE KEY-----
+"""
+SSH_PUB_KEY = """\
+ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCikC46WYtXotUd0UGPz9547Aj0KqC4gk+nt4BBJm86IHgCD9FygSGX9EFutXlhz9KZIPg9Okk7+IzXRHCWI2MNvhrcjyrezKREm71z08j9iwfxY3340fY2Mo+0khwpO7bzsgzkljHIHqcOg7MgttPInVMNH/EfqpgR8EDKJuWCB2Ny+EBFN/3dAiff0X/EvKle9PUrY70EkSycnyURS8HZReEqj8lN9J5kXzA8F6jBo/0Q42Ttv6e4k5YcaDrwmLrBWLra2PCXZLNyHqXEiFkGmdXtA1Eox9gc/p4jIXim6xrPNmpN6WyrrEjaCF5xYvNv8wXkD6uSWwbHYU24lIAn qemu-vm-key
+"""
+
+class BaseVM(object):
+    GUEST_USER = "qemu"
+    GUEST_PASS = "qemupass"
+    ROOT_PASS = "qemupass"
+
+    # The script to run in the guest that builds QEMU
+    BUILD_SCRIPT = ""
+    # The guest name, to be overridden by subclasses
+    name = "#base"
+    def __init__(self, debug=False):
+        self._guest = None
+        self.ssh_port = 20022
+        self._tmpdir = tempfile.mkdtemp(prefix="qemu-vm-")
+        atexit.register(shutil.rmtree, self._tmpdir)
+
+        self._ssh_key_file = os.path.join(self._tmpdir, "id_rsa")
+        open(self._ssh_key_file, "w").write(SSH_KEY)
+        subprocess.check_call(["chmod", "600", self._ssh_key_file])
+
+        self._ssh_pub_key_file = os.path.join(self._tmpdir, "id_rsa.pub")
+        open(self._ssh_pub_key_file, "w").write(SSH_PUB_KEY)
+
+        self.debug = debug
+        self._stderr = sys.stderr
+        self._devnull = open("/dev/null", "w")
+        if self.debug:
+            self._stdout = sys.stdout
+        else:
+            self._stdout = self._devnull
+        self._args = [ \
+            "-nodefaults", "-enable-kvm", "-m", "2G",
+            "-smp", os.environ.get("J", "4"), "-cpu", "host",
+            "-netdev", "user,id=vnet,hostfwd=:0.0.0.0:%d-:22" % self.ssh_port,
+            "-device", "virtio-net-pci,netdev=vnet",
+            "-vnc", ":0,to=20",
+            "-serial", "file:%s" % os.path.join(self._tmpdir, "serial.out")]
+
+        self._data_args = []
+
+    def _download_with_cache(self, url):
+        cache_dir = os.path.expanduser("~/.cache/qemu-vm/download")
+        subprocess.check_call(["mkdir", "-p", cache_dir])
+        fname = os.path.join(cache_dir, hashlib.sha1(url).hexdigest())
+        if os.path.exists(fname):
+            return fname
+        logging.debug("Downloading %s to %s...", url, fname)
+        subprocess.check_call(["wget", "-c", url, "-O", fname + ".download"],
+                              stdout=self._stdout, stderr=self._stderr)
+        subprocess.check_call(["mv", fname + ".download", fname],
+                              stdout=self._stdout, stderr=self._stderr)
+        return fname
+
+    def _ssh_do(self, user, cmd, check, interactive=False):
+        ssh_cmd = ["ssh", "-q",
+                   "-o", "StrictHostKeyChecking=no",
+                   "-o", "UserKnownHostsFile=/dev/null",
+                   "-o", "ConnectTimeout=1",
+                   "-p", str(self.ssh_port), "-i", self._ssh_key_file]
+        if interactive:
+            ssh_cmd += ['-t']
+        assert not isinstance(cmd, str)
+        ssh_cmd += ["%s@127.0.0.1" % user] + list(cmd)
+        logging.debug("ssh_cmd: %s", " ".join(ssh_cmd))
+        r = subprocess.call(ssh_cmd,
+                            stdin=sys.stdin if interactive else self._devnull,
+                            stdout=sys.stdout if interactive else self._stdout,
+                            stderr=sys.stderr if interactive else self._stderr)
+        if check and r != 0:
+            raise Exception("SSH command failed: %s" % cmd)
+        return r
+
+    def ssh(self, *cmd):
+        return self._ssh_do(self.GUEST_USER, cmd, False)
+
+    def ssh_interactive(self, *cmd):
+        return self._ssh_do(self.GUEST_USER, cmd, False, True)
+
+    def ssh_root(self, *cmd):
+        return self._ssh_do("root", cmd, False)
+
+    def ssh_check(self, *cmd):
+        self._ssh_do(self.GUEST_USER, cmd, True)
+
+    def ssh_root_check(self, *cmd):
+        self._ssh_do("root", cmd, True)
+
+    def build_image(self, img):
+        raise NotImplementedError
+
+    def add_source_dir(self, data_dir):
+        name = "data-" + hashlib.sha1(data_dir).hexdigest()[:5]
+        tarfile = os.path.join(self._tmpdir, name + ".tar")
+        logging.debug("Creating archive %s for data dir: %s", tarfile, data_dir)
+        subprocess.check_call(["tar", "--exclude-vcs",
+                               "--exclude=tests/vm/*.img",
+                               "--exclude=*.d",
+                               "--exclude=*.o",
+                               "--exclude=docker-src.*",
+                               "-cf", tarfile, '.'], cwd=data_dir,
+                              stdin=self._devnull, stdout=self._stdout)
+        self._data_args += ["-drive",
+                            "file=%s,if=none,id=%s,cache=writeback,format=raw" % \
+                                    (tarfile, name),
+                            "-device",
+                            "virtio-blk,drive=%s,serial=%s,bootindex=1" % (name, name)]
+
+    def boot(self, img, extra_args=[]):
+        args = self._args + [
+            "-drive", "file=%s,if=none,id=drive0,cache=writeback" % img,
+            "-device", "virtio-blk,drive=drive0,bootindex=0"]
+        args += self._data_args + extra_args
+        logging.debug("QEMU args: %s", " ".join(args))
+        guest = QEMUMachine(binary=os.environ.get("QEMU", "qemu-system-x86_64"),
+                            args=args)
+        guest._vga = "std"
+        guest.launch()
+        atexit.register(self.shutdown)
+        self._guest = guest
+
+    def wait_ssh(self, seconds=120):
+        guest_remote = self.GUEST_USER + "@127.0.0.1"
+        starttime = datetime.datetime.now()
+        guest_up = False
+        while (datetime.datetime.now() - starttime).total_seconds() < seconds:
+            if self.ssh("exit 0") == 0:
+                guest_up = True
+                break
+            time.sleep(1)
+        if not guest_up:
+            logging.error("Timeout while waiting for guest to boot up")
+            return 2
+
+    def shutdown(self):
+        self._guest.shutdown()
+
+    def wait(self):
+        self._guest.wait()
+
+    def qmp(self, *args, **kwargs):
+        return self._guest.qmp(*args, **kwargs)
+
+def parse_args(vm_name):
+    parser = argparse.ArgumentParser()
+    parser.add_argument("--debug", "-D", action="store_true",
+                        help="enable debug output")
+    parser.add_argument("--image", "-i", default="%s.img" % vm_name,
+                        help="image file name")
+    parser.add_argument("--force", "-f", action="store_true",
+                        help="force build image even if image exists")
+    parser.add_argument("--build-image", "-b", action="store_true",
+                        help="build image")
+    parser.add_argument("--build-qemu",
+                        help="build QEMU from source in guest")
+    parser.add_argument("--interactive", "-I", action="store_true",
+                        help="Interactively run command")
+    return parser.parse_known_args()
+
+def main(vmcls):
+    args, argv = parse_args(vmcls.name)
+    if not argv and not args.build_qemu:
+        print "Nothing to do?"
+        return 1
+    if args.debug:
+        logging.getLogger().setLevel(logging.DEBUG)
+    vm = vmcls(debug=args.debug)
+    if args.build_image:
+        if os.path.exists(args.image) and not args.force:
+            sys.stderr.writelines(["Image file exists: %s\n" % img,
+                                  "Use --force option to overwrite\n"])
+            return 1
+        return vm.build_image(args.image)
+    if args.build_qemu:
+        vm.add_source_dir(args.build_qemu)
+        cmd = [vm.BUILD_SCRIPT.format(
+               configure_opts = " ".join(argv),
+               jobs=os.environ.get("J", "4"))]
+    else:
+        cmd = argv
+    vm.boot(args.image + ",snapshot=on")
+    vm.wait_ssh()
+    if args.interactive:
+        if vm.ssh_interactive(*cmd) == 0:
+            return 0
+        vm.ssh_interactive()
+    else:
+        return vm.ssh(*cmd)
-- 
2.13.4

^ permalink raw reply related	[flat|nested] 34+ messages in thread

* [Qemu-devel] [PATCH RFC 5/9] tests: Add ubuntu.i386 image
  2017-08-16  7:20 [Qemu-devel] [PATCH RFC 0/9] tests: Add VM based build tests (for non-x86_64 and/or non-Linux) Fam Zheng
                   ` (3 preceding siblings ...)
  2017-08-16  7:20 ` [Qemu-devel] [PATCH RFC 4/9] tests: Add vm test lib Fam Zheng
@ 2017-08-16  7:21 ` Fam Zheng
  2017-08-16  7:21 ` [Qemu-devel] [PATCH RFC 6/9] tests: Add FreeBSD image Fam Zheng
                   ` (6 subsequent siblings)
  11 siblings, 0 replies; 34+ messages in thread
From: Fam Zheng @ 2017-08-16  7:21 UTC (permalink / raw)
  To: qemu-devel
  Cc: berrange, Alex Bennée, Fam Zheng,
	Philippe Mathieu-Daudé,
	stefanha, pbonzini, Peter Maydell, Kamil Rytarowski

This adds a 32bit guest.

The official LTS cloud image is downloaded and initialized with
cloud-init.

Signed-off-by: Fam Zheng <famz@redhat.com>
---
 tests/vm/ubuntu.i386 | 88 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 88 insertions(+)
 create mode 100755 tests/vm/ubuntu.i386

diff --git a/tests/vm/ubuntu.i386 b/tests/vm/ubuntu.i386
new file mode 100755
index 0000000000..b3a9b854ce
--- /dev/null
+++ b/tests/vm/ubuntu.i386
@@ -0,0 +1,88 @@
+#!/usr/bin/env python
+#
+# Ubuntu i386 image
+#
+# Copyright (C) 2017 Red Hat Inc.
+#
+# Authors:
+#  Fam Zheng <famz@redhat.com>
+#
+# This work is licensed under the terms of the GNU GPL, version 2.  See
+# the COPYING file in the top-level directory.
+#
+
+import os
+import sys
+import logging
+import subprocess
+import tempfile
+import time
+import basevm
+
+class UbuntuX86VM(basevm.BaseVM):
+    name = "ubuntu.i386"
+    BUILD_SCRIPT = """
+        set -e;
+        cd $(mktemp -d);
+        sudo chmod a+r /dev/vdb;
+        tar -xf /dev/vdb;
+        ./configure {configure_opts};
+        make -j{jobs};
+        make check;
+    """
+
+    def _gen_cloud_init_iso(self):
+        cidir = self._tmpdir
+        mdata = open(os.path.join(cidir, "meta-data"), "w")
+        mdata.writelines(["instance-id: ubuntu-vm-0\n",
+                         "local-hostname: ubuntu-guest\n"])
+        mdata.close()
+        udata = open(os.path.join(cidir, "user-data"), "w")
+        udata.writelines(["#cloud-config\n",
+                          "chpasswd:\n",
+                          "  list: |\n",
+                          "    root:%s\n" % self.ROOT_PASS,
+                          "    %s:%s\n" % (self.GUEST_USER, self.GUEST_PASS),
+                          "  expire: False\n",
+                          "users:\n",
+                          "  - name: %s\n" % self.GUEST_USER,
+                          "    sudo: ALL=(ALL) NOPASSWD:ALL\n",
+                          "    ssh-authorized-keys:\n",
+                          "    - %s\n" % basevm.SSH_PUB_KEY,
+                          "  - name: root\n",
+                          "    ssh-authorized-keys:\n",
+                          "    - %s\n" % basevm.SSH_PUB_KEY])
+        udata.close()
+        subprocess.check_call(["genisoimage", "-output", "cloud-init.iso",
+                               "-volid", "cidata", "-joliet", "-rock",
+                               "user-data", "meta-data"],
+                               cwd=cidir,
+                               stdin=self._devnull, stdout=self._stdout,
+                               stderr=self._stdout)
+        return os.path.join(cidir, "cloud-init.iso")
+
+    def build_image(self, img):
+        cimg = self._download_with_cache("https://cloud-images.ubuntu.com/releases/16.04/release/ubuntu-16.04-server-cloudimg-i386-disk1.img")
+        img_tmp = img + ".tmp"
+        subprocess.check_call(["cp", "-f", cimg, img_tmp])
+        subprocess.check_call(["qemu-img", "resize", img_tmp, "50G"])
+        self.boot(img_tmp, extra_args = ["-cdrom", self._gen_cloud_init_iso()])
+        self.wait_ssh()
+        self.ssh_root_check("touch /etc/cloud/cloud-init.disabled")
+        self.ssh_root_check("apt-get update")
+        self.ssh_root_check("apt-get install -y cloud-initramfs-growroot")
+        # Don't check the status in case the guest hang up too quickly
+        self.ssh_root("sync && reboot")
+        time.sleep(5)
+        self.wait_ssh()
+        # The previous update sometimes doesn't survive a reboot, so do it again
+        self.ssh_root_check("apt-get update")
+        self.ssh_root_check("apt-get build-dep -y qemu")
+        self.ssh_root_check("apt-get install -y libfdt-dev")
+        self.ssh_root("poweroff")
+        self.wait()
+        subprocess.check_call(["mv", img_tmp, img])
+        return 0
+
+if __name__ == "__main__":
+    sys.exit(basevm.main(UbuntuX86VM))
-- 
2.13.4

^ permalink raw reply related	[flat|nested] 34+ messages in thread

* [Qemu-devel] [PATCH RFC 6/9] tests: Add FreeBSD image
  2017-08-16  7:20 [Qemu-devel] [PATCH RFC 0/9] tests: Add VM based build tests (for non-x86_64 and/or non-Linux) Fam Zheng
                   ` (4 preceding siblings ...)
  2017-08-16  7:21 ` [Qemu-devel] [PATCH RFC 5/9] tests: Add ubuntu.i386 image Fam Zheng
@ 2017-08-16  7:21 ` Fam Zheng
  2017-08-16  7:21 ` [Qemu-devel] [PATCH RFC 7/9] tests: Add NetBSD image Fam Zheng
                   ` (5 subsequent siblings)
  11 siblings, 0 replies; 34+ messages in thread
From: Fam Zheng @ 2017-08-16  7:21 UTC (permalink / raw)
  To: qemu-devel
  Cc: berrange, Alex Bennée, Fam Zheng,
	Philippe Mathieu-Daudé,
	stefanha, pbonzini, Peter Maydell, Kamil Rytarowski

The image is prepared following instructions as in:

https://wiki.qemu.org/Hosts/BSD

Signed-off-by: Fam Zheng <famz@redhat.com>
---
 tests/vm/freebsd | 44 ++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 44 insertions(+)
 create mode 100755 tests/vm/freebsd

diff --git a/tests/vm/freebsd b/tests/vm/freebsd
new file mode 100755
index 0000000000..fb23164676
--- /dev/null
+++ b/tests/vm/freebsd
@@ -0,0 +1,44 @@
+#!/usr/bin/env python
+#
+# FreeBSD VM image
+#
+# Copyright (C) 2017 Red Hat Inc.
+#
+# Authors:
+#  Fam Zheng <famz@redhat.com>
+#
+# This work is licensed under the terms of the GNU GPL, version 2.  See
+# the COPYING file in the top-level directory.
+#
+
+import os
+import sys
+import logging
+import subprocess
+import tempfile
+import time
+import basevm
+
+class FreeBSDVM(basevm.BaseVM):
+    name = "freebsd"
+    BUILD_SCRIPT = """
+        set -e;
+        cd $(mktemp -d /var/tmp/qemu-test.XXXXXX);
+        tar -xf /dev/vtbd1;
+        ./configure {configure_opts};
+        gmake -j{jobs};
+        gmake check;
+    """
+
+    def build_image(self, img, rebuild=False):
+        if os.path.exists(img) and not rebuild:
+            return
+        cimg = self._download_with_cache("http://download.patchew.org/freebsd.img.xz")
+        img_tmp_xz = img + ".tmp.xz"
+        img_tmp = img + ".tmp"
+        subprocess.check_call(["cp", "-f", cimg, img_tmp_xz])
+        subprocess.check_call(["xz", "-df", img_tmp_xz])
+        subprocess.check_call(["mv", img_tmp, img])
+
+if __name__ == "__main__":
+    sys.exit(basevm.main(FreeBSDVM))
-- 
2.13.4

^ permalink raw reply related	[flat|nested] 34+ messages in thread

* [Qemu-devel] [PATCH RFC 7/9] tests: Add NetBSD image
  2017-08-16  7:20 [Qemu-devel] [PATCH RFC 0/9] tests: Add VM based build tests (for non-x86_64 and/or non-Linux) Fam Zheng
                   ` (5 preceding siblings ...)
  2017-08-16  7:21 ` [Qemu-devel] [PATCH RFC 6/9] tests: Add FreeBSD image Fam Zheng
@ 2017-08-16  7:21 ` Fam Zheng
  2017-08-16  9:31   ` Kamil Rytarowski
  2017-08-16  7:21 ` [Qemu-devel] [PATCH RFC 8/9] tests: Add OpenBSD image Fam Zheng
                   ` (4 subsequent siblings)
  11 siblings, 1 reply; 34+ messages in thread
From: Fam Zheng @ 2017-08-16  7:21 UTC (permalink / raw)
  To: qemu-devel
  Cc: berrange, Alex Bennée, Fam Zheng,
	Philippe Mathieu-Daudé,
	stefanha, pbonzini, Peter Maydell, Kamil Rytarowski

The image is prepared following instructions as in:

https://wiki.qemu.org/Hosts/BSD

Signed-off-by: Fam Zheng <famz@redhat.com>
---
 tests/vm/netbsd | 44 ++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 44 insertions(+)
 create mode 100755 tests/vm/netbsd

diff --git a/tests/vm/netbsd b/tests/vm/netbsd
new file mode 100755
index 0000000000..4cd07d3b1b
--- /dev/null
+++ b/tests/vm/netbsd
@@ -0,0 +1,44 @@
+#!/usr/bin/env python
+#
+# NetBSD VM image
+#
+# Copyright (C) 2017 Red Hat Inc.
+#
+# Authors:
+#  Fam Zheng <famz@redhat.com>
+#
+# This work is licensed under the terms of the GNU GPL, version 2.  See
+# the COPYING file in the top-level directory.
+#
+
+import os
+import sys
+import logging
+import subprocess
+import tempfile
+import time
+import basevm
+
+class NetBSDVM(basevm.BaseVM):
+    name = "netbsd"
+    BUILD_SCRIPT = """
+        set -e;
+        cd $(mktemp -d /var/tmp/qemu-test.XXXXXX);
+        tar -xf /dev/ld1a;
+        ./configure --python=python2.7 {configure_opts};
+        gmake -j{jobs};
+        gmake check;
+    """
+
+    def build_image(self, img, rebuild=False):
+        if os.path.exists(img) and not rebuild:
+            return
+        cimg = self._download_with_cache("http://localhost:8000/netbsd.img.xz")
+        img_tmp_xz = img + ".tmp.xz"
+        img_tmp = img + ".tmp"
+        subprocess.check_call(["cp", "-f", cimg, img_tmp_xz])
+        subprocess.check_call(["xz", "-df", img_tmp_xz])
+        subprocess.check_call(["mv", img_tmp, img])
+
+if __name__ == "__main__":
+    sys.exit(basevm.main(NetBSDVM))
-- 
2.13.4

^ permalink raw reply related	[flat|nested] 34+ messages in thread

* [Qemu-devel] [PATCH RFC 8/9] tests: Add OpenBSD image
  2017-08-16  7:20 [Qemu-devel] [PATCH RFC 0/9] tests: Add VM based build tests (for non-x86_64 and/or non-Linux) Fam Zheng
                   ` (6 preceding siblings ...)
  2017-08-16  7:21 ` [Qemu-devel] [PATCH RFC 7/9] tests: Add NetBSD image Fam Zheng
@ 2017-08-16  7:21 ` Fam Zheng
  2019-01-24 15:52   ` Philippe Mathieu-Daudé
  2017-08-16  7:21 ` [Qemu-devel] [PATCH RFC 9/9] Makefile: Add rules to run vm tests Fam Zheng
                   ` (3 subsequent siblings)
  11 siblings, 1 reply; 34+ messages in thread
From: Fam Zheng @ 2017-08-16  7:21 UTC (permalink / raw)
  To: qemu-devel
  Cc: berrange, Alex Bennée, Fam Zheng,
	Philippe Mathieu-Daudé,
	stefanha, pbonzini, Peter Maydell, Kamil Rytarowski

The image is prepared following instructions as in:

https://wiki.qemu.org/Hosts/BSD

Signed-off-by: Fam Zheng <famz@redhat.com>
---
 tests/vm/openbsd | 45 +++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 45 insertions(+)
 create mode 100755 tests/vm/openbsd

diff --git a/tests/vm/openbsd b/tests/vm/openbsd
new file mode 100755
index 0000000000..d37ff83a59
--- /dev/null
+++ b/tests/vm/openbsd
@@ -0,0 +1,45 @@
+#!/usr/bin/env python
+#
+# OpenBSD VM image
+#
+# Copyright (C) 2017 Red Hat Inc.
+#
+# Authors:
+#  Fam Zheng <famz@redhat.com>
+#
+# This work is licensed under the terms of the GNU GPL, version 2.  See
+# the COPYING file in the top-level directory.
+#
+
+import os
+import sys
+import logging
+import subprocess
+import tempfile
+import time
+import basevm
+
+class OpenBSDVM(basevm.BaseVM):
+    name = "openbsd"
+    BUILD_SCRIPT = """
+        set -e;
+        cd $(mktemp -d /var/tmp/qemu-test.XXXXXX);
+        tar -xf /dev/rsd1c;
+        ./configure --cc=x86_64-unknown-openbsd6.1-gcc-4.9.4 --python=python2.7 {configure_opts};
+        gmake -j{jobs};
+        # XXX: "gmake check" seems to always hang or fail
+        #gmake check;
+    """
+
+    def build_image(self, img, rebuild=False):
+        if os.path.exists(img) and not rebuild:
+            return
+        cimg = self._download_with_cache("http://download.patchew.org/openbsd.img.xz")
+        img_tmp_xz = img + ".tmp.xz"
+        img_tmp = img + ".tmp"
+        subprocess.check_call(["cp", "-f", cimg, img_tmp_xz])
+        subprocess.check_call(["xz", "-df", img_tmp_xz])
+        subprocess.check_call(["mv", img_tmp, img])
+
+if __name__ == "__main__":
+    sys.exit(basevm.main(OpenBSDVM))
-- 
2.13.4

^ permalink raw reply related	[flat|nested] 34+ messages in thread

* [Qemu-devel] [PATCH RFC 9/9] Makefile: Add rules to run vm tests
  2017-08-16  7:20 [Qemu-devel] [PATCH RFC 0/9] tests: Add VM based build tests (for non-x86_64 and/or non-Linux) Fam Zheng
                   ` (7 preceding siblings ...)
  2017-08-16  7:21 ` [Qemu-devel] [PATCH RFC 8/9] tests: Add OpenBSD image Fam Zheng
@ 2017-08-16  7:21 ` Fam Zheng
  2017-08-16  7:46 ` [Qemu-devel] [PATCH RFC 0/9] tests: Add VM based build tests (for non-x86_64 and/or non-Linux) no-reply
                   ` (2 subsequent siblings)
  11 siblings, 0 replies; 34+ messages in thread
From: Fam Zheng @ 2017-08-16  7:21 UTC (permalink / raw)
  To: qemu-devel
  Cc: berrange, Alex Bennée, Fam Zheng,
	Philippe Mathieu-Daudé,
	stefanha, pbonzini, Peter Maydell, Kamil Rytarowski

Signed-off-by: Fam Zheng <famz@redhat.com>
---
 Makefile                  |  2 ++
 configure                 |  2 +-
 tests/vm/Makefile.include | 41 +++++++++++++++++++++++++++++++++++++++++
 3 files changed, 44 insertions(+), 1 deletion(-)
 create mode 100644 tests/vm/Makefile.include

diff --git a/Makefile b/Makefile
index 81447b1f08..2798a5ca69 100644
--- a/Makefile
+++ b/Makefile
@@ -813,6 +813,7 @@ endif
 -include $(wildcard *.d tests/*.d)
 
 include $(SRC_PATH)/tests/docker/Makefile.include
+include $(SRC_PATH)/tests/vm/Makefile.include
 
 .PHONY: help
 help:
@@ -836,6 +837,7 @@ help:
 	@echo  'Test targets:'
 	@echo  '  check           - Run all tests (check-help for details)'
 	@echo  '  docker          - Help about targets running tests inside Docker containers'
+	@echo  '  vm-test         - Help about targets running tests inside VM'
 	@echo  ''
 	@echo  'Documentation targets:'
 	@echo  '  html info pdf txt'
diff --git a/configure b/configure
index dd73cce62f..9a3052e9ad 100755
--- a/configure
+++ b/configure
@@ -6544,7 +6544,7 @@ if test "$ccache_cpp2" = "yes"; then
 fi
 
 # build tree in object directory in case the source is not in the current directory
-DIRS="tests tests/tcg tests/tcg/cris tests/tcg/lm32 tests/libqos tests/qapi-schema tests/tcg/xtensa tests/qemu-iotests"
+DIRS="tests tests/tcg tests/tcg/cris tests/tcg/lm32 tests/libqos tests/qapi-schema tests/tcg/xtensa tests/qemu-iotests tests/vm"
 DIRS="$DIRS docs docs/interop fsdev"
 DIRS="$DIRS pc-bios/optionrom pc-bios/spapr-rtas pc-bios/s390-ccw"
 DIRS="$DIRS roms/seabios roms/vgabios"
diff --git a/tests/vm/Makefile.include b/tests/vm/Makefile.include
new file mode 100644
index 0000000000..e24350f18b
--- /dev/null
+++ b/tests/vm/Makefile.include
@@ -0,0 +1,41 @@
+# Makefile for VM tests
+
+.PHONY: vm-build-all
+
+IMAGES := ubuntu.i386 freebsd netbsd openbsd
+IMAGE_FILES := $(patsubst %, tests/vm/%.img, $(IMAGES))
+
+.PRECIOUS: $(IMAGE_FILES)
+
+vm-test:
+	@echo "vm-test: Test QEMU in preconfigured virtual machines"
+	@echo
+	@echo "  vm-build-ubuntu.i386            - Build QEMU in ubuntu i386 VM"
+	@echo "  vm-build-freebsd                - Build QEMU in FreeBSD VM"
+	@echo "  vm-build-netbsd                 - Build QEMU in NetBSD VM"
+	@echo "  vm-build-freebsd                - Build QEMU in OpenBSD VM"
+
+vm-build-all: $(addprefix vm-build-, $(IMAGES))
+
+tests/vm/%.img: $(SRC_PATH)/tests/vm/%
+	$(call quiet-command, \
+		$(SRC_PATH)/tests/vm/$* \
+		$(if $(V)$(DEBUG), --debug) \
+		--image "$@" \
+		--force \
+		--build-image $@, \
+		"  VM-IMAGE $*")
+
+
+# Build in VM $(IMAGE)
+vm-build-%: tests/vm/%.img
+	$(call quiet-command, \
+		$(SRC_PATH)/tests/vm/$* \
+		$(if $(V)$(DEBUG), --debug) \
+		$(if $(DEBUG), --interactive) \
+		--image "$<" \
+		--build-qemu $(SRC_PATH) \
+		$(if $(TARGET_DIRS), --target-list=$(TARGET_DIRS), \
+			$(if $(TARGET_LIST), --target-list=$(TARGET_LIST))), \
+		"  VM-BUILD $(IMAGE)")
+
-- 
2.13.4

^ permalink raw reply related	[flat|nested] 34+ messages in thread

* Re: [Qemu-devel] [PATCH RFC 0/9] tests: Add VM based build tests (for non-x86_64 and/or non-Linux)
  2017-08-16  7:20 [Qemu-devel] [PATCH RFC 0/9] tests: Add VM based build tests (for non-x86_64 and/or non-Linux) Fam Zheng
                   ` (8 preceding siblings ...)
  2017-08-16  7:21 ` [Qemu-devel] [PATCH RFC 9/9] Makefile: Add rules to run vm tests Fam Zheng
@ 2017-08-16  7:46 ` no-reply
  2017-08-16  8:56 ` Stefan Hajnoczi
  2017-08-16  9:24 ` Kamil Rytarowski
  11 siblings, 0 replies; 34+ messages in thread
From: no-reply @ 2017-08-16  7:46 UTC (permalink / raw)
  To: famz
  Cc: qemu-devel, peter.maydell, f4bug, kamil, stefanha, pbonzini, alex.bennee

Hi,

This series seems to have some coding style problems. See output below for
more information:

Message-id: 20170816072104.24420-1-famz@redhat.com
Subject: [Qemu-devel] [PATCH RFC 0/9] tests: Add VM based build tests (for non-x86_64 and/or non-Linux)
Type: series

=== TEST SCRIPT BEGIN ===
#!/bin/bash

BASE=base
n=1
total=$(git log --oneline $BASE.. | wc -l)
failed=0

git config --local diff.renamelimit 0
git config --local diff.renames True

commits="$(git log --format=%H --reverse $BASE..)"
for c in $commits; do
    echo "Checking PATCH $n/$total: $(git log -n 1 --format=%s $c)..."
    if ! git show $c --format=email | ./scripts/checkpatch.pl --mailback -; then
        failed=1
        echo
    fi
    n=$((n+1))
done

exit $failed
=== TEST SCRIPT END ===

Updating 3c8cf5a9c21ff8782164d1def7f44bd888713384
Switched to a new branch 'test'
055464f200 Makefile: Add rules to run vm tests
a51bbb970d tests: Add OpenBSD image
ad7b5b619b tests: Add NetBSD image
e80f6022ec tests: Add FreeBSD image
cc87c43c6d tests: Add ubuntu.i386 image
9bb54d6c23 tests: Add vm test lib
5c83acfced qemu.py: Add "wait()" method
64ca3a8cde qemu.py: Add variable vga type
8c873e4307 gitignore: Ignore vm test images

=== OUTPUT BEGIN ===
Checking PATCH 1/9: gitignore: Ignore vm test images...
Checking PATCH 2/9: qemu.py: Add variable vga type...
Checking PATCH 3/9: qemu.py: Add "wait()" method...
Checking PATCH 4/9: tests: Add vm test lib...
ERROR: line over 90 characters
#83: FILE: tests/vm/basevm.py:58:
+ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCikC46WYtXotUd0UGPz9547Aj0KqC4gk+nt4BBJm86IHgCD9FygSGX9EFutXlhz9KZIPg9Okk7+IzXRHCWI2MNvhrcjyrezKREm71z08j9iwfxY3340fY2Mo+0khwpO7bzsgzkljHIHqcOg7MgttPInVMNH/EfqpgR8EDKJuWCB2Ny+EBFN/3dAiff0X/EvKle9PUrY70EkSycnyURS8HZReEqj8lN9J5kXzA8F6jBo/0Q42Ttv6e4k5YcaDrwmLrBWLra2PCXZLNyHqXEiFkGmdXtA1Eox9gc/p4jIXim6xrPNmpN6WyrrEjaCF5xYvNv8wXkD6uSWwbHYU24lIAn qemu-vm-key

WARNING: line over 80 characters
#187: FILE: tests/vm/basevm.py:162:
+                            "file=%s,if=none,id=%s,cache=writeback,format=raw" % \

WARNING: line over 80 characters
#190: FILE: tests/vm/basevm.py:165:
+                            "virtio-blk,drive=%s,serial=%s,bootindex=1" % (name, name)]

total: 1 errors, 2 warnings, 246 lines checked

Your patch has style problems, please review.  If any of these errors
are false positives report them to the maintainer, see
CHECKPATCH in MAINTAINERS.

Checking PATCH 5/9: tests: Add ubuntu.i386 image...
Checking PATCH 6/9: tests: Add FreeBSD image...
Checking PATCH 7/9: tests: Add NetBSD image...
Checking PATCH 8/9: tests: Add OpenBSD image...
Checking PATCH 9/9: Makefile: Add rules to run vm tests...
=== OUTPUT END ===

Test command exited with code: 1


---
Email generated automatically by Patchew [http://patchew.org/].
Please send your feedback to patchew-devel@freelists.org

^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [Qemu-devel] [PATCH RFC 3/9] qemu.py: Add "wait()" method
  2017-08-16  7:20 ` [Qemu-devel] [PATCH RFC 3/9] qemu.py: Add "wait()" method Fam Zheng
@ 2017-08-16  8:32   ` Stefan Hajnoczi
  2017-08-16 20:50     ` Fam Zheng
  0 siblings, 1 reply; 34+ messages in thread
From: Stefan Hajnoczi @ 2017-08-16  8:32 UTC (permalink / raw)
  To: Fam Zheng
  Cc: qemu-devel, Peter Maydell, Philippe Mathieu-Daudé,
	Kamil Rytarowski, stefanha, pbonzini, Alex Bennée

[-- Attachment #1: Type: text/plain, Size: 750 bytes --]

On Wed, Aug 16, 2017 at 03:20:58PM +0800, Fam Zheng wrote:
> Signed-off-by: Fam Zheng <famz@redhat.com>
> ---
>  scripts/qemu.py | 5 +++++
>  1 file changed, 5 insertions(+)
> 
> diff --git a/scripts/qemu.py b/scripts/qemu.py
> index e5f314efdb..3e7eb44035 100644
> --- a/scripts/qemu.py
> +++ b/scripts/qemu.py
> @@ -144,6 +144,11 @@ class QEMUMachine(object):
>              self._post_shutdown()
>              raise
>  
> +    def wait(self):
> +        self._popen.wait()
> +        self._qmp.close()
> +        self._post_shutdown()
> +

Please include docstrings for public methods.

Is this method for users who do not use shutdown() because the guest
halts itself?

Why is self._load_io_log() not called?

Stefan

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 455 bytes --]

^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [Qemu-devel] [PATCH RFC 4/9] tests: Add vm test lib
  2017-08-16  7:20 ` [Qemu-devel] [PATCH RFC 4/9] tests: Add vm test lib Fam Zheng
@ 2017-08-16  8:55   ` Stefan Hajnoczi
  2017-08-16 11:49     ` Eric Blake
  2017-08-16 21:03     ` Fam Zheng
  0 siblings, 2 replies; 34+ messages in thread
From: Stefan Hajnoczi @ 2017-08-16  8:55 UTC (permalink / raw)
  To: Fam Zheng
  Cc: qemu-devel, Peter Maydell, Philippe Mathieu-Daudé,
	Kamil Rytarowski, stefanha, pbonzini, Alex Bennée

[-- Attachment #1: Type: text/plain, Size: 3507 bytes --]

On Wed, Aug 16, 2017 at 03:20:59PM +0800, Fam Zheng wrote:
> +class BaseVM(object):
> +    GUEST_USER = "qemu"
> +    GUEST_PASS = "qemupass"
> +    ROOT_PASS = "qemupass"
> +
> +    # The script to run in the guest that builds QEMU
> +    BUILD_SCRIPT = ""
> +    # The guest name, to be overridden by subclasses
> +    name = "#base"
> +    def __init__(self, debug=False):
> +        self._guest = None
> +        self.ssh_port = 20022

Only one instance of this test can be run per machine due to the
hardcoded SSH port number on the host.

It is possible to use:

  -netdev user,id=vnet,hostfwd=:0.0.0.0:0-:22

and then query the port number:

  (qemu) info usernet
  VLAN -1 (vnet):
  Protocol[State]    FD  Source Address  Port   Dest. Address  Port RecvQ SendQ
  TCP[HOST_FORWARD]  15               * 36089       10.0.2.15    22     0     0

The host port is 36089 in this example.

I'm not aware of a QMP equivalent for "info usernet".  It may be
necessary to implement a query-usernet command if you don't want to use
HMP.

> +        self._tmpdir = tempfile.mkdtemp(prefix="qemu-vm-")
> +        atexit.register(shutil.rmtree, self._tmpdir)
> +
> +        self._ssh_key_file = os.path.join(self._tmpdir, "id_rsa")
> +        open(self._ssh_key_file, "w").write(SSH_KEY)
> +        subprocess.check_call(["chmod", "600", self._ssh_key_file])
> +
> +        self._ssh_pub_key_file = os.path.join(self._tmpdir, "id_rsa.pub")
> +        open(self._ssh_pub_key_file, "w").write(SSH_PUB_KEY)
> +
> +        self.debug = debug
> +        self._stderr = sys.stderr
> +        self._devnull = open("/dev/null", "w")
> +        if self.debug:
> +            self._stdout = sys.stdout
> +        else:
> +            self._stdout = self._devnull
> +        self._args = [ \
> +            "-nodefaults", "-enable-kvm", "-m", "2G",
> +            "-smp", os.environ.get("J", "4"), "-cpu", "host",

Can this be a command-line option in main() and a constructor argument
instead of an environment variable?  That would be cleaner because the
use of "J" might be surprising to someone who happens to have it set in
their environment.

> +            "-netdev", "user,id=vnet,hostfwd=:0.0.0.0:%d-:22" % self.ssh_port,
> +            "-device", "virtio-net-pci,netdev=vnet",
> +            "-vnc", ":0,to=20",
> +            "-serial", "file:%s" % os.path.join(self._tmpdir, "serial.out")]
> +
> +        self._data_args = []
> +
> +    def _download_with_cache(self, url):
> +        cache_dir = os.path.expanduser("~/.cache/qemu-vm/download")
> +        subprocess.check_call(["mkdir", "-p", cache_dir])

os.makedirs()

> +        fname = os.path.join(cache_dir, hashlib.sha1(url).hexdigest())
> +        if os.path.exists(fname):
> +            return fname
> +        logging.debug("Downloading %s to %s...", url, fname)
> +        subprocess.check_call(["wget", "-c", url, "-O", fname + ".download"],
> +                              stdout=self._stdout, stderr=self._stderr)

It might be important to support image file updates without manually
deleting ~/.cache.  You can probably make wget send an HTTP
If-Modified-Since header or something similar.  There are 3 cases:

1. Existing file is up-to-date.  No download after HEAD request.
2. Existing file is outdated, download the newest version.
3. Failure or timeout, use the old version for now.

> +        subprocess.check_call(["mv", fname + ".download", fname],
> +                              stdout=self._stdout, stderr=self._stderr)

os.rename()

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 455 bytes --]

^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [Qemu-devel] [PATCH RFC 0/9] tests: Add VM based build tests (for non-x86_64 and/or non-Linux)
  2017-08-16  7:20 [Qemu-devel] [PATCH RFC 0/9] tests: Add VM based build tests (for non-x86_64 and/or non-Linux) Fam Zheng
                   ` (9 preceding siblings ...)
  2017-08-16  7:46 ` [Qemu-devel] [PATCH RFC 0/9] tests: Add VM based build tests (for non-x86_64 and/or non-Linux) no-reply
@ 2017-08-16  8:56 ` Stefan Hajnoczi
  2017-08-16  9:24 ` Kamil Rytarowski
  11 siblings, 0 replies; 34+ messages in thread
From: Stefan Hajnoczi @ 2017-08-16  8:56 UTC (permalink / raw)
  To: Cleber Rosa
  Cc: qemu-devel, Peter Maydell, Philippe Mathieu-Daudé,
	Kamil Rytarowski, stefanha, pbonzini, Alex Bennée,
	Fam Zheng

[-- Attachment #1: Type: text/plain, Size: 2220 bytes --]

On Wed, Aug 16, 2017 at 03:20:55PM +0800, Fam Zheng wrote:
> Build tests in one 32 bit Linux guest and three BSD images are defined in this
> series. This is a more managable way than the manually maintained virtual
> machines in patchew. Also, one big advantage of ephemeral VMs over long running
> guests is the reduced RAM usage of host, which makes it possible to have one
> host test all these BSD variants and probably more.
> 
> The BSD guest templates are manually prepared following
> 
> https://wiki.qemu.org/Hosts/BSD
> 
> as it is not easy to automate. (The ideal approach is like the ubuntu.i386
> script, which configures the guest on top of an official released image, fully
> automatically.)
> 
> Need for help: "gmake check" in the added OpenBSD image fails with -ENOMEM
> errors, even if I change "-m 2G" to "-m 8G" when starting VM. Ideas? And there
> is a warning from ./configure about OpenBSD going to be unsupported in coming
> releases, is it still the case?
> 
> Fam
> 
> Fam Zheng (9):
>   gitignore: Ignore vm test images
>   qemu.py: Add variable vga type
>   qemu.py: Add "wait()" method
>   tests: Add vm test lib
>   tests: Add ubuntu.i386 image
>   tests: Add FreeBSD image
>   tests: Add NetBSD image
>   tests: Add OpenBSD image
>   Makefile: Add rules to run vm tests
> 
>  .gitignore                |   2 +
>  Makefile                  |   2 +
>  configure                 |   2 +-
>  scripts/qemu.py           |   8 +-
>  tests/vm/Makefile.include |  41 ++++++++
>  tests/vm/basevm.py        | 246 ++++++++++++++++++++++++++++++++++++++++++++++
>  tests/vm/freebsd          |  44 +++++++++
>  tests/vm/netbsd           |  44 +++++++++
>  tests/vm/openbsd          |  45 +++++++++
>  tests/vm/ubuntu.i386      |  88 +++++++++++++++++
>  10 files changed, 520 insertions(+), 2 deletions(-)
>  create mode 100644 tests/vm/Makefile.include
>  create mode 100755 tests/vm/basevm.py
>  create mode 100755 tests/vm/freebsd
>  create mode 100755 tests/vm/netbsd
>  create mode 100755 tests/vm/openbsd
>  create mode 100755 tests/vm/ubuntu.i386

Adding Cleber to CC since he's looking into QEMU test infrastructure
improvements.

Stefan

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 455 bytes --]

^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [Qemu-devel] [PATCH RFC 2/9] qemu.py: Add variable vga type
  2017-08-16  7:20 ` [Qemu-devel] [PATCH RFC 2/9] qemu.py: Add variable vga type Fam Zheng
@ 2017-08-16  9:18   ` Kamil Rytarowski
  0 siblings, 0 replies; 34+ messages in thread
From: Kamil Rytarowski @ 2017-08-16  9:18 UTC (permalink / raw)
  To: Fam Zheng, qemu-devel
  Cc: Peter Maydell, Philippe Mathieu-Daudé,
	Kamil Rytarowski, stefanha, pbonzini, Alex Bennée

[-- Attachment #1: Type: text/plain, Size: 1431 bytes --]

On 16.08.2017 09:20, Fam Zheng wrote:
> Some guests behave differently when no VGA is detected. Add a variable
> to allow override the "none" default.
> 
> Signed-off-by: Fam Zheng <famz@redhat.com>
> ---
>  scripts/qemu.py | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/scripts/qemu.py b/scripts/qemu.py
> index 880e3e8219..e5f314efdb 100644
> --- a/scripts/qemu.py
> +++ b/scripts/qemu.py
> @@ -39,6 +39,7 @@ class QEMUMachine(object):
>          self._iolog = None
>          self._socket_scm_helper = socket_scm_helper
>          self._debug = debug
> +        self._vga = "none"
>  
>      # This can be used to add an unused monitor instance.
>      def add_monitor_telnet(self, ip, port):
> @@ -111,7 +112,7 @@ class QEMUMachine(object):
>              moncdev = 'socket,id=mon,path=%s' % self._monitor_address
>          return ['-chardev', moncdev,
>                  '-mon', 'chardev=mon,mode=control',
> -                '-display', 'none', '-vga', 'none']
> +                '-display', 'none', '-vga', self._vga]
>  
>      def _pre_launch(self):
>          self._qmp = qmp.qmp.QEMUMonitorProtocol(self._monitor_address, server=True,
> 

Not sure if this is related but OpenBSD ships with a patch for vga
(cherry-picked from qemu-devel):

http://cvsweb.openbsd.org/cgi-bin/cvsweb/ports/emulators/qemu/patches/patch-roms_vgabios_vgabios_c?annotate=1.1


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 819 bytes --]

^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [Qemu-devel] [PATCH RFC 0/9] tests: Add VM based build tests (for non-x86_64 and/or non-Linux)
  2017-08-16  7:20 [Qemu-devel] [PATCH RFC 0/9] tests: Add VM based build tests (for non-x86_64 and/or non-Linux) Fam Zheng
                   ` (10 preceding siblings ...)
  2017-08-16  8:56 ` Stefan Hajnoczi
@ 2017-08-16  9:24 ` Kamil Rytarowski
  2017-08-16 10:13   ` Fam Zheng
  11 siblings, 1 reply; 34+ messages in thread
From: Kamil Rytarowski @ 2017-08-16  9:24 UTC (permalink / raw)
  To: Fam Zheng, qemu-devel
  Cc: berrange, Alex Bennée, Philippe Mathieu-Daudé,
	stefanha, pbonzini, Peter Maydell, Kamil Rytarowski

[-- Attachment #1: Type: text/plain, Size: 2353 bytes --]

On 16.08.2017 09:20, Fam Zheng wrote:
> Build tests in one 32 bit Linux guest and three BSD images are defined in this
> series. This is a more managable way than the manually maintained virtual
> machines in patchew. Also, one big advantage of ephemeral VMs over long running
> guests is the reduced RAM usage of host, which makes it possible to have one
> host test all these BSD variants and probably more.
> 

Thank you for your work on this!

> The BSD guest templates are manually prepared following
> 
> https://wiki.qemu.org/Hosts/BSD
> 
> as it is not easy to automate. (The ideal approach is like the ubuntu.i386
> script, which configures the guest on top of an official released image, fully
> automatically.)
> 

For the reference, inside the NetBSD infrastructure we use homegrown Anita:

http://pkgsrc.se/misc/py-anita

> Need for help: "gmake check" in the added OpenBSD image fails with -ENOMEM
> errors, even if I change "-m 2G" to "-m 8G" when starting VM. Ideas? And there
> is a warning from ./configure about OpenBSD going to be unsupported in coming
> releases, is it still the case?
> 

I'm not sure about their defaults. Please check ulimit and perhaps
/etc/login.conf.

> Fam
> 
> Fam Zheng (9):
>   gitignore: Ignore vm test images
>   qemu.py: Add variable vga type
>   qemu.py: Add "wait()" method
>   tests: Add vm test lib
>   tests: Add ubuntu.i386 image
>   tests: Add FreeBSD image
>   tests: Add NetBSD image
>   tests: Add OpenBSD image
>   Makefile: Add rules to run vm tests
> 
>  .gitignore                |   2 +
>  Makefile                  |   2 +
>  configure                 |   2 +-
>  scripts/qemu.py           |   8 +-
>  tests/vm/Makefile.include |  41 ++++++++
>  tests/vm/basevm.py        | 246 ++++++++++++++++++++++++++++++++++++++++++++++
>  tests/vm/freebsd          |  44 +++++++++
>  tests/vm/netbsd           |  44 +++++++++
>  tests/vm/openbsd          |  45 +++++++++
>  tests/vm/ubuntu.i386      |  88 +++++++++++++++++
>  10 files changed, 520 insertions(+), 2 deletions(-)
>  create mode 100644 tests/vm/Makefile.include
>  create mode 100755 tests/vm/basevm.py
>  create mode 100755 tests/vm/freebsd
>  create mode 100755 tests/vm/netbsd
>  create mode 100755 tests/vm/openbsd
>  create mode 100755 tests/vm/ubuntu.i386
> 



[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 819 bytes --]

^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [Qemu-devel] [PATCH RFC 7/9] tests: Add NetBSD image
  2017-08-16  7:21 ` [Qemu-devel] [PATCH RFC 7/9] tests: Add NetBSD image Fam Zheng
@ 2017-08-16  9:31   ` Kamil Rytarowski
  2017-08-16 10:08     ` Fam Zheng
  0 siblings, 1 reply; 34+ messages in thread
From: Kamil Rytarowski @ 2017-08-16  9:31 UTC (permalink / raw)
  To: Fam Zheng, qemu-devel
  Cc: Peter Maydell, Philippe Mathieu-Daudé,
	Kamil Rytarowski, stefanha, pbonzini, Alex Bennée

[-- Attachment #1: Type: text/plain, Size: 1858 bytes --]

On 16.08.2017 09:21, Fam Zheng wrote:
> The image is prepared following instructions as in:
> 
> https://wiki.qemu.org/Hosts/BSD
> 
> Signed-off-by: Fam Zheng <famz@redhat.com>
> ---
>  tests/vm/netbsd | 44 ++++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 44 insertions(+)
>  create mode 100755 tests/vm/netbsd
> 
> diff --git a/tests/vm/netbsd b/tests/vm/netbsd
> new file mode 100755
> index 0000000000..4cd07d3b1b
> --- /dev/null
> +++ b/tests/vm/netbsd
> @@ -0,0 +1,44 @@
> +#!/usr/bin/env python
> +#
> +# NetBSD VM image
> +#
> +# Copyright (C) 2017 Red Hat Inc.
> +#
> +# Authors:
> +#  Fam Zheng <famz@redhat.com>
> +#
> +# This work is licensed under the terms of the GNU GPL, version 2.  See
> +# the COPYING file in the top-level directory.
> +#
> +
> +import os
> +import sys
> +import logging
> +import subprocess
> +import tempfile
> +import time
> +import basevm
> +
> +class NetBSDVM(basevm.BaseVM):
> +    name = "netbsd"
> +    BUILD_SCRIPT = """
> +        set -e;
> +        cd $(mktemp -d /var/tmp/qemu-test.XXXXXX);
> +        tar -xf /dev/ld1a;
> +        ./configure --python=python2.7 {configure_opts};
> +        gmake -j{jobs};
> +        gmake check;
> +    """
> +
> +    def build_image(self, img, rebuild=False):
> +        if os.path.exists(img) and not rebuild:
> +            return
> +        cimg = self._download_with_cache("http://localhost:8000/netbsd.img.xz")

http://download.patchew.org/netbsd.img.xz

> +        img_tmp_xz = img + ".tmp.xz"
> +        img_tmp = img + ".tmp"
> +        subprocess.check_call(["cp", "-f", cimg, img_tmp_xz])
> +        subprocess.check_call(["xz", "-df", img_tmp_xz])
> +        subprocess.check_call(["mv", img_tmp, img])
> +
> +if __name__ == "__main__":
> +    sys.exit(basevm.main(NetBSDVM))
> 



[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 819 bytes --]

^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [Qemu-devel] [PATCH RFC 7/9] tests: Add NetBSD image
  2017-08-16  9:31   ` Kamil Rytarowski
@ 2017-08-16 10:08     ` Fam Zheng
  0 siblings, 0 replies; 34+ messages in thread
From: Fam Zheng @ 2017-08-16 10:08 UTC (permalink / raw)
  To: Kamil Rytarowski
  Cc: qemu-devel, Peter Maydell, Philippe Mathieu-Daudé,
	Kamil Rytarowski, stefanha, pbonzini, Alex Bennée

On Wed, 08/16 11:31, Kamil Rytarowski wrote:
> On 16.08.2017 09:21, Fam Zheng wrote:
> > The image is prepared following instructions as in:
> > 
> > https://wiki.qemu.org/Hosts/BSD
> > 
> > Signed-off-by: Fam Zheng <famz@redhat.com>
> > ---
> >  tests/vm/netbsd | 44 ++++++++++++++++++++++++++++++++++++++++++++
> >  1 file changed, 44 insertions(+)
> >  create mode 100755 tests/vm/netbsd
> > 
> > diff --git a/tests/vm/netbsd b/tests/vm/netbsd
> > new file mode 100755
> > index 0000000000..4cd07d3b1b
> > --- /dev/null
> > +++ b/tests/vm/netbsd
> > @@ -0,0 +1,44 @@
> > +#!/usr/bin/env python
> > +#
> > +# NetBSD VM image
> > +#
> > +# Copyright (C) 2017 Red Hat Inc.
> > +#
> > +# Authors:
> > +#  Fam Zheng <famz@redhat.com>
> > +#
> > +# This work is licensed under the terms of the GNU GPL, version 2.  See
> > +# the COPYING file in the top-level directory.
> > +#
> > +
> > +import os
> > +import sys
> > +import logging
> > +import subprocess
> > +import tempfile
> > +import time
> > +import basevm
> > +
> > +class NetBSDVM(basevm.BaseVM):
> > +    name = "netbsd"
> > +    BUILD_SCRIPT = """
> > +        set -e;
> > +        cd $(mktemp -d /var/tmp/qemu-test.XXXXXX);
> > +        tar -xf /dev/ld1a;
> > +        ./configure --python=python2.7 {configure_opts};
> > +        gmake -j{jobs};
> > +        gmake check;
> > +    """
> > +
> > +    def build_image(self, img, rebuild=False):
> > +        if os.path.exists(img) and not rebuild:
> > +            return
> > +        cimg = self._download_with_cache("http://localhost:8000/netbsd.img.xz")
> 
> http://download.patchew.org/netbsd.img.xz

Yes, weird this is left over. Will fix.

Fam

^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [Qemu-devel] [PATCH RFC 0/9] tests: Add VM based build tests (for non-x86_64 and/or non-Linux)
  2017-08-16 10:13   ` Fam Zheng
@ 2017-08-16 10:10     ` Kamil Rytarowski
  0 siblings, 0 replies; 34+ messages in thread
From: Kamil Rytarowski @ 2017-08-16 10:10 UTC (permalink / raw)
  To: Fam Zheng
  Cc: qemu-devel, berrange, Alex Bennée,
	Philippe Mathieu-Daudé,
	stefanha, pbonzini, Peter Maydell

[-- Attachment #1: Type: text/plain, Size: 1490 bytes --]

On 16.08.2017 12:13, Fam Zheng wrote:
> On Wed, 08/16 11:24, Kamil Rytarowski wrote:
>> On 16.08.2017 09:20, Fam Zheng wrote:
>>> Build tests in one 32 bit Linux guest and three BSD images are defined in this
>>> series. This is a more managable way than the manually maintained virtual
>>> machines in patchew. Also, one big advantage of ephemeral VMs over long running
>>> guests is the reduced RAM usage of host, which makes it possible to have one
>>> host test all these BSD variants and probably more.
>>>
>>
>> Thank you for your work on this!
>>
>>> The BSD guest templates are manually prepared following
>>>
>>> https://wiki.qemu.org/Hosts/BSD
>>>
>>> as it is not easy to automate. (The ideal approach is like the ubuntu.i386
>>> script, which configures the guest on top of an official released image, fully
>>> automatically.)
>>>
>>
>> For the reference, inside the NetBSD infrastructure we use homegrown Anita:
>>
>> http://pkgsrc.se/misc/py-anita
> 
> Looks cool. Is it suitable for using to implement tests/vm/netbsd? Is there a
> user documentation?
> 
> Fam
> 

Documentation:

http://www.gson.org/netbsd/anita/

I'm not sure if it is suitable. It was designed with a different goal -
to verify the process of installation and execution of ATF (regress)
tests. The process of clean installation of NetBSD for every patch is
overkill... however this might be a source of inspiration. (I've not
been digging into the source code).


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 819 bytes --]

^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [Qemu-devel] [PATCH RFC 0/9] tests: Add VM based build tests (for non-x86_64 and/or non-Linux)
  2017-08-16  9:24 ` Kamil Rytarowski
@ 2017-08-16 10:13   ` Fam Zheng
  2017-08-16 10:10     ` Kamil Rytarowski
  0 siblings, 1 reply; 34+ messages in thread
From: Fam Zheng @ 2017-08-16 10:13 UTC (permalink / raw)
  To: Kamil Rytarowski
  Cc: qemu-devel, berrange, Alex Bennée,
	Philippe Mathieu-Daudé,
	stefanha, pbonzini, Peter Maydell, Kamil Rytarowski

On Wed, 08/16 11:24, Kamil Rytarowski wrote:
> On 16.08.2017 09:20, Fam Zheng wrote:
> > Build tests in one 32 bit Linux guest and three BSD images are defined in this
> > series. This is a more managable way than the manually maintained virtual
> > machines in patchew. Also, one big advantage of ephemeral VMs over long running
> > guests is the reduced RAM usage of host, which makes it possible to have one
> > host test all these BSD variants and probably more.
> > 
> 
> Thank you for your work on this!
> 
> > The BSD guest templates are manually prepared following
> > 
> > https://wiki.qemu.org/Hosts/BSD
> > 
> > as it is not easy to automate. (The ideal approach is like the ubuntu.i386
> > script, which configures the guest on top of an official released image, fully
> > automatically.)
> > 
> 
> For the reference, inside the NetBSD infrastructure we use homegrown Anita:
> 
> http://pkgsrc.se/misc/py-anita

Looks cool. Is it suitable for using to implement tests/vm/netbsd? Is there a
user documentation?

Fam

^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [Qemu-devel] [PATCH RFC 4/9] tests: Add vm test lib
  2017-08-16  8:55   ` Stefan Hajnoczi
@ 2017-08-16 11:49     ` Eric Blake
  2017-08-16 21:03     ` Fam Zheng
  1 sibling, 0 replies; 34+ messages in thread
From: Eric Blake @ 2017-08-16 11:49 UTC (permalink / raw)
  To: Stefan Hajnoczi, Fam Zheng
  Cc: Peter Maydell, qemu-devel, Philippe Mathieu-Daudé,
	Kamil Rytarowski, stefanha, pbonzini, Alex Bennée

[-- Attachment #1: Type: text/plain, Size: 503 bytes --]

On 08/16/2017 03:55 AM, Stefan Hajnoczi wrote:

> I'm not aware of a QMP equivalent for "info usernet".  It may be
> necessary to implement a query-usernet command if you don't want to use
> HMP.

It's possible to run any HMP command from within QMP, using
human-monitor-command.  Parsing the resulting string is the same as you
would get with pure HMP, though.

-- 
Eric Blake, Principal Software Engineer
Red Hat, Inc.           +1-919-301-3266
Virtualization:  qemu.org | libvirt.org


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 619 bytes --]

^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [Qemu-devel] [PATCH RFC 3/9] qemu.py: Add "wait()" method
  2017-08-16  8:32   ` Stefan Hajnoczi
@ 2017-08-16 20:50     ` Fam Zheng
  0 siblings, 0 replies; 34+ messages in thread
From: Fam Zheng @ 2017-08-16 20:50 UTC (permalink / raw)
  To: Stefan Hajnoczi
  Cc: Peter Maydell, qemu-devel, Philippe Mathieu-Daudé,
	Kamil Rytarowski, stefanha, pbonzini, Alex Bennée

On Wed, 08/16 09:32, Stefan Hajnoczi wrote:
> On Wed, Aug 16, 2017 at 03:20:58PM +0800, Fam Zheng wrote:
> > Signed-off-by: Fam Zheng <famz@redhat.com>
> > ---
> >  scripts/qemu.py | 5 +++++
> >  1 file changed, 5 insertions(+)
> > 
> > diff --git a/scripts/qemu.py b/scripts/qemu.py
> > index e5f314efdb..3e7eb44035 100644
> > --- a/scripts/qemu.py
> > +++ b/scripts/qemu.py
> > @@ -144,6 +144,11 @@ class QEMUMachine(object):
> >              self._post_shutdown()
> >              raise
> >  
> > +    def wait(self):
> > +        self._popen.wait()
> > +        self._qmp.close()
> > +        self._post_shutdown()
> > +
> 
> Please include docstrings for public methods.

OK.

> 
> Is this method for users who do not use shutdown() because the guest
> halts itself?

Yes, cooperative shutdown (e.g. "shutdown" command from guest or acpi signal) is
cleaner when we want to make sure changes are flushed to disk.

> 
> Why is self._load_io_log() not called?

Will add it.

Fam

^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [Qemu-devel] [PATCH RFC 4/9] tests: Add vm test lib
  2017-08-16  8:55   ` Stefan Hajnoczi
  2017-08-16 11:49     ` Eric Blake
@ 2017-08-16 21:03     ` Fam Zheng
  1 sibling, 0 replies; 34+ messages in thread
From: Fam Zheng @ 2017-08-16 21:03 UTC (permalink / raw)
  To: Stefan Hajnoczi
  Cc: qemu-devel, Peter Maydell, Philippe Mathieu-Daudé,
	Kamil Rytarowski, stefanha, pbonzini, Alex Bennée

On Wed, 08/16 09:55, Stefan Hajnoczi wrote:
> On Wed, Aug 16, 2017 at 03:20:59PM +0800, Fam Zheng wrote:
> > +class BaseVM(object):
> > +    GUEST_USER = "qemu"
> > +    GUEST_PASS = "qemupass"
> > +    ROOT_PASS = "qemupass"
> > +
> > +    # The script to run in the guest that builds QEMU
> > +    BUILD_SCRIPT = ""
> > +    # The guest name, to be overridden by subclasses
> > +    name = "#base"
> > +    def __init__(self, debug=False):
> > +        self._guest = None
> > +        self.ssh_port = 20022
> 
> Only one instance of this test can be run per machine due to the
> hardcoded SSH port number on the host.
> 
> It is possible to use:
> 
>   -netdev user,id=vnet,hostfwd=:0.0.0.0:0-:22
> 
> and then query the port number:
> 
>   (qemu) info usernet
>   VLAN -1 (vnet):
>   Protocol[State]    FD  Source Address  Port   Dest. Address  Port RecvQ SendQ
>   TCP[HOST_FORWARD]  15               * 36089       10.0.2.15    22     0     0
> 
> The host port is 36089 in this example.
> 
> I'm not aware of a QMP equivalent for "info usernet".  It may be
> necessary to implement a query-usernet command if you don't want to use
> HMP.

Sounds good. Will try. Using HMP is good enough to start with, we can add
query-usernet on top.

> 
> > +        self._tmpdir = tempfile.mkdtemp(prefix="qemu-vm-")
> > +        atexit.register(shutil.rmtree, self._tmpdir)
> > +
> > +        self._ssh_key_file = os.path.join(self._tmpdir, "id_rsa")
> > +        open(self._ssh_key_file, "w").write(SSH_KEY)
> > +        subprocess.check_call(["chmod", "600", self._ssh_key_file])
> > +
> > +        self._ssh_pub_key_file = os.path.join(self._tmpdir, "id_rsa.pub")
> > +        open(self._ssh_pub_key_file, "w").write(SSH_PUB_KEY)
> > +
> > +        self.debug = debug
> > +        self._stderr = sys.stderr
> > +        self._devnull = open("/dev/null", "w")
> > +        if self.debug:
> > +            self._stdout = sys.stdout
> > +        else:
> > +            self._stdout = self._devnull
> > +        self._args = [ \
> > +            "-nodefaults", "-enable-kvm", "-m", "2G",
> > +            "-smp", os.environ.get("J", "4"), "-cpu", "host",
> 
> Can this be a command-line option in main() and a constructor argument
> instead of an environment variable?  That would be cleaner because the
> use of "J" might be surprising to someone who happens to have it set in
> their environment.

Yes, "J" should be handled in the Makefile.

> 
> > +            "-netdev", "user,id=vnet,hostfwd=:0.0.0.0:%d-:22" % self.ssh_port,
> > +            "-device", "virtio-net-pci,netdev=vnet",
> > +            "-vnc", ":0,to=20",
> > +            "-serial", "file:%s" % os.path.join(self._tmpdir, "serial.out")]
> > +
> > +        self._data_args = []
> > +
> > +    def _download_with_cache(self, url):
> > +        cache_dir = os.path.expanduser("~/.cache/qemu-vm/download")
> > +        subprocess.check_call(["mkdir", "-p", cache_dir])
> 
> os.makedirs()

OK.

> 
> > +        fname = os.path.join(cache_dir, hashlib.sha1(url).hexdigest())
> > +        if os.path.exists(fname):
> > +            return fname
> > +        logging.debug("Downloading %s to %s...", url, fname)
> > +        subprocess.check_call(["wget", "-c", url, "-O", fname + ".download"],
> > +                              stdout=self._stdout, stderr=self._stderr)
> 
> It might be important to support image file updates without manually
> deleting ~/.cache.  You can probably make wget send an HTTP
> If-Modified-Since header or something similar.  There are 3 cases:
> 
> 1. Existing file is up-to-date.  No download after HEAD request.
> 2. Existing file is outdated, download the newest version.
> 3. Failure or timeout, use the old version for now.

Since the URLs are not https, maybe add sha256sum of images in the subclasses so
it is MITM-safe? It is also much simpler code, I think.

> 
> > +        subprocess.check_call(["mv", fname + ".download", fname],
> > +                              stdout=self._stdout, stderr=self._stderr)
> 
> os.rename()

OK.

Fam

^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [Qemu-devel] [PATCH RFC 8/9] tests: Add OpenBSD image
  2017-08-16  7:21 ` [Qemu-devel] [PATCH RFC 8/9] tests: Add OpenBSD image Fam Zheng
@ 2019-01-24 15:52   ` Philippe Mathieu-Daudé
  2019-01-24 15:56     ` Kamil Rytarowski
  2019-01-24 16:27     ` Peter Maydell
  0 siblings, 2 replies; 34+ messages in thread
From: Philippe Mathieu-Daudé @ 2019-01-24 15:52 UTC (permalink / raw)
  To: Fam Zheng, qemu-devel, Alex Bennée, Brad Smith, Peter Maydell
  Cc: berrange, stefanha, pbonzini, Kamil Rytarowski

On 8/16/17 9:21 AM, Fam Zheng wrote:
> The image is prepared following instructions as in:
> 
> https://wiki.qemu.org/Hosts/BSD
> 
> Signed-off-by: Fam Zheng <famz@redhat.com>
> ---
>  tests/vm/openbsd | 45 +++++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 45 insertions(+)
>  create mode 100755 tests/vm/openbsd
> 
> diff --git a/tests/vm/openbsd b/tests/vm/openbsd
> new file mode 100755
> index 0000000000..d37ff83a59
> --- /dev/null
> +++ b/tests/vm/openbsd
> @@ -0,0 +1,45 @@
> +#!/usr/bin/env python
> +#
> +# OpenBSD VM image
> +#
> +# Copyright (C) 2017 Red Hat Inc.
> +#
> +# Authors:
> +#  Fam Zheng <famz@redhat.com>
> +#
> +# This work is licensed under the terms of the GNU GPL, version 2.  See
> +# the COPYING file in the top-level directory.
> +#
> +
> +import os
> +import sys
> +import logging
> +import subprocess
> +import tempfile
> +import time
> +import basevm
> +
> +class OpenBSDVM(basevm.BaseVM):
> +    name = "openbsd"
> +    BUILD_SCRIPT = """
> +        set -e;
> +        cd $(mktemp -d /var/tmp/qemu-test.XXXXXX);
> +        tar -xf /dev/rsd1c;
> +        ./configure --cc=x86_64-unknown-openbsd6.1-gcc-4.9.4 --python=python2.7 {configure_opts};
> +        gmake -j{jobs};
> +        # XXX: "gmake check" seems to always hang or fail
> +        #gmake check;

OK, Now it makes more sense...

After spending various hours trying to fix various issues on OpenBSD, I
notice that we never ran tests on this OS.
The only binary I can run is qemu-img, the rest seems useless.
I'll summarize in a different thread.

> +    """
> +
> +    def build_image(self, img, rebuild=False):
> +        if os.path.exists(img) and not rebuild:
> +            return
> +        cimg = self._download_with_cache("http://download.patchew.org/openbsd.img.xz")
> +        img_tmp_xz = img + ".tmp.xz"
> +        img_tmp = img + ".tmp"
> +        subprocess.check_call(["cp", "-f", cimg, img_tmp_xz])
> +        subprocess.check_call(["xz", "-df", img_tmp_xz])
> +        subprocess.check_call(["mv", img_tmp, img])
> +
> +if __name__ == "__main__":
> +    sys.exit(basevm.main(OpenBSDVM))
> 

^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [Qemu-devel] [PATCH RFC 8/9] tests: Add OpenBSD image
  2019-01-24 15:52   ` Philippe Mathieu-Daudé
@ 2019-01-24 15:56     ` Kamil Rytarowski
  2019-01-24 16:10       ` Philippe Mathieu-Daudé
  2019-01-24 16:27     ` Peter Maydell
  1 sibling, 1 reply; 34+ messages in thread
From: Kamil Rytarowski @ 2019-01-24 15:56 UTC (permalink / raw)
  To: Philippe Mathieu-Daudé,
	Fam Zheng, qemu-devel, Alex Bennée, Brad Smith,
	Peter Maydell
  Cc: pbonzini, Kamil Rytarowski, stefanha

[-- Attachment #1: Type: text/plain, Size: 2349 bytes --]

On 24.01.2019 16:52, Philippe Mathieu-Daudé wrote:
> On 8/16/17 9:21 AM, Fam Zheng wrote:
>> The image is prepared following instructions as in:
>>
>> https://wiki.qemu.org/Hosts/BSD
>>
>> Signed-off-by: Fam Zheng <famz@redhat.com>
>> ---
>>  tests/vm/openbsd | 45 +++++++++++++++++++++++++++++++++++++++++++++
>>  1 file changed, 45 insertions(+)
>>  create mode 100755 tests/vm/openbsd
>>
>> diff --git a/tests/vm/openbsd b/tests/vm/openbsd
>> new file mode 100755
>> index 0000000000..d37ff83a59
>> --- /dev/null
>> +++ b/tests/vm/openbsd
>> @@ -0,0 +1,45 @@
>> +#!/usr/bin/env python
>> +#
>> +# OpenBSD VM image
>> +#
>> +# Copyright (C) 2017 Red Hat Inc.
>> +#
>> +# Authors:
>> +#  Fam Zheng <famz@redhat.com>
>> +#
>> +# This work is licensed under the terms of the GNU GPL, version 2.  See
>> +# the COPYING file in the top-level directory.
>> +#
>> +
>> +import os
>> +import sys
>> +import logging
>> +import subprocess
>> +import tempfile
>> +import time
>> +import basevm
>> +
>> +class OpenBSDVM(basevm.BaseVM):
>> +    name = "openbsd"
>> +    BUILD_SCRIPT = """
>> +        set -e;
>> +        cd $(mktemp -d /var/tmp/qemu-test.XXXXXX);
>> +        tar -xf /dev/rsd1c;
>> +        ./configure --cc=x86_64-unknown-openbsd6.1-gcc-4.9.4 --python=python2.7 {configure_opts};
>> +        gmake -j{jobs};
>> +        # XXX: "gmake check" seems to always hang or fail
>> +        #gmake check;
> 
> OK, Now it makes more sense...
> 
> After spending various hours trying to fix various issues on OpenBSD, I
> notice that we never ran tests on this OS.
> The only binary I can run is qemu-img, the rest seems useless.
> I'll summarize in a different thread.
> 

Is this W^X related?

>> +    """
>> +
>> +    def build_image(self, img, rebuild=False):
>> +        if os.path.exists(img) and not rebuild:
>> +            return
>> +        cimg = self._download_with_cache("http://download.patchew.org/openbsd.img.xz")
>> +        img_tmp_xz = img + ".tmp.xz"
>> +        img_tmp = img + ".tmp"
>> +        subprocess.check_call(["cp", "-f", cimg, img_tmp_xz])
>> +        subprocess.check_call(["xz", "-df", img_tmp_xz])
>> +        subprocess.check_call(["mv", img_tmp, img])
>> +
>> +if __name__ == "__main__":
>> +    sys.exit(basevm.main(OpenBSDVM))
>>
> 



[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 850 bytes --]

^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [Qemu-devel] [PATCH RFC 8/9] tests: Add OpenBSD image
  2019-01-24 15:56     ` Kamil Rytarowski
@ 2019-01-24 16:10       ` Philippe Mathieu-Daudé
  2019-01-24 16:52         ` Daniel P. Berrangé
  0 siblings, 1 reply; 34+ messages in thread
From: Philippe Mathieu-Daudé @ 2019-01-24 16:10 UTC (permalink / raw)
  To: Kamil Rytarowski, Fam Zheng, qemu-devel, Alex Bennée,
	Brad Smith, Peter Maydell
  Cc: pbonzini, Kamil Rytarowski, stefanha

[-- Attachment #1: Type: text/plain, Size: 4747 bytes --]

On 1/24/19 4:56 PM, Kamil Rytarowski wrote:
> On 24.01.2019 16:52, Philippe Mathieu-Daudé wrote:
>> On 8/16/17 9:21 AM, Fam Zheng wrote:
>>> The image is prepared following instructions as in:
>>>
>>> https://wiki.qemu.org/Hosts/BSD
>>>
>>> Signed-off-by: Fam Zheng <famz@redhat.com>
>>> ---
>>>  tests/vm/openbsd | 45 +++++++++++++++++++++++++++++++++++++++++++++
>>>  1 file changed, 45 insertions(+)
>>>  create mode 100755 tests/vm/openbsd
>>>
>>> diff --git a/tests/vm/openbsd b/tests/vm/openbsd
>>> new file mode 100755
>>> index 0000000000..d37ff83a59
>>> --- /dev/null
>>> +++ b/tests/vm/openbsd
>>> @@ -0,0 +1,45 @@
>>> +#!/usr/bin/env python
>>> +#
>>> +# OpenBSD VM image
>>> +#
>>> +# Copyright (C) 2017 Red Hat Inc.
>>> +#
>>> +# Authors:
>>> +#  Fam Zheng <famz@redhat.com>
>>> +#
>>> +# This work is licensed under the terms of the GNU GPL, version 2.  See
>>> +# the COPYING file in the top-level directory.
>>> +#
>>> +
>>> +import os
>>> +import sys
>>> +import logging
>>> +import subprocess
>>> +import tempfile
>>> +import time
>>> +import basevm
>>> +
>>> +class OpenBSDVM(basevm.BaseVM):
>>> +    name = "openbsd"
>>> +    BUILD_SCRIPT = """
>>> +        set -e;
>>> +        cd $(mktemp -d /var/tmp/qemu-test.XXXXXX);
>>> +        tar -xf /dev/rsd1c;
>>> +        ./configure --cc=x86_64-unknown-openbsd6.1-gcc-4.9.4 --python=python2.7 {configure_opts};
>>> +        gmake -j{jobs};
>>> +        # XXX: "gmake check" seems to always hang or fail
>>> +        #gmake check;
>>
>> OK, Now it makes more sense...
>>
>> After spending various hours trying to fix various issues on OpenBSD, I
>> notice that we never ran tests on this OS.
>> The only binary I can run is qemu-img, the rest seems useless.
>> I'll summarize in a different thread.
>>
> 
> Is this W^X related?

Part of it could be but I'm not sure.

The 6.1 VM provided by Fam has /usr/local mounted with wxallowed, I
tried building/running there and nothing changed, mmap() still returns
ENOTSUP:

(gdb) bt
#0  0x000017e3c156c50a in _thread_sys___syscall () at {standard input}:5
#1  0x000017e3c15e5d7a in *_libc_mmap (addr=Variable "addr" is not
available.
) at /usr/local/lib/libc/sys/mmap.c:47
#2  0x000017e17d9abc8b in alloc_code_gen_buffer () at
/usr/local/qemu/accel/tcg/translate-all.c:1064
#3  0x000017e17d9abd04 in code_gen_alloc (tb_size=0) at
/usr/local/qemu/accel/tcg/translate-all.c:1112
#4  0x000017e17d9abe81 in tcg_exec_init (tb_size=0) at
/usr/local/qemu/accel/tcg/translate-all.c:1149
#5  0x000017e17d9897e9 in tcg_init (ms=0x17e45e456800) at
/usr/local/qemu/accel/tcg/tcg-all.c:66
#6  0x000017e17d9891b8 in accel_init_machine (acc=0x17e3c3f50800,
ms=0x17e45e456800) at /usr/local/qemu/accel/accel.c:63
#7  0x000017e17d989312 in configure_accelerator (ms=0x17e45e456800,
progname=0x7f7fffff07b0 "lm32-softmmu/qemu-system-lm32") at
/usr/local/qemu/accel/accel.c:111
#8  0x000017e17d9d8616 in main (argc=1, argv=0x7f7fffff06b8,
envp=0x7f7fffff06c8) at vl.c:4325

Since the current script build into /var/tmp (which is symlinked to
/tmp) I also mounted /tmp wxallowed using the following patch:

-- >8 --
--- a/tests/vm/openbsd
+++ b/tests/vm/openbsd
@@ -39,6 +39,12 @@ class OpenBSDVM(basevm.BaseVM):
         if os.path.exists(img):
             os.rename(img_tmp, img)
+        self.boot(img)
+        self.wait_ssh()
+        self.ssh_root_check("sed -E -i 's_(/tmp\ ffs)\ ([^\ ]*)_\\1
\\2,wxallowed_' /etc/fstab")
+        self.ssh_root_check("cat /etc/fstab")
+        self.ssh_root("halt -p")
+        self.wait()
---

$ mount
/dev/sd0a on / type ffs (local)
/dev/sd0k on /home type ffs (local, nodev, nosuid)
/dev/sd0d on /tmp type ffs (local, nodev, nosuid, wxallowed)
/dev/sd0f on /usr type ffs (local, nodev)
/dev/sd0g on /usr/X11R6 type ffs (local, nodev)
/dev/sd0h on /usr/local type ffs (local, nodev, wxallowed)
/dev/sd0j on /usr/obj type ffs (local, nodev, nosuid)
/dev/sd0i on /usr/src type ffs (local, nodev, nosuid)
/dev/sd0e on /var type ffs (local, nodev, nosuid)

Still no progress.

> 
>>> +    """
>>> +
>>> +    def build_image(self, img, rebuild=False):
>>> +        if os.path.exists(img) and not rebuild:
>>> +            return
>>> +        cimg = self._download_with_cache("http://download.patchew.org/openbsd.img.xz")
>>> +        img_tmp_xz = img + ".tmp.xz"
>>> +        img_tmp = img + ".tmp"
>>> +        subprocess.check_call(["cp", "-f", cimg, img_tmp_xz])
>>> +        subprocess.check_call(["xz", "-df", img_tmp_xz])
>>> +        subprocess.check_call(["mv", img_tmp, img])
>>> +
>>> +if __name__ == "__main__":
>>> +    sys.exit(basevm.main(OpenBSDVM))
>>>
>>
> 
> 


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [Qemu-devel] [PATCH RFC 8/9] tests: Add OpenBSD image
  2019-01-24 15:52   ` Philippe Mathieu-Daudé
  2019-01-24 15:56     ` Kamil Rytarowski
@ 2019-01-24 16:27     ` Peter Maydell
  1 sibling, 0 replies; 34+ messages in thread
From: Peter Maydell @ 2019-01-24 16:27 UTC (permalink / raw)
  To: Philippe Mathieu-Daudé
  Cc: Fam Zheng, QEMU Developers, Alex Bennée, Brad Smith,
	Daniel P. Berrange, Stefan Hajnoczi, Paolo Bonzini,
	Kamil Rytarowski

On Thu, 24 Jan 2019 at 15:52, Philippe Mathieu-Daudé <philmd@redhat.com> wrote:
> After spending various hours trying to fix various issues on OpenBSD, I
> notice that we never ran tests on this OS.

When I was running tests on a custom OpenBSD VM rather than
using the tests/vm one I'm pretty sure I used to run "make check"
on it, so I was a bit surprised to see that tests weren't run
for the tests/vm setup, but I never cared enough to try to
find out why...

thanks
-- PMM

^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [Qemu-devel] [PATCH RFC 8/9] tests: Add OpenBSD image
  2019-01-24 16:10       ` Philippe Mathieu-Daudé
@ 2019-01-24 16:52         ` Daniel P. Berrangé
  2019-01-25  0:48           ` Brad Smith
  0 siblings, 1 reply; 34+ messages in thread
From: Daniel P. Berrangé @ 2019-01-24 16:52 UTC (permalink / raw)
  To: Philippe Mathieu-Daudé
  Cc: Kamil Rytarowski, Fam Zheng, qemu-devel, Alex Bennée,
	Brad Smith, Peter Maydell, pbonzini, Kamil Rytarowski, stefanha

On Thu, Jan 24, 2019 at 05:10:19PM +0100, Philippe Mathieu-Daudé wrote:
> On 1/24/19 4:56 PM, Kamil Rytarowski wrote:
> > On 24.01.2019 16:52, Philippe Mathieu-Daudé wrote:
> >> On 8/16/17 9:21 AM, Fam Zheng wrote:
> >>> The image is prepared following instructions as in:
> >>>
> >>> https://wiki.qemu.org/Hosts/BSD
> >>>
> >>> Signed-off-by: Fam Zheng <famz@redhat.com>
> >>> ---
> >>>  tests/vm/openbsd | 45 +++++++++++++++++++++++++++++++++++++++++++++
> >>>  1 file changed, 45 insertions(+)
> >>>  create mode 100755 tests/vm/openbsd
> >>>
> >>> diff --git a/tests/vm/openbsd b/tests/vm/openbsd
> >>> new file mode 100755
> >>> index 0000000000..d37ff83a59
> >>> --- /dev/null
> >>> +++ b/tests/vm/openbsd
> >>> @@ -0,0 +1,45 @@
> >>> +#!/usr/bin/env python
> >>> +#
> >>> +# OpenBSD VM image
> >>> +#
> >>> +# Copyright (C) 2017 Red Hat Inc.
> >>> +#
> >>> +# Authors:
> >>> +#  Fam Zheng <famz@redhat.com>
> >>> +#
> >>> +# This work is licensed under the terms of the GNU GPL, version 2.  See
> >>> +# the COPYING file in the top-level directory.
> >>> +#
> >>> +
> >>> +import os
> >>> +import sys
> >>> +import logging
> >>> +import subprocess
> >>> +import tempfile
> >>> +import time
> >>> +import basevm
> >>> +
> >>> +class OpenBSDVM(basevm.BaseVM):
> >>> +    name = "openbsd"
> >>> +    BUILD_SCRIPT = """
> >>> +        set -e;
> >>> +        cd $(mktemp -d /var/tmp/qemu-test.XXXXXX);
> >>> +        tar -xf /dev/rsd1c;
> >>> +        ./configure --cc=x86_64-unknown-openbsd6.1-gcc-4.9.4 --python=python2.7 {configure_opts};
> >>> +        gmake -j{jobs};
> >>> +        # XXX: "gmake check" seems to always hang or fail
> >>> +        #gmake check;
> >>
> >> OK, Now it makes more sense...
> >>
> >> After spending various hours trying to fix various issues on OpenBSD, I
> >> notice that we never ran tests on this OS.
> >> The only binary I can run is qemu-img, the rest seems useless.
> >> I'll summarize in a different thread.
> >>
> > 
> > Is this W^X related?
> 
> Part of it could be but I'm not sure.
> 
> The 6.1 VM provided by Fam has /usr/local mounted with wxallowed, I
> tried building/running there and nothing changed, mmap() still returns
> ENOTSUP:

ENOTSUP from mmap is certainly what you'd expect from the W^X  scenario

  https://undeadly.org/cgi?action=article&sid=20160527203200

 "W^X violations are no longer permitted by default.  A kernel log message
  is generated, and mprotect/mmap return ENOTSUP.  If the sysctl(8) flag
  kern.wxabort is set then a SIGABRT occurs instead, for gdb use or coredump
  creation."


> Since the current script build into /var/tmp (which is symlinked to
> /tmp) I also mounted /tmp wxallowed using the following patch:
> 
> -- >8 --
> --- a/tests/vm/openbsd
> +++ b/tests/vm/openbsd
> @@ -39,6 +39,12 @@ class OpenBSDVM(basevm.BaseVM):
>          if os.path.exists(img):
>              os.rename(img_tmp, img)
> +        self.boot(img)
> +        self.wait_ssh()
> +        self.ssh_root_check("sed -E -i 's_(/tmp\ ffs)\ ([^\ ]*)_\\1
> \\2,wxallowed_' /etc/fstab")
> +        self.ssh_root_check("cat /etc/fstab")
> +        self.ssh_root("halt -p")
> +        self.wait()
> ---
> 
> $ mount
> /dev/sd0a on / type ffs (local)
> /dev/sd0k on /home type ffs (local, nodev, nosuid)
> /dev/sd0d on /tmp type ffs (local, nodev, nosuid, wxallowed)
> /dev/sd0f on /usr type ffs (local, nodev)
> /dev/sd0g on /usr/X11R6 type ffs (local, nodev)
> /dev/sd0h on /usr/local type ffs (local, nodev, wxallowed)
> /dev/sd0j on /usr/obj type ffs (local, nodev, nosuid)
> /dev/sd0i on /usr/src type ffs (local, nodev, nosuid)
> /dev/sd0e on /var type ffs (local, nodev, nosuid)
> 
> Still no progress.

Regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|

^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [Qemu-devel] [PATCH RFC 8/9] tests: Add OpenBSD image
  2019-01-24 16:52         ` Daniel P. Berrangé
@ 2019-01-25  0:48           ` Brad Smith
  2019-01-25  6:24             ` Thomas Huth
  2019-01-25 18:15             ` Philippe Mathieu-Daudé
  0 siblings, 2 replies; 34+ messages in thread
From: Brad Smith @ 2019-01-25  0:48 UTC (permalink / raw)
  To: Daniel P. Berrangé, Philippe Mathieu-Daudé
  Cc: Kamil Rytarowski, Fam Zheng, qemu-devel, Alex Bennée,
	Peter Maydell, pbonzini, Kamil Rytarowski, stefanha

On 1/24/2019 11:52 AM, Daniel P. Berrangé wrote:

> On Thu, Jan 24, 2019 at 05:10:19PM +0100, Philippe Mathieu-Daudé wrote:
>> On 1/24/19 4:56 PM, Kamil Rytarowski wrote:
>>> On 24.01.2019 16:52, Philippe Mathieu-Daudé wrote:
>>>> On 8/16/17 9:21 AM, Fam Zheng wrote:
>>>>> The image is prepared following instructions as in:
>>>>>
>>>>> https://wiki.qemu.org/Hosts/BSD
>>>>>
>>>>> Signed-off-by: Fam Zheng <famz@redhat.com>
>>>>> ---
>>>>>   tests/vm/openbsd | 45 +++++++++++++++++++++++++++++++++++++++++++++
>>>>>   1 file changed, 45 insertions(+)
>>>>>   create mode 100755 tests/vm/openbsd
>>>>>
>>>>> diff --git a/tests/vm/openbsd b/tests/vm/openbsd
>>>>> new file mode 100755
>>>>> index 0000000000..d37ff83a59
>>>>> --- /dev/null
>>>>> +++ b/tests/vm/openbsd
>>>>> @@ -0,0 +1,45 @@
>>>>> +#!/usr/bin/env python
>>>>> +#
>>>>> +# OpenBSD VM image
>>>>> +#
>>>>> +# Copyright (C) 2017 Red Hat Inc.
>>>>> +#
>>>>> +# Authors:
>>>>> +#  Fam Zheng <famz@redhat.com>
>>>>> +#
>>>>> +# This work is licensed under the terms of the GNU GPL, version 2.  See
>>>>> +# the COPYING file in the top-level directory.
>>>>> +#
>>>>> +
>>>>> +import os
>>>>> +import sys
>>>>> +import logging
>>>>> +import subprocess
>>>>> +import tempfile
>>>>> +import time
>>>>> +import basevm
>>>>> +
>>>>> +class OpenBSDVM(basevm.BaseVM):
>>>>> +    name = "openbsd"
>>>>> +    BUILD_SCRIPT = """
>>>>> +        set -e;
>>>>> +        cd $(mktemp -d /var/tmp/qemu-test.XXXXXX);
>>>>> +        tar -xf /dev/rsd1c;
>>>>> +        ./configure --cc=x86_64-unknown-openbsd6.1-gcc-4.9.4 --python=python2.7 {configure_opts};
>>>>> +        gmake -j{jobs};
>>>>> +        # XXX: "gmake check" seems to always hang or fail
>>>>> +        #gmake check;
>>>> OK, Now it makes more sense...
>>>>
>>>> After spending various hours trying to fix various issues on OpenBSD, I
>>>> notice that we never ran tests on this OS.
>>>> The only binary I can run is qemu-img, the rest seems useless.
>>>> I'll summarize in a different thread.
>>>>
>>> Is this W^X related?
>> Part of it could be but I'm not sure.
>>
>> The 6.1 VM provided by Fam has /usr/local mounted with wxallowed, I
>> tried building/running there and nothing changed, mmap() still returns
>> ENOTSUP:
> ENOTSUP from mmap is certainly what you'd expect from the W^X  scenario
>
>    https://undeadly.org/cgi?action=article&sid=20160527203200
>
>   "W^X violations are no longer permitted by default.  A kernel log message
>    is generated, and mprotect/mmap return ENOTSUP.  If the sysctl(8) flag
>    kern.wxabort is set then a SIGABRT occurs instead, for gdb use or coredump
>    creation."

Yes, this policy change was introduced with 6.0.

Our ports tree has an option which results in the QEMU binaries being 
linked with "-z wxneeded".

^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [Qemu-devel] [PATCH RFC 8/9] tests: Add OpenBSD image
  2019-01-25  0:48           ` Brad Smith
@ 2019-01-25  6:24             ` Thomas Huth
  2019-01-25 18:27               ` Brad Smith
  2019-01-25 18:15             ` Philippe Mathieu-Daudé
  1 sibling, 1 reply; 34+ messages in thread
From: Thomas Huth @ 2019-01-25  6:24 UTC (permalink / raw)
  To: Brad Smith, Daniel P. Berrangé, Philippe Mathieu-Daudé
  Cc: Fam Zheng, Peter Maydell, qemu-devel, Kamil Rytarowski, stefanha,
	pbonzini, Kamil Rytarowski, Alex Bennée

On 2019-01-25 01:48, Brad Smith wrote:
> On 1/24/2019 11:52 AM, Daniel P. Berrangé wrote:
> 
>> On Thu, Jan 24, 2019 at 05:10:19PM +0100, Philippe Mathieu-Daudé wrote:
>>> On 1/24/19 4:56 PM, Kamil Rytarowski wrote:
>>>> On 24.01.2019 16:52, Philippe Mathieu-Daudé wrote:
>>>>> On 8/16/17 9:21 AM, Fam Zheng wrote:
>>>>>> The image is prepared following instructions as in:
>>>>>>
>>>>>> https://wiki.qemu.org/Hosts/BSD
>>>>>>
>>>>>> Signed-off-by: Fam Zheng <famz@redhat.com>
>>>>>> ---
>>>>>>   tests/vm/openbsd | 45 +++++++++++++++++++++++++++++++++++++++++++++
>>>>>>   1 file changed, 45 insertions(+)
>>>>>>   create mode 100755 tests/vm/openbsd
>>>>>>
>>>>>> diff --git a/tests/vm/openbsd b/tests/vm/openbsd
>>>>>> new file mode 100755
>>>>>> index 0000000000..d37ff83a59
>>>>>> --- /dev/null
>>>>>> +++ b/tests/vm/openbsd
>>>>>> @@ -0,0 +1,45 @@
>>>>>> +#!/usr/bin/env python
>>>>>> +#
>>>>>> +# OpenBSD VM image
>>>>>> +#
>>>>>> +# Copyright (C) 2017 Red Hat Inc.
>>>>>> +#
>>>>>> +# Authors:
>>>>>> +#  Fam Zheng <famz@redhat.com>
>>>>>> +#
>>>>>> +# This work is licensed under the terms of the GNU GPL, version
>>>>>> 2.  See
>>>>>> +# the COPYING file in the top-level directory.
>>>>>> +#
>>>>>> +
>>>>>> +import os
>>>>>> +import sys
>>>>>> +import logging
>>>>>> +import subprocess
>>>>>> +import tempfile
>>>>>> +import time
>>>>>> +import basevm
>>>>>> +
>>>>>> +class OpenBSDVM(basevm.BaseVM):
>>>>>> +    name = "openbsd"
>>>>>> +    BUILD_SCRIPT = """
>>>>>> +        set -e;
>>>>>> +        cd $(mktemp -d /var/tmp/qemu-test.XXXXXX);
>>>>>> +        tar -xf /dev/rsd1c;
>>>>>> +        ./configure --cc=x86_64-unknown-openbsd6.1-gcc-4.9.4
>>>>>> --python=python2.7 {configure_opts};
>>>>>> +        gmake -j{jobs};
>>>>>> +        # XXX: "gmake check" seems to always hang or fail
>>>>>> +        #gmake check;
>>>>> OK, Now it makes more sense...
>>>>>
>>>>> After spending various hours trying to fix various issues on
>>>>> OpenBSD, I
>>>>> notice that we never ran tests on this OS.
>>>>> The only binary I can run is qemu-img, the rest seems useless.
>>>>> I'll summarize in a different thread.
>>>>>
>>>> Is this W^X related?
>>> Part of it could be but I'm not sure.
>>>
>>> The 6.1 VM provided by Fam has /usr/local mounted with wxallowed, I
>>> tried building/running there and nothing changed, mmap() still returns
>>> ENOTSUP:
>> ENOTSUP from mmap is certainly what you'd expect from the W^X  scenario
>>
>>    https://undeadly.org/cgi?action=article&sid=20160527203200
>>
>>   "W^X violations are no longer permitted by default.  A kernel log
>> message
>>    is generated, and mprotect/mmap return ENOTSUP.  If the sysctl(8) flag
>>    kern.wxabort is set then a SIGABRT occurs instead, for gdb use or
>> coredump
>>    creation."
> 
> Yes, this policy change was introduced with 6.0.
> 
> Our ports tree has an option which results in the QEMU binaries being
> linked with "-z wxneeded".

Then it's maybe high time to send such changes upstream now ;-)

 Thomas

^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [Qemu-devel] [PATCH RFC 8/9] tests: Add OpenBSD image
  2019-01-25  0:48           ` Brad Smith
  2019-01-25  6:24             ` Thomas Huth
@ 2019-01-25 18:15             ` Philippe Mathieu-Daudé
  1 sibling, 0 replies; 34+ messages in thread
From: Philippe Mathieu-Daudé @ 2019-01-25 18:15 UTC (permalink / raw)
  To: Brad Smith, Daniel P. Berrangé
  Cc: Kamil Rytarowski, Fam Zheng, qemu-devel, Alex Bennée,
	Peter Maydell, pbonzini, Kamil Rytarowski, stefanha

On 1/25/19 1:48 AM, Brad Smith wrote:
> On 1/24/2019 11:52 AM, Daniel P. Berrangé wrote:
> 
>> On Thu, Jan 24, 2019 at 05:10:19PM +0100, Philippe Mathieu-Daudé wrote:
>>> On 1/24/19 4:56 PM, Kamil Rytarowski wrote:
>>>> On 24.01.2019 16:52, Philippe Mathieu-Daudé wrote:
>>>>> On 8/16/17 9:21 AM, Fam Zheng wrote:
>>>>>> The image is prepared following instructions as in:
>>>>>>
>>>>>> https://wiki.qemu.org/Hosts/BSD
>>>>>>
>>>>>> Signed-off-by: Fam Zheng <famz@redhat.com>
>>>>>> ---
>>>>>>   tests/vm/openbsd | 45 +++++++++++++++++++++++++++++++++++++++++++++
>>>>>>   1 file changed, 45 insertions(+)
>>>>>>   create mode 100755 tests/vm/openbsd
>>>>>>
>>>>>> diff --git a/tests/vm/openbsd b/tests/vm/openbsd
>>>>>> new file mode 100755
>>>>>> index 0000000000..d37ff83a59
>>>>>> --- /dev/null
>>>>>> +++ b/tests/vm/openbsd
>>>>>> @@ -0,0 +1,45 @@
>>>>>> +#!/usr/bin/env python
>>>>>> +#
>>>>>> +# OpenBSD VM image
>>>>>> +#
>>>>>> +# Copyright (C) 2017 Red Hat Inc.
>>>>>> +#
>>>>>> +# Authors:
>>>>>> +#  Fam Zheng <famz@redhat.com>
>>>>>> +#
>>>>>> +# This work is licensed under the terms of the GNU GPL, version
>>>>>> 2.  See
>>>>>> +# the COPYING file in the top-level directory.
>>>>>> +#
>>>>>> +
>>>>>> +import os
>>>>>> +import sys
>>>>>> +import logging
>>>>>> +import subprocess
>>>>>> +import tempfile
>>>>>> +import time
>>>>>> +import basevm
>>>>>> +
>>>>>> +class OpenBSDVM(basevm.BaseVM):
>>>>>> +    name = "openbsd"
>>>>>> +    BUILD_SCRIPT = """
>>>>>> +        set -e;
>>>>>> +        cd $(mktemp -d /var/tmp/qemu-test.XXXXXX);
>>>>>> +        tar -xf /dev/rsd1c;
>>>>>> +        ./configure --cc=x86_64-unknown-openbsd6.1-gcc-4.9.4
>>>>>> --python=python2.7 {configure_opts};
>>>>>> +        gmake -j{jobs};
>>>>>> +        # XXX: "gmake check" seems to always hang or fail
>>>>>> +        #gmake check;
>>>>> OK, Now it makes more sense...
>>>>>
>>>>> After spending various hours trying to fix various issues on
>>>>> OpenBSD, I
>>>>> notice that we never ran tests on this OS.
>>>>> The only binary I can run is qemu-img, the rest seems useless.
>>>>> I'll summarize in a different thread.
>>>>>
>>>> Is this W^X related?
>>> Part of it could be but I'm not sure.
>>>
>>> The 6.1 VM provided by Fam has /usr/local mounted with wxallowed, I
>>> tried building/running there and nothing changed, mmap() still returns
>>> ENOTSUP:
>> ENOTSUP from mmap is certainly what you'd expect from the W^X  scenario
>>
>>    https://undeadly.org/cgi?action=article&sid=20160527203200
>>
>>   "W^X violations are no longer permitted by default.  A kernel log
>> message
>>    is generated, and mprotect/mmap return ENOTSUP.  If the sysctl(8) flag
>>    kern.wxabort is set then a SIGABRT occurs instead, for gdb use or
>> coredump
>>    creation."
> 
> Yes, this policy change was introduced with 6.0.
> 
> Our ports tree has an option which results in the QEMU binaries being
> linked with "-z wxneeded".

I was preparing a draft about deprecating/removing OpenBSD support
because it is broken/untested... For sure it is untested.
/me feeling he lost 2 days...

^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [Qemu-devel] [PATCH RFC 8/9] tests: Add OpenBSD image
  2019-01-25  6:24             ` Thomas Huth
@ 2019-01-25 18:27               ` Brad Smith
  2019-01-25 18:38                 ` Peter Maydell
  0 siblings, 1 reply; 34+ messages in thread
From: Brad Smith @ 2019-01-25 18:27 UTC (permalink / raw)
  To: Thomas Huth, Daniel P. Berrangé, Philippe Mathieu-Daudé
  Cc: Fam Zheng, Peter Maydell, qemu-devel, Kamil Rytarowski, stefanha,
	pbonzini, Kamil Rytarowski, Alex Bennée

On 1/25/2019 1:24 AM, Thomas Huth wrote:

> On 2019-01-25 01:48, Brad Smith wrote:
>> On 1/24/2019 11:52 AM, Daniel P. Berrangé wrote:
>>
>>> On Thu, Jan 24, 2019 at 05:10:19PM +0100, Philippe Mathieu-Daudé wrote:
>>>> On 1/24/19 4:56 PM, Kamil Rytarowski wrote:
>>>>> On 24.01.2019 16:52, Philippe Mathieu-Daudé wrote:
>>>>>> On 8/16/17 9:21 AM, Fam Zheng wrote:
>>>>>>> The image is prepared following instructions as in:
>>>>>>>
>>>>>>> https://wiki.qemu.org/Hosts/BSD
>>>>>>>
>>>>>>> Signed-off-by: Fam Zheng <famz@redhat.com>
>>>>>>> ---
>>>>>>>    tests/vm/openbsd | 45 +++++++++++++++++++++++++++++++++++++++++++++
>>>>>>>    1 file changed, 45 insertions(+)
>>>>>>>    create mode 100755 tests/vm/openbsd
>>>>>>>
>>>>>>> diff --git a/tests/vm/openbsd b/tests/vm/openbsd
>>>>>>> new file mode 100755
>>>>>>> index 0000000000..d37ff83a59
>>>>>>> --- /dev/null
>>>>>>> +++ b/tests/vm/openbsd
>>>>>>> @@ -0,0 +1,45 @@
>>>>>>> +#!/usr/bin/env python
>>>>>>> +#
>>>>>>> +# OpenBSD VM image
>>>>>>> +#
>>>>>>> +# Copyright (C) 2017 Red Hat Inc.
>>>>>>> +#
>>>>>>> +# Authors:
>>>>>>> +#  Fam Zheng <famz@redhat.com>
>>>>>>> +#
>>>>>>> +# This work is licensed under the terms of the GNU GPL, version
>>>>>>> 2.  See
>>>>>>> +# the COPYING file in the top-level directory.
>>>>>>> +#
>>>>>>> +
>>>>>>> +import os
>>>>>>> +import sys
>>>>>>> +import logging
>>>>>>> +import subprocess
>>>>>>> +import tempfile
>>>>>>> +import time
>>>>>>> +import basevm
>>>>>>> +
>>>>>>> +class OpenBSDVM(basevm.BaseVM):
>>>>>>> +    name = "openbsd"
>>>>>>> +    BUILD_SCRIPT = """
>>>>>>> +        set -e;
>>>>>>> +        cd $(mktemp -d /var/tmp/qemu-test.XXXXXX);
>>>>>>> +        tar -xf /dev/rsd1c;
>>>>>>> +        ./configure --cc=x86_64-unknown-openbsd6.1-gcc-4.9.4
>>>>>>> --python=python2.7 {configure_opts};
>>>>>>> +        gmake -j{jobs};
>>>>>>> +        # XXX: "gmake check" seems to always hang or fail
>>>>>>> +        #gmake check;
>>>>>> OK, Now it makes more sense...
>>>>>>
>>>>>> After spending various hours trying to fix various issues on
>>>>>> OpenBSD, I
>>>>>> notice that we never ran tests on this OS.
>>>>>> The only binary I can run is qemu-img, the rest seems useless.
>>>>>> I'll summarize in a different thread.
>>>>>>
>>>>> Is this W^X related?
>>>> Part of it could be but I'm not sure.
>>>>
>>>> The 6.1 VM provided by Fam has /usr/local mounted with wxallowed, I
>>>> tried building/running there and nothing changed, mmap() still returns
>>>> ENOTSUP:
>>> ENOTSUP from mmap is certainly what you'd expect from the W^X  scenario
>>>
>>>     https://undeadly.org/cgi?action=article&sid=20160527203200
>>>
>>>    "W^X violations are no longer permitted by default.  A kernel log
>>> message
>>>     is generated, and mprotect/mmap return ENOTSUP.  If the sysctl(8) flag
>>>     kern.wxabort is set then a SIGABRT occurs instead, for gdb use or
>>> coredump
>>>     creation."
>> Yes, this policy change was introduced with 6.0.
>>
>> Our ports tree has an option which results in the QEMU binaries being
>> linked with "-z wxneeded".
> Then it's maybe high time to send such changes upstream now ;-)


I have not considered submitting such a patch as it's just a workaround 
for an
issue within QEMU. Everything else that we had as local patches or local 
build
fiddling to build things properly has been integrated in some manner.

^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [Qemu-devel] [PATCH RFC 8/9] tests: Add OpenBSD image
  2019-01-25 18:27               ` Brad Smith
@ 2019-01-25 18:38                 ` Peter Maydell
  2019-01-25 23:04                   ` Philippe Mathieu-Daudé
  0 siblings, 1 reply; 34+ messages in thread
From: Peter Maydell @ 2019-01-25 18:38 UTC (permalink / raw)
  To: Brad Smith
  Cc: Thomas Huth, Daniel P. Berrangé, Philippe Mathieu-Daudé,
	Fam Zheng, QEMU Developers, Kamil Rytarowski, Stefan Hajnoczi,
	Paolo Bonzini, Kamil Rytarowski, Alex Bennée

On Fri, 25 Jan 2019 at 18:36, Brad Smith <brad@comstyle.com> wrote:
>
> On 1/25/2019 1:24 AM, Thomas Huth wrote:
>
> > On 2019-01-25 01:48, Brad Smith wrote:
> >> Our ports tree has an option which results in the QEMU binaries being
> >> linked with "-z wxneeded".
> > Then it's maybe high time to send such changes upstream now ;-)
>
>
> I have not considered submitting such a patch as it's just a workaround
> for an
> issue within QEMU. Everything else that we had as local patches or local
> build
> fiddling to build things properly has been integrated in some manner.

We'll happily take a patch that fixes the underlying issue properly
if you'd prefer...

thanks
-- PMM

^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [Qemu-devel] [PATCH RFC 8/9] tests: Add OpenBSD image
  2019-01-25 18:38                 ` Peter Maydell
@ 2019-01-25 23:04                   ` Philippe Mathieu-Daudé
  0 siblings, 0 replies; 34+ messages in thread
From: Philippe Mathieu-Daudé @ 2019-01-25 23:04 UTC (permalink / raw)
  To: Peter Maydell, Brad Smith
  Cc: Thomas Huth, Daniel P. Berrangé,
	Fam Zheng, QEMU Developers, Kamil Rytarowski, Stefan Hajnoczi,
	Paolo Bonzini, Kamil Rytarowski, Alex Bennée

On 1/25/19 7:38 PM, Peter Maydell wrote:
> On Fri, 25 Jan 2019 at 18:36, Brad Smith <brad@comstyle.com> wrote:
>>
>> On 1/25/2019 1:24 AM, Thomas Huth wrote:
>>
>>> On 2019-01-25 01:48, Brad Smith wrote:
>>>> Our ports tree has an option which results in the QEMU binaries being
>>>> linked with "-z wxneeded".
>>> Then it's maybe high time to send such changes upstream now ;-)
>>
>>
>> I have not considered submitting such a patch as it's just a workaround
>> for an
>> issue within QEMU. Everything else that we had as local patches or local
>> build
>> fiddling to build things properly has been integrated in some manner.
> 
> We'll happily take a patch that fixes the underlying issue properly
> if you'd prefer...

I sent "configure: Disable W^X on OpenBSD" to help upstream developers
to test their patches on OpenBSD here:
https://lists.gnu.org/archive/html/qemu-devel/2019-01/msg06674.html

Regards,

Phil.

^ permalink raw reply	[flat|nested] 34+ messages in thread

end of thread, other threads:[~2019-01-25 23:11 UTC | newest]

Thread overview: 34+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-08-16  7:20 [Qemu-devel] [PATCH RFC 0/9] tests: Add VM based build tests (for non-x86_64 and/or non-Linux) Fam Zheng
2017-08-16  7:20 ` [Qemu-devel] [PATCH RFC 1/9] gitignore: Ignore vm test images Fam Zheng
2017-08-16  7:20 ` [Qemu-devel] [PATCH RFC 2/9] qemu.py: Add variable vga type Fam Zheng
2017-08-16  9:18   ` Kamil Rytarowski
2017-08-16  7:20 ` [Qemu-devel] [PATCH RFC 3/9] qemu.py: Add "wait()" method Fam Zheng
2017-08-16  8:32   ` Stefan Hajnoczi
2017-08-16 20:50     ` Fam Zheng
2017-08-16  7:20 ` [Qemu-devel] [PATCH RFC 4/9] tests: Add vm test lib Fam Zheng
2017-08-16  8:55   ` Stefan Hajnoczi
2017-08-16 11:49     ` Eric Blake
2017-08-16 21:03     ` Fam Zheng
2017-08-16  7:21 ` [Qemu-devel] [PATCH RFC 5/9] tests: Add ubuntu.i386 image Fam Zheng
2017-08-16  7:21 ` [Qemu-devel] [PATCH RFC 6/9] tests: Add FreeBSD image Fam Zheng
2017-08-16  7:21 ` [Qemu-devel] [PATCH RFC 7/9] tests: Add NetBSD image Fam Zheng
2017-08-16  9:31   ` Kamil Rytarowski
2017-08-16 10:08     ` Fam Zheng
2017-08-16  7:21 ` [Qemu-devel] [PATCH RFC 8/9] tests: Add OpenBSD image Fam Zheng
2019-01-24 15:52   ` Philippe Mathieu-Daudé
2019-01-24 15:56     ` Kamil Rytarowski
2019-01-24 16:10       ` Philippe Mathieu-Daudé
2019-01-24 16:52         ` Daniel P. Berrangé
2019-01-25  0:48           ` Brad Smith
2019-01-25  6:24             ` Thomas Huth
2019-01-25 18:27               ` Brad Smith
2019-01-25 18:38                 ` Peter Maydell
2019-01-25 23:04                   ` Philippe Mathieu-Daudé
2019-01-25 18:15             ` Philippe Mathieu-Daudé
2019-01-24 16:27     ` Peter Maydell
2017-08-16  7:21 ` [Qemu-devel] [PATCH RFC 9/9] Makefile: Add rules to run vm tests Fam Zheng
2017-08-16  7:46 ` [Qemu-devel] [PATCH RFC 0/9] tests: Add VM based build tests (for non-x86_64 and/or non-Linux) no-reply
2017-08-16  8:56 ` Stefan Hajnoczi
2017-08-16  9:24 ` Kamil Rytarowski
2017-08-16 10:13   ` Fam Zheng
2017-08-16 10:10     ` Kamil Rytarowski

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.