summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAllan McRae <allan@archlinux.org>2009-10-22 14:40:03 +1000
committerDan McGee <dan@archlinux.org>2009-11-30 21:22:52 -0600
commitf2c9e51eb00edb2f3123bd150fd9944c765426e0 (patch)
treecae8ca5080d0b7783474bc7d355f1fdeec8ec55e
parent82443e00597b0db5a7eadea4886e22b373ac373b (diff)
downloadpacman-f2c9e51eb00edb2f3123bd150fd9944c765426e0.tar.xz
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>
-rw-r--r--doc/makepkg.8.txt4
-rw-r--r--scripts/makepkg.sh.in19
2 files changed, 22 insertions, 1 deletions
diff --git a/doc/makepkg.8.txt b/doc/makepkg.8.txt
index 198aa954..18ee6ed2 100644
--- a/doc/makepkg.8.txt
+++ b/doc/makepkg.8.txt
@@ -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.
diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in
index 3fce4152..ceaa8a65 100644
--- a/scripts/makepkg.sh.in
+++ b/scripts/makepkg.sh.in
@@ -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} ]] \