mirror of
https://github.com/flatcar/scripts.git
synced 2025-08-07 13:06:59 +02:00
This seems to be the only place where we are using wget for downloading anything - all other places use curl. Thus switch to curl here too. This also makes the job output much shorter as previously it was spammed with progress reporting.
97 lines
3.1 KiB
Bash
97 lines
3.1 KiB
Bash
#!/bin/bash
|
|
|
|
# Copyright (c) 2013 The CoreOS Authors. All rights reserved.
|
|
# Use of this source code is governed by a BSD-style license that can be
|
|
# found in the LICENSE file.
|
|
|
|
# common.sh must be properly sourced before this file.
|
|
[[ -n "${FLATCAR_SDK_VERSION}" ]] || exit 1
|
|
|
|
FLATCAR_SDK_ARCH="amd64" # We are unlikely to support anything else.
|
|
FLATCAR_SDK_TARBALL="flatcar-sdk-${FLATCAR_SDK_ARCH}-${FLATCAR_SDK_VERSION}.tar.bz2"
|
|
FLATCAR_SDK_TARBALL_CACHE="${REPO_CACHE_DIR}/sdks"
|
|
FLATCAR_SDK_TARBALL_PATH="${FLATCAR_SDK_TARBALL_CACHE}/${FLATCAR_SDK_TARBALL}"
|
|
FLATCAR_DEV_BUILDS_SDK="${FLATCAR_DEV_BUILDS_SDK-$FLATCAR_DEV_BUILDS/sdk}"
|
|
FLATCAR_SDK_URL="${FLATCAR_DEV_BUILDS_SDK}/${FLATCAR_SDK_ARCH}/${FLATCAR_SDK_VERSION}/${FLATCAR_SDK_TARBALL}"
|
|
|
|
# Download the current SDK tarball (if required) and verify digests/sig
|
|
sdk_download_tarball() {
|
|
if sdk_verify_digests; then
|
|
return 0
|
|
fi
|
|
|
|
info "Downloading ${FLATCAR_SDK_TARBALL}"
|
|
local server url suffix
|
|
local -a suffixes
|
|
|
|
suffixes=('' '.DIGESTS') # TODO(marineam): download .asc
|
|
for server in "${FLATCAR_SDK_SERVERS[@]}"; do
|
|
url="${server}/sdk/${FLATCAR_SDK_ARCH}/${FLATCAR_SDK_VERSION}/${FLATCAR_SDK_TARBALL}"
|
|
info "URL: ${url}"
|
|
for suffix in "${suffixes[@]}"; do
|
|
# If all downloads fail, we will detect it later.
|
|
if ! curl --fail --silent --show-error --location --retry-delay 1 --retry 60 \
|
|
--retry-connrefused --retry-max-time 60 --connect-timeout 20 \
|
|
--output "${FLATCAR_SDK_TARBALL_PATH}${suffix}" "${url}${suffix}"; then
|
|
break
|
|
fi
|
|
done
|
|
if _sdk_check_downloads "${FLATCAR_SDK_TARBALL_PATH}" "${suffixes[@]}"; then
|
|
if sdk_verify_digests; then
|
|
sdk_clean_cache
|
|
return 0
|
|
fi
|
|
info "SDK digest verification failed, cleaning up and will try another server"
|
|
else
|
|
info "Downloading SDK from ${url} failed, cleaning up and will try another server"
|
|
fi
|
|
_sdk_remove_downloads "${FLATCAR_SDK_TARBALL_PATH}" "${suffixes[@]}"
|
|
done
|
|
die_notrace "SDK download failed!"
|
|
}
|
|
|
|
_sdk_remove_downloads() {
|
|
local path="${1}"; shift
|
|
# rest of the params are suffixes
|
|
|
|
rm -f "${@/#/${path}}"
|
|
}
|
|
|
|
_sdk_check_downloads() {
|
|
local path="${1}"; shift
|
|
# rest of the params are suffixes
|
|
local suffix
|
|
|
|
for suffix; do
|
|
if [[ ! -s "${path}${suffix}" ]]; then
|
|
return 1
|
|
fi
|
|
done
|
|
return 0
|
|
}
|
|
|
|
sdk_verify_digests() {
|
|
if [[ ! -f "${FLATCAR_SDK_TARBALL_PATH}" || \
|
|
! -f "${FLATCAR_SDK_TARBALL_PATH}.DIGESTS" ]]; then
|
|
return 1
|
|
fi
|
|
|
|
# TODO(marineam): Add gpg signature verification too.
|
|
|
|
verify_digests "${FLATCAR_SDK_TARBALL_PATH}" || return 1
|
|
}
|
|
|
|
sdk_clean_cache() {
|
|
pushd "${FLATCAR_SDK_TARBALL_CACHE}" >/dev/null
|
|
local filename
|
|
for filename in *; do
|
|
if [[ "${filename}" == "${FLATCAR_SDK_TARBALL}"* ]]; then
|
|
continue
|
|
fi
|
|
info "Cleaning up ${filename}"
|
|
# Not a big deal if this fails
|
|
rm -f "${filename}" || true
|
|
done
|
|
popd >/dev/null
|
|
}
|