diff --git a/tools/packaging/static-build/qemu/Makefile b/tools/packaging/static-build/qemu/Makefile index 00ab89e462..356454646f 100644 --- a/tools/packaging/static-build/qemu/Makefile +++ b/tools/packaging/static-build/qemu/Makefile @@ -1,8 +1,16 @@ +# Copyright (c) 2020 Intel Corporation +# +# SPDX-License-Identifier: Apache-2.0 +# + MK_DIR :=$(shell dirname $(realpath $(lastword $(MAKEFILE_LIST)))) CONFIG_DIR := $(MK_DIR)/../../scripts/ build: "$(MK_DIR)/build-static-qemu.sh" +build-experimental: + "$(MK_DIR)/build-static-qemu-experimental.sh" + clean: rm -f kata-qemu-static.tar.gz diff --git a/tools/packaging/static-build/qemu/build-base-qemu.sh b/tools/packaging/static-build/qemu/build-base-qemu.sh new file mode 100755 index 0000000000..dc4930d38a --- /dev/null +++ b/tools/packaging/static-build/qemu/build-base-qemu.sh @@ -0,0 +1,55 @@ +#!/bin/bash +# +# Copyright (c) 2018 Intel Corporation +# +# SPDX-License-Identifier: Apache-2.0 + +set -o errexit +set -o nounset +set -o pipefail + +script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" + +source "${script_dir}/../../scripts/lib.sh" +source "${script_dir}/../qemu.blacklist" + +packaging_dir="${script_dir}/../.." +qemu_destdir="/tmp/qemu-static/" + +qemu_repo="${qemu_repo:-$1}" +qemu_version="${qemu_version:-$2}" +build_suffix="${3:-}" +qemu_tar="${4:-}" + +[ -n "$qemu_repo" ] || die "qemu repo not provided" +[ -n "$qemu_version" ] || die "qemu version not provided" + +info "Build ${qemu_repo} version: ${qemu_version}" + +http_proxy="${http_proxy:-}" +https_proxy="${https_proxy:-}" +prefix="${prefix:-"/opt/kata"}" + +CACHE_TIMEOUT=$(date +"%Y-%m-%d") + +sudo docker build \ + --build-arg CACHE_TIMEOUT="${CACHE_TIMEOUT}" \ + --build-arg BUILD_SUFFIX="${build_suffix}" \ + --build-arg http_proxy="${http_proxy}" \ + --build-arg https_proxy="${https_proxy}" \ + --build-arg QEMU_DESTDIR="${qemu_destdir}" \ + --build-arg QEMU_REPO="${qemu_repo}" \ + --build-arg QEMU_VERSION="${qemu_version}" \ + --build-arg QEMU_TARBALL="${qemu_tar}" \ + --build-arg PREFIX="${prefix}" \ + "${packaging_dir}" \ + -f "${script_dir}/Dockerfile" \ + -t qemu-static + +sudo docker run \ + --rm \ + -i \ + -v "${PWD}":/share qemu-static \ + mv "${qemu_destdir}/${qemu_tar}" /share/ + +sudo chown ${USER}:${USER} "${PWD}/${qemu_tar}" diff --git a/tools/packaging/static-build/qemu/build-static-qemu-experimental.sh b/tools/packaging/static-build/qemu/build-static-qemu-experimental.sh new file mode 100755 index 0000000000..2b53293888 --- /dev/null +++ b/tools/packaging/static-build/qemu/build-static-qemu-experimental.sh @@ -0,0 +1,29 @@ +#!/bin/bash +# +# Copyright (c) 2018 Intel Corporation +# +# SPDX-License-Identifier: Apache-2.0 + +set -o errexit +set -o nounset +set -o pipefail + +script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" + +source "${script_dir}/../../scripts/lib.sh" + +qemu_repo="${qemu_repo:-}" +qemu_version="${qemu_version:-}" + +if [ -z "$qemu_repo" ]; then + info "Get qemu information from runtime versions.yaml" + qemu_url=$(get_from_kata_deps "assets.hypervisor.qemu-experimental.url") + [ -n "$qemu_url" ] || die "failed to get qemu url" + qemu_repo="${qemu_url}.git" +fi +[ -n "$qemu_repo" ] || die "failed to get qemu repo" + +[ -n "$qemu_version" ] || qemu_version=$(get_from_kata_deps "assets.hypervisor.qemu-experimental.version") +[ -n "$qemu_version" ] || die "failed to get qemu version" + +"${script_dir}/build-base-qemu.sh" "${qemu_repo}" "${qemu_version}" "-experimental" "kata-static-qemu-experimental.tar.gz" diff --git a/tools/packaging/static-build/qemu/build-static-qemu.sh b/tools/packaging/static-build/qemu/build-static-qemu.sh index 22cb8d0c06..b0cfaed918 100755 --- a/tools/packaging/static-build/qemu/build-static-qemu.sh +++ b/tools/packaging/static-build/qemu/build-static-qemu.sh @@ -11,54 +11,19 @@ set -o pipefail script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" source "${script_dir}/../../scripts/lib.sh" -source "${script_dir}/../qemu.blacklist" - -packaging_dir="${script_dir}/../.." -qemu_tar="kata-static-qemu.tar.gz" -qemu_tmp_tar="kata-static-qemu-tmp.tar.gz" -qemu_destdir="/tmp/qemu-static/" qemu_repo="${qemu_repo:-}" qemu_version="${qemu_version:-}" -kata_version="${kata_version:-}" if [ -z "$qemu_repo" ]; then info "Get qemu information from runtime versions.yaml" - qemu_url=$(get_from_kata_deps "assets.hypervisor.qemu.url" "${kata_version}") + qemu_url=$(get_from_kata_deps "assets.hypervisor.qemu.url") [ -n "$qemu_url" ] || die "failed to get qemu url" qemu_repo="${qemu_url}.git" fi [ -n "$qemu_repo" ] || die "failed to get qemu repo" -[ -n "$qemu_version" ] || qemu_version=$(get_from_kata_deps "assets.hypervisor.qemu.version" "${kata_version}") -if ! (git ls-remote --heads "${qemu_url}" | grep -q "refs/heads/${qemu_version}"); then - qemu_version=$(get_from_kata_deps "assets.hypervisor.qemu.tag" "${kata_version}") -fi +[ -n "$qemu_version" ] || qemu_version=$(get_from_kata_deps "assets.hypervisor.qemu.version") [ -n "$qemu_version" ] || die "failed to get qemu version" -info "Build ${qemu_repo} version: ${qemu_version}" - -http_proxy="${http_proxy:-}" -https_proxy="${https_proxy:-}" -prefix="${prefix:-"/opt/kata"}" - -sudo docker build \ - --no-cache \ - --build-arg http_proxy="${http_proxy}" \ - --build-arg https_proxy="${https_proxy}" \ - --build-arg QEMU_DESTDIR="${qemu_destdir}" \ - --build-arg QEMU_REPO="${qemu_repo}" \ - --build-arg QEMU_VERSION="${qemu_version}" \ - --build-arg QEMU_TARBALL="${qemu_tar}" \ - --build-arg PREFIX="${prefix}" \ - "${packaging_dir}" \ - -f "${script_dir}/Dockerfile" \ - -t qemu-static - -sudo docker run \ - --rm \ - -i \ - -v "${PWD}":/share qemu-static \ - mv "${qemu_destdir}/${qemu_tar}" /share/ - -sudo chown ${USER}:${USER} "${PWD}/${qemu_tar}" +"${script_dir}/build-base-qemu.sh" "${qemu_repo}" "${qemu_version}" "" "kata-static-qemu.tar.gz"