mirror of
https://github.com/kata-containers/kata-containers.git
synced 2025-09-28 20:15:51 +00:00
Move the common shell code to a helper script that is sourced by all parts. Add extra quoting to some variables in the snap config file and simplify. Fixes: #4304. Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
115 lines
2.3 KiB
Bash
115 lines
2.3 KiB
Bash
#!/usr/bin/env bash
|
|
#
|
|
# Copyright (c) 2022 Intel Corporation
|
|
#
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
|
|
# Description: Idempotent script to be sourced by all parts in a
|
|
# snapcraft config file.
|
|
|
|
set -o errexit
|
|
set -o nounset
|
|
set -o pipefail
|
|
|
|
# XXX: Bash-specific code. zsh doesn't support this option and that *does*
|
|
# matter if this script is run sourced... since it'll be using zsh! ;)
|
|
[ -n "$BASH_VERSION" ] && set -o errtrace
|
|
|
|
[ -n "${DEBUG:-}" ] && set -o xtrace
|
|
|
|
die()
|
|
{
|
|
echo >&2 "ERROR: $0: $*"
|
|
}
|
|
|
|
[ -n "${SNAPCRAFT_STAGE:-}" ] ||\
|
|
die "must be sourced from a snapcraft config file"
|
|
|
|
snap_yq_version=3.4.1
|
|
|
|
snap_common_install_yq()
|
|
{
|
|
export yq="${SNAPCRAFT_STAGE}/bin/yq"
|
|
|
|
local yq_pkg
|
|
yq_pkg="github.com/mikefarah/yq"
|
|
|
|
local yq_url
|
|
yq_url="https://${yq_pkg}/releases/download/${snap_yq_version}/yq_${goos}_${goarch}"
|
|
curl -o "${yq}" -L "${yq_url}"
|
|
chmod +x "${yq}"
|
|
}
|
|
|
|
# Function that should be called for each snap "part" in
|
|
# snapcraft.yaml.
|
|
snap_common_main()
|
|
{
|
|
# Architecture
|
|
arch="$(uname -m)"
|
|
|
|
case "${arch}" in
|
|
aarch64)
|
|
goarch="arm64"
|
|
qemu_arch="${arch}"
|
|
;;
|
|
|
|
ppc64le)
|
|
goarch="ppc64le"
|
|
qemu_arch="ppc64"
|
|
;;
|
|
|
|
s390x)
|
|
goarch="${arch}"
|
|
qemu_arch="${arch}"
|
|
;;
|
|
|
|
x86_64)
|
|
goarch="amd64"
|
|
qemu_arch="${arch}"
|
|
;;
|
|
|
|
*) die "unsupported architecture: ${arch}" ;;
|
|
esac
|
|
|
|
dpkg_arch=$(dpkg --print-architecture)
|
|
|
|
# golang
|
|
#
|
|
# We need the O/S name in golang format, but since we don't
|
|
# know if the godeps part has run, we don't know if golang is
|
|
# available yet, hence fall back to a standard system command.
|
|
goos="$(go env GOOS &>/dev/null || true)"
|
|
[ -z "$goos" ] && goos=$(uname -s|tr '[A-Z]' '[a-z]')
|
|
|
|
export GOROOT="${SNAPCRAFT_STAGE}"
|
|
export GOPATH="${GOROOT}/gopath"
|
|
export GO111MODULE="auto"
|
|
|
|
mkdir -p "${GOPATH}/bin"
|
|
export PATH="${GOPATH}/bin:${PATH}"
|
|
|
|
# Proxy
|
|
export http_proxy="${http_proxy:-}"
|
|
export https_proxy="${https_proxy:-}"
|
|
|
|
# Binaries
|
|
mkdir -p "${SNAPCRAFT_STAGE}/bin"
|
|
|
|
export PATH="$PATH:${SNAPCRAFT_STAGE}/bin"
|
|
|
|
# YAML query tool
|
|
export yq="${SNAPCRAFT_STAGE}/bin/yq"
|
|
|
|
# Kata paths
|
|
export kata_dir=$(printf "%s/src/github.com/%s/%s" \
|
|
"${GOPATH}" \
|
|
"${SNAPCRAFT_PROJECT_NAME}" \
|
|
"${SNAPCRAFT_PROJECT_NAME}")
|
|
|
|
export versions_file="${kata_dir}/versions.yaml"
|
|
|
|
[ -n "${yq:-}" ] && [ -x "${yq:-}" ] || snap_common_install_yq
|
|
}
|
|
|
|
snap_common_main
|