metadir="$DISTFILES"/meta/$1 [ -d "$metadir" ] || { echo no "$metadir" found >&2 exit 1 } dst=$1 if [ -r cache/$dst ] ; then echo using cache/$dst... >&2 if [ -s "$metadir"/hashes ] ; then "$BASS_ROOT"/build/bin/hashes-check "$metadir"/hashes \ &1 >/dev/null || { echo hash check failed >&2 exit 1 } else echo warning: no $metadir/hashes >&2 if [ -s "$metadir"/size ] ; then read size <"$metadir"/size sizeGot=$("$BASS_ROOT"/bin/filessize cache/$dst) [ "$sizeGot" -eq "$size" ] || { echo size differs: $sizeGot '!=' $size >&2 exit 1 } else echo warning: no $metadir/size >&2 fi fi ln cache/$dst $3 exit 0 fi ( # do not depend on generated URLs for v in $(env | sed "s/=.*$//" | grep "^REDO") ; do unset $v ; done redo-ifchange "$metadir"/urls ) fn=$(basename $dst) getMeta4() { ( cd "$DISTFILES"/meta ../bin/metadir-to-meta4 $dst ) } tmp=$(mktemp -d ${TMPDIR:-/tmp}/$fn.XXXXXX) trap "rm -fr $tmp" HUP PIPE INT QUIT TERM EXIT cd $tmp case "$DISTFILE_FETCHER" in justdl) FETCHER_URLS_SORT <"$metadir"/urls | while read url ; do echo trying ${url}... >&2 url="${url##*|}" if [ -s "$metadir"/hashes ] ; then $JUSTDL "$url" | "$BASS_ROOT"/build/bin/hashes-check "$metadir"/hashes >$fn || { echo hash check failed >&2 rm $fn continue } else echo warning: no $metadir/hashes >&2 $JUSTDL "$url" >$fn || continue if [ -s "$metadir"/size ] ; then read size <"$metadir"/size sizeGot=$("$BASS_ROOT"/bin/filessize $fn) [ "$sizeGot" -eq "$size" ] || { echo size differs: $sizeGot '!=' $size >&2 continue } fi fi break done [ -s $fn ] cat $fn ;; wget-meta4) getMeta4 >meta4 wget --input-metalink=meta4 >&2 cat "$fn.meta4.#1" ;; aria2c) getMeta4 >meta4 aria2c meta4 >&2 cat $fn ;; *) echo Unknown \$DISTFILE_FETCHER >&2 exit 1 esac