summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xabuild.in33
1 files changed, 27 insertions, 6 deletions
diff --git a/abuild.in b/abuild.in
index 5a62926..7b1af38 100755
--- a/abuild.in
+++ b/abuild.in
@@ -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"
}