diff --git a/abuild.in b/abuild.in
index 5a62926b5b27632613b23720ac985a574c897437..7b1af383092f067391c1e700bd3ec0ca49ac00f7 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"
 }