aboutsummaryrefslogtreecommitdiffstats
path: root/resources/libraries/bash/qemu_build.sh
diff options
context:
space:
mode:
authorPeter Mikus <pmikus@cisco.com>2018-03-22 13:21:05 +0100
committerTibor Frank <tifrank@cisco.com>2018-03-26 10:37:33 +0000
commit095b162010491a4759e05ca46f0e5a47e8ace141 (patch)
treef47fcd74d591a9532815147e211e37c1d19fdb23 /resources/libraries/bash/qemu_build.sh
parent3458e725729098a6c10f68ec4a05d7256984bcdc (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-xresources/libraries/bash/qemu_build.sh86
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]}