mirror of
https://github.com/kata-containers/kata-containers.git
synced 2025-04-27 11:31:05 +00:00
manual fixes of various issues. Related to: #10951 Signed-off-by: Lukáš Doktor <ldoktor@redhat.com>
119 lines
2.5 KiB
Bash
Executable File
119 lines
2.5 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
#
|
|
# Copyright (c) 2019 IBM
|
|
#
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
#
|
|
|
|
[[ -n "${DEBUG}" ]] && set -o xtrace
|
|
|
|
# If we fail for any reason a message will be displayed
|
|
die() {
|
|
msg="$*"
|
|
echo "ERROR: ${msg}" >&2
|
|
exit 1
|
|
}
|
|
|
|
function verify_yq_exists() {
|
|
local yq_path=$1
|
|
local yq_version=$2
|
|
local expected="yq (https://github.com/mikefarah/yq/) version ${yq_version}"
|
|
if [[ -x "${yq_path}" ]] && [[ "$(${yq_path} --version)"X == "${expected}"X ]]; then
|
|
return 0
|
|
else
|
|
return 1
|
|
fi
|
|
}
|
|
|
|
# Install the yq yaml query package from the mikefarah github repo
|
|
# Install via binary download, as we may not have golang installed at this point
|
|
function install_yq() {
|
|
local yq_pkg="github.com/mikefarah/yq"
|
|
local yq_version=v4.44.5
|
|
local precmd=""
|
|
local yq_path=""
|
|
INSTALL_IN_GOPATH=${INSTALL_IN_GOPATH:-true}
|
|
|
|
if [[ "${INSTALL_IN_GOPATH}" == "true" ]]; then
|
|
GOPATH=${GOPATH:-${HOME}/go}
|
|
mkdir -p "${GOPATH}/bin"
|
|
yq_path="${GOPATH}/bin/yq"
|
|
else
|
|
yq_path="/usr/local/bin/yq"
|
|
fi
|
|
if verify_yq_exists "${yq_path}" "${yq_version}"; then
|
|
echo "yq is already installed in correct version"
|
|
return
|
|
fi
|
|
if [[ "${yq_path}" == "/usr/local/bin/yq" ]]; then
|
|
# Check if we need sudo to install yq
|
|
if [[ ! -w "/usr/local/bin" ]]; then
|
|
# Check if we have sudo privileges
|
|
if ! sudo -n true 2>/dev/null; then
|
|
die "Please provide sudo privileges to install yq"
|
|
else
|
|
precmd="sudo"
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
read -r -a sysInfo <<< "$(uname -sm)"
|
|
|
|
case "${sysInfo[0]}" in
|
|
"Linux" | "Darwin")
|
|
goos="${sysInfo[0],}"
|
|
;;
|
|
"*")
|
|
die "OS ${sysInfo[0]} not supported"
|
|
;;
|
|
esac
|
|
|
|
case "${sysInfo[1]}" in
|
|
"aarch64")
|
|
goarch=arm64
|
|
;;
|
|
"arm64")
|
|
# If we're on an apple silicon machine, just assign amd64.
|
|
# The version of yq we use doesn't have a darwin arm build,
|
|
# but Rosetta can come to the rescue here.
|
|
if [[ ${goos} == "Darwin" ]]; then
|
|
goarch=amd64
|
|
else
|
|
goarch=arm64
|
|
fi
|
|
;;
|
|
"riscv64")
|
|
goarch=riscv64
|
|
;;
|
|
"ppc64le")
|
|
goarch=ppc64le
|
|
;;
|
|
"x86_64")
|
|
goarch=amd64
|
|
;;
|
|
"s390x")
|
|
goarch=s390x
|
|
;;
|
|
"*")
|
|
die "Arch ${sysInfo[1]} not supported"
|
|
;;
|
|
esac
|
|
|
|
|
|
# Check curl
|
|
if ! command -v "curl" >/dev/null; then
|
|
die "Please install curl"
|
|
fi
|
|
|
|
## NOTE: ${var,,} => gives lowercase value of var
|
|
local yq_url="https://${yq_pkg}/releases/download/${yq_version}/yq_${goos}_${goarch}"
|
|
${precmd} curl -o "${yq_path}" -LSsf "${yq_url}" || die "Download ${yq_url} failed"
|
|
${precmd} chmod +x "${yq_path}"
|
|
|
|
if ! command -v "${yq_path}" >/dev/null; then
|
|
die "Cannot not get ${yq_path} executable"
|
|
fi
|
|
}
|
|
|
|
install_yq
|