makepkg: allow specifying subsets of packages to build

This allows makepkg to only build a specified subset of packages
from a split PKGBUILD.  This is very useful in combination with the
-R flag or when bumping the pkgrel of a single package.

Fixes FS#15956.

Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Dan McGee <dan@archlinux.org>
This commit is contained in:
Allan McRae 2009-10-22 14:40:03 +10:00 committed by Dan McGee
parent 82443e0059
commit f2c9e51eb0
2 changed files with 22 additions and 1 deletions

View File

@ -149,6 +149,10 @@ Options
remote builder, or a tarball upload. Because integrity checks are verified,
all source files of the package need to be present or downloadable.
*\--pkg <`list`>*::
Only build listed packages from a split package. The use of quotes is
necessary when specifying multiple packages. e.g. `--pkg "pkg1 pkg3"`
*\--noconfirm*::
(Passed to pacman) Prevent pacman from waiting for user input before
proceeding with operations.

View File

@ -73,6 +73,7 @@ HOLDVER=0
BUILDFUNC=0
PKGFUNC=0
SPLITPKG=0
PKGLIST=""
# Forces the pkgver of the current PKGBUILD. Used by the fakeroot call
# when dealing with svn/cvs/etc PKGBUILDs.
@ -1247,6 +1248,15 @@ check_sanity() {
done
fi
if [[ -n "${PKGLIST[@]}" ]]; then
for pkg in ${PKGLIST[@]}; do
if ! in_array $pkg ${pkgname[@]}; then
error "$(gettext "requested package %s is not provided in %s")" "$pkg" "$BUILDSCRIPT"
return 1
fi
done
fi
return 0
}
@ -1465,6 +1475,7 @@ usage() {
echo "$(gettext " --asroot Allow makepkg to run as root user")"
printf "$(gettext " --config <file> Use an alternate config file (instead of '%s')")\n" "$confdir/makepkg.conf"
echo "$(gettext " --holdver Prevent automatic version bumping for development PKGBUILDs")"
echo "$(gettext " --pkg <list> Only build listed packages from a split package")"
echo "$(gettext " --skipinteg Do not fail when integrity checks are missing")"
echo "$(gettext " --source Generate a source-only tarball without downloaded sources")"
echo
@ -1501,7 +1512,7 @@ ARGLIST=("$@")
OPT_SHORT="AcCdefFghiLmop:rRsV"
OPT_LONG="allsource,asroot,ignorearch,clean,cleancache,nodeps"
OPT_LONG="$OPT_LONG,noextract,force,forcever:,geninteg,help,holdver"
OPT_LONG="$OPT_LONG,install,log,nocolor,nobuild,rmdeps,repackage,skipinteg"
OPT_LONG="$OPT_LONG,install,log,nocolor,nobuild,pkg:,rmdeps,repackage,skipinteg"
OPT_LONG="$OPT_LONG,source,syncdeps,version,config:"
# Pacman Options
OPT_LONG="$OPT_LONG,noconfirm,noprogressbar"
@ -1539,6 +1550,7 @@ while true; do
-m|--nocolor) USE_COLOR='n' ;;
-o|--nobuild) NOBUILD=1 ;;
-p) shift; BUILDFILE=$1 ;;
--pkg) shift; PKGLIST=$1 ;;
-r|--rmdeps) RMDEPS=1 ;;
-R|--repackage) REPKG=1 ;;
--skipinteg) SKIPINTEG=1 ;;
@ -1735,6 +1747,11 @@ fi
pkgbase=${pkgbase:-${pkgname[0]}}
if [[ -n "${PKGLIST[@]}" ]]; then
unset pkgname
pkgname="${PKGLIST[@]}"
fi
if (( ! SPLITPKG )); then
if [[ -f $PKGDEST/${pkgname}-${pkgver}-${pkgrel}-${CARCH}${PKGEXT} \
|| -f $PKGDEST/${pkgname}-${pkgver}-${pkgrel}-any${PKGEXT} ]] \