mirror of
https://github.com/subsurface/subsurface.git
synced 2024-11-27 20:58:47 +00:00
build-system: add travis_wait shell functions
These come originally from https://github.com/travis-ci/travis-build and are available when running on Travis, but not when running inside a Docker container on Travis as we do in order to build for Android. The goal is to provide a quasi heart-beat on STDOUT during very long running commands - without this the wget to download Qt often times out, so that's where we are going to use this. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
parent
f5659439ba
commit
0661c74880
1 changed files with 65 additions and 0 deletions
65
scripts/travis-wait.sh
Normal file
65
scripts/travis-wait.sh
Normal file
|
@ -0,0 +1,65 @@
|
|||
#!/bin/bash
|
||||
# SPDX-License-Identifier: MIT
|
||||
# SPDX-Copyright: Copyright (c) 2016 Travis CI GmbH <contact@travis-ci.org>
|
||||
#
|
||||
# this is based on code from https://github.com/travis-ci/travis-build
|
||||
|
||||
travis_wait() {
|
||||
local timeout=$1
|
||||
|
||||
if [[ $timeout =~ ^[0-9]+$ ]]; then
|
||||
# looks like an integer, so we assume it is a timeout
|
||||
shift
|
||||
else
|
||||
# default value
|
||||
timeout=20
|
||||
fi
|
||||
|
||||
local cmd="$@"
|
||||
local log_file=travis_wait_$$.log
|
||||
|
||||
$cmd &>$log_file &
|
||||
local cmd_pid=$!
|
||||
|
||||
travis_jigger $! $timeout $cmd &
|
||||
local jigger_pid=$!
|
||||
local result
|
||||
|
||||
{
|
||||
wait $cmd_pid 2>/dev/null
|
||||
result=$?
|
||||
ps -p$jigger_pid &>/dev/null && kill $jigger_pid
|
||||
}
|
||||
|
||||
if [ $result -eq 0 ]; then
|
||||
echo -e "\nThe command $cmd exited with $result."
|
||||
else
|
||||
echo -e "\nThe command $cmd exited with $result."
|
||||
fi
|
||||
|
||||
echo -e "\nLog:\n"
|
||||
cat $log_file
|
||||
|
||||
return $result
|
||||
}
|
||||
|
||||
travis_jigger() {
|
||||
# helper method for travis_wait()
|
||||
local cmd_pid=$1
|
||||
shift
|
||||
local timeout=$1 # in minutes
|
||||
shift
|
||||
local count=0
|
||||
|
||||
# clear the line
|
||||
echo -e "\n"
|
||||
|
||||
while [ $count -lt $timeout ]; do
|
||||
count=$(($count + 1))
|
||||
echo -ne "Still running ($count of $timeout): $@\r"
|
||||
sleep 60
|
||||
done
|
||||
|
||||
echo -e "\nTimeout (${timeout} minutes) reached. Terminating \"$@\"\n"
|
||||
kill -9 $cmd_pid
|
||||
}
|
Loading…
Reference in a new issue