diff mbox series

[v11,07/13] tests: Add FreeBSD image

Message ID 20170921150755.19914-8-famz@redhat.com
State New
Headers show
Series tests: Add VM based build tests (for non-x86_64 and/or non-Linux) | expand

Commit Message

Fam Zheng Sept. 21, 2017, 3:07 p.m. UTC
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 | 42 ++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 42 insertions(+)
 create mode 100755 tests/vm/freebsd

Comments

Philippe Mathieu-Daudé Sept. 22, 2017, 3:17 a.m. UTC | #1
Hi Fam,

On 09/21/2017 12:07 PM, 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/freebsd | 42 ++++++++++++++++++++++++++++++++++++++++++
>   1 file changed, 42 insertions(+)
>   create mode 100755 tests/vm/freebsd
> 
> diff --git a/tests/vm/freebsd b/tests/vm/freebsd
> new file mode 100755
> index 0000000000..039dad8f69
> --- /dev/null
> +++ b/tests/vm/freebsd
> @@ -0,0 +1,42 @@
> +#!/usr/bin/env python
> +#
> +# FreeBSD VM image
> +#
> +# Copyright 2017 Red Hat Inc.
> +#
> +# Authors:
> +#  Fam Zheng <famz@redhat.com>
> +#
> +# This code is licensed under the GPL version 2 or later.  See
> +# the COPYING file in the top-level directory.
> +#
> +
> +import os
> +import sys
> +import subprocess
> +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):
> +        cimg = self._download_with_cache("http://download.patchew.org/freebsd-11.1-amd64.img.xz",
> +                sha256sum='adcb771549b37bc63826c501f05121a206ed3d9f55f49145908f7e1432d65891')
> +        img_tmp_xz = img + ".tmp.xz"
> +        img_tmp = img + ".tmp"
> +        subprocess.check_call(["cp", "-f", cimg, img_tmp_xz])

I'd rather see this part common to 3 images refactored as @static 
BaseVM.download_and_extract_image() and some logging:

         logging.debug("Extracting %s...", fname)

> +        subprocess.check_call(["xz", "-df", img_tmp_xz])

else one wonder what's happening here.

(for another patch on top on this series)

> +        if os.path.exists(img):
> +            os.remove(img)
> +        os.rename(img_tmp, img)
> +
> +if __name__ == "__main__":
> +    sys.exit(basevm.main(FreeBSDVM))
>
Fam Zheng Sept. 22, 2017, 5:31 a.m. UTC | #2
On Fri, 09/22 00:17, Philippe Mathieu-Daudé wrote:
> Hi Fam,
> 
> On 09/21/2017 12:07 PM, 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/freebsd | 42 ++++++++++++++++++++++++++++++++++++++++++
> >   1 file changed, 42 insertions(+)
> >   create mode 100755 tests/vm/freebsd
> > 
> > diff --git a/tests/vm/freebsd b/tests/vm/freebsd
> > new file mode 100755
> > index 0000000000..039dad8f69
> > --- /dev/null
> > +++ b/tests/vm/freebsd
> > @@ -0,0 +1,42 @@
> > +#!/usr/bin/env python
> > +#
> > +# FreeBSD VM image
> > +#
> > +# Copyright 2017 Red Hat Inc.
> > +#
> > +# Authors:
> > +#  Fam Zheng <famz@redhat.com>
> > +#
> > +# This code is licensed under the GPL version 2 or later.  See
> > +# the COPYING file in the top-level directory.
> > +#
> > +
> > +import os
> > +import sys
> > +import subprocess
> > +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):
> > +        cimg = self._download_with_cache("http://download.patchew.org/freebsd-11.1-amd64.img.xz",
> > +                sha256sum='adcb771549b37bc63826c501f05121a206ed3d9f55f49145908f7e1432d65891')
> > +        img_tmp_xz = img + ".tmp.xz"
> > +        img_tmp = img + ".tmp"
> > +        subprocess.check_call(["cp", "-f", cimg, img_tmp_xz])
> 
> I'd rather see this part common to 3 images refactored as @static
> BaseVM.download_and_extract_image() and some logging:
> 
>         logging.debug("Extracting %s...", fname)
> 
> > +        subprocess.check_call(["xz", "-df", img_tmp_xz])
> 
> else one wonder what's happening here.
> 
> (for another patch on top on this series)

