[pacman-dev] [PATCH] makepkg: fix error on unnecessary -r
Dave Reisner
d at falconindy.com
Sun Jan 22 21:42:32 EST 2012
On Mon, Jan 23, 2012 at 12:48:37PM +1000, Allan McRae wrote:
> On 23/01/12 12:13, Dave Reisner wrote:
> > On Mon, Jan 23, 2012 at 12:08:14PM +1000, Allan McRae wrote:
> >> On 20/01/12 23:59, Dave Reisner wrote:
> >>> On Fri, Jan 20, 2012 at 11:24:23PM +1000, Allan McRae wrote:
> >>>> The grep statement used to check for a difference between the
> >>>> installed package list before and after resolving dependencies
> >>>> returns 1 if there is no difference. This sets of the error
> >>>> trap when "-r" is used "unnecessarily".
> >>>>
> >>>> Signed-off-by: Allan McRae <allan at archlinux.org>
> >>>> ---
> >>>>
> ...
> >>>>
> >>>> local deplist
> >>>> - if ! deplist=($(grep -xvFf <(printf "%s\n" "${original_pkglist[@]}") \
> >>>> - <(printf "%s\n" "${current_pkglist[@]}"))); then
> >>>> + deplist=($(grep -xvFf <(printf "%s\n" "${original_pkglist[@]}") \
> >>>> + <(printf "%s\n" "${current_pkglist[@]}") || true))
> >>>> + if [[ -n deplist ]]; then
> >>>
> >>> My brain tells me there's a way to avoid this, but I'm not sure I trust
> >>> it right now.
> >>>
> >>
> >> I have not thought of one... let me know if your brain is working
> >> better now and has come up with the answer!
> >>
> >>
> >
> > What about something like...
> >
> > local dep deplist
> > while read -r dep; do
> > deplist+=("$dep")
> > done < <(grep -xvFf <(printf "%s\n" "${original_pkglist[@]}") \
> > <(printf "%s\n" "${current_pkglist[@]}"))
> >
> > if (( ${#deplist[*]} )); then
> > return
> > fi
>
> I'm not sure the whole "while read" construct is worth it to get rid of
> the || true. I'll just leave my patch as it is for now unless you
> really feel strongly that I should not do it that way...
>
> Allan
>
Yeah, I'm not sure either. Ideally we'd have something decent like an
array_diff or array_subtract function, but passing arrays in bash is
an undocumented feature and otherwise awful to do "properly".
More information about the pacman-dev
mailing list