From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by finch.gentoo.org (Postfix) with ESMTPS id 2B678138350 for ; Thu, 12 Mar 2020 04:37:11 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 59112E0957; Thu, 12 Mar 2020 04:37:10 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id 2D17FE0957 for ; Thu, 12 Mar 2020 04:37:10 +0000 (UTC) Received: from mail-ed1-f53.google.com (mail-ed1-f53.google.com [209.85.208.53]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) (Authenticated sender: mattst88) by smtp.gentoo.org (Postfix) with ESMTPSA id 4258934F154 for ; Thu, 12 Mar 2020 04:37:07 +0000 (UTC) Received: by mail-ed1-f53.google.com with SMTP id dc19so5716027edb.10 for ; Wed, 11 Mar 2020 21:37:07 -0700 (PDT) X-Gm-Message-State: ANhLgQ12ruwXQ1OlUyC9zCJGMOgZ/pD8sGqo0ur8dZG3M+N3e+nS+113 vF30tLHVYdOHGKHeg5hGyGOrvh4YLzrUWxQt9M4= X-Google-Smtp-Source: ADFU+vuorItcJJU7AO8fssCfxhVSwFwTVHc/PkSET9Zt9/UicSA4JmKIh1RQikLbxROER9+0w2L5FQVRiD20jsqOxow= X-Received: by 2002:a50:9f07:: with SMTP id b7mr5961459edf.148.1583987824301; Wed, 11 Mar 2020 21:37:04 -0700 (PDT) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-portage-dev@lists.gentoo.org Reply-to: gentoo-portage-dev@lists.gentoo.org X-Auto-Response-Suppress: DR, RN, NRN, OOF, AutoReply MIME-Version: 1.0 References: <20200307061110.1034493-1-mattst88@gentoo.org> <20200307061110.1034493-2-mattst88@gentoo.org> <36738c6b-bc01-e67f-567e-35776a66bfda@gentoo.org> In-Reply-To: <36738c6b-bc01-e67f-567e-35776a66bfda@gentoo.org> From: Matt Turner Date: Wed, 11 Mar 2020 21:36:52 -0700 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [gentoo-portage-dev] [PATCH v2 gentoolkit 2/2] eclean: Add option to delete binpkgs with changed deps To: Zac Medico Cc: gentoo-portage-dev@lists.gentoo.org Content-Type: text/plain; charset="UTF-8" X-Archives-Salt: a0207f6f-2eb0-4d56-a05e-b0a38c621d51 X-Archives-Hash: 4b1d09015ba00744d46e116d616e7229 On Wed, Mar 11, 2020 at 9:31 PM Zac Medico wrote: > > On 3/6/20 10:11 PM, Matt Turner wrote: > > Signed-off-by: Matt Turner > > --- > > 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!