From: Fam Zheng <famz@redhat.com>
To: Brad Smith <brad@comstyle.com>
Cc: qemu-devel@nongnu.org, "Alex Bennée" <alex.bennee@linaro.org>,
"Philippe Mathieu-Daudé" <f4bug@amsat.org>,
"Samuel Thibault" <samuel.thibault@ens-lyon.org>
Subject: Re: [Qemu-devel] [PATCH v4] tests: vm: auto_install OpenBSD
Date: Wed, 14 Nov 2018 17:58:07 +0800 [thread overview]
Message-ID: <20181114095807.GB22784@magic> (raw)
In-Reply-To: <4f6eb24d-fe13-cbf3-907e-6b3e566e33f4@comstyle.com>
On Sun, 11/11 18:20, Brad Smith wrote:
> ping.
Queued. Will send a pull request soon.
Fam
>
> On 10/30/2018 10:57 PM, Fam Zheng wrote:
> > Upgrade OpenBSD to 6.4 using auto_install. Especially, drop SDL1,
> > include SDL2.
> >
> > Also do the build in $HOME since both /var/tmp and /tmp are tmpfs with
> > limited capacities.
> >
> > Signed-off-by: Fam Zheng <famz@redhat.com>
> >
> > ---
> >
> > v4: Use 6.4. [Brad]
> > ---
> > tests/vm/basevm.py | 6 ++--
> > tests/vm/openbsd | 85 +++++++++++++++++++++++++++++++++++++++-------
> > 2 files changed, 76 insertions(+), 15 deletions(-)
> >
> > diff --git a/tests/vm/basevm.py b/tests/vm/basevm.py
> > index 5caf77d6b8..6fb446d4c5 100755
> > --- a/tests/vm/basevm.py
> > +++ b/tests/vm/basevm.py
> > @@ -68,8 +68,6 @@ class BaseVM(object):
> > self._args = [ \
> > "-nodefaults", "-m", "4G",
> > "-cpu", "max",
> > - "-netdev", "user,id=vnet,hostfwd=:127.0.0.1:0-:22",
> > - "-device", "virtio-net-pci,netdev=vnet",
> > "-vnc", "127.0.0.1:0,to=20",
> > "-serial", "file:%s" % os.path.join(self._tmpdir, "serial.out")]
> > if vcpus and vcpus > 1:
> > @@ -146,8 +144,10 @@ class BaseVM(object):
> > "-device",
> > "virtio-blk,drive=%s,serial=%s,bootindex=1" % (name, name)]
> > - def boot(self, img, extra_args=[]):
> > + def boot(self, img, extra_args=[], extra_usernet_args=""):
> > args = self._args + [
> > + "-netdev", "user,id=vnet,hostfwd=:127.0.0.1:0-:22" + extra_usernet_args,
> > + "-device", "virtio-net-pci,netdev=vnet",
> > "-device", "VGA",
> > "-drive", "file=%s,if=none,id=drive0,cache=writeback" % img,
> > "-device", "virtio-blk,drive=drive0,bootindex=0"]
> > diff --git a/tests/vm/openbsd b/tests/vm/openbsd
> > index cfe0572c59..99a7e98d80 100755
> > --- a/tests/vm/openbsd
> > +++ b/tests/vm/openbsd
> > @@ -14,6 +14,9 @@
> > import os
> > import sys
> > import subprocess
> > +import time
> > +import atexit
> > +import tempfile
> > import basevm
> > class OpenBSDVM(basevm.BaseVM):
> > @@ -21,25 +24,83 @@ class OpenBSDVM(basevm.BaseVM):
> > arch = "x86_64"
> > BUILD_SCRIPT = """
> > set -e;
> > - rm -rf /var/tmp/qemu-test.*
> > - cd $(mktemp -d /var/tmp/qemu-test.XXXXXX);
> > + rm -rf $HOME/qemu-test.*
> > + cd $(mktemp -d $HOME/qemu-test.XXXXXX);
> > tar -xf /dev/rsd1c;
> > - ./configure --cc=x86_64-unknown-openbsd6.1-gcc-4.9.4 --python=python2.7 {configure_opts};
> > + ./configure {configure_opts};
> > gmake --output-sync -j{jobs} {verbose};
> > # XXX: "gmake check" seems to always hang or fail
> > #gmake --output-sync -j{jobs} check {verbose};
> > """
> > + def _install_os(self, img):
> > + tmpdir = tempfile.mkdtemp()
> > + pxeboot = self._download_with_cache("https://fastly.cdn.openbsd.org/pub/OpenBSD/6.4/amd64/pxeboot",
> > + sha256sum="d87ab39d941ff926d693943a927585945456ccedb76ea504a251b4b93cd4c266")
> > + bsd_rd = self._download_with_cache("https://fastly.cdn.openbsd.org/pub/OpenBSD/6.4/amd64/bsd.rd",
> > + sha256sum="89505c683cbcd75582fe475e847ed53d89e2b8180c3e3d61f4eb4b76b5e11f5c")
> > + install = self._download_with_cache("https://fastly.cdn.openbsd.org/pub/OpenBSD/6.4/amd64/install64.iso",
> > + sha256sum='81833b79e23dc0f961ac5fb34484bca66386deb3181ddb8236870fa4f488cdd2')
> > + subprocess.check_call(["qemu-img", "create", img, "32G"])
> > + subprocess.check_call(["cp", pxeboot, os.path.join(tmpdir, "auto_install")])
> > + subprocess.check_call(["cp", bsd_rd, os.path.join(tmpdir, "bsd")])
> > +
> > + self._gen_install_conf(tmpdir)
> > + # BOOTP filename being auto_install makes sure OpenBSD installer
> > + # not prompt for "auto install mode"
> > + usernet_args = ",tftp=%s,bootfile=/auto_install" % tmpdir
> > + usernet_args += ",tftp-server-name=10.0.2.4"
> > + usernet_args += ",guestfwd=tcp:10.0.2.4:80-cmd:cat %s" % \
> > + os.path.join(tmpdir, "install.conf")
> > + self.boot(img,
> > + extra_args=["-boot", "once=n", "-no-reboot",
> > + "-cdrom", install],
> > + extra_usernet_args=usernet_args)
> > + self.wait()
> > +
> > + def _gen_install_conf(self, tmpdir):
> > + contents = """\
> > +HTTP/1.0 200 OK
> > +
> > +System hostname = qemu-openbsd
> > +Password for root = qemupass
> > +Public ssh key for root = {pub_key}
> > +Allow root ssh login = yes
> > +Network interfaces = vio0
> > +IPv4 address for vio0 = dhcp
> > +Setup a user = qemu
> > +Password for user = qemupass
> > +Public ssh key for user = {pub_key}
> > +What timezone are you in = US/Eastern
> > +Server = fastly.cdn.openbsd.org
> > +Use http = yes
> > +Default IPv4 route = 10.0.2.2
> > +Location of sets = cd0
> > +Set name(s) = all
> > +Continue without verification = yes
> > +""".format(pub_key=basevm.SSH_PUB_KEY)
> > + with open(os.path.join(tmpdir, "install.conf"), "w") as f:
> > + f.write(contents)
> > +
> > def build_image(self, img):
> > - cimg = self._download_with_cache("http://download.patchew.org/openbsd-6.1-amd64.img.xz",
> > - sha256sum='8c6cedc483e602cfee5e04f0406c64eb99138495e8ca580bc0293bcf0640c1bf')
> > - 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])
> > - if os.path.exists(img):
> > - os.remove(img)
> > - os.rename(img_tmp, img)
> > +
> > + self._install_os(img + ".tmp")
> > +
> > + self.boot(img + ".tmp")
> > + self.wait_ssh()
> > +
> > + self.ssh_root("usermod -G operator qemu")
> > + self.ssh_root("echo https://fastly.cdn.openbsd.org/pub/OpenBSD > /etc/installurl")
> > + for pkg in ["git", "gmake", "glib2", "bison", "sdl2"]:
> > + self.ssh_root("pkg_add " + pkg)
> > + self.ssh_root("ln -sf /usr/local/bin/python2.7 /usr/local/bin/python")
> > + self.ssh_root("ln -sf /usr/local/bin/python2.7-2to3 /usr/local/bin/2to3")
> > + self.ssh_root("ln -sf /usr/local/bin/python2.7-config /usr/local/bin/python-config")
> > + self.ssh_root("ln -sf /usr/local/bin/pydoc2.7 /usr/local/bin/pydoc")
> > + self.ssh_root("shutdown -p now")
> > + self.wait()
> > +
> > + subprocess.check_call(["mv", img + ".tmp", img])
> > if __name__ == "__main__":
> > sys.exit(basevm.main(OpenBSDVM))
next prev parent reply other threads:[~2018-11-14 9:58 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-10-31 2:57 [Qemu-devel] [PATCH v4] tests: vm: auto_install OpenBSD Fam Zheng
2018-11-11 23:20 ` Brad Smith
2018-11-14 9:58 ` Fam Zheng [this message]
2019-01-09 13:55 ` Daniel P. Berrangé
2019-01-09 13:59 ` Daniel P. Berrangé
2019-01-14 3:50 ` Fam Zheng
2019-01-14 10:15 ` Daniel P. Berrangé
2019-01-14 10:34 ` Peter Maydell
2019-01-22 16:12 ` Daniel P. Berrangé
2019-02-27 13:33 ` Fam Zheng
2019-02-27 13:35 ` Fam Zheng
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=20181114095807.GB22784@magic \
--to=famz@redhat.com \
--cc=alex.bennee@linaro.org \
--cc=brad@comstyle.com \
--cc=f4bug@amsat.org \
--cc=qemu-devel@nongnu.org \
--cc=samuel.thibault@ens-lyon.org \
/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).