diff --git a/bootstrap_sdk b/bootstrap_sdk index 24c5afd86d..668f3ef4e1 100755 --- a/bootstrap_sdk +++ b/bootstrap_sdk @@ -36,17 +36,11 @@ SCRIPT_ROOT=$(dirname $(readlink -f "$0")) TYPE="coreos-sdk" ARCH=$(portageq envvar ARCH) DEFAULT_PROFILE="coreos:default/linux/${ARCH}/10.0" -UPLOAD_ROOT="gs://storage.core-os.net/coreos/sdk/${ARCH}" -UPLOAD_DEFAULT=${FLAGS_FALSE} -if [[ ${COREOS_OFFICIAL:-0} -eq 1 ]]; then - UPLOAD_DEFAULT=${FLAGS_TRUE} -fi . "${SCRIPT_ROOT}/lib/catalyst.sh" || exit 1 -DEFINE_boolean parallel ${FLAGS_TRUE} "Enable parallelism in gsutil." -DEFINE_boolean upload ${UPLOAD_DEFAULT} \ - "Upload final tarball and all packages via gsutil." +# include upload options +. "${BUILD_LIBRARY_DIR}/release_util.sh" || exit 1 ## Define the stage4 config template catalyst_stage4() { @@ -60,21 +54,7 @@ catalyst_stage_default } catalyst_init "$@" - -# Search for .boto, this runs under sudo so ~/.boto may not be right -if [[ ${FLAGS_upload} -eq ${FLAGS_TRUE} ]]; then - for boto in "$HOME/.boto" "/home/$SUDO_USER/.boto" /etc/boto.cfg; do - if [[ -f "$boto" ]]; then - info "Using boto config $boto" - export BOTO_CONFIG="$boto" - break - fi - done - if [[ ! -f "$BOTO_CONFIG" ]]; then - die_notrace "Please run gsutil config to create ~/.boto" - fi -fi - +check_gsutil_opts catalyst_build info "Build complete! Changing output name to something more sensible." @@ -100,21 +80,9 @@ done info "SDK ready: $BUILDS/${release_name}" -GSUTIL_OPTS= -if [[ ${FLAGS_parallel} -eq ${FLAGS_TRUE} ]]; then - GSUTIL_OPTS="-m" -fi - -if [[ ${FLAGS_upload} -eq ${FLAGS_TRUE} ]]; then - info "Uploading tarball" - gsutil ${GSUTIL_OPTS} cp \ - "$BUILDS/${release_name}" \ - "$BUILDS/${release_name}.CONTENTS" \ - "$BUILDS/${release_name}.DIGESTS" \ - "${UPLOAD_ROOT}/${FLAGS_version}/" - info "Uploading packages" - gsutil ${GSUTIL_OPTS} cp -R "${BINPKGS}"/* \ - "${UPLOAD_ROOT}/${FLAGS_version}/pkgs/" -fi +def_upload_path="${UPLOAD_ROOT}/coreos/sdk/${ARCH}/${FLAGS_version}" +upload_files "tarball" "${def_upload_path}" "" "$BUILDS/${release_name}" \ + "$BUILDS/${release_name}.CONTENTS" "$BUILDS/${release_name}.DIGESTS" +upload_files "packages" "${def_upload_path}" "pkgs/" "${BINPKGS}"/* command_completed diff --git a/build_library/release_util.sh b/build_library/release_util.sh index cbd75476fb..bab54f07f6 100644 --- a/build_library/release_util.sh +++ b/build_library/release_util.sh @@ -32,20 +32,55 @@ check_gsutil_opts() { UPLOAD_PATH="${FLAGS_upload_path%%/}" fi - if [[ ! -f "$HOME/.boto" ]]; then + # Search for .boto, may be run via sudo + local boto + for boto in "$HOME/.boto" "/home/$SUDO_USER/.boto"; do + if [[ -f "$boto" ]]; then + info "Using boto config $boto" + export BOTO_CONFIG="$boto" + break + fi + done + if [[ ! -f "$BOTO_CONFIG" ]]; then die_notrace "Please run gsutil config to create ~/.boto" fi } +# Generic upload function +# Usage: upload_files "file type" "${UPLOAD_ROOT}/default/path" "" files... +# arg1: file type reported via log +# arg2: default upload path, overridden by --upload_path +# arg3: upload path suffix that can't be overridden, must end in / +# argv: remaining args are files or directories to upload +upload_files() { + [[ ${FLAGS_upload} -eq ${FLAGS_TRUE} ]] || return 0 + + local msg="$1" + local local_upload_path="$2" + local extra_upload_suffix="$3" + shift 3 + + if [[ -n "${UPLOAD_PATH}" ]]; then + local_upload_path="${UPLOAD_PATH}" + fi + + if [[ -n "${extra_upload_suffix}" && "${extra_upload_suffix}" != */ ]] + then + die "upload suffix '${extra_upload_suffix}' doesn't end in /" + fi + + info "Uploading ${msg} to ${local_upload_path}" + gsutil ${GSUTIL_OPTS} cp -R "$@" \ + "${local_upload_path}/${extra_upload_suffix}" +} + upload_packages() { [[ ${FLAGS_upload} -eq ${FLAGS_TRUE} ]] || return 0 [[ -n "${BOARD}" ]] || die "board_options.sh must be sourced first" - local BOARD_PACKAGES="${1:-"${BOARD_ROOT}/packages"}" - : ${UPLOAD_PATH:="${UPLOAD_ROOT}/${BOARD}/${COREOS_VERSION_STRING}"} - - info "Uploading packages" - gsutil ${GSUTIL_OPTS} cp -R "${BOARD_PACKAGES}"/* "${UPLOAD_PATH}/pkgs/" + local board_packages="${1:-"${BOARD_ROOT}/packages"}" + local def_upload_path="${UPLOAD_ROOT}/${BOARD}/${COREOS_VERSION_STRING}" + upload_files packages ${def_upload_path} "pkgs/" "${board_packages}"/* } make_digests() { @@ -66,7 +101,6 @@ upload_image() { [[ -n "${BOARD}" ]] || die "board_options.sh must be sourced first" local BUILT_IMAGE="$1" - : ${UPLOAD_PATH:="${UPLOAD_ROOT}/${BOARD}/${COREOS_VERSION_STRING}"} if [[ ! -f "${BUILT_IMAGE}" ]]; then die "Image '${BUILT_IMAGE}' does not exist!" @@ -83,7 +117,8 @@ upload_image() { # produces for the SDK tarballs and up upload it too. make_digests "${BUILT_IMAGE}" - info "Uploading ${BUILT_IMAGE##*/}" - gsutil ${GSUTIL_OPTS} cp "${BUILT_IMAGE}" \ - "${BUILT_IMAGE}.DIGESTS" "${UPLOAD_PATH}/" + local log_msg="${BUILT_IMAGE##*/}" + local def_upload_path="${UPLOAD_ROOT}/${BOARD}/${COREOS_VERSION_STRING}" + upload_files "${log_msg}" "${def_upload_path}" "" \ + "${BUILT_IMAGE}" "${BUILT_IMAGE}.DIGESTS" }