Add a BUILDDIR variable (which can be overridden in the environment) to specify an alternative location for building the package. This is useful for people who want to build on a different filesystem for improved performance (e.g. tmpfs). Signed-off-by: Allan McRae <allan@archlinux.org> --- doc/makepkg.8.txt | 3 +++ doc/makepkg.conf.5.txt | 5 +++++ etc/makepkg.conf.in | 3 +++ scripts/makepkg.sh.in | 18 ++++++++++++++++-- 4 files changed, 27 insertions(+), 2 deletions(-) diff --git a/doc/makepkg.8.txt b/doc/makepkg.8.txt index e61f7ab..f15226a 100644 --- a/doc/makepkg.8.txt +++ b/doc/makepkg.8.txt @@ -206,6 +206,9 @@ Environment Variables Folder where the downloaded sources will be stored. Overrides the corresponding value defined in linkman:makepkg.conf[5]. +**BUILDDIR=**"/path/to/folder":: + Folder where the package will be built. Overrides the corresponding + value defined in linkman:makepkg.conf[5]. Configuration ------------- diff --git a/doc/makepkg.conf.5.txt b/doc/makepkg.conf.5.txt index fcd2f2a..4db8b92 100644 --- a/doc/makepkg.conf.5.txt +++ b/doc/makepkg.conf.5.txt @@ -110,6 +110,11 @@ Options running in the DistCC cluster. In addition, you will want to modify your `MAKEFLAGS`. +**BUILDDIR=**"/path/to/folder":: + If this value is not set, packages will by default be built in the + subdirectories of the current directory. This option allows setting + the build location to another folder. + **GPGKEY=**"":: Specify a key to use for gpg signing instead of the default key in the keyring. Can be overridden with makepkg's `--key` option. diff --git a/etc/makepkg.conf.in b/etc/makepkg.conf.in index 42ae940..d3b7d3d 100644 --- a/etc/makepkg.conf.in +++ b/etc/makepkg.conf.in @@ -54,6 +54,9 @@ BUILDENV=(fakeroot !distcc color !ccache check !sign) #-- If using DistCC, your MAKEFLAGS will also need modification. In addition, #-- specify a space-delimited list of hosts running in the DistCC cluster. #DISTCC_HOSTS="" +# +#-- Specify a directory for package building. +#BUILDDIR=/tmp/makepkg ######################################################################### # GLOBAL PACKAGE OPTIONS diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in index 18df00f..ce8f008 100644 --- a/scripts/makepkg.sh.in +++ b/scripts/makepkg.sh.in @@ -41,8 +41,6 @@ myver='@PACKAGE_VERSION@' confdir='@sysconfdir@' BUILDSCRIPT='@BUILDSCRIPT@' startdir="$PWD" -srcdir="$startdir/src" -pkgdir="$startdir/pkg" packaging_options=('strip' 'docs' 'libtool' 'emptydirs' 'zipman' 'purge' 'upx') other_options=('ccache' 'distcc' 'buildflags' 'makeflags') @@ -1653,6 +1651,7 @@ done [[ -n ${PKGDEST} ]] && _PKGDEST=$(canonicalize_path ${PKGDEST}) [[ -n ${SRCDEST} ]] && _SRCDEST=$(canonicalize_path ${SRCDEST}) [[ -n ${SRCPKGDEST} ]] && _SRCPKGDEST=$(canonicalize_path ${SRCPKGDEST}) +[[ -n ${BUILDDIR} ]] && _BUILDDIR=$(canonicalize_path ${BUILDDIR}) [[ -n ${PKGEXT} ]] && _PKGEXT=${PKGEXT} [[ -n ${SRCEXT} ]] && _SRCEXT=${SRCEXT} [[ -n ${GPGKEY} ]] && _GPGKEY=${GPGKEY} @@ -1700,6 +1699,21 @@ fi readonly ALL_OFF BOLD BLUE GREEN RED YELLOW # override settings with an environment variable for batch processing +BUILDDIR=${_BUILDDIR:-$BUILDDIR} +BUILDDIR=${BUILDDIR:-$startdir} #default to $startdir if undefined +if [[ ! -d $BUILDDIR ]]; then + mkdir -p "$BUILDDIR" || + error "$(gettext "You do not have write permission to create packages in %s.")" "$BUILDDIR" + chmod a-s "$BUILDDIR" +fi +if [[ ! -w $BUILDDIR ]]; then + error "$(gettext "You do not have write permission to create packages in %s.")" "$BUILDDIR" + plain "$(gettext "Aborting...")" + exit 1 +fi +srcdir="$BUILDDIR/src" +pkgdir="$BUILDDIR/pkg" + PKGDEST=${_PKGDEST:-$PKGDEST} PKGDEST=${PKGDEST:-$startdir} #default to $startdir if undefined if [[ ! -w $PKGDEST ]]; then -- 1.7.5.4