On Mon, Mar 2, 2020 at 12:40 PM Matt Turner <matts...@gentoo.org> wrote: > > On Sun, Mar 1, 2020 at 10:32 PM Zac Medico <zmed...@gentoo.org> wrote: > > > > On 2/20/20 9:29 PM, Matt Turner wrote: > > > + > > > def findPackages( > > > options, > > > exclude=None, > > > @@ -564,7 +577,22 @@ 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 > > > + > > > + uselist = bin_dbapi.aux_get(cpv, ['USE'])[0].split() > > > + all_equal = True > > > + > > > + for k in ('RDEPEND', 'PDEPEND'): > > > + binpkg_deps = bin_dbapi.aux_get(cpv, [k]) > > > + ebuild_deps = port_dbapi.aux_get(cpv, [k]) > > > + > > > + if not _deps_equal(binpkg_deps, ebuild_deps, cpv.eapi, > > > uselist): > > > + all_equal = False > > > + break > > > + > > > + if all_equal: > > > + continue > > > > > > if destructive and var_dbapi.cpv_exists(cpv): > > > # Exclude if an instance of the package is installed due to > > > > > > > The aux_get calls are expensive, so it's more efficient to get multiple > > values with each call like: > > keys = ('RDEPEND', 'PDEPEND') > > binpkg_deps = dict(zip(keys, bin_dbapi.aux_get(cpv, keys)) > > ebuild_deps = dict(zip(keys, port_dbapi.aux_get(cpv, keys)) > > > > Otherwise, looks good. > > Thanks, that makes the code a lot nicer too.
Actually, use_reduce wants a list (it calls .split). Wrapping those in list() looks like it works, but I suspect that's not as you intended. What does the zip add over just doing this? binpkg_deps = bin_dbapi.aux_get(cpv, keys) ebuild_deps = port_dbapi.aux_get(cpv, keys)