[Buildroot] [PATCH 1/2] download/cvs: add a 10 minute timeout

Arnout Vandecappelle (Essensium/Mind) arnout at mind.be
Thu May 31 07:05:19 UTC 2018

Apparently, CVS servers can be deadlocked and in that case clients will
retry connecting to them indefinitely. Cfr.
Apparently, the sf.net CVS server got in such a deadlock on 2018-05-18,
and almost 2 weeks later it is still not fixed.

Instead of just hanging, we should fall back on BR2_SECONDARY_SITE. To
achieve this, it's sufficient to add a timeout to the CVS command.

The timeout value is of course arbitrary. However, we can assume that
nobody will be putting large projects under CVS any more. So if the
download takes more than 5 minutes, it's probably broken. Let's put the
timeout at 10 minutes then.


Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout at mind.be>
 support/download/cvs | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/support/download/cvs b/support/download/cvs
index 3f77b849e4..9d0dc3cb3a 100755
--- a/support/download/cvs
+++ b/support/download/cvs
@@ -33,9 +33,13 @@ done
 shift $((OPTIND-1)) # Get rid of our options
 # Caller needs to single-quote its arguments to prevent them from
-# being expanded a second time (in case there are spaces in them)
+# being expanded a second time (in case there are spaces in them).
+# If the CVS server is deadlocked, the client will never return (cfr.
+# http://autobuild.buildroot.net/results/23d/23d1034b33d0354de15de2ec4a8ccd0603e8db78/build-end.log
+# ). Since nobody sane will put large code bases in CVS, a timeout of
+# 10 minutes should do the trick.
 _cvs() {
-    eval ${CVS} "${@}"
+    eval timeout 10m ${CVS} "${@}"
 if [[ ${rev} =~ ^[0-9] ]]; then

More information about the buildroot mailing list