From ac64046408d324262bdc027cdff451364c1c2552 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Piotr=20W=C3=B3jcik?= Date: Wed, 29 Jan 2020 23:28:40 +0100 Subject: [PATCH] common: retry ftp download during CI --- common/hooks/do-fetch/00-distfiles.sh | 19 +++++++++++++++---- common/travis/build.sh | 2 ++ common/xbps-src/shutils/chroot.sh | 1 + 3 files changed, 18 insertions(+), 4 deletions(-) diff --git a/common/hooks/do-fetch/00-distfiles.sh b/common/hooks/do-fetch/00-distfiles.sh index 922245fcd21..528eab8896c 100644 --- a/common/hooks/do-fetch/00-distfiles.sh +++ b/common/hooks/do-fetch/00-distfiles.sh @@ -198,7 +198,7 @@ try_mirrors() { hook() { local srcdir="$XBPS_SRCDISTDIR/$pkgname-$version" - local dfcount=0 dfgood=0 errors=0 + local dfcount=0 dfgood=0 errors=0 max_retries if [ ! -d "$srcdir" ]; then mkdir -p -m775 "$srcdir" @@ -266,10 +266,21 @@ hook() { try_mirrors $curfile $distfile $dfcount $pkgname-$version $f fi # If distfile does not exist, download it from the original location. - if [ ! -f "$distfile" ]; then - msg_normal "$pkgver: fetching distfile '$curfile'...\n" - flock "${distfile}.part" $fetch_cmd "$f" + if [[ "$FTP_RETRIES" && "${f}" =~ ^ftp:// ]]; then + max_retries="$FTP_RETRIES" + else + max_retries=1 fi + for retry in $(seq 1 1 $max_retries); do + if [ ! -f "$distfile" ]; then + if [ "$retry" == 1 ]; then + msg_normal "$pkgver: fetching distfile '$curfile'...\n" + else + msg_normal "$pkgver: fetch attempt $retry of $max_retries...\n" + fi + flock "${distfile}.part" $fetch_cmd "$f" + fi + done if [ ! -f "$distfile" ]; then msg_error "$pkgver: failed to fetch $curfile.\n" fi diff --git a/common/travis/build.sh b/common/travis/build.sh index 7732211a59e..1c45910ea69 100755 --- a/common/travis/build.sh +++ b/common/travis/build.sh @@ -13,6 +13,8 @@ if [ -r /proc/cpuinfo ]; then NPROCS=$(grep ^proc /proc/cpuinfo|wc -l) fi +export FTP_RETRIES=10 + for pkg in ${PKGS}; do /hostrepo/xbps-src -j$NPROCS -H "$HOME"/hostdir $arch pkg "$pkg" [ $? -eq 1 ] && exit 1 diff --git a/common/xbps-src/shutils/chroot.sh b/common/xbps-src/shutils/chroot.sh index 228dd2e0399..4f543bf2a8e 100644 --- a/common/xbps-src/shutils/chroot.sh +++ b/common/xbps-src/shutils/chroot.sh @@ -173,6 +173,7 @@ chroot_handler() { ${SOCKS_PROXY:+SOCKS_PROXY="${SOCKS_PROXY}"} \ ${NO_PROXY:+NO_PROXY="${NO_PROXY}"} \ ${HTTP_PROXY_AUTH:+HTTP_PROXY_AUTH="${HTTP_PROXY_AUTH}"} \ + ${FTP_RETRIES:+FTP_RETRIES="${FTP_RETRIES}"} \ SOURCE_DATE_EPOCH="$SOURCE_DATE_EPOCH" \ XBPS_ALLOW_CHROOT_BREAKOUT="$XBPS_ALLOW_CHROOT_BREAKOUT" \ $XBPS_COMMONDIR/chroot-style/${XBPS_CHROOT_CMD:=uunshare}.sh \