From: "Philippe Mathieu-Daudé" <philmd@redhat.com>
To: Wainer dos Santos Moschetta <wainersm@redhat.com>, qemu-devel@nongnu.org
Cc: fam@euphon.net, alex.bennee@linaro.org
Subject: Re: [PATCH 1/1] tests/vm: Allow to set qemu-img path
Date: Tue, 3 Dec 2019 17:17:51 +0100 [thread overview]
Message-ID: <3bac18c1-b0db-d178-656f-6eb30e471fb0@redhat.com> (raw)
In-Reply-To: <20191114134246.12073-2-wainersm@redhat.com>
On 11/14/19 2:42 PM, Wainer dos Santos Moschetta wrote:
> By default VM build test use qemu-img from system's PATH to
> create the image disk. Due the lack of qemu-img on the system
> or the desire to simply use a version built with QEMU, it would
> be nice to allow one to set its path. So this patch makes that
> possible by reading the path to qemu-img from QEMU_IMG if set,
> otherwise it fallback to default behavior.
>
> Signed-off-by: Wainer dos Santos Moschetta <wainersm@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
> ---
> docs/devel/testing.rst | 6 ++++--
> tests/vm/Makefile.include | 1 +
> tests/vm/basevm.py | 5 +++++
> tests/vm/centos | 2 +-
> tests/vm/fedora | 4 +---
> tests/vm/freebsd | 3 +--
> tests/vm/netbsd | 3 +--
> tests/vm/openbsd | 3 +--
> tests/vm/ubuntu.i386 | 2 +-
> 9 files changed, 16 insertions(+), 13 deletions(-)
>
> diff --git a/docs/devel/testing.rst b/docs/devel/testing.rst
> index 8e981e062d..9be6cd4410 100644
> --- a/docs/devel/testing.rst
> +++ b/docs/devel/testing.rst
> @@ -418,13 +418,15 @@ access, so they SHOULD NOT be exposed to external interfaces if you are
> concerned about attackers taking control of the guest and potentially
> exploiting a QEMU security bug to compromise the host.
>
> -QEMU binary
> ------------
> +QEMU binaries
> +-------------
>
> By default, qemu-system-x86_64 is searched in $PATH to run the guest. If there
> isn't one, or if it is older than 2.10, the test won't work. In this case,
> provide the QEMU binary in env var: ``QEMU=/path/to/qemu-2.10+``.
>
> +Likewise the path to qemu-img can be set in QEMU_IMG environment variable.
> +
> Make jobs
> ---------
>
> diff --git a/tests/vm/Makefile.include b/tests/vm/Makefile.include
> index fea348e845..9e7c46a473 100644
> --- a/tests/vm/Makefile.include
> +++ b/tests/vm/Makefile.include
> @@ -34,6 +34,7 @@ vm-help vm-test:
> @echo " DEBUG=1 - Enable verbose output on host and interactive debugging"
> @echo " V=1 - Enable verbose ouput on host and guest commands"
> @echo " QEMU=/path/to/qemu - Change path to QEMU binary"
> + @echo " QEMU_IMG=/path/to/qemu-img - Change path to qemu-img tool"
>
> vm-build-all: $(addprefix vm-build-, $(IMAGES))
>
> diff --git a/tests/vm/basevm.py b/tests/vm/basevm.py
> index 91a9226026..d1efeb3646 100755
> --- a/tests/vm/basevm.py
> +++ b/tests/vm/basevm.py
> @@ -152,6 +152,11 @@ class BaseVM(object):
> def build_image(self, img):
> raise NotImplementedError
>
> + def exec_qemu_img(self, *args):
> + cmd = [os.environ.get("QEMU_IMG", "qemu-img")]
> + cmd.extend(list(args))
> + subprocess.check_call(cmd)
> +
> def add_source_dir(self, src_dir):
> name = "data-" + hashlib.sha1(src_dir.encode("utf-8")).hexdigest()[:5]
> tarfile = os.path.join(self._tmpdir, name + ".tar")
> diff --git a/tests/vm/centos b/tests/vm/centos
> index 53976f1c4c..eac07dacd6 100755
> --- a/tests/vm/centos
> +++ b/tests/vm/centos
> @@ -68,7 +68,7 @@ class CentosVM(basevm.BaseVM):
> sys.stderr.write("Extracting the image...\n")
> subprocess.check_call(["ln", "-f", cimg, img_tmp + ".xz"])
> subprocess.check_call(["xz", "--keep", "-dvf", img_tmp + ".xz"])
> - subprocess.check_call(["qemu-img", "resize", img_tmp, "50G"])
> + self.exec_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")
> diff --git a/tests/vm/fedora b/tests/vm/fedora
> index 7fec1479fb..8e270fc0f0 100755
> --- a/tests/vm/fedora
> +++ b/tests/vm/fedora
> @@ -74,9 +74,7 @@ class FedoraVM(basevm.BaseVM):
>
> self.print_step("Preparing iso and disk image")
> subprocess.check_call(["cp", "-f", cimg, iso])
> - subprocess.check_call(["qemu-img", "create", "-f", "qcow2",
> - img_tmp, self.size])
> -
> + self.exec_qemu_img("create", "-f", "qcow2", img_tmp, self.size)
> self.print_step("Booting installer")
> self.boot(img_tmp, extra_args = [
> "-bios", "pc-bios/bios-256k.bin",
> diff --git a/tests/vm/freebsd b/tests/vm/freebsd
> index 2a19461a90..1825cc5821 100755
> --- a/tests/vm/freebsd
> +++ b/tests/vm/freebsd
> @@ -82,8 +82,7 @@ class FreeBSDVM(basevm.BaseVM):
> self.print_step("Preparing iso and disk image")
> subprocess.check_call(["cp", "-f", cimg, iso_xz])
> subprocess.check_call(["xz", "-dvf", iso_xz])
> - subprocess.check_call(["qemu-img", "create", "-f", "qcow2",
> - img_tmp, self.size])
> + self.exec_qemu_img("create", "-f", "qcow2", img_tmp, self.size)
>
> self.print_step("Booting installer")
> self.boot(img_tmp, extra_args = [
> diff --git a/tests/vm/netbsd b/tests/vm/netbsd
> index 611e6cc5b5..ec6f3563b2 100755
> --- a/tests/vm/netbsd
> +++ b/tests/vm/netbsd
> @@ -77,8 +77,7 @@ class NetBSDVM(basevm.BaseVM):
>
> self.print_step("Preparing iso and disk image")
> subprocess.check_call(["ln", "-f", cimg, iso])
> - subprocess.check_call(["qemu-img", "create", "-f", "qcow2",
> - img_tmp, self.size])
> + self.exec_qemu_img("create", "-f", "qcow2", img_tmp, self.size)
>
> self.print_step("Booting installer")
> self.boot(img_tmp, extra_args = [
> diff --git a/tests/vm/openbsd b/tests/vm/openbsd
> index b92c39f89a..6df5162dbf 100755
> --- a/tests/vm/openbsd
> +++ b/tests/vm/openbsd
> @@ -73,8 +73,7 @@ class OpenBSDVM(basevm.BaseVM):
>
> self.print_step("Preparing iso and disk image")
> subprocess.check_call(["cp", "-f", cimg, iso])
> - subprocess.check_call(["qemu-img", "create", "-f", "qcow2",
> - img_tmp, self.size])
> + self.exec_qemu_img("create", "-f", "qcow2", img_tmp, self.size)
>
> self.print_step("Booting installer")
> self.boot(img_tmp, extra_args = [
> diff --git a/tests/vm/ubuntu.i386 b/tests/vm/ubuntu.i386
> index 38f740eabf..39bbe9cc21 100755
> --- a/tests/vm/ubuntu.i386
> +++ b/tests/vm/ubuntu.i386
> @@ -70,7 +70,7 @@ class UbuntuX86VM(basevm.BaseVM):
> sha256sum="e30091144c73483822b7c27193e9d47346dd1064229da577c3fedcf943f7cfcc")
> img_tmp = img + ".tmp"
> subprocess.check_call(["cp", "-f", cimg, img_tmp])
> - subprocess.check_call(["qemu-img", "resize", img_tmp, "50G"])
> + self.exec_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")
>
prev parent reply other threads:[~2019-12-03 16:34 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-11-14 13:42 [PATCH 0/1] tests/vm: Allow to set path to qemu-img Wainer dos Santos Moschetta
2019-11-14 13:42 ` [PATCH 1/1] tests/vm: Allow to set qemu-img path Wainer dos Santos Moschetta
2019-12-03 11:35 ` Alex Bennée
2019-12-03 16:17 ` Philippe Mathieu-Daudé [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=3bac18c1-b0db-d178-656f-6eb30e471fb0@redhat.com \
--to=philmd@redhat.com \
--cc=alex.bennee@linaro.org \
--cc=fam@euphon.net \
--cc=qemu-devel@nongnu.org \
--cc=wainersm@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).