public inbox for gentoo-portage-dev@lists.gentoo.org
 help / color / mirror / Atom feed
From: Matt Turner <mattst88@gentoo.org>
To: Zac Medico <zmedico@gentoo.org>
Cc: gentoo-portage-dev@lists.gentoo.org
Subject: Re: [gentoo-portage-dev] [PATCH v2 gentoolkit 2/2] eclean: Add option to delete binpkgs with changed deps
Date: Wed, 11 Mar 2020 21:36:52 -0700	[thread overview]
Message-ID: <CAEdQ38FjFJcP=KCJRTPYEyKbWX=Jj_6YGAgqVruQYsLkebAPKg@mail.gmail.com> (raw)
In-Reply-To: <36738c6b-bc01-e67f-567e-35776a66bfda@gentoo.org>

On Wed, Mar 11, 2020 at 9:31 PM Zac Medico <zmedico@gentoo.org> wrote:
>
> On 3/6/20 10:11 PM, Matt Turner wrote:
> > Signed-off-by: Matt Turner <mattst88@gentoo.org>
> > ---
> >  pym/gentoolkit/eclean/cli.py    |  7 ++++++-
> >  pym/gentoolkit/eclean/search.py | 24 +++++++++++++++++++++++-
> >  2 files changed, 29 insertions(+), 2 deletions(-)
> >
> > diff --git a/pym/gentoolkit/eclean/cli.py b/pym/gentoolkit/eclean/cli.py
> > index 1a99b3e..39aafd3 100644
> > --- a/pym/gentoolkit/eclean/cli.py
> > +++ b/pym/gentoolkit/eclean/cli.py
> > @@ -147,6 +147,8 @@ def printUsage(_error=None, help=None):
> >       or help in ('all','packages'):
> >               print( "Available", yellow("options"),"for the",
> >                               green("packages"),"action:", file=out)
> > +             print( yellow("     --changed-deps")+
> > +                     "               - delete packages for which ebuild dependencies have changed", file=out)
> >               print( yellow(" -i, --ignore-failure")+
> >                       "             - ignore failure to locate PKGDIR", file=out)
> >               print( file=out)
> > @@ -263,6 +265,8 @@ def parseArgs(options={}):
> >                               options['size-limit'] = parseSize(a)
> >                       elif o in ("-v", "--verbose") and not options['quiet']:
> >                                       options['verbose'] = True
> > +                     elif o in ("--changed-deps"):
> > +                             options['changed-deps'] = True
> >                       elif o in ("-i", "--ignore-failure"):
> >                               options['ignore-failure'] = True
> >                       else:
> > @@ -290,7 +294,7 @@ def parseArgs(options={}):
> >       getopt_options['short']['distfiles'] = "fs:"
> >       getopt_options['long']['distfiles'] = ["fetch-restricted", "size-limit="]
> >       getopt_options['short']['packages'] = "i"
> > -     getopt_options['long']['packages'] = ["ignore-failure"]
> > +     getopt_options['long']['packages'] = ["ignore-failure", "changed-deps"]
> >       # set default options, except 'nocolor', which is set in main()
> >       options['interactive'] = False
> >       options['pretend'] = False
> > @@ -303,6 +307,7 @@ def parseArgs(options={}):
> >       options['fetch-restricted'] = False
> >       options['size-limit'] = 0
> >       options['verbose'] = False
> > +     options['changed-deps'] = False
> >       options['ignore-failure'] = False
> >       # if called by a well-named symlink, set the action accordingly:
> >       action = None
> > diff --git a/pym/gentoolkit/eclean/search.py b/pym/gentoolkit/eclean/search.py
> > index 0efefdb..17655cb 100644
> > --- a/pym/gentoolkit/eclean/search.py
> > +++ b/pym/gentoolkit/eclean/search.py
> > @@ -13,6 +13,8 @@ import sys
> >  from functools import partial
> >
> >  import portage
> > +from portage.dep import Atom, use_reduce
> > +from portage.dep._slot_operator import strip_slots
> >
> >  import gentoolkit.pprinter as pp
> >  from gentoolkit.eclean.exclude import (exclDictMatchCP, exclDictExpand,
> > @@ -488,6 +490,17 @@ class DistfilesSearch(object):
> >               return clean_me, saved
> >
> >
> > +def _deps_equal(deps_a, deps_b, eapi, uselist=None):
> > +     """Compare two dependency lists given a set of USE flags"""
> > +     if deps_a == deps_b: return True
> > +
> > +     deps_a = use_reduce(deps_a, uselist=uselist, eapi=eapi, token_class=Atom)
> > +     deps_b = use_reduce(deps_b, uselist=uselist, eapi=eapi, token_class=Atom)
> > +     strip_slots(deps_a)
> > +     strip_slots(deps_b)
> > +     return deps_a == deps_b
> > +
> > +
> >  def findPackages(
> >               options,
> >               exclude=None,
> > @@ -562,7 +575,16 @@ def findPackages(
> >
> >               # Exclude if binpkg exists in the porttree and not --deep
> >               if not destructive and port_dbapi.cpv_exists(cpv):
> > -                     continue
> > +                     if not options['changed-deps']:
> > +                             continue
>
> We can't can't continue above, since that will skip all of the filters
> that occur later in the loop. So, we have to nest the below changed-deps
> code under if options['changed-deps']:

I'm happy to make that change, but I don't think it's necessary,
strictly speaking, since this is inside an 'if not destructive'
conditional and the only filter afterwards is 'if destructive'.

In case we add more filters in the future, I'll make the change you suggested.

Thanks a bunch for your reviews!


  reply	other threads:[~2020-03-12  4:37 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-03-07  6:11 [gentoo-portage-dev] [PATCH v2 gentoolkit 1/2] eclean: Rewrite findPackages() Matt Turner
2020-03-07  6:11 ` [gentoo-portage-dev] [PATCH v2 gentoolkit 2/2] eclean: Add option to delete binpkgs with changed deps Matt Turner
2020-03-11  3:30   ` Zac Medico
2020-03-11 23:32     ` Matt Turner
2020-03-12  4:35       ` Zac Medico
2020-03-12  4:31   ` Zac Medico
2020-03-12  4:36     ` Matt Turner [this message]
2020-03-12  4:42       ` Zac Medico
2020-03-12  4:43       ` Matt Turner
2020-03-12  5:23         ` Zac Medico
2020-03-12  5:49           ` Matt Turner

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CAEdQ38FjFJcP=KCJRTPYEyKbWX=Jj_6YGAgqVruQYsLkebAPKg@mail.gmail.com' \
    --to=mattst88@gentoo.org \
    --cc=gentoo-portage-dev@lists.gentoo.org \
    --cc=zmedico@gentoo.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox