hack/versions: extract most from vendor.conf
This sets `$what_VERSION` and `$what_REPO` for runc, cni, containerd and kubernetes based on vendor.conf, removing the need to duplicate things in hack/versions. With this `update_hack_versions` becomes redundant so remove it and both calls. Since CONTAINERD_REPO is now unconditionally set we can also simplify the fetching of vendor.conf in update-vendor.sh a bit, so do so. Further since `*_REPO` are now unconditionally set we can support alternative clone paths for all of these repos by adjusting checkout_repo to make the 3rd argument non-optional and always passing it. Since `CRITOOL_VERSION` is not coming from `vendor.conf` (since it is not used from Go code) we manually set `CRITOOL_REPO` for consistency. The final wrinkle is that `k8s.io/kubernetes` is has a Go specific redirect in the form of HTML meta headers returned from https://k8s.io/kubernetes/?go-get=1 which point to the real repo to clone. Parsing that in shell is tricky so just hardcode that. Fixes #540. Signed-off-by: Ian Campbell <ijc@docker.com>
This commit is contained in:
@@ -61,3 +61,29 @@ sha256() {
|
||||
shasum -a256 "$1" | awk '{ print $1 }'
|
||||
fi
|
||||
}
|
||||
|
||||
# Takes a prefix ($what) and a $repo and sets `$what_VERSION` and
|
||||
# `$what_REPO` from vendor.conf, where `$what_REPO` defaults to $repo
|
||||
# but is overridden by the 3rd field of vendor.conf.
|
||||
from-vendor() {
|
||||
local what=$1
|
||||
local repo=$2
|
||||
local vendor=$(dirname "${BASH_SOURCE[0]}")/../vendor.conf
|
||||
setvars=$(awk -v REPO=$repo -v WHAT=$what -- '
|
||||
BEGIN { rc=1 } # Assume we did not find what we were looking for.
|
||||
// {
|
||||
if ($1 == REPO) {
|
||||
if ($3 != "") { REPO = $3 }; # Override repo.
|
||||
printf("%s_VERSION=%s; %s_REPO=%s\n", WHAT, $2, WHAT, REPO);
|
||||
rc=0; # Note success for use in END block.
|
||||
exit # No point looking further.
|
||||
}
|
||||
}
|
||||
END { exit rc } # Exit with the desired code.
|
||||
' $vendor)
|
||||
if [ $? -ne 0 ] ; then
|
||||
echo "failed to get version of $repo from $vendor" >&2
|
||||
exit 1
|
||||
fi
|
||||
eval $setvars
|
||||
}
|
||||
|
Reference in New Issue
Block a user