diff options
author | Michal Skalski <mskalski@mirantis.com> | 2016-09-05 10:05:51 +0000 |
---|---|---|
committer | Gerrit Code Review <gerrit@172.30.200.206> | 2016-09-05 10:05:51 +0000 |
commit | bbd6bb0b5f4adb8e05cd25cd3830f0daa50af128 (patch) | |
tree | 9a30010e483649e4c9784af02b16a38fb27500e2 /build | |
parent | 9d871421fbc631f875f7a8bdca590b42eb1bd3bf (diff) | |
parent | a8820e25b80ee0c069e473cb54c576d98dd10aee (diff) |
Merge "Do not use rsync for choosing mirror server"
Diffstat (limited to 'build')
-rwxr-xr-x | build/f_isoroot/f_repobuild/select_ubuntu_repo.sh | 63 |
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/" |