[pacman-dev] [PATCH] makepkg: allow specifying subsets of packages to build
Allan McRae
allan at archlinux.org
Thu Oct 22 00:52:16 EDT 2009
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 at archlinux.org>
---
doc/makepkg.8.txt | 4 ++++
scripts/makepkg.sh.in | 19 ++++++++++++++++++-
2 files changed, 22 insertions(+), 1 deletions(-)
diff --git a/doc/makepkg.8.txt b/doc/makepkg.8.txt
index ec02875..043ad40 100644
--- a/doc/makepkg.8.txt
+++ b/doc/makepkg.8.txt
@@ -148,6 +148,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.
diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in
index 309211b..880b90a 100644
--- a/scripts/makepkg.sh.in
+++ b/scripts/makepkg.sh.in
@@ -72,6 +72,7 @@ IGNOREARCH=0
HOLDVER=0
PKGFUNC=0
SPLITPKG=0
+PKGLIST=""
COLORMSG=0
# Forces the pkgver of the current PKGBUILD. Used by the fakeroot call
@@ -1243,6 +1244,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
}
@@ -1466,6 +1476,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
@@ -1502,7 +1513,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"
@@ -1540,6 +1551,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 ;;
@@ -1722,6 +1734,11 @@ fi
pkgbase=${pkgbase:-${pkgname[0]}}
+if [ -n "${PKGLIST[@]}" ]; then
+ unset pkgname
+ pkgname="${PKGLIST[@]}"
+fi
+
if [ "$SPLITPKG" -eq 0 ]; then
if [ \( -f "$PKGDEST/${pkgname}-${pkgver}-${pkgrel}-${CARCH}${PKGEXT}" \
-o -f "$PKGDEST/${pkgname}-${pkgver}-${pkgrel}-any${PKGEXT}" \) \
--
1.6.5.1
More information about the pacman-dev
mailing list