X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?a=blobdiff_plain;f=build%2Ff_isoroot%2Ff_repobuild%2Fselect_ubuntu_repo.sh;h=c3bb5cf363f07646c671b8145fb1d2fe61e9cc4b;hb=refs%2Fchanges%2F29%2F21429%2F2;hp=540f7ebce1e49a343be7ace797da49826648f8e6;hpb=463f78e5b480589a1f75a243330f84bed87a32ca;p=fuel.git diff --git a/build/f_isoroot/f_repobuild/select_ubuntu_repo.sh b/build/f_isoroot/f_repobuild/select_ubuntu_repo.sh index 540f7ebce..c3bb5cf36 100755 --- a/build/f_isoroot/f_repobuild/select_ubuntu_repo.sh +++ b/build/f_isoroot/f_repobuild/select_ubuntu_repo.sh @@ -1,67 +1,38 @@ #!/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 from mirrors.txt, but "whitewash" this +# against the full repo list to removed mirrors not up-to-date. # 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" - -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 +BLACKLIST="mirror.clibre.uqam.ca" -cnt=0 -while [ $cnt -lt 4 ] +for url in $((curl -s https://launchpad.net/ubuntu/+archivemirrors | \ + grep -P -B8 "statusUP|statusSIX" | \ + grep -o -P "(f|ht)tp.*\"" | \ + sed 's/"$//' | sort | uniq; \ + curl -s http://mirrors.ubuntu.com/mirrors.txt | sort | uniq) | \ + sort | uniq -d) 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/"