summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAllan McRae <allan@archlinux.org>2014-05-25 05:53:19 +0200
committerAllan McRae <allan@archlinux.org>2014-05-25 05:53:19 +0200
commit2401468f5104fa6794589381cef9e970692d95e8 (patch)
tree754e35b616d9c5385d88d23cb85a3307776766ba
parentec01a22f7d13147a52ac8c0c1ee1b5fc2426de39 (diff)
downloadpacman-2401468f5104fa6794589381cef9e970692d95e8.tar.gz
pacman-2401468f5104fa6794589381cef9e970692d95e8.tar.xz
makepkg: Force buildscripts to be in startdir
We expect all source file to lie in $startdir. However, using "makepkg -p <buildscript>" can currently allows people to specify buildscripts in other directories. This results in confusion about where other sources should lie (in startdir or in the directory that the buildscript is in). Explicitly disable using -p for files in other directories to avoid this issue. Fixes FS#40293. Signed-off-by: Allan McRae <allan@archlinux.org>
-rw-r--r--doc/makepkg.8.txt3
-rw-r--r--scripts/makepkg.sh.in5
2 files changed, 7 insertions, 1 deletions
diff --git a/doc/makepkg.8.txt b/doc/makepkg.8.txt
index 9547bc8b..0277f54a 100644
--- a/doc/makepkg.8.txt
+++ b/doc/makepkg.8.txt
@@ -116,7 +116,8 @@ Options
*-p* <buildscript>::
Read the package script `buildscript` instead of the `PKGBUILD` default;
- see linkman:PKGBUILD[5].
+ see linkman:PKGBUILD[5]. The `buildscript` must be located in the directory
+ makepkg is called from.
*-r, \--rmdeps*::
Upon successful build, remove any dependencies installed by makepkg
diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in
index 96e53499..de92e933 100644
--- a/scripts/makepkg.sh.in
+++ b/scripts/makepkg.sh.in
@@ -2906,6 +2906,11 @@ else
exit 1
fi
+ if [[ ${BUILDFILE##*/} != "${BUILDFILE}" && ${BUILDFILE} != "${startdir}/${BUILDFILE##*/}" ]]; then
+ error "$(gettext "%s must be in the build directory.")" "$BUILDFILE"
+ exit 1
+ fi
+
if [[ ${BUILDFILE:0:1} != "/" ]]; then
BUILDFILE="$startdir/$BUILDFILE"
fi