[pacman-dev] [PATCH] makepkg: Place packages symlinks in build dir when DESTDIR is used

Dan McGee dpmcgee at gmail.com
Tue Nov 3 00:46:54 EST 2009


On Mon, Nov 2, 2009 at 11:00 PM, Eric Bélanger <snowmaniscool at gmail.com> wrote:
> When DESTDIR is used, symlinks to the packages will be put in the build directory.  This combines the convenience of a global package cache with the ease of having a package (i.e. a symlink) in the build directory for testing and installation purpose.

This seems really reasonable. It gets a +1 from me for the idea; I
didn't test the code or anything though.

> Signed-off-by: Eric Bélanger <snowmaniscool at gmail.com>
> ---
>  scripts/makepkg.sh.in |    6 ++++++
>  1 files changed, 6 insertions(+), 0 deletions(-)
>
> diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in
> index 92b0454..dc9124b 100644
> --- a/scripts/makepkg.sh.in
> +++ b/scripts/makepkg.sh.in
> @@ -1000,6 +1000,8 @@ create_package() {
>                "$PKGEXT" ; EXT=$PKGEXT ;;
>        esac
>        local pkg_file="$PKGDEST/${nameofpkg}-${pkgver}-${pkgrel}-${PKGARCH}${EXT}"
> +       local pkglinks_name="${startdir}/${nameofpkg}-${pkgver}-${pkgrel}-${PKGARCH}${PKGEXT}"
> +       local pkglinks_target="$PKGDEST/${nameofpkg}-${pkgver}-${pkgrel}-${PKGARCH}${PKGEXT}"
Since we repeat the same
"${nameofpkg}-${pkgver}-${pkgrel}-${PKGARCH}${PKGEXT}" part three
times, we should really pull that into a local variable and then set
the three others as necessary.

>
>        local ret=0
>
> @@ -1018,6 +1020,10 @@ create_package() {
>                ret=$?
>        fi
>
> +       if [ $ret -eq 0 ]; then
> +               [ ! -f "${pkglinks_name}" ] && ln -s "${pkglinks_target}" "${pkglinks_name}" && ret=$?
Will this work with err traps? I thought you need to be explicit with
the if; then; fi blocks.

> +       fi
> +
>        if [ $ret -ne 0 ]; then
>                error "$(gettext "Failed to create package file.")"
>                exit 1 # TODO: error code
> --
> 1.6.5.2


More information about the pacman-dev mailing list