From: Ivy Foster <joyfulg...@archlinux.us>

makepkg --packagelist prints the name of each package that would
normally be produced, minus $PKGEXT, and exits.

Also fixed get_pkg_arch to treat arch as an array when querying
pkgbuild_get_attribute.

Signed-off-by: Ivy Foster <joyfulg...@archlinux.us>
---
Changes from v1: - renamed option to --packagelist
                 - Rephrased description in manpage
                 - Cleaned up variables
                 - Don't set NOEXTRACT, NOBUILD, SKIPCHECKSUMS, 
                   SKIPPGPCHECK, FORCE, or IGNOREARCH
                 - Move up check to see whether to run
                   print_all_package_names and exit
                 - Make get_pkg_arch treat arch as an array.
                   According to my grepping of abs, there are
                   no official packages that still use a
                   non-array arch.
 doc/makepkg.8.txt     |  3 +++
 scripts/makepkg.sh.in | 28 ++++++++++++++++++++++++----
 2 files changed, 27 insertions(+), 4 deletions(-)
 mode change 100644 => 100755 scripts/makepkg.sh.in

diff --git a/doc/makepkg.8.txt b/doc/makepkg.8.txt
index 31a2ef7..ce4364b 100644
--- a/doc/makepkg.8.txt
+++ b/doc/makepkg.8.txt
@@ -203,6 +203,9 @@ Options
        (Passed to pacman) Prevent pacman from displaying a progress bar;
        useful if you are redirecting makepkg output to file.
 
+*\--packagelist*::
+       Instead of building, list packages that would be produced. Listed
+       package names do not include PKGEXT.
 
 Additional Features
 -------------------
diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in
old mode 100644
new mode 100755
index 168f334..3c2e381
--- a/scripts/makepkg.sh.in
+++ b/scripts/makepkg.sh.in
@@ -879,7 +879,7 @@ get_pkg_arch() {
                fi
        else
                local arch_override
-               pkgbuild_get_attribute "$1" arch 0 arch_override
+               pkgbuild_get_attribute "$1" arch 1 arch_override
                (( ${#arch_override[@]} == 0 )) && arch_override=("${arch[@]}")
                if [[ $arch_override = "any" ]]; then
                        printf "%s\n" "any"
@@ -2834,6 +2834,19 @@ run_split_packaging() {
        pkgname=${pkgname_backup[@]}
 }
 
+print_all_package_names() {
+       local version=$(get_full_version)
+       local architecture pkg opts
+       for pkg in ${pkgname[@]}; do
+               architecture=$(get_pkg_arch $pkg)
+               pkgbuild_get_attribute "$pkg" 'options' 1 opts
+               printf "%s-%s-%s\n" "$pkg" "$version" "$architecture"
+               if in_opt_array "debug" ${opts[@]} && in_opt_array "strip" 
${opts[@]}; then
+                       printf "%s-%s-%s-%s\n" "$pkg" "@DEBUGSUFFIX@" "$pkgver" 
"$architecture"
+               fi
+       done
+}
+
 # Canonicalize a directory path if it exists
 canonicalize_path() {
        local path="$1";
@@ -2893,6 +2906,7 @@ usage() {
        printf -- "$(gettext "  --nocheck        Do not run the %s function in 
the %s")\n" "check()" "$BUILDSCRIPT"
        printf -- "$(gettext "  --noprepare      Do not run the %s function in 
the %s")\n" "prepare()" "$BUILDSCRIPT"
        printf -- "$(gettext "  --nosign         Do not create a signature for 
the package")\n"
+       printf -- "$(gettext "  --packagelist    Only list packages that would 
be produced, without PKGEXT")\n"
        printf -- "$(gettext "  --pkg <list>     Only build listed packages 
from a split package")\n"
        printf -- "$(gettext "  --sign           Sign the resulting package 
with %s")\n" "gpg"
        printf -- "$(gettext "  --skipchecksums  Do not verify checksums of the 
source files")\n"
@@ -2938,9 +2952,9 @@ ARGLIST=("$@")
 OPT_SHORT="AcCdefFghiLmop:rRsSV"
 OPT_LONG=('allsource' 'check' 'clean' 'cleanbuild' 'config:' 'force' 'geninteg'
           'help' 'holdver' 'ignorearch' 'install' 'key:' 'log' 'noarchive' 
'nobuild'
-          'nocolor' 'nocheck' 'nodeps' 'noextract' 'noprepare' 'nosign' 'pkg:' 
'repackage'
-          'rmdeps' 'sign' 'skipchecksums' 'skipinteg' 'skippgpcheck' 'source' 
'syncdeps'
-          'verifysource' 'version')
+          'nocolor' 'nocheck' 'nodeps' 'noextract' 'noprepare' 'nosign' 
'packagelist'
+          'pkg:' 'repackage' 'rmdeps' 'sign' 'skipchecksums' 'skipinteg'
+          'skippgpcheck' 'source' 'syncdeps' 'verifysource' 'version')
 
 # Pacman Options
 OPT_LONG+=('asdeps' 'noconfirm' 'needed' 'noprogressbar')
@@ -2983,6 +2997,7 @@ while true; do
                -o|--nobuild)     NOBUILD=1 ;;
                -p)               shift; BUILDFILE=$1 ;;
                --pkg)            shift; IFS=, read -ra p <<<"$1"; 
PKGLIST+=("${p[@]}"); unset p ;;
+               --packagelist)    PACKAGELIST=1 ;;
                -r|--rmdeps)      RMDEPS=1 ;;
                -R|--repackage)   REPKG=1 ;;
                --sign)           SIGNPKG='y' ;;
@@ -3264,6 +3279,11 @@ if { [[ -z $SIGNPKG ]] && check_buildenv "sign" "y"; } 
|| [[ $SIGNPKG == 'y' ]];
        fi
 fi
 
+if (( PACKAGELIST )); then
+       print_all_package_names
+       exit 0
+fi
+
 if (( ! PKGVERFUNC )); then
        check_build_status
 fi
-- 
2.3.3

Reply via email to