#!/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))
