commit:     e49cc3493ab77678a740bf8a27cf22e77e061409
Author:     Siddhanth Rathod <xsiddhanthrathod <AT> gmail <DOT> com>
AuthorDate: Thu Sep 28 18:54:44 2023 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Fri Sep 29 07:20:18 2023 +0000
URL:        https://gitweb.gentoo.org/proj/gentoolkit.git/commit/?id=e49cc349

eclean-pkg: fix compatibility with FEATURES=pkgdir-index-trusted

Portage recently enabled FEATURES=pkgdir-index-trusted by default which breaks
the eclean-invalids feature.

Force reindexing after cleaning up to fix this.

See-also: 
https://github.com/gentoo/portage/commit/3bc7bfef51d88fd716e882d3931f2873e3493e01
Bug: https://bugs.gentoo.org/889300
Bug: https://bugs.gentoo.org/900224
Signed-off-by: Siddhanth Rathod <xsiddhanthrathod <AT> gmail.com>
Closes: https://github.com/gentoo/gentoolkit/pull/34
Signed-off-by: Sam James <sam <AT> gentoo.org>

 pym/gentoolkit/eclean/search.py | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/pym/gentoolkit/eclean/search.py b/pym/gentoolkit/eclean/search.py
index a2ac0ce..ce8fe37 100644
--- a/pym/gentoolkit/eclean/search.py
+++ b/pym/gentoolkit/eclean/search.py
@@ -8,6 +8,7 @@ import os
 import stat
 import sys
 from functools import partial
+from inspect import signature
 from typing import Optional
 
 import portage
@@ -16,13 +17,12 @@ from portage.dep._slot_operator import strip_slots
 
 import gentoolkit.pprinter as pp
 from gentoolkit.eclean.exclude import (
-    exclDictMatchCP,
     exclDictExpand,
     exclDictExpandPkgname,
+    exclDictMatchCP,
     exclMatchFilename,
 )
 
-
 # Misc. shortcuts to some portage stuff:
 port_settings = portage.settings
 pkgdir = port_settings["PKGDIR"]
@@ -568,7 +568,12 @@ def findPackages(
     dead_binpkgs: dict[str, list[str]] = {}
     keep_binpkgs = {}
 
-    bin_dbapi = portage.binarytree(pkgdir=pkgdir, 
settings=var_dbapi.settings).dbapi
+    # FEATURES=pkgdir-index-trusted is now on by default which makes portages 
inavlids
+    # inaccessible
+    settings = var_dbapi.settings
+    bin_dbapi = portage.binarytree(pkgdir=pkgdir, settings=settings).dbapi
+    if "force_reindex" in signature(bin_dbapi.bintree.populate).parameters:
+        bin_dbapi.bintree.populate(force_reindex=True)
     for cpv in bin_dbapi.cpv_all():
         cp = portage.cpv_getkey(cpv)
 

Reply via email to