diff options
author | Peter Mikus <pmikus@cisco.com> | 2018-03-22 13:21:05 +0100 |
---|---|---|
committer | Tibor Frank <tifrank@cisco.com> | 2018-03-26 10:37:33 +0000 |
commit | 095b162010491a4759e05ca46f0e5a47e8ace141 (patch) | |
tree | f47fcd74d591a9532815147e211e37c1d19fdb23 /resources/libraries/bash/qemu_build.sh | |
parent | 3458e725729098a6c10f68ec4a05d7256984bcdc (diff) |
Optimize Qemu installation to speed up vhost tests
Currently Qemu is being installed if there is a change of qsz parameter
between tests/suites. Qemu is installed always into the same directory. This
patch changes the default behavior to install qemu over and install
pathced version to separate directory. It also disables force install.
Change-Id: I0d7493a02b026a6ae4a5ea8bacf54656de9db567
Signed-off-by: Peter Mikus <pmikus@cisco.com>
Diffstat (limited to 'resources/libraries/bash/qemu_build.sh')
-rwxr-xr-x | resources/libraries/bash/qemu_build.sh | 86 |
1 files changed, 26 insertions, 60 deletions
diff --git a/resources/libraries/bash/qemu_build.sh b/resources/libraries/bash/qemu_build.sh index 57520a9b5e..4638ec1bcb 100755 --- a/resources/libraries/bash/qemu_build.sh +++ b/resources/libraries/bash/qemu_build.sh @@ -1,5 +1,5 @@ #!/bin/bash -# Copyright (c) 2016 Cisco and/or its affiliates. +# Copyright (c) 2018 Cisco and/or its affiliates. # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at: @@ -12,81 +12,47 @@ # See the License for the specific language governing permissions and # limitations under the License. -QEMU_VERSION="qemu-2.5.0" -QEMU_DOWNLOAD_REPO="http://download.qemu-project.org/" -QEMU_DOWNLOAD_PACKAGE="${QEMU_VERSION}.tar.xz" -QEMU_PACKAGE_URL="${QEMU_DOWNLOAD_REPO}${QEMU_DOWNLOAD_PACKAGE}" -QEMU_INSTALL_DIR="/opt/${QEMU_VERSION}" +set -x + SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -TARGET_LIST="x86_64-softmmu" +# Include +source ${SCRIPT_DIR}/config/defaults +source ${SCRIPT_DIR}/shell/qemu_utils.sh + +# Read configuration +while read line +do + if echo $line | grep -F = &>/dev/null + then + varname=$(echo "$line" | cut -d '=' -f 1) + cfg[$varname]=$(echo "$line" | cut -d '=' -f 2-) + fi +done < ${SCRIPT_DIR}/config/config + +# Read parameters for i in "$@"; do case $i in --version=*) - QEMU_VERSION="${i#*=}" + cfg['QEMU_INSTALL_VERSION']="${i#*=}" shift ;; --directory=*) - QEMU_INSTALL_DIR="${i#*=}" + cfg['QEMU_INSTALL_DIR']="${i#*=}" shift ;; --patch) - PATCH=1 + cfg['QEMU_PATCH']=true shift ;; --force) - FORCE=1 + cfg['QEMU_FORCE_INSTALL']=true shift ;; --target-list) - TARGET_LIST="${i#*=}" + cfg['QEMU_TARGET_LIST']="${i#*=}" shift ;; *) ;; esac done -if test "$(id -u)" -ne 0 -then - echo "Please use root or sudo to be able to install into: ${QEMU_INSTALL_DIR}" - exit 1 -fi - -WORKING_DIR=$(mktemp -d) || \ - { echo "Failed to create temporary working dir"; exit 1; } -trap "rm -r ${WORKING_DIR}" EXIT - -if [ $FORCE ] -then - rm -rf ${QEMU_INSTALL_DIR} -else - test -d ${QEMU_INSTALL_DIR} && \ - { echo "Qemu already installed: ${QEMU_INSTALL_DIR}"; exit 0; } -fi - -# Download QEMU source code if no local copy exists -if [ ! -f /opt/${QEMU_DOWNLOAD_PACKAGE} ]; then - wget -P /opt -q ${QEMU_PACKAGE_URL} || \ - { echo "Failed to download ${QEMU_VERSION}"; exit 1; } -fi - -# Extract archive into temp directory -tar --strip-components 1 -xf /opt/${QEMU_DOWNLOAD_PACKAGE} -C ${WORKING_DIR} || \ - { echo "Failed to extract ${QEMU_VERSION}.tar.xz"; exit 1; } - -cd ${WORKING_DIR} -mkdir ${QEMU_INSTALL_DIR} || \ - { echo "Failed to create ${QEMU_INSTALL_DIR}"; exit 1; } - -# Apply additional patches -if [ $PATCH ] -then - chmod +x ${SCRIPT_DIR}/qemu_patches/${QEMU_VERSION}/* - run-parts --verbose --report ${SCRIPT_DIR}/qemu_patches/${QEMU_VERSION} -fi - -# Build -./configure --target-list=${TARGET_LIST} --prefix=${QEMU_INSTALL_DIR} || \ - { echo "Failed to configure ${QEMU_VERSION}"; exit 1; } -make -j`nproc` || \ - { echo "Failed to compile ${QEMU_VERSION}"; exit 1; } -make install || \ - { echo "Failed to install ${QEMU_VERSION}"; exit 1; } - -echo QEMU ${QEMU_VERSION} ready +# Install qemu +qemu_utils.qemu_install ${cfg[QEMU_INSTALL_DIR]} ${cfg[QEMU_INSTALL_VERSION]} \ + ${cfg[QEMU_PATCH]} ${cfg[QEMU_FORCE_INSTALL]} ${cfg[QEMU_TARGET_LIST]} |