[pacman-dev] [PATCH] makepkg: canonicalize paths from environmental variables
Xavier
chantry.xavier at gmail.com
Thu Sep 30 07:26:29 EDT 2010
>
> Well, one way to avoid all this is to add something like:
>
> [[ $PKGDIR == "." ]] && $PKGDIR="$startdir"
>
> before we preserve the environmental variables. But that is bad as
> things like PKGDIR="../" would still cause issues.
>
I rather meant a way to remove any assumption of PKGDEST being absolute.
This is the only broken code, isn't it :
if (( ! ret )) && [[ "$PKGDEST" != "${startdir}" ]]; then
ln -sf "${pkg_file}" "${pkg_file/$PKGDEST/$startdir}"
ret=$?
fi
Why not do something like :
local link_file="$startdir/${nameofpkg}-${pkgver}-${pkgrel}-${PKGARCH}${PKGEXT}"
if [[ ! -f "$link_file" ]]; then
ln -sf $pkg_file $link_file
fi
I don't know if there are cases where a regular file exists but is not the
package we just built. If it can happen and we care, we could try to test
whether pkg_file and link_file are not actually the same regular file.
> So I think we should just add the bash implementation of realpath as
> a function inside makepkg. The one at stackoverflow is very
> simplistic so I will take another look at the one posted to the
> mailing list. We should really look at libifying some/all of this
> sort of stuff out of makepkg...
>
> Allan
>
Btw there are actually several bash impl in that link, the last one is more
complex :
http://stackoverflow.com/questions/1055671/how-can-i-get-the-behavior-of-gnus-readlink-f-on-a-mac/2710477#2710477
More information about the pacman-dev
mailing list