abuild: use curl by default. fallback to wget if curl is missing

fixes #871
This commit is contained in:
Natanael Copa 2011-12-16 16:02:46 +01:00
parent ff53e77643
commit df05d495b0

View File

@ -236,11 +236,26 @@ sourcecheck() {
return 0
}
# convert curl options to wget options and call wget instead of curl
wget_fallback() {
local wget_opts= outfile= opt=
while getopts "C:ko:s" opt; do
case $opt in
'C') wget_opts="$wget_opts -c";; # --continue-at
's') wget_opts="$wget_opts -q";; # --silent
'o') wget_opts="$wget_opts -O $OPTARG";; # --output
'k') wget_opts="$wget_opts --no-check-certificate";; #gnu wget
esac
done
shift $(( $OPTIND - 1 ))
wget $wget_opts "$1"
}
uri_fetch() {
local uri="$1"
local d="${uri##*/}" # $(basename $uri)
local opts
[ -n "$quiet" ] && opts="-q"
[ -n "$quiet" ] && opts="-s"
[ -f "$SRCDEST/$d" ] && return 0
# fix saveas-*://* URIs
@ -250,18 +265,24 @@ uri_fetch() {
saveas-*://*) uri="${uri:7:$(expr ${#uri} - 7 - ${#d} - 1)}";;
esac
# we need GNU wget for this
case "$uri" in
https://*) opts="--no-check-certificate";;
https://*) opts="-k";;
esac
mkdir -p "$SRCDEST"
if [ -f "$SRCDEST/$d.part" ]; then
msg "Partial download found. Trying to resume"
opts="$opts -c"
opts="$opts -C -"
fi
msg "Fetching $uri"
wget $opts -O "$SRCDEST/$d.part" "$uri" \
# fallback to wget if curl is missing. useful for bootstrapping
local fetcher=curl
if ! [ -x "$(which curl)" ]; then
fetcher=wget_fallback
fi
$fetcher $opts -o "$SRCDEST/$d.part" "$uri" \
&& mv "$SRCDEST/$d.part" "$SRCDEST/$d"
}