Yep, that sounds good.

Fam
Philippe Mathieu-Daudé Sept. 22, 2017, 6:09 a.m. UTC | #3
On 09/21/2017 12:07 PM, 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>

$ QEMU=`pwd`/x86_64-softmmu/qemu-system-x86_64 make vm-build-freebsd V=1
[...]
   CC      tests/test-io-channel-socket.o
   CC      tests/io-channel-helpers.o
   LINK    tests/test-io-channel-socket

the build hang here, stopping to use the cpu, keeping 2GB of resident 
physical memory until I hit ^C ... not enough ram for the guest? guest 
tmpfs full?

useful enough for:
Tested-by: Philippe Mathieu-Daudé <f4bug@amsat.org>

> ---
>   tests/vm/freebsd | 42 ++++++++++++++++++++++++++++++++++++++++++
>   1 file changed, 42 insertions(+)
>   create mode 100755 tests/vm/freebsd
> 
> diff --git a/tests/vm/freebsd b/tests/vm/freebsd
> new file mode 100755
> index 0000000000..039dad8f69
> --- /dev/null
> +++ b/tests/vm/freebsd
> @@ -0,0 +1,42 @@
> +#!/usr/bin/env python
> +#
> +# FreeBSD VM image
> +#
> +# Copyright 2017 Red Hat Inc.
> +#
> +# Authors:
> +#  Fam Zheng <famz@redhat.com>
> +#
> +# This code is licensed under the GPL version 2 or later.  See
> +# the COPYING file in the top-level directory.
> +#
> +
> +import os
> +import sys
> +import subprocess
> +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):
> +        cimg = self._download_with_cache("http://download.patchew.org/freebsd-11.1-amd64.img.xz",
> +                sha256sum='adcb771549b37bc63826c501f05121a206ed3d9f55f49145908f7e1432d65891')
> +        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)
> +
> +if __name__ == "__main__":
> +    sys.exit(basevm.main(FreeBSDVM))
>
Fam Zheng Sept. 22, 2017, 6:45 a.m. UTC | #4
On Fri, 09/22 03:09, Philippe Mathieu-Daudé wrote:
> On 09/21/2017 12:07 PM, 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>
> 
> $ QEMU=`pwd`/x86_64-softmmu/qemu-system-x86_64 make vm-build-freebsd V=1
> [...]
>   CC      tests/test-io-channel-socket.o
>   CC      tests/io-channel-helpers.o
>   LINK    tests/test-io-channel-socket
> 
> the build hang here, stopping to use the cpu, keeping 2GB of resident
> physical memory until I hit ^C ... not enough ram for the guest? guest tmpfs
> full?

For how long? The four images doing "J=8" takes 1~2 hours here usually.  This
worked for me on at least two machines (one laptop and one server). :-/

> 
> useful enough for:
> Tested-by: Philippe Mathieu-Daudé <f4bug@amsat.org>

Fam
diff mbox series

Patch

diff --git a/tests/vm/freebsd b/tests/vm/freebsd
new file mode 100755
index 0000000000..039dad8f69
--- /dev/null
+++ b/tests/vm/freebsd
@@ -0,0 +1,42 @@ 
+#!/usr/bin/env python
+#
+# FreeBSD VM image
+#
+# Copyright 2017 Red Hat Inc.
+#
+# Authors:
+#  Fam Zheng <famz@redhat.com>
+#
+# This code is licensed under the GPL version 2 or later.  See
+# the COPYING file in the top-level directory.
+#
+
+import os
+import sys
+import subprocess
+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):
+        cimg = self._download_with_cache("http://download.patchew.org/freebsd-11.1-amd64.img.xz",
+                sha256sum='adcb771549b37bc63826c501f05121a206ed3d9f55f49145908f7e1432d65891')
+        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)
+
+if __name__ == "__main__":
+    sys.exit(basevm.main(FreeBSDVM))