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 <mvedovati@suse.com>
This commit is contained in:
Marco Vedovati 2019-05-22 20:27:47 +02:00
parent e9ed1f5c55
commit e6dac824fc
4 changed files with 64 additions and 26 deletions

View File

@ -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"

View File

@ -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}"

View File

@ -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