#!/bin/bash # We want to catch any command failure, and exit immediately set -e # Download helper for bzr # Call it with: # $1: bzr repo # $2: bzr revision # $3: output file # And this environment: # BZR : the bzr command to call # BUILD_DIR: path to Buildroot's build dir repo="${1}" rev="${2}" output="${3}" tmp_dl="$( mktemp "${BUILD_DIR}/.XXXXXX" )" tmp_output="$( mktemp "${output}.XXXXXX" )" # Play tic-tac-toe with temp files # - first, we download to a trashable location (the build-dir) # - the we move to a temp file in the final location, so it is # on the same filesystem as the final file # - finally, we atomically rename to the final file ret=1 if ${BZR} export --format=tgz "${tmp_dl}" "${repo}" -r "${rev}"; then if mv "${tmp_dl}" "${tmp_output}"; then mv "${tmp_output}" "${output}" ret=0 fi fi # Cleanup rm -f "${tmp_dl}" "${tmp_output}" exit ${ret}