makepkg: canonicalize paths from environmental variables

This prevents circular symlinks and weird final package locations
when using commands like  'PKGDEST="." makepkg'.

Fixes FS#20922.

Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Dan McGee <dan@archlinux.org>
This commit is contained in:
Allan McRae 2010-09-29 22:24:07 +10:00 committed by Dan McGee
parent 960c2cdcf7
commit c0f58ea9a2
1 changed files with 18 additions and 4 deletions

View File

@ -1410,6 +1410,20 @@ run_split_packaging() {
done
}
# Canonicalize a directory path if it exists
canonicalize_path() {
local path="$1";
if [[ -d $path ]]; then
(
cd "$path"
pwd -P
)
else
echo "$path"
fi
}
# getopt like parser
parse_options() {
local short_options=$1; shift;
@ -1615,10 +1629,10 @@ while true; do
shift
done
#preserve environment variables
_PKGDEST=${PKGDEST}
_SRCDEST=${SRCDEST}
_SRCPKGDEST=${SRCPKGDEST}
# preserve environment variables and canonicalize path
[[ -n ${PKGDEST} ]] && _PKGDEST=$(canonicalize_path ${PKGDEST})
[[ -n ${SRCDEST} ]] && _SRCDEST=$(canonicalize_path ${SRCDEST})
[[ -n ${SRCPKGDEST} ]] && _SRCPKGDEST=$(canonicalize_path ${SRCPKGDEST})
# default config is makepkg.conf
MAKEPKG_CONF=${MAKEPKG_CONF:-$confdir/makepkg.conf}