[pacman-dev] [PATCH v3] makepkg: print files with refs to $srcdir/$pkgdir
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
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
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