aboutsummaryrefslogtreecommitdiffstats
path: root/build/f_isoroot
diff options
context:
space:
mode:
authorMichal Skalski <mskalski@mirantis.com>2016-09-02 00:39:30 +0200
committerMichal Skalski <mskalski@mirantis.com>2016-09-05 10:06:45 +0000
commit83cc51d849d44b4d337922cedab27645a25afcfb (patch)
tree93eece5d387d4dc0993fe65ed625ec7d1fbb8825 /build/f_isoroot
parente49332ee58cb465c7aa95f967361c20c509b7619 (diff)
Do not use rsync for choosing mirror server
Rsync protocol was used for creating local mirrors, but now we only need http connection. This requirement can be problematic for environments which are behind proxy and can lead to build failures when rsync is not allowed. Change-Id: I4efcf500fd0c25de5fdb87307e7210cc4a96714d Signed-off-by: Michal Skalski <mskalski@mirantis.com> (cherry picked from commit a8820e25b80ee0c069e473cb54c576d98dd10aee)
Diffstat (limited to 'build/f_isoroot')
-rwxr-xr-xbuild/f_isoroot/f_repobuild/select_ubuntu_repo.sh63
1 files changed, 14 insertions, 49 deletions
diff --git a/build/f_isoroot/f_repobuild/select_ubuntu_repo.sh b/build/f_isoroot/f_repobuild/select_ubuntu_repo.sh
index 4bca6bd9b..7b134e73c 100755
--- a/build/f_isoroot/f_repobuild/select_ubuntu_repo.sh
+++ b/build/f_isoroot/f_repobuild/select_ubuntu_repo.sh
@@ -1,67 +1,32 @@
#!/bin/bash
##############################################################################
-# Copyright (c) 2015 Ericsson AB and others.
+# Copyright (c) 2015,2016 Ericsson AB and others.
# mskalski@mirantis.com
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Apache License, Version 2.0
# which accompanies this distribution, and is available at
# http://www.apache.org/licenses/LICENSE-2.0
##############################################################################
-RSYNC="rsync -4 --contimeout 5 --no-motd --list-only"
-# try to choose close ubuntu mirror which support rsync protocol
-# https://bugs.launchpad.net/fuel/+bug/1459252
-
-# A minor modificiation of Michal Skalski's original Makefile version
-# to only consider repos where no repo updates are in progress (as
-# that may have us hanging quite a while otherwise). If no suitable
-# local mirror can be found after four attempts, the default archive
-# is returned instead.
+# Try to choose close ubuntu mirror
# Some Ubuntu mirrors seem less reliable for this type of mirroring -
# as they are discoved they can be added to the blacklist below in order
# for them not to be considered.
BLACKLIST="mirrors.se.eu.kernel.org mirror.its.dal.ca"
-return_url=0
-
-while [ "$1" != "" ]; do
- case $1 in
- -u | --url ) shift
- return_url=1
- ;;
- # Shift all the parameters down by one
- esac
- shift
-done
-
-cnt=0
-while [ $cnt -lt 4 ]
+for url in $(curl -s http://mirrors.ubuntu.com/mirrors.txt)
do
- for url in $(curl -s http://mirrors.ubuntu.com/mirrors.txt)
- do
- host=$(echo $url | cut -d'/' -f3)
- echo ${BLACKLIST} | grep -q ${host} && continue
- if $RSYNC "${host}::ubuntu/." &> /dev/null
- then
- if ! $RSYNC "${host}::ubuntu/Archive-Update-in-Progress*" &> /dev/null
- then
- if [ "$return_url" = "1" ]; then
- echo "$url"
- exit 0
- else
- echo "$host"
- exit 0
- fi
- fi
- fi
- done
- cnt=$[cnt + 1]
- sleep 15
+ host=$(echo $url | cut -d'/' -f3)
+ echo ${BLACKLIST} | grep -q ${host} && continue
+ if curl -s -o /dev/null --head --fail "$url"; then
+ echo $url
+ exit 0
+ else
+ continue
+ fi
done
-if [ "$return_url" = "1" ]; then
- echo "http://archive.ubuntu.com/ubuntu/"
-else
- echo "archive.ubuntu.com"
-fi
+# If no suitable local mirror can be found,
+# the default archive is returned instead.
+echo "http://archive.ubuntu.com/ubuntu/"