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 <[email protected]>
---
 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


Reply via email to