| hide_output() { |
| { set +x; } 2>/dev/null |
| on_err=" |
| echo ERROR: An error was encountered with the build. |
| cat /tmp/build.log |
| exit 1 |
| " |
| trap "$on_err" ERR |
| bash -c "while true; do sleep 30; echo \$(date) - building ...; done" & |
| PING_LOOP_PID=$! |
| "$@" &> /tmp/build.log |
| trap - ERR |
| kill $PING_LOOP_PID |
| set -x |
| } |
| |
| # Copied from ../../shared.sh |
| function retry { |
| echo "Attempting with retry:" "$@" |
| local n=1 |
| local max=5 |
| while true; do |
| "$@" && break || { |
| if [[ $n -lt $max ]]; then |
| sleep $n # don't retry immediately |
| ((n++)) |
| echo "Command failed. Attempt $n/$max:" |
| else |
| echo "The command has failed after $n attempts." |
| return 1 |
| fi |
| } |
| done |
| } |
| |
| # Copied from ../../init_repo.sh |
| function fetch_github_commit_archive { |
| local module=$1 |
| local cached="download-${module//\//-}.tar.gz" |
| retry sh -c "rm -f $cached && \ |
| curl -f -sSL -o $cached $2" |
| mkdir $module |
| touch "$module/.git" |
| tar -C $module --strip-components=1 -xf $cached |
| rm $cached |
| } |