diff options
Diffstat (limited to 'abuild.in')
-rwxr-xr-x | abuild.in | 33 |
1 files changed, 27 insertions, 6 deletions
@@ -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" } |