[pacman-dev] [PATCH] Replace usage of "cp -s" with the more portable "ln -s"

Dan McGee dpmcgee at gmail.com
Tue May 20 15:33:34 EDT 2008


On Tue, May 20, 2008 at 12:51 PM, Sebastian Nowicki <sebnow at gmail.com> wrote:
> The "-s" argument does not exist on BSD, and neither does
> "--remove-destination". This patch replaces the calls to
> "cp -s --remove-destination" with the equivalent "rm -f" and "ln -s"
> calls, in order to increase portability.
>
> Signed-off-by: Sebastian Nowicki <sebnow at gmail.com>
> ---
Ahh, I think this is smart as long as we have identical behavior as
before. The one thing I may ask, and do not know if this patch does
since I haven't actually tested it, is can we make the symlinks in
download_sources() relative for files in the build dir? This would
make it easier to move your build directory without breaking
everything.

For example, instead of a symlink looking like this (in src/):
foobar.desktop -> /home/dmcgee/packages/foobar/foobar.desktop
It would be:
foobar.desktop -> ../foobar.desktop

-Dan

>  scripts/makepkg.sh.in |    9 ++++++---
>  1 files changed, 6 insertions(+), 3 deletions(-)
>
> diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in
> index f56bcda..9da3687 100644
> --- a/scripts/makepkg.sh.in
> +++ b/scripts/makepkg.sh.in
> @@ -435,11 +435,13 @@ download_sources() {
>                local file=$(strip_url "$netfile")
>                if [ -f "$startdir/$file" ]; then
>                        msg2 "$(gettext "Found %s in build dir")" "$file"
> -                       cp -s --remove-destination "$startdir/$file" "$srcdir/"
> +                       rm -f "$srcdir/$file"
> +                       ln -s "$startdir/$file" "$srcdir/"
>                        continue
>                elif [ -f "$SRCDEST/$file" ]; then
>                        msg2 "$(gettext "Using cached copy of %s")" "$file"
> -                       cp -s --remove-destination "$SRCDEST/$file" "$srcdir/"
> +                       rm -f "$srcdir/$file"
> +                       ln -s "$SRCDEST/$file" "$srcdir/"
>                        continue
>                fi
>
> @@ -464,7 +466,8 @@ download_sources() {
>                if echo "$dlclient" | grep -q "%o" ; then
>                        mv -f "$SRCDEST/$file.part" "$SRCDEST/$file"
>                fi
> -               cp -s --remove-destination "$SRCDEST/$file" "$srcdir/"
> +               rm -f "$srcdir/$file"
> +               ln -s "$SRCDEST/$file" "$srcdir/"
>        done
>
>        popd &>/dev/null
> --
> 1.5.4.5
>
>
> _______________________________________________
> pacman-dev mailing list
> pacman-dev at archlinux.org
> http://archlinux.org/mailman/listinfo/pacman-dev
>




More information about the pacman-dev mailing list