From 870f2c3344d21c416433cdfcd6edf8f414d5bb90 Mon Sep 17 00:00:00 2001 From: "W. Trevor King" Date: Tue, 15 Jul 2014 10:32:13 -0700 Subject: [PATCH] grab.sh: Try and download a matched stage3/snapshot pair Catalyst's autobuilds have been flaky recently, so it's a bit difficult to predict when the next amd64 stage3 will land. The mirrors only keep a week of history, so it's easier to get the stage3/snapshot pair from the same day if you try to grab them automatically every evening. This script will do that, using the latest-stage3.txt to find the most recent stage3, and then downloading the auxilliary files and Portage snapshot. If the downloads all succeed, it updates the default DATE in build.sh. --- grab.sh | 65 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100755 grab.sh diff --git a/grab.sh b/grab.sh new file mode 100755 index 0000000..2fa636c --- /dev/null +++ b/grab.sh @@ -0,0 +1,65 @@ +#!/bin/sh +# +# Copyright (C) 2014 W. Trevor King +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this +# list of conditions and the following disclaimer. +# +# * Redistributions in binary form must reproduce the above copyright notice, +# this list of conditions and the following disclaimer in the documentation +# and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE +# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. + +MIRROR="${MIRROR:-http://distfiles.gentoo.org/}" +BASE_ARCH_URL="${BASE_ARCH_URL:-${MIRROR}releases/amd64/autobuilds/}" +LATEST=$(wget -O - "${BASE_ARCH_URL}latest-stage3.txt") +DATE=$(echo "${LATEST}" | sed -n 's|/stage3-amd64-[0-9]*[.]tar[.]bz2||p') +ARCH_URL="${ARCH_URL:-${BASE_ARCH_URL}${DATE}/}" +STAGE3="${STAGE3:-stage3-amd64-${DATE}.tar.bz2}" +STAGE3_CONTENTS="${STAGE3_CONTENTS:-${STAGE3}.CONTENTS}" +STAGE3_DIGESTS="${STAGE3_DIGESTS:-${STAGE3}.DIGESTS.asc}" +PORTAGE_URL="${PORTAGE_URL:-${MIRROR}snapshots/}" +PORTAGE="${PORTAGE:-portage-${DATE}.tar.xz}" +PORTAGE_SIG="${PORTAGE_SIG:-${PORTAGE}.gpgsig}" + +die() +{ + echo "$1" + exit 1 +} + +for FILE in "${STAGE3}" "${STAGE3_CONTENTS}" "${STAGE3_DIGESTS}"; do + if [ ! -f "downloads/${FILE}" ]; then + wget -O "downloads/${FILE}" "${ARCH_URL}${FILE}" + if [ "$?" -ne 0 ]; then + rm -f "downloads/${FILE}" && + die "failed to download ${ARCH_URL}${FILE}" + fi + fi +done + +for FILE in "${PORTAGE}" "${PORTAGE_SIG}"; do + if [ ! -f "downloads/${FILE}" ]; then + wget -O "downloads/${FILE}" "${PORTAGE_URL}${FILE}" || + if [ "$?" -ne 0 ]; then + rm -f "downloads/${FILE}" && + die "failed to download ${PORTAGE_URL}${FILE}" + fi + fi +done + +sed -i "s/DATE=.*/DATE=\"\${DATE:-${DATE}}\"/" build.sh -- 2.26.2