From 7bd44bf6f68bfee9044ba783d1c3fc10f5f7650c Mon Sep 17 00:00:00 2001 From: Tuomas Suutari Date: Fri, 28 Oct 2011 23:55:38 +0200 Subject: [PATCH] lxc-fedora.in: Fix fetching of the fedora-release rpm The hardcoded URL seems to be broken and 404 error was not checked. Now the mirror is selected from mirrorlist (instead of hardcoding to funet.fi) and fetch errors are checked. Also added a retry loop (with 3 tries) to find a working mirror, since some of the mirrors are not OK. Signed-off-by: Tuomas Suutari Signed-off-by: Daniel Lezcano --- templates/lxc-fedora.in | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/templates/lxc-fedora.in b/templates/lxc-fedora.in index 1e8fff2a4..e7f42a6dc 100644 --- a/templates/lxc-fedora.in +++ b/templates/lxc-fedora.in @@ -115,8 +115,30 @@ download_fedora() echo "Downloading fedora minimal ..." YUM="yum --installroot $INSTALL_ROOT -y --nogpgcheck" PKG_LIST="yum initscripts passwd rsyslog vim-minimal dhclient chkconfig rootfiles policycoreutils" - RELEASE_URL="http://ftp.funet.fi/pub/mirrors/fedora.redhat.com/pub/fedora/linux/releases/$release/Everything/$arch/os/Packages/fedora-release-$release-1.noarch.rpm" - curl $RELEASE_URL > $INSTALL_ROOT/fedora-release-$release.noarch.rpm + MIRRORLIST_URL="http://mirrors.fedoraproject.org/mirrorlist?repo=fedora-$release&arch=$arch" + + DOWNLOAD_OK=no + for trynumber in 1 2 3; do + [ $trynumber != 1 ] && echo "Trying again..." + MIRROR_URL=$(curl -s -S -f "$MIRRORLIST_URL" | head -n2 | tail -n1) + if [ $? -ne 0 ] || [ -z "$MIRROR_URL" ]; then + echo "Failed to get a mirror" + continue + fi + RELEASE_URL="$MIRROR_URL/Packages/fedora-release-$release-1.noarch.rpm" + echo "Fetching from $RELEASE_URL" + curl -f "$RELEASE_URL" > $INSTALL_ROOT/fedora-release-$release.noarch.rpm + if [ $? -ne 0 ]; then + echo "Failed to download fedora release rpm" + continue + fi + DOWNLOAD_OK=yes + break + done + if [ $DOWNLOAD_OK != yes ]; then + echo "Aborting" + return 1 + fi mkdir -p $INSTALL_ROOT/var/lib/rpm rpm --root $INSTALL_ROOT --initdb