diff options
author | Allan McRae <allan@archlinux.org> | 2009-10-22 14:40:03 +1000 |
---|---|---|
committer | Dan McGee <dan@archlinux.org> | 2009-11-30 21:22:52 -0600 |
commit | f2c9e51eb00edb2f3123bd150fd9944c765426e0 (patch) | |
tree | cae8ca5080d0b7783474bc7d355f1fdeec8ec55e | |
parent | 82443e00597b0db5a7eadea4886e22b373ac373b (diff) | |
download | pacman-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.txt | 4 | ||||
-rw-r--r-- | 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 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} ]] \ |