From 2e115ad11cca45b11c0f1949fd8c42fec899bb68 Mon Sep 17 00:00:00 2001 From: pmikus Date: Wed, 29 Mar 2017 16:51:34 +0200 Subject: CSIT-441 vhost - Parametrized qemu install Update the current QEMU installation script with option to override QEMU installation and to apply additional patches. Additional patches are applied from qemu_patches directory and subdir for specific QEMU version by run-parts. This means that all patches for particular version are applied. All keywords for build QEMU are updated. Change-Id: I0c874a96ac828dff657ee33eb87d88a8854128ad Signed-off-by: pmikus --- resources/libraries/python/QemuUtils.py | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) (limited to 'resources/libraries/python/QemuUtils.py') diff --git a/resources/libraries/python/QemuUtils.py b/resources/libraries/python/QemuUtils.py index f926d63caf..244ece2258 100644 --- a/resources/libraries/python/QemuUtils.py +++ b/resources/libraries/python/QemuUtils.py @@ -628,19 +628,31 @@ class QemuUtils(object): 'error: {1}'.format(self._node['host'], json.dumps(err))) @staticmethod - def build_qemu(node): + def build_qemu(node, force_install=False, apply_patch=False): """Build QEMU from sources. :param node: Node to build QEMU on. + :param force_install: If True, then remove previous build. + :param apply_patch: If True, then apply patches from qemu_patches dir. :type node: dict + :type force_install: bool + :type apply_patch: bool + :raises: RuntimeError if building QEMU failed. """ ssh = SSH() ssh.connect(node) + directory = ' --directory={0}'.format(Constants.QEMU_INSTALL_DIR) + version = ' --version={0}'.format(Constants.QEMU_INSTALL_VERSION) + force = ' --force' if force_install else '' + patch = ' --patch' if apply_patch else '' + (ret_code, stdout, stderr) = \ - ssh.exec_command('sudo -Sn bash {0}/{1}/qemu_build.sh'.format( - Constants.REMOTE_FW_DIR, Constants.RESOURCES_LIB_SH), 1000) - logger.trace(stdout) + ssh.exec_command( + "sudo -E sh -c '{0}/{1}/qemu_build.sh{2}{3}{4}{5}'"\ + .format(Constants.REMOTE_FW_DIR, Constants.RESOURCES_LIB_SH, + version, directory, force, patch), 1000) + if int(ret_code) != 0: - logger.debug('QEMU build failed {0}'.format(stderr)) + logger.debug('QEMU build failed {0}'.format(stdout + stderr)) raise RuntimeError('QEMU build failed on {0}'.format(node['host'])) -- cgit 1.2.3-korg