summaryrefslogtreecommitdiff
path: root/abuild.in
diff options
context:
space:
mode:
authorNatanael Copa <ncopa@alpinelinux.org>2011-12-16 16:02:46 +0100
committerNatanael Copa <ncopa@alpinelinux.org>2011-12-16 16:02:46 +0100
commitdf05d495b0d3caaac2570d5a955c988f85d90ca9 (patch)
treed22fd54e679a1691927e50c018d76014ea8a62e9 /abuild.in
parentff53e7764300a5a21ce6d9e2eee7671d3ea0dec5 (diff)
downloadabuild-df05d495b0d3caaac2570d5a955c988f85d90ca9.tar.gz
abuild-df05d495b0d3caaac2570d5a955c988f85d90ca9.tar.bz2
abuild-df05d495b0d3caaac2570d5a955c988f85d90ca9.tar.xz
abuild-df05d495b0d3caaac2570d5a955c988f85d90ca9.zip
abuild: use curl by default. fallback to wget if curl is missing
fixes #871
Diffstat (limited to 'abuild.in')
-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"
}