aboutsummaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorPeter Wu <peter@lekensteyn.nl>2019-02-13 20:18:13 +0100
committerPeter Wu <peter@lekensteyn.nl>2019-02-15 10:01:50 +0000
commit0c00b1666f2bb74120f8fbaa38a347bf0114bef5 (patch)
treed0d0ac992244a71172318decd2119f9c150e8e12 /tools
parentb658de2fa798cdf4046608b183137905df636d7b (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-xtools/report-progress.sh46
-rwxr-xr-xtools/travis-install-qt-windows.sh27
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"