[pacman-dev] [PATCH] Link non-vcs sources into $srcdir during extraction

Allan McRae allan at archlinux.org
Wed Oct 9 22:34:29 EDT 2013


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 at archlinux.org>
---
 scripts/makepkg.sh.in | 20 +++++++++-----------
 1 file changed, 9 insertions(+), 11 deletions(-)

diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in
index 1a8f02f..2b01c46 100644
--- a/scripts/makepkg.sh.in
+++ b/scripts/makepkg.sh.in
@@ -323,8 +323,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"
@@ -338,8 +336,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
 
@@ -387,13 +383,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##*.}
@@ -404,24 +402,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
 
-- 
1.8.4



More information about the pacman-dev mailing list