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:43:19 -0700 [thread overview]
Message-ID: <CAEdQ38EY3-1P6LR_VdjXeEr5nJNVUxudArcqVc9WxnK-VZBEmQ@mail.gmail.com> (raw)
In-Reply-To: <CAEdQ38FjFJcP=KCJRTPYEyKbWX=Jj_6YGAgqVruQYsLkebAPKg@mail.gmail.com>
On Wed, Mar 11, 2020 at 9:36 PM Matt Turner <mattst88@gentoo.org> wrote:
>
> 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'.
Wait... the logic was if not destructive and
package-exists-in-porttree -> continue and do not add it to the dead
package list.
I've just changed it so it does that if changed-deps is not set... so
keep the current behavior without --changed-deps.
And if --changed-deps, check the porttree vs binpkg dependencies, and
if they still match, skip.
What is wrong with that logic?
next prev parent reply other threads:[~2020-03-12 4:43 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
2020-03-12 4:42 ` Zac Medico
2020-03-12 4:43 ` Matt Turner [this message]
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=CAEdQ38EY3-1P6LR_VdjXeEr5nJNVUxudArcqVc9WxnK-VZBEmQ@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