On Sun, Mar 1, 2020 at 10:39 PM Zac Medico <zmed...@gentoo.org> wrote: > > On 2/20/20 9:29 PM, Matt Turner wrote: > > @@ -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 all_equal is True, then none of the other filters have an opportunity > to add this package to the dead_binpkgs set. That's not good is it?
There are four cases we skip including packages: 1) exclude list, 2) time limit, 3) non-destructive and package still exists (and now optionally runtime deps haven't changed), 4) destructive and package is installed. Cases (3) and (4) are non-overlapping. If none of those cases are true, then we add the package to the dead_binpkgs set. The logic looks right to me. Maybe I'm not understanding. With your other suggestion in place, the code looks like this, which is hopefully clearer. # Exclude if binpkg exists in the porttree and not --deep if not destructive and port_dbapi.cpv_exists(cpv): if not options['changed-deps']: continue keys = ('RDEPEND', 'PDEPEND') binpkg_deps = bin_dbapi.aux_get(cpv, keys) ebuild_deps = port_dbapi.aux_get(cpv, keys) uselist = bin_dbapi.aux_get(cpv, ['USE'])[0].split() if _deps_equal(binpkg_deps, ebuild_deps, cpv.eapi, uselist): continue Unfortunately I don't have any packages with changed-deps at the moment for testing :(