diff options
author | Eli Schwartz <eschwartz@archlinux.org> | 2018-06-04 15:31:19 +0200 |
---|---|---|
committer | Allan McRae <allan@archlinux.org> | 2018-06-18 05:15:51 +0200 |
commit | 793202344b47914d06a2c48bacbb6b232f7c5387 (patch) | |
tree | bbc4e6b68d44fca4eddf8b217b0fb013ce3d1e64 | |
parent | e6dbe82c0c52011b4abb46283ba606eb75577ce7 (diff) | |
download | pacman-793202344b47914d06a2c48bacbb6b232f7c5387.tar.gz pacman-793202344b47914d06a2c48bacbb6b232f7c5387.tar.xz |
makepkg: fix erroneous $BUILDDIR when $startdir is not an absolute path
When comparing the $BUILDDIR to the $startdir, we used string equality
instead of testing whether they are the same location, and ended up
appending $pkgbase even though there's no reason to use it here.
In some cases, this could result in makepkg erroring when trying to
create $srcdir/$pkgdir, if a file with the same name as the $pkgbase
exists. This is expected behavior if a file "src" or "pkg" exists, but
decidedly less so for $pkgbase.
This could be fixed either by setting $startdir to an absolute path, or
by ensuring the test checks this directly; I've chosen to do both, since
the test should really be correctly checking the thing it actually cares
about, but since we ensure absolute paths are used everywhere else, this
might bite us elsewhere someday. It's also more consistent.
Fixes FS#58865
Signed-off-by: Eli Schwartz <eschwartz@archlinux.org>
Signed-off-by: Allan McRae <allan@archlinux.org>
-rw-r--r-- | scripts/makepkg.sh.in | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in index 9918ee7e..32423262 100644 --- a/scripts/makepkg.sh.in +++ b/scripts/makepkg.sh.in @@ -44,7 +44,7 @@ unset GREP_OPTIONS declare -r makepkg_version='@PACKAGE_VERSION@' declare -r confdir='@sysconfdir@' declare -r BUILDSCRIPT='@BUILDSCRIPT@' -declare -r startdir="$PWD" +declare -r startdir="$(pwd -P)" LIBRARY=${LIBRARY:-'@libmakepkgdir@'} @@ -1453,7 +1453,7 @@ fi basever=$(get_full_version) -if [[ $BUILDDIR = "$startdir" ]]; then +if [[ $BUILDDIR -ef "$startdir" ]]; then srcdir="$BUILDDIR/src" pkgdirbase="$BUILDDIR/pkg" else |