mirror of
https://github.com/kata-containers/kata-containers.git
synced 2025-04-27 11:31:05 +00:00
Since yq frequently updates, let's upgrade to a version from February to bypass potential issues with versions 4.41-4.43 for now. We can always upgrade to the newest version if necessary. Fixes #9354 Depends-on:github.com/kata-containers/tests#5818 Signed-off-by: Beraldo Leal <bleal@redhat.com>
98 lines
2.1 KiB
Bash
Executable File
98 lines
2.1 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
#
|
|
# Copyright (c) 2019 IBM
|
|
#
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
#
|
|
|
|
# If we fail for any reason a message will be displayed
|
|
die() {
|
|
msg="$*"
|
|
echo "ERROR: $msg" >&2
|
|
exit 1
|
|
}
|
|
|
|
# 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.40.7
|
|
local precmd=""
|
|
INSTALL_IN_GOPATH=${INSTALL_IN_GOPATH:-true}
|
|
|
|
if [ "${INSTALL_IN_GOPATH}" == "true" ];then
|
|
GOPATH=${GOPATH:-${HOME}/go}
|
|
mkdir -p "${GOPATH}/bin"
|
|
local yq_path="${GOPATH}/bin/yq"
|
|
else
|
|
yq_path="/usr/local/bin/yq"
|
|
# 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
|
|
[ -x "${yq_path}" ] && [ "`${yq_path} --version`"X == "yq version ${yq_version}"X ] && return
|
|
|
|
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
|
|
;;
|
|
"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}"
|
|
[ $? -ne 0 ] && 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
|