Re: [pacman-dev] [PATCH] Add makepkg option --printproducts; fix bug #42150

2015-03-20 Thread Allan McRae
On 20/03/15 11:00, joyfulg...@archlinux.us wrote:
 From: Ivy Foster joyfulg...@archlinux.us

New contributor - yay!

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

Is --packagelist a better or more informative name?

 ---
  doc/makepkg.8.txt |  2 ++
  scripts/makepkg.sh.in | 26 +++---
  2 files changed, 25 insertions(+), 3 deletions(-)
  mode change 100644 = 100755 scripts/makepkg.sh.in
 
 diff --git a/doc/makepkg.8.txt b/doc/makepkg.8.txt
 index 31a2ef7..e266e96 100644
 --- a/doc/makepkg.8.txt
 +++ b/doc/makepkg.8.txt
 @@ -203,6 +203,8 @@ Options
   (Passed to pacman) Prevent pacman from displaying a progress bar;
   useful if you are redirecting makepkg output to file.
  
 +*\--printproducts*::
 + Instead of building, list packages that would be produced, without 
 PKGEXT.

I'm not a fan of the multiple commas here.  Maybe we can rephrase this.

  
  Additional Features
  ---
 diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in
 old mode 100644
 new mode 100755
 index 168f334..a69f8bc
 --- a/scripts/makepkg.sh.in
 +++ b/scripts/makepkg.sh.in
 @@ -2834,6 +2834,19 @@ run_split_packaging() {
   pkgname=${pkgname_backup[@]}
  }
  
 +print_all_package_names() {
 + local version=$(get_full_version)
 + local architecture=$(get_pkg_arch)

The =$(get_pkg_arch) is overwritten in the loop below.  Remove.  Make
pkg local too.

local architecture pkg

 + for pkg in ${pkgname[@]}; do
 + architecture=$(get_pkg_arch $pkg)
 + printf %s-%s-%s\n $pkg $version $architecture
 + pkgbuild_get_attribute $pkg 'options' 1 opts
 + if in_opt_array debug ${opts[@]}  in_opt_array strip 
 ${opts[@]}; then
 + printf %s-%s-%s-%s\n $pkg @DEBUGSUFFIX@ $pkgver 
 $architecture
 + fi
 + done
 +}

OK.

 +
  # Canonicalize a directory path if it exists
  canonicalize_path() {
   local path=$1;
 @@ -2894,6 +2907,7 @@ usage() {
   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   --pkg list Only build listed packages 
 from a split package)\n
 + printf -- $(gettext   --printproducts  Only list packages that would 
 be produced, without PKGEXT)\n
   printf -- $(gettext   --sign   Sign the resulting package 
 with %s)\n gpg
   printf -- $(gettext   --skipchecksums  Do not verify checksums of the 
 source files)\n
   printf -- $(gettext   --skipinteg  Do not perform any 
 verification checks on 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' 
 'pkg:'
 +  'printproducts' '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 ;;
 + --printproducts)  PRINTPRODUCTS=1; IGNOREARCH=1; NOEXTRACT=1; 
 NOBUILD=1; SKIPCHECKSUMS=1; SKIPPGPCHECK=1; FORCE=1 ;;

Woah...  that is a lot of options being enabled!

NOEXTRACT, NOBUILD, SKIPCHECKSUMS, SKIPPGPCHECK are all unneeded.

FORCE can be removed if the if (( PRINTPRODUCTS )) statement is moved
up a couple of lines.

IGNOREARCH is interesting.  If that is added a PKGBUILD with
arch=('i686') will work with --printproducts on an x86_64 system, but
all the packages will be listed as if they are built for x86_64.

So either we remove IGNROEARCH, or we could print this like:

foo-bar-1.0-1-@CARCH@
foo-baz-1.0-1-any

I think the later is more useful.
@heftig: you opened the feature request.  What do you think?

   -r|--rmdeps)  RMDEPS=1 ;;
   -R|--repackage)   REPKG=1 ;;
   --sign)   SIGNPKG='y' ;;
 @@ -3268,6 +3283,11 @@ if (( ! PKGVERFUNC )); then
   check_build_status
  fi
  
 +if (( PRINTPRODUCTS )); then
 + print_all_package_names
 + exit 0
 +fi
 +

OK.  See above about moving this up.

  # Run the bare minimum in fakeroot
  if (( INFAKEROOT )); then
   if (( SOURCEONLY )); then
 


Re: [pacman-dev] [PATCH] Add makepkg option --printproducts; fix bug #42150

2015-03-20 Thread Florian Pritz
On 21.03.2015 01:23, Ivy Foster wrote:
 On 20 Mar 2015, at  9:29 pm +0100, Florian Pritz wrote:
   From: Ivy Foster joyfulg...@archlinux.us
 
 I'm not really sure why that is here. Did you set the envelope sender in
 git (git config --global sendemail.envelopesender) or am I missing some
 difference between the two addresses?
 
 You're right, it's from envelopesender. Without that, msmtp
 clobbered my From line and changed the sender to my other
 email address, which isn't subscribed. Sorry.

If you also set it in git you should be able to get rid of that extra
From line in the mail body (at least I don't have it and I'm pretty sure
I did just that). Not that it's bad, but it looks a bit weird.



signature.asc
Description: OpenPGP digital signature


Re: [pacman-dev] [PATCH] Add makepkg option --printproducts; fix bug #42150

