[pacman-dev] [PATCH v3] makepkg: print files with refs to $srcdir/$pkgdir

2016-10-15 Thread ivy . foster
From: Ivy Foster 

Since rewriting build_references() anyway, tweaked quoting.
Implements FS#31558.

Signed-off-by: Ivy Foster 
---
 scripts/libmakepkg/lint_package/build_references.sh.in | 16 +---
 1 file changed, 9 insertions(+), 7 deletions(-)

diff --git a/scripts/libmakepkg/lint_package/build_references.sh.in 
b/scripts/libmakepkg/lint_package/build_references.sh.in
index 67c14e6..b9958c8 100644
--- a/scripts/libmakepkg/lint_package/build_references.sh.in
+++ b/scripts/libmakepkg/lint_package/build_references.sh.in
@@ -25,14 +25,16 @@ LIBRARY=${LIBRARY:-'@libmakepkgdir@'}
 
 source "$LIBRARY/util/message.sh"
 
-
 lint_package_functions+=('warn_build_references')
 
 warn_build_references() {
-   if find "${pkgdir}" -type f -print0 | xargs -0 grep -q -I "${srcdir}" ; 
then
-   warning "$(gettext "Package contains reference to %s")" 
"\$srcdir"
-   fi
-   if find "${pkgdir}" -type f -print0 | xargs -0 grep -q -I 
"${pkgdirbase}" ; then
-   warning "$(gettext "Package contains reference to %s")" 
"\$pkgdir"
-   fi
+   local refs
+
+   for var in srcdir pkgdir; do
+   mapfile -t refs < <(find "$pkgdir" -type f -exec grep -l 
"${!var}" {} +)
+   if  [[ ${#refs} -gt 0 ]]; then
+   warning "$(gettext 'Package contains reference to %s')" 
"\$$var"
+   printf '%s\n' "${refs[@]}" >&2
+   fi
+   done
 }
-- 
2.10.0


Re: [pacman-dev] [PATCH v2] makepkg: print filenames and line numbers of references to $srcdir & $pkgdir in built package

2016-10-15 Thread Ivy Foster
On 15 Oct 2016, at  6:52 pm +1000, Allan McRae wrote:
> On 15/10/16 12:27, Ivy Foster wrote:
> > On 14 Oct 2016, at 10:07 pm -0400, Andrew Gregory wrote:
> >> On 10/14/16 at 08:21pm, ivy.fos...@gmail.com wrote:
> >>> From: Ivy Foster 
> >  > +mapfile -t refs < <(find "$pkgdir" -type f -exec grep 
> > -n "${!var}" {} +)
> > 
> >> For packages with just a single file this won't print the name of the
> >> matching file.  GNU grep has -H for this, but it's not POSIX.  What
> >> about including /dev/null as an argument to grep so that it always has
> >> more than one file?
> > 
> > Ah, you're quite right. I'll fiddle with that and resubmit tomorrow, then.
> > 
> 
> Why no use -l?
> 
> -l, --files-with-matches  print only names of FILEs containing matches

I can do that instead, if you prefer. Personally, I wanted to use -n
rather than -l, because it matches the format of compiler warnings
(for ease of opening directly to the right line in your editor). Using
-l would have the benefit of being less verbose, I suppose.

Ivy


Re: [pacman-dev] [PATCH v2] makepkg: print filenames and line numbers of references to $srcdir & $pkgdir in built package

2016-10-15 Thread Allan McRae
On 15/10/16 12:27, Ivy Foster wrote:
> On 14 Oct 2016, at 10:07 pm -0400, Andrew Gregory wrote:
>> We're not very strict about this, but please try to keep the first
>> line of the commit message fairly short, ideally around 50 characters.
> 
> Noted, thanks.
> 
>> On 10/14/16 at 08:21pm, ivy.fos...@gmail.com wrote:
>>> From: Ivy Foster 
>  > +  mapfile -t refs < <(find "$pkgdir" -type f -exec grep -n 
> "${!var}" {} +)
> 
>> For packages with just a single file this won't print the name of the
>> matching file.  GNU grep has -H for this, but it's not POSIX.  What
>> about including /dev/null as an argument to grep so that it always has
>> more than one file?
> 
> Ah, you're quite right. I'll fiddle with that and resubmit tomorrow, then.
> 

Why no use -l?

-l, --files-with-matches  print only names of FILEs containing matches

A