From a8820e25b80ee0c069e473cb54c576d98dd10aee Mon Sep 17 00:00:00 2001 From: Michal Skalski Date: Fri, 2 Sep 2016 00:39:30 +0200 Subject: 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 --- build/f_isoroot/f_repobuild/select_ubuntu_repo.sh | 63 +++++------------------ 1 file changed, 14 insertions(+), 49 deletions(-) (limited to 'build/f_isoroot') 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/" -- cgit 1.2.3-korg