From 2f7e92ad045fb276c8fe88d4793c8edc383d147c Mon Sep 17 00:00:00 2001
From: Allan McRae <allan@archlinux.org>
Date: Thu, 10 Oct 2013 12:29:07 +1000
Subject: Link non-vcs sources into $srcdir during extraction

The separation between downloading and extracting for non-vsc sources
was incomplete due to symlinks being made in $srcdir during the download
stage.  Have download_{local,file} just ensure the presence of the files
in $startdir or $SRCDEST (downloading if needed) and then have
extract_file symlink these files into $srcdir.

Also replace "continue" with "return" in extract_file to make it clearer
what is happening.

Signed-off-by: Allan McRae <allan@archlinux.org>
---
 scripts/makepkg.sh.in | 20 +++++++++-----------
 1 file changed, 9 insertions(+), 11 deletions(-)

(limited to 'scripts')

diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in
index 30a162ec..e36e22b4 100644
--- a/scripts/makepkg.sh.in
+++ b/scripts/makepkg.sh.in
@@ -320,8 +320,6 @@ download_local() {
 
 	if [[ -n "$filepath" ]]; then
 		msg2 "$(gettext "Found %s")" "${filepath##*/}"
-		rm -f "$srcdir/${filepath##*/}"
-		ln -s "$filepath" "$srcdir/"
 	else
 		local filename=$(get_filename "$netfile")
 		error "$(gettext "%s was not found in the build directory and is not a URL.")" "$filename"
@@ -335,8 +333,6 @@ download_file() {
 	local filepath=$(get_filepath "$netfile")
 	if [[ -n "$filepath" ]]; then
 		msg2 "$(gettext "Found %s")" "${filepath##*/}"
-		rm -f "$srcdir/${filepath##*/}"
-		ln -s "$filepath" "$srcdir/"
 		return
 	fi
 
@@ -384,13 +380,15 @@ download_file() {
 	if [[ $dlfile != "$filename" ]]; then
 		mv -f "$SRCDEST/$dlfile" "$SRCDEST/$filename"
 	fi
-
-	rm -f "$srcdir/$filename"
-	ln -s "$SRCDEST/$filename" "$srcdir/"
 }
 
 extract_file() {
 	local file=$1
+
+	local filepath=$(get_filepath "$file")
+	rm -f "$srcdir/${file}"
+	ln -s "$filepath" "$srcdir/"
+
 	# do not rely on extension for file type
 	local file_type=$(file -bizL "$file")
 	local ext=${file##*.}
@@ -401,24 +399,24 @@ extract_file() {
 		*application/x-gzip*)
 			case "$ext" in
 				gz|z|Z) cmd="gzip" ;;
-				*) continue;;
+				*) return;;
 			esac ;;
 		*application/x-bzip*)
 			case "$ext" in
 				bz2|bz) cmd="bzip2" ;;
-				*) continue;;
+				*) return;;
 			esac ;;
 		*application/x-xz*)
 			case "$ext" in
 				xz) cmd="xz" ;;
-				*) continue;;
+				*) return;;
 			esac ;;
 		*)
 			# See if bsdtar can recognize the file
 			if bsdtar -tf "$file" -q '*' &>/dev/null; then
 				cmd="bsdtar"
 			else
-				continue
+				return
 			fi ;;
 	esac
 
-- 
cgit v1.2.3-70-g09d2