[pacman-dev] [PATCH 1/3] Moved check for download client into getDownloadClient().

Andrew Fyfe andrew at neptune-one.net
Sun Apr 1 19:20:14 EDT 2007


Signed-off-by: Andrew Fyfe <andrew at neptune-one.net>

diff --git a/scripts/makepkg.in b/scripts/makepkg.in
index 17a500b..5f9adbd 100755
--- a/scripts/makepkg.in
+++ b/scripts/makepkg.in
@@ -184,6 +184,26 @@ in_array() {
 	return 1
 }
 
+getDownloadClient () {
+	# $1 = Config variable name.
+
+	local agent=$(eval echo \$$1)
+	if [ -z "$agent" ]; then
+		error "$(gettext_eval "\$1 is not configured. Check the /etc/makepkg.conf file.")"
+		error "$(gettext "Aborting...")"
+		exit 1 # $E_CONFIG_ERROR # TODO: error code
+	fi
+
+	local program="$(echo $agent | awk '{print $1 }')"
+	if [ ! -x "$program" ]; then
+		error "$(gettext_eval "The download program \$(basename \$program) is not installed.")"
+		error "$(gettext "Aborting...")"
+		exit 1 # $E_MISSING_PROGRAM # TODO: error code
+	fi
+
+	echo $agent
+}
+
 checkdeps() {
 	[ $# -gt 0 ] || return
 
@@ -669,59 +689,54 @@ fi
 
 cd "$startdir"
 
-# retrieve sources
-msg "$(gettext "Retrieving Sources...")"
 mkdir -p src
 cd "$startdir/src"
+
+msg "$(gettext "Retrieving Sources...")"
 for netfile in ${source[@]}; do
 	file=$(strip_url "$netfile")
 	if [ -f "../$file" ]; then
 		msg2 "$(eval_gettext "Found \$file in build dir")"
 		cp "../$file" .
+		continue
 	elif [ -f "$SRCDEST/$file" ]; then
 		msg2 "$(eval_gettext "Using cached copy of \$file")"
 		cp "$SRCDEST/$file" .
-	else
-		# check for a download utility
-		if [ -z "$FTPAGENT" ]; then
-			error "$(gettext "FTPAGENT is not configured. Check the /etc/makepkg.conf file.")"
-			msg "$(gettext "Aborting...")"
-			exit 1
-		fi
-		ftpclient=$(echo $FTPAGENT | awk {'print $1'})
-		if [ ! -x "$ftpclient" ]; then
-			local clientname=$(basename $ftpclient)
-			error "$(eval_gettext "ftpclient \$clientname is not installed.")"
-			msg "$(gettext "Aborting...")"
-			exit 1
-		fi
-		proto=$(echo "$netfile" | sed 's|://.*||')
-		if [ "$proto" != "ftp" -a "$proto" != "http" -a "$proto" != "https" ]; then
+		continue
+	fi
+
+	proto=$(echo $netfile | sed 's|://.*||')
+	case "$proto" in
+		ftp|http|https)
+			dlclient=$(getDownloadClient FTPAGENT) || exit $?;;
+		*)
 			error "$(eval_gettext "\$netfile was not found in the build directory and is not a proper URL.")"
 			msg "$(gettext "Aborting...")"
-			exit 1
-		fi
-		msg2 "$(eval_gettext "Downloading \$file")"
-		$FTPAGENT "$netfile"
-		# fix flyspray bug #3289
-		ftpret=$?
-		if [ $ftpret -gt 0 ]; then
-			error "$(eval_gettext "Failure while downloading \$file")"
-			msg "$(gettext "Aborting...")"
-			#rm "$file"
-			exit 1
-		fi
-		if [ -n "$SRCDEST" ]; then
-			mkdir -p $SRCDEST && cp "$file" $SRCDEST
-			if [ $? -ne 0 ]; then
-				warning "$(eval_gettext "You do not have correct permissions to cache source in \$SRCDEST")"
-				cp "$file" ..
-			fi
-		else
+			exit 1 # $E_BAD_PKGBUILD # TODO: error code
+			;;
+	esac
+
+	msg2 "$(gettext_eval "Downloading \$file")"
+	# fix flyspray bug #3289
+	ret=0
+	$dlclient "$netfile" || ret=$?
+	if [ $ret -gt 0 ]; then
+		error "$(gettext "Failure while downloading $file")"
+		msg "$(gettext "Aborting...")"
+		exit 1
+	fi
+
+	if [ -n "$SRCDEST" ]; then
+		mkdir -p "$SRCDEST" && cp "$file" "$SRCDEST" || ret=$?
+		if [ $ret -gt 0 ]; then
+			warning "$(gettext_eval "You do not have correct permissions to cache source in \$SRCDEST")"
 			cp "$file" ..
 		fi
+	else
+		cp "$file" ..
 	fi
 done
+unset netfile file dlclient proto ret
 
 if [ "$NOEXTRACT" = "1" -o "$REPKG" = "1" ]; then
 	warning "$(gettext "Skipping source integrity checks -- using existing src/ tree")"
-- 
1.5.0.6





More information about the pacman-dev mailing list