mirror of
https://github.com/aljazceru/kata-containers.git
synced 2025-12-26 02:24:21 +01:00
For RPM packages (but not for DEBs), OBS does not use the release number
provided in the spec file, hence, when specifying a
`Requires: package = version-release` dependency, it's not possible to know
in advance the correct release number until that reuired package
is built.
Note that omitting the release number works for RPM packages but not for DEB.
This fixes/complements e6dac82
Fixes: #563
Signed-off-by: Marco Vedovati <mvedovati@suse.com>
175 lines
5.2 KiB
Bash
Executable File
175 lines
5.2 KiB
Bash
Executable File
#!/bin/bash
|
|
#
|
|
# Copyright (c) 2018 Intel Corporation
|
|
#
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
#
|
|
|
|
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
|
|
# ex: ts=8 sw=4 sts=4 et filetype=sh
|
|
#
|
|
# Automation script to create specs to build kata-runtime
|
|
# Default: Build is the one specified in file configure.ac
|
|
# located at the root of the repository.
|
|
[ -z "${DEBUG}" ] || set -o xtrace
|
|
|
|
set -o errexit
|
|
set -o nounset
|
|
set -o pipefail
|
|
|
|
source ../versions.txt
|
|
source ../scripts/pkglib.sh
|
|
|
|
SCRIPT_NAME=$0
|
|
SCRIPT_DIR=$(dirname "$0")
|
|
replace_list=()
|
|
|
|
# Package information
|
|
# Used by pkglib.sh
|
|
export PKG_NAME="kata-runtime"
|
|
VERSION=$kata_runtime_version
|
|
|
|
# Used by pkglib
|
|
export GENERATED_FILES=(kata-runtime.spec kata-runtime.dsc debian.control debian.rules _service)
|
|
# Used by pkglib
|
|
export STATIC_FILES=(debian.compat)
|
|
|
|
#cli flags
|
|
LOCAL_BUILD=false
|
|
OBS_PUSH=false
|
|
VERBOSE=false
|
|
|
|
#
|
|
# Given the name of a package returns the full package version to be used for
|
|
# DEB and RPM dependency constraints as follows, composed of:
|
|
# - a version,
|
|
# - an optional hash (only for select packages),
|
|
# - a release number (only for "deb" packages)
|
|
#
|
|
pkg_required_ver() {
|
|
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//kernel/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
|
|
|
|
local debVer=$(pkg_version "$version" "$release" "$gitHash")
|
|
local rpmVer=$(pkg_version "$version" "" "$gitHash")
|
|
|
|
echo "${debVer}" "${rpmVer}"
|
|
}
|
|
|
|
|
|
# Parse arguments
|
|
cli "$@"
|
|
|
|
[ "$VERBOSE" == "true" ] && set -x
|
|
|
|
declare -a pkgVersions
|
|
# Package depedencies
|
|
info "Requires:"
|
|
pkgVersions=($(pkg_required_ver "kata_proxy"))
|
|
declare -A PROXY_REQUIRED_VERSION
|
|
PROXY_REQUIRED_VERSION["deb"]=${pkgVersions[0]}
|
|
PROXY_REQUIRED_VERSION["rpm"]=${pkgVersions[1]}
|
|
info "proxy ${PROXY_REQUIRED_VERSION[@]}"
|
|
|
|
declare -A SHIM_REQUIRED_VERSION
|
|
pkgVersions=($(pkg_required_ver "kata_shim"))
|
|
SHIM_REQUIRED_VERSION["deb"]=${pkgVersions[0]}
|
|
SHIM_REQUIRED_VERSION["rpm"]=${pkgVersions[1]}
|
|
info "shim ${SHIM_REQUIRED_VERSION[@]}"
|
|
|
|
declare -A KERNEL_REQUIRED_VERSION
|
|
pkgVersions=($(pkg_required_ver "kernel"))
|
|
KERNEL_REQUIRED_VERSION["deb"]=${pkgVersions[0]}
|
|
KERNEL_REQUIRED_VERSION["rpm"]=${pkgVersions[1]}
|
|
info "kata-linux-container ${KERNEL_REQUIRED_VERSION[@]}"
|
|
|
|
declare -A KSM_THROTTLER_REQUIRED_VERSION
|
|
pkgVersions=($(pkg_required_ver "kata_ksm_throttler"))
|
|
KSM_THROTTLER_REQUIRED_VERSION["deb"]=${pkgVersions[0]}
|
|
KSM_THROTTLER_REQUIRED_VERSION["rpm"]=${pkgVersions[1]}
|
|
info "ksm-throttler ${KSM_THROTTLER_REQUIRED_VERSION[@]}"
|
|
|
|
declare -A KATA_IMAGE_REQUIRED_VERSION
|
|
pkgVersions=($(pkg_required_ver "kata_osbuilder"))
|
|
KATA_IMAGE_REQUIRED_VERSION["deb"]=${pkgVersions[0]}
|
|
KATA_IMAGE_REQUIRED_VERSION["rpm"]=${pkgVersions[1]}
|
|
info "image ${KATA_IMAGE_REQUIRED_VERSION[@]}"
|
|
|
|
|
|
declare -A KATA_QEMU_VANILLA_REQUIRED_VERSION
|
|
pkgVersions=($(pkg_required_ver "qemu_vanilla"))
|
|
KATA_QEMU_VANILLA_REQUIRED_VERSION["deb"]=${pkgVersions[0]}
|
|
KATA_QEMU_VANILLA_REQUIRED_VERSION["rpm"]=${pkgVersions[1]}
|
|
info "qemu-vanilla ${KATA_QEMU_VANILLA_REQUIRED_VERSION[@]}"
|
|
|
|
if [ "$arch" == "x86_64" ]; then
|
|
declare -A KATA_QEMU_LITE_REQUIRED_VERSION
|
|
pkgVersions=($(pkg_required_ver "qemu_lite"))
|
|
KATA_QEMU_LITE_REQUIRED_VERSION["deb"]=${pkgVersions[0]}
|
|
KATA_QEMU_LITE_REQUIRED_VERSION["rpm"]=${pkgVersions[1]}
|
|
info "qemu-lite ${KATA_QEMU_LITE_REQUIRED_VERSION[@]}"
|
|
replace_list+=( \
|
|
"qemu_lite_version=${KATA_QEMU_LITE_REQUIRED_VERSION["rpm"]}" \
|
|
"qemu_lite_version_release=${KATA_QEMU_LITE_REQUIRED_VERSION["deb"]}" \
|
|
)
|
|
fi
|
|
|
|
PROJECT_REPO=${PROJECT_REPO:-home:${OBS_PROJECT}:${OBS_SUBPROJECT}/runtime}
|
|
RELEASE=$(get_obs_pkg_release "${PROJECT_REPO}")
|
|
((RELEASE++))
|
|
|
|
set_versions "$kata_runtime_hash"
|
|
|
|
replace_list+=(
|
|
"GO_CHECKSUM=$go_checksum"
|
|
"GO_VERSION=$go_version"
|
|
"GO_ARCH=$GO_ARCH"
|
|
"HASH=$short_hashtag"
|
|
"RELEASE=$RELEASE"
|
|
"VERSION=$VERSION"
|
|
"kata_osbuilder_version=${KATA_IMAGE_REQUIRED_VERSION["rpm"]}"
|
|
"kata_osbuilder_version_release=${KATA_IMAGE_REQUIRED_VERSION["deb"]}"
|
|
"kata_proxy_version=${PROXY_REQUIRED_VERSION["rpm"]}"
|
|
"kata_proxy_version_release=${PROXY_REQUIRED_VERSION["deb"]}"
|
|
"kata_shim_version=${SHIM_REQUIRED_VERSION["rpm"]}"
|
|
"kata_shim_version_release=${SHIM_REQUIRED_VERSION["deb"]}"
|
|
"ksm_throttler_version=${KSM_THROTTLER_REQUIRED_VERSION["rpm"]}"
|
|
"ksm_throttler_version_release=${KSM_THROTTLER_REQUIRED_VERSION["deb"]}"
|
|
"linux_container_version=${KERNEL_REQUIRED_VERSION["rpm"]}"
|
|
"linux_container_version_release=${KERNEL_REQUIRED_VERSION["deb"]}"
|
|
"qemu_vanilla_version=${KATA_QEMU_VANILLA_REQUIRED_VERSION["rpm"]}"
|
|
"qemu_vanilla_version_release=${KATA_QEMU_VANILLA_REQUIRED_VERSION["deb"]}"
|
|
)
|
|
|
|
verify
|
|
echo "Verify succeed."
|
|
get_git_info
|
|
changelog_update $VERSION
|
|
generate_files "$SCRIPT_DIR" "${replace_list[@]}"
|
|
build_pkg "${PROJECT_REPO}"
|