diff --git a/common.sh b/common.sh index 7928df1ef5..23509f7945 100644 --- a/common.sh +++ b/common.sh @@ -264,7 +264,7 @@ load_environment_var() { shift for name in "$@"; do value=$(grep "^${name}=" "${file}" | sed 's|"||g') - export "${value}" + [[ -n "${value}" ]] && export "${value}" done } @@ -299,7 +299,8 @@ if [[ -f "${REPO_MANIFESTS_DIR}/version.txt" ]]; then FLATCAR_VERSION_ID FLATCAR_SDK_VERSION else load_environment_var "${REPO_MANIFESTS_DIR}/version.txt" \ - FLATCAR_VERSION_ID FLATCAR_BUILD_ID FLATCAR_SDK_VERSION + FLATCAR_VERSION_ID FLATCAR_BUILD_ID FLATCAR_SDK_VERSION \ + FLATCAR_DEV_BUILDS FLATCAR_DEV_BUILDS_SDK # Don't promote FLATCAR_BUILD_ID into an environment variable when it # didn't start as one, since we don't want it leaking into the SDK # chroot environment via ENVIRONMENT_WHITELIST. @@ -309,7 +310,8 @@ if [[ -f "${REPO_MANIFESTS_DIR}/version.txt" ]]; then elif [[ -f "${SCRIPT_LOCATION}/version.txt" ]]; then # This only happens in update.zip where we must use the current build id. load_environment_var "${SCRIPT_LOCATION}/version.txt" \ - FLATCAR_VERSION_ID FLATCAR_BUILD_ID FLATCAR_SDK_VERSION + FLATCAR_VERSION_ID FLATCAR_BUILD_ID FLATCAR_SDK_VERSION \ + FLATCAR_DEV_BUILDS FLATCAR_DEV_BUILDS_SDK else die "Unable to locate version.txt" fi diff --git a/set_version b/set_version new file mode 100755 index 0000000000..717f48403c --- /dev/null +++ b/set_version @@ -0,0 +1,91 @@ +#!/bin/bash + +set -euo pipefail + +DEFAULT_BASE_URL="https://storage.googleapis.com/flatcar-jenkins" +DEV_BOARD_URL="${DEFAULT_BASE_URL}/developer" +DEV_SDK_URL="${DEFAULT_BASE_URL}/developer/sdk" +FILE=~/trunk/.repo/manifests/version.txt +FLATCAR_DEV_BUILDS_SDK="" +FLATCAR_SDK_VERSION="" +FLATCAR_DEV_BUILDS="" +FLATCAR_VERSION="" +FLATCAR_VERSION_ID="" + +# To keep this script usable outside of the SDK chroot, do not include common.sh here. + +if [[ $# = 0 ]] || [[ "$1" = "-h" ]] || [[ "$1" = "--help" ]]; then + echo "Updates ${FILE} with new values to specify which binary packages to use +Usage: $0 FLAGS... + --board-version (VERSION|BOARD/CHANNEL-nightly): Set FLATCAR_VERSION=VERSION and + FLATCAR_VERSION_ID=VERSION where VERSION can + be resolved by looking up the latest build + referenced by + ${DEV_BOARD_URL}/boards/BOARD/CHANNEL-nightly.txt + --dev-board: Set FLATCAR_DEV_BUILDS=${DEV_BOARD_URL} + --no-dev-board: Remove existing FLATCAR_DEV_BUILDS + --sdk-version VERSION: Set FLATCAR_SDK_VERSION=VERSION + --dev-sdk: Set FLATCAR_DEV_BUILDS_SDK=${DEV_SDK_URL} + --no-dev-sdk: Remove existing FLATCAR_DEV_BUILDS_SDK + --file FILE: Modify another file than ${FILE}, useful if run + outside of the SDK chroot. If /dev/stdout or + /dev/stderr is used, only new values are printed. +" + exit 1 +fi + +while [[ $# -gt 0 ]]; do + ARG="$1" + shift + case "${ARG}" in + --board-version) + VAL="$1" + shift + if [[ "${VAL}" == */*-nightly ]]; then + VAL=$(curl -s -S -f -L "${DEV_BOARD_URL}/boards/${VAL}.txt") + fi + FLATCAR_VERSION="${VAL}" + FLATCAR_VERSION_ID="${VAL}" + ;; + --dev-board) + FLATCAR_DEV_BUILDS="${DEV_BOARD_URL}" + ;; + --no-dev-board) + FLATCAR_DEV_BUILDS=no + ;; + --sdk-version) + FLATCAR_SDK_VERSION="$1" + shift + ;; + --dev-sdk) + FLATCAR_DEV_BUILDS_SDK="${DEV_SDK_URL}" + ;; + --no-dev-sdk) + FLATCAR_DEV_BUILDS_SDK=no + ;; + --file) + FILE="$1" + shift + ;; + *) + echo "Unkown argument ${ARG}" + exit 1 + ;; + esac +done + +if [[ "${FILE}" != "/dev/stdout" ]] && [[ "${FILE}" != "/dev/stderr" ]]; then + [[ -n "${FLATCAR_VERSION}" ]] && sed -i "/FLATCAR_VERSION=.*/d" "${FILE}" + [[ -n "${FLATCAR_VERSION_ID}" ]] && sed -i "/FLATCAR_VERSION_ID=.*/d" "${FILE}" + [[ -n "${FLATCAR_DEV_BUILDS}" ]] && sed -i "/FLATCAR_DEV_BUILDS=.*/d" "${FILE}" + [[ -n "${FLATCAR_SDK_VERSION}" ]] && sed -i "/FLATCAR_SDK_VERSION=.*/d" "${FILE}" + [[ -n "${FLATCAR_DEV_BUILDS_SDK}" ]] && sed -i "/FLATCAR_DEV_BUILDS_SDK=.*/d" "${FILE}" +fi + +{ + [[ -n "${FLATCAR_VERSION}" ]] && echo "FLATCAR_VERSION=${FLATCAR_VERSION}" + [[ -n "${FLATCAR_VERSION_ID}" ]] && echo "FLATCAR_VERSION_ID=${FLATCAR_VERSION_ID}" + [[ -n "${FLATCAR_DEV_BUILDS}" ]] && [[ "${FLATCAR_DEV_BUILDS}" != no ]] && echo "FLATCAR_DEV_BUILDS=${FLATCAR_DEV_BUILDS}" + [[ -n "${FLATCAR_SDK_VERSION}" ]] && echo "FLATCAR_SDK_VERSION=${FLATCAR_SDK_VERSION}" + [[ -n "${FLATCAR_DEV_BUILDS_SDK}" ]] && [[ "${FLATCAR_DEV_BUILDS_SDK}" != no ]] && echo "FLATCAR_DEV_BUILDS_SDK=${FLATCAR_DEV_BUILDS_SDK}" +} >> "${FILE}"