diff options
author | Peter Wu <peter@lekensteyn.nl> | 2019-02-13 20:18:13 +0100 |
---|---|---|
committer | Peter Wu <peter@lekensteyn.nl> | 2019-02-15 10:01:50 +0000 |
commit | 0c00b1666f2bb74120f8fbaa38a347bf0114bef5 (patch) | |
tree | d0d0ac992244a71172318decd2119f9c150e8e12 /tools | |
parent | b658de2fa798cdf4046608b183137905df636d7b (diff) |
travis: avoid aborting the build on slow Qt installations
Periodically report the installation status to avoid aborting the
installation on slow Qt installations (possibly due to slow network?).
Change-Id: I6b8b8db49f2268d557a5ca2e7b1f08b6ea801fd9
Reviewed-on: https://code.wireshark.org/review/32022
Reviewed-by: Dario Lombardo <lomato@gmail.com>
Reviewed-by: Alexis La Goutte <alexis.lagoutte@gmail.com>
Reviewed-by: Peter Wu <peter@lekensteyn.nl>
Diffstat (limited to 'tools')
-rwxr-xr-x | tools/report-progress.sh | 46 | ||||
-rwxr-xr-x | tools/travis-install-qt-windows.sh | 27 |
2 files changed, 73 insertions, 0 deletions
diff --git a/tools/report-progress.sh b/tools/report-progress.sh new file mode 100755 index 0000000000..c947fba5fa --- /dev/null +++ b/tools/report-progress.sh @@ -0,0 +1,46 @@ +#!/bin/bash +# Reads stdin and periodically report the most recently seen output. +# +# Copyright (C) 2019 Peter Wu <peter@lekensteyn.nl> +# SPDX-License-Identifier: GPL-2.0-or-later +# +# Like "travis_wait", it prevents a build timeout due to lack of progress. +# Additionally: +# - During execution it reports the most recent line instead of some fixed text. +# - It does not write the full output at the end of execution. +# - It does not impose a command timeout. + +set -eu + +# Default to a 60 seconds interval between printing messages. +PERIOD=${1:-60} + +nexttime=$PERIOD +msg= +count=0 + +# Reset timer (SECONDS is a special Bash variable). +SECONDS=0 + +while true; do + # Periodically report the last read line. + timeleft=$((nexttime-SECONDS)) + while [ $timeleft -le 0 ]; do + ((nexttime+=PERIOD)) + ((timeleft+=PERIOD)) + printf "[progress] %3d %s\n" $SECONDS "${msg:-(no output)}" + msg= + done + + if read -r -t $timeleft line; then + # Save line for later. + ((count+=1)) + msg="Line $count: $line" + continue + elif [ $? -le 128 ]; then + # EOF (as opposed to a timeout) + [ -z "$msg" ] || printf "[progress] %3d %s\n" $SECONDS "$msg" + printf "[progress] %3d done (read %d lines).\n" $SECONDS $count + break + fi +done diff --git a/tools/travis-install-qt-windows.sh b/tools/travis-install-qt-windows.sh new file mode 100755 index 0000000000..a94a0ae6a8 --- /dev/null +++ b/tools/travis-install-qt-windows.sh @@ -0,0 +1,27 @@ +#!/bin/bash +# Installs Qt on Windows for Travis CI. +# +# Copyright (C) 2019 Peter Wu <peter@lekensteyn.nl> +# SPDX-License-Identifier: GPL-2.0-or-later + +set -eu -o pipefail + +if [ -e "$QT5_BASE_DIR/bin/moc.exe" ]; then + echo "Found an existing Qt installation at $QT5_BASE_DIR" + exit +fi + +echo "Downloading the installer..." +# https is of no use if it redirects to a http mirror... +curl -vLo ~/qt-unified-windows-x86-online.exe http://download.qt.io/official_releases/online_installers/qt-unified-windows-x86-online.exe + +echo "Installing..." +# Run installer and save the installer output. To avoid hitting the timeout, +# periodically print some progress. On error, show the full log and abort. +~/qt-unified-windows-x86-online.exe --verbose --script tools/qt-installer-windows.qs | + tee ~/qt-installer-output.txt | + tools/report-progress.sh || + (cat ~/qt-installer-output.txt; exit 1) + +printf 'Installation size: ' +du -sm "$QT5_BASE_DIR" |