[pacman-dev] [PATCH v2] Add makepkg option --packagelist; fix bug #42150
joyfulgirl at archlinux.us
joyfulgirl at archlinux.us
Fri Mar 20 23:49:52 UTC 2015
From: Ivy Foster <joyfulgirl at 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 <joyfulgirl at 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
More information about the pacman-dev
mailing list