#!/usr/bin/env python
#
# NetBSD 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 NetBSDVM(basevm.BaseVM):
    name = "netbsd"
    BUILD_SCRIPT = """
        set -e;
        cd $(mktemp -d /var/tmp/qemu-test.XXXXXX);
        tar -xf /dev/rld1a;
        ./configure --python=python2.7 {configure_opts};
        gmake -j{jobs};
        gmake check;
    """

    def build_image(self, img):
        cimg = self._download_with_cache("http://download.patchew.org/netbsd-7.1-amd64.img.xz",
                                         sha256sum='b633d565b0eac3d02015cd0c81440bd8a7a8df8512615ac1ee05d318be015732')
        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(NetBSDVM))
