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 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.