[pacman-dev] [PATCH] 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(-) 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
participants (1)
-
Allan McRae