On Sat, May 18, 2013 at 11:23:10AM +1000, Allan McRae wrote:
On 15/05/13 11:08, Phillip Smith wrote:
From 2730cfde03792ad847343d7339b7a8cacc6ff81e Mon Sep 17 00:00:00 2001 From: Phillip Smith <phillip.smith@naturesorganics.com.au> Date: Wed, 15 May 2013 11:04:03 +1000 Subject: [PATCH] makepkg: list files containing $srcdir (FS#31558)
when checking for files in a built package that contain references to $srcdir or $pkgdir_base, show the files that match to assist in debugging. ---
Much easier to review if the patch is sent inline....
scripts/makepkg.sh.in | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in index 75ddfe5..70d39b7 100644 --- a/scripts/makepkg.sh.in +++ b/scripts/makepkg.sh.in @@ -1606,11 +1606,15 @@ tidy_install() { done
# check for references to the build and package directory - 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" + srcdir_refs=$(cd "${pkgdir}" && find -type f -print0 | xargs -0 grep -I -l "${srcdir}") + if [[ -n $srcdir_refs ]] ; then
While it's equivalent, we've generally checked for array length by using something like: if (( ${#array[*]} )); then
+ warning "$(gettext "The following files within the package reference %s")" "\$srcdir" + echo $srcdir_refs # quotes are important to maintain line breaks
The lack of quotes indicates that they are not that important! Also, are there issues with files with spaces?
Allan is correct here -- there's problems with files containing spaces because of how the array is created
I think it should look like this (falconindy will correct me if not...)
srcdir_refs=($(cd ...)) if [[ -n $s... warning... printf " %s\n" "${srcdir_refs[@]}"
Close, but there's still word splitting issues here. I'd suggest something like: mapfile -t srcdir_refs < \ <(cd "$pkgdir" && find -type f -exec grep -Il "$srcdir" {} +)) d
+ fi + pkgdir_refs=$(cd "${pkgdir}" && find -type f -print0 | xargs -0 grep -I -l "${pkgdirbase}") + if [[ -n $pkgdir_refs ]] ; then + warning "$(gettext "The following files within the package reference %s")" "\$pkgdir" + echo "$pkgdir_refs" # quotes are important to maintain line breaks fi
if check_option "zipman" "y" && [[ -n ${MAN_DIRS[*]} ]]; then