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=("$@") local projectsList=("$@")
[ "${#projectsList[@]}" = "0" ] && projectsList=("${OBS_PKGS_PROJECTS[@]}") [ "${#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 pushd "${script_dir}" >>/dev/null
local compare_result="$(./gen_versions_txt.sh --compare ${branch})" local compare_result="$(./gen_versions_txt.sh --compare ${branch})"
[[ "$compare_result" =~ different ]] && die "$compare_result -- you need to run gen_versions_txt.sh" [[ "$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 OBS_PUSH=false
VERBOSE=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 # Parse arguments
cli "$@" cli "$@"
[ "$VERBOSE" == "true" ] && set -x [ "$VERBOSE" == "true" ] && set -x
# Package depedencies # Package depedencies
info "requires:" info "Requires:"
PROXY_REQUIRED_VERESION=$(pkg_version "${kata_proxy_version}" "" "") PROXY_REQUIRED_VERSION=$(pkg_2_version "kata_proxy")
info "proxy ${PROXY_REQUIRED_VERESION}" 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}" info "shim ${SHIM_REQUIRED_VERSION}"
KERNEL_CONFIG_VERSION=$(cat "${SCRIPT_DIR}/../../kernel/kata_config_version") KERNEL_REQUIRED_VERSION=$(pkg_2_version "kata_linux")
KERNEL_REQUIRED_VERSION=$(pkg_version "${kernel_version}.${KERNEL_CONFIG_VERSION}" "" "")
info "kata-linux-container ${KERNEL_REQUIRED_VERSION}" 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}" 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}" 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}" info "qemu-vanilla ${KATA_QEMU_VANILLA_REQUIRED_VERSION}"
if [ "$arch" == "x86_64" ]; then 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}" info "qemu-lite ${KATA_QEMU_LITE_REQUIRED_VERSION}"
replace_list+=("qemu_lite_version=${KATA_QEMU_LITE_REQUIRED_VERSION}")
fi fi
PROJECT_REPO=${PROJECT_REPO:-home:${OBS_PROJECT}:${OBS_SUBPROJECT}/runtime} PROJECT_REPO=${PROJECT_REPO:-home:${OBS_PROJECT}:${OBS_SUBPROJECT}/runtime}
@ -85,7 +117,7 @@ replace_list+=(
"RELEASE=$RELEASE" "RELEASE=$RELEASE"
"VERSION=$VERSION" "VERSION=$VERSION"
"kata_osbuilder_version=${KATA_IMAGE_REQUIRED_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}" "kata_shim_version=${SHIM_REQUIRED_VERSION}"
"ksm_throttler_version=${KSM_THROTTLER_REQUIRED_VERSION}" "ksm_throttler_version=${KSM_THROTTLER_REQUIRED_VERSION}"
"linux_container_version=${KERNEL_REQUIRED_VERSION}" "linux_container_version=${KERNEL_REQUIRED_VERSION}"

View File

@ -4,9 +4,16 @@
# SPDX-License-Identifier: Apache-2.0 # SPDX-License-Identifier: Apache-2.0
# #
#Note:Lets update qemu and the kernel first, they take longer to build. #NOTES:
#Note: runtime is build at the end to get the version from all its dependencies. # - update qemu and the kernel first, they take longer to build
OBS_PKGS_PROJECTS=( # - 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 qemu-vanilla
linux-container linux-container
kata-containers-image kata-containers-image
@ -15,7 +22,3 @@ OBS_PKGS_PROJECTS=(
ksm-throttler ksm-throttler
runtime runtime
) )
if [ "$(uname -m)" == "x86_64" ]; then
OBS_PKGS_PROJECTS=("qemu-lite" "${OBS_PKGS_PROJECTS[@]}")
fi

View File

@ -55,15 +55,15 @@ export GO_ARCH
function display_help() { function display_help() {
cat <<-EOL cat <<-EOL
$SCRIPT_NAME $SCRIPT_NAME
This script is intended to create Kata Containers packages for the OBS This script is intended to create Kata Containers packages for the OBS
(Open Build Service) platform. (Open Build Service) platform.
Usage: Usage:
$SCRIPT_NAME [options] $SCRIPT_NAME [options]
Options: Options:
-l --local-build Build the runtime locally -l --local-build Build the runtime locally
-b --branch Build with a given branch name -b --branch Build with a given branch name
-p --push Push changes to OBS -p --push Push changes to OBS
@ -74,14 +74,14 @@ function display_help() {
-C --clean Clean the repository -C --clean Clean the repository
-V --verify Verify the environment -V --verify Verify the environment
-h --help Display this help message -h --help Display this help message
Usage examples: Usage examples:
$SCRIPT_NAME --local-build --branch staging $SCRIPT_NAME --local-build --branch staging
$SCRIPT_NAME --push --api-url http://127.0.0.1 $SCRIPT_NAME --push --api-url http://127.0.0.1
$SCRIPT_NAME --push --obs-repository home:userx/repository $SCRIPT_NAME --push --obs-repository home:userx/repository
$SCRIPT_NAME --push $SCRIPT_NAME --push
EOL EOL
exit 1 exit 1
} }