From e6dac824fca87e1d973b071857d9ef48fa01b946 Mon Sep 17 00:00:00 2001 From: Marco Vedovati Date: Wed, 22 May 2019 20:27:47 +0200 Subject: [PATCH] runtime: fix strict "= VERSION" dependencies for deb pkg When specifying a "Depends: (= VERSION" match in deb packages, the full "VERSION" needs to be specified, including the trailing release number. This fixes a regression introduced in: 63413814 Fixes: #531 Signed-off-by: Marco Vedovati --- obs-packaging/build_all.sh | 3 ++ obs-packaging/runtime/update.sh | 56 ++++++++++++++++++++++++------- obs-packaging/scripts/obs-pkgs.sh | 17 ++++++---- obs-packaging/scripts/pkglib.sh | 14 ++++---- 4 files changed, 64 insertions(+), 26 deletions(-) diff --git a/obs-packaging/build_all.sh b/obs-packaging/build_all.sh index d82534233b..7045a30ddb 100755 --- a/obs-packaging/build_all.sh +++ b/obs-packaging/build_all.sh @@ -76,6 +76,9 @@ main() { local projectsList=("$@") [ "${#projectsList[@]}" = "0" ] && projectsList=("${OBS_PKGS_PROJECTS[@]}") + # Make sure runtime is the last project + projectsList=($(echo "${projectsList[@]}" | sed -E "s/(^.*)(runtime)(.*$)/\1 \3 \2/")) + pushd "${script_dir}" >>/dev/null local compare_result="$(./gen_versions_txt.sh --compare ${branch})" [[ "$compare_result" =~ different ]] && die "$compare_result -- you need to run gen_versions_txt.sh" diff --git a/obs-packaging/runtime/update.sh b/obs-packaging/runtime/update.sh index 28e3a449e3..ba52fa757e 100755 --- a/obs-packaging/runtime/update.sh +++ b/obs-packaging/runtime/update.sh @@ -39,36 +39,68 @@ LOCAL_BUILD=false OBS_PUSH=false VERBOSE=false +pkg_2_version() { + local pkg="$1" + local versionVar="${pkg}_version" + local hashVar="${pkg}_hash" + local version=$(echo ${!versionVar}) + local gitHash= + + # Make pkg match the package name on OBS + pkg="${pkg#kata_}" + pkg="${pkg//_/-}" + pkg="${pkg//osbuilder/kata-containers-image}" + pkg="${pkg//linux/linux-container}" + + if [ -n "${PROJECT_REPO:-}" ]; then + local proj="${PROJECT_REPO%/runtime}" + else + local proj="home:${OBS_PROJECT}:${OBS_SUBPROJECT}" + fi + local release="$(get_obs_pkg_release "${proj}/${pkg//_/-}")" + + case "$pkg" in + linux-container) + version="${version}.$(cat "${SCRIPT_DIR}/../../kernel/kata_config_version")" + ;; + qemu-*) + gitHash=$(echo ${!hashVar}}) + ;; + esac + + pkg_version "$version" "$release" "$gitHash" +} + + # Parse arguments cli "$@" [ "$VERBOSE" == "true" ] && set -x # Package depedencies -info "requires:" -PROXY_REQUIRED_VERESION=$(pkg_version "${kata_proxy_version}" "" "") -info "proxy ${PROXY_REQUIRED_VERESION}" +info "Requires:" +PROXY_REQUIRED_VERSION=$(pkg_2_version "kata_proxy") +info "proxy ${PROXY_REQUIRED_VERSION}" -SHIM_REQUIRED_VERSION=$(pkg_version "${kata_shim_version}" "" "") +SHIM_REQUIRED_VERSION=$(pkg_2_version "kata_shim") info "shim ${SHIM_REQUIRED_VERSION}" -KERNEL_CONFIG_VERSION=$(cat "${SCRIPT_DIR}/../../kernel/kata_config_version") -KERNEL_REQUIRED_VERSION=$(pkg_version "${kernel_version}.${KERNEL_CONFIG_VERSION}" "" "") +KERNEL_REQUIRED_VERSION=$(pkg_2_version "kata_linux") info "kata-linux-container ${KERNEL_REQUIRED_VERSION}" -KSM_THROTTLER_REQUIRED_VERSION=$(pkg_version "${kata_ksm_throttler_version}" "" "") +KSM_THROTTLER_REQUIRED_VERSION=$(pkg_2_version "kata_ksm_throttler") info "ksm-throttler ${KSM_THROTTLER_REQUIRED_VERSION}" -KATA_IMAGE_REQUIRED_VERSION=$(pkg_version "${kata_osbuilder_version}" "" "") +KATA_IMAGE_REQUIRED_VERSION=$(pkg_2_version "kata_osbuilder") info "image ${KATA_IMAGE_REQUIRED_VERSION}" -KATA_QEMU_VANILLA_REQUIRED_VERSION=$(pkg_version "${qemu_vanilla_version}" "" "${qemu_vanilla_hash}") + +KATA_QEMU_VANILLA_REQUIRED_VERSION=$(pkg_2_version "qemu_vanilla") info "qemu-vanilla ${KATA_QEMU_VANILLA_REQUIRED_VERSION}" if [ "$arch" == "x86_64" ]; then - KATA_QEMU_LITE_REQUIRED_VERSION=$(pkg_version "${qemu_lite_version}" "" "${qemu_lite_hash}") + KATA_QEMU_LITE_REQUIRED_VERSION=$(pkg_2_version "qemu_lite") info "qemu-lite ${KATA_QEMU_LITE_REQUIRED_VERSION}" - replace_list+=("qemu_lite_version=${KATA_QEMU_LITE_REQUIRED_VERSION}") fi PROJECT_REPO=${PROJECT_REPO:-home:${OBS_PROJECT}:${OBS_SUBPROJECT}/runtime} @@ -85,7 +117,7 @@ replace_list+=( "RELEASE=$RELEASE" "VERSION=$VERSION" "kata_osbuilder_version=${KATA_IMAGE_REQUIRED_VERSION}" - "kata_proxy_version=${PROXY_REQUIRED_VERESION}" + "kata_proxy_version=${PROXY_REQUIRED_VERSION}" "kata_shim_version=${SHIM_REQUIRED_VERSION}" "ksm_throttler_version=${KSM_THROTTLER_REQUIRED_VERSION}" "linux_container_version=${KERNEL_REQUIRED_VERSION}" diff --git a/obs-packaging/scripts/obs-pkgs.sh b/obs-packaging/scripts/obs-pkgs.sh index e659ea1ad2..680d9d9eef 100755 --- a/obs-packaging/scripts/obs-pkgs.sh +++ b/obs-packaging/scripts/obs-pkgs.sh @@ -4,9 +4,16 @@ # SPDX-License-Identifier: Apache-2.0 # -#Note:Lets update qemu and the kernel first, they take longer to build. -#Note: runtime is build at the end to get the version from all its dependencies. -OBS_PKGS_PROJECTS=( +#NOTES: +# - update qemu and the kernel first, they take longer to build +# - runtime is always built at the end, as it depends on all the other listed +# packages, and we need to get the full version of all those. + +typeset -a OBS_PKGS_PROJECTS + +[ "$(uname -m)" = "x86_64" ] && OBS_PKGS_PROJECTS+=(qemu-lite) + +OBS_PKGS_PROJECTS+=( qemu-vanilla linux-container kata-containers-image @@ -15,7 +22,3 @@ OBS_PKGS_PROJECTS=( ksm-throttler runtime ) - -if [ "$(uname -m)" == "x86_64" ]; then - OBS_PKGS_PROJECTS=("qemu-lite" "${OBS_PKGS_PROJECTS[@]}") -fi diff --git a/obs-packaging/scripts/pkglib.sh b/obs-packaging/scripts/pkglib.sh index 0cb55ed8e7..ec6c7b60f9 100644 --- a/obs-packaging/scripts/pkglib.sh +++ b/obs-packaging/scripts/pkglib.sh @@ -55,15 +55,15 @@ export GO_ARCH function display_help() { cat <<-EOL $SCRIPT_NAME - + This script is intended to create Kata Containers packages for the OBS (Open Build Service) platform. - + Usage: $SCRIPT_NAME [options] - + Options: - + -l --local-build Build the runtime locally -b --branch Build with a given branch name -p --push Push changes to OBS @@ -74,14 +74,14 @@ function display_help() { -C --clean Clean the repository -V --verify Verify the environment -h --help Display this help message - + Usage examples: - + $SCRIPT_NAME --local-build --branch staging $SCRIPT_NAME --push --api-url http://127.0.0.1 $SCRIPT_NAME --push --obs-repository home:userx/repository $SCRIPT_NAME --push - + EOL exit 1 }