2015-03-20 Thread Ivy Foster
On 20 Mar 2015, at  9:29 pm +0100, Florian Pritz wrote:
   From: Ivy Foster joyfulg...@archlinux.us
 
 I'm not really sure why that is here. Did you set the envelope sender in
 git (git config --global sendemail.envelopesender) or am I missing some
 difference between the two addresses?

You're right, it's from envelopesender. Without that, msmtp
clobbered my From line and changed the sender to my other
email address, which isn't subscribed. Sorry.

  New contributor - yay!
   [patch]
  [notes]
  
  Thanks! I'll fix it up as you've suggested. When that's
  done, should I send the changes as a patch that's a
  sequel to the first, or should I create a unified patch
  with everything?

 [very thorough reply]

Thank you very much!


pgpeGnjtOIoyq.pgp
Description: PGP signature


[pacman-dev] [PATCH v2] Add makepkg option --packagelist; fix bug #42150

2015-03-20 Thread joyfulgirl
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   --nocheckDo 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   --packagelistOnly 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

Re: [pacman-dev] [PATCH v2] Add makepkg option --packagelist; fix bug #42150

2015-03-20 Thread Ivy Foster
On 21 Mar 2015, at 12:54 am +0100, Johannes Löthberg wrote:
 On 20/03, joyfulg...@archlinux.us wrote:
 Also fixed get_pkg_arch to treat arch as an array when querying
 pkgbuild_get_attribute.

 That is an unrelated change that doesn’t really belong in the same commit.

I'll redo the patch(es) and resubmit, then. My rationale for
including it, if it helps, is that it would always return
$CARCH rather than any in cases where arch=(any).

Thanks!


pgpfqsLYXoTCE.pgp
Description: PGP signature


Re: [pacman-dev] [PATCH v2] Add makepkg option --packagelist; fix bug #42150

2015-03-20 Thread Johannes Löthberg

On 20/03, joyfulg...@archlinux.us wrote:

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



That is an unrelated change that doesn’t really belong in the same 
commit.


--
Sincerely,
 Johannes Löthberg
 PGP Key ID: 0x50FB9B273A9D0BB5
 https://theos.kyriasis.com/~kyrias/


signature.asc
Description: PGP signature


[pacman-dev] [PATCH v3 1/2] Make get_pkg_arch treat arch as an array

2015-03-20 Thread joyfulgirl
From: Ivy Foster joyfulg...@archlinux.us

Signed-off-by: Ivy Foster joyfulg...@archlinux.us
---
v3: Separate change to get_pkg_arch into separate commit
 scripts/makepkg.sh.in | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
 mode change 100644 = 100755 scripts/makepkg.sh.in

diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in
old mode 100644
new mode 100755
index 168f334..5b3bffd
--- 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
-- 
2.3.3


[pacman-dev] [PATCH v3 2/2] Add makepkg option --packagelist; fix bug #42150

2015-03-20 Thread joyfulgirl
From: Ivy Foster joyfulg...@archlinux.us

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

Signed-off-by: Ivy Foster joyfulg...@archlinux.us
---
v3: Separate change to get_pkg_arch into another commit
 doc/makepkg.8.txt |  3 +++
 scripts/makepkg.sh.in | 26 +++---
 2 files changed, 26 insertions(+), 3 deletions(-)

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
index 5b3bffd..3c2e381 100755
--- a/scripts/makepkg.sh.in
+++ b/scripts/makepkg.sh.in
@@ -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   --nocheckDo 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   --packagelistOnly 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


Re: [pacman-dev] [PATCH] Add makepkg option --printproducts; fix bug #42150

2015-03-20 Thread Florian Pritz
  From: Ivy Foster joyfulg...@archlinux.us

I'm not really sure why that is here. Did you set the envelope sender in
git (git config --global sendemail.envelopesender) or am I missing some
difference between the two addresses?

 New contributor - yay!
  [patch]
 [notes]
 
 Thanks! I'll fix it up as you've suggested. When that's
 done, should I send the changes as a patch that's a sequel
 to the first, or should I create a unified patch with
 everything?

Send the updated patch with subject [PATCH v2] instead of [PATCH] (use
the -v2 option of git format-patch) and list the changes after the ---
marker.

That list of changes is mainly a habit of mine, but it allows the
readers to easily check if all of their concerns should have been
addressed. Not so much an issue here so feel free to omit it. I'm not
sure how others on this list feel about it.

Also use --in-reply-to with the Message-ID of your initial patch (or
write In-Reply-To: ... in the generated email's headers). You can find
the id in the email source and you can probably configure your client to
display additional headers instead of simply From/To/CC/Subject/... .
With that header we get proper threading so it's easy to review
discussion and previous versions of the patch.

Of course those options also work with git send-email if you use that.
Be sure to use --annotate to be able to add the comment after the marker
though.

Florian



signature.asc
Description: OpenPGP digital signature


Re: [pacman-dev] [PATCH] Add makepkg option --printproducts; fix bug #42150

2015-03-20 Thread Ivy Foster
On 20 Mar 2015, at  4:19 pm +1000, Allan McRae wrote:
 On 20/03/15 11:00, joyfulg...@archlinux.us wrote:
  From: Ivy Foster joyfulg...@archlinux.us

 New contributor - yay!
  [patch]
 [notes]

Thanks! I'll fix it up as you've suggested. When that's
done, should I send the changes as a patch that's a sequel
to the first, or should I create a unified patch with
everything?