aboutsummaryrefslogtreecommitdiffstats
path: root/build/f_isoroot/f_repobuild
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 11:04:55 +0200
commita8820e25b80ee0c069e473cb54c576d98dd10aee (patch)
tree1aa7188fab1010780a2a30de49cdda7678d0873a /build/f_isoroot/f_repobuild
parent5589b0e1659e8e0de0bc1055753685c9fd58f13a (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>
Diffstat (limited to 'build/f_isoroot/f_repobuild')
-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/"