[gentoo-commits] proj/portage:master commit in: lib/portage/tests/dbapi/, lib/portage/dbapi/, /

2023-08-20 Thread Sam James
commit: 71daef3ac877329a0479a72ba333a9c801a36bf3
Author: Siddhanth Rathod  gmail  com>
AuthorDate: Thu Mar 23 16:28:14 2023 +
Commit: Sam James  gentoo  org>
CommitDate: Mon Aug 21 05:15:05 2023 +
URL:https://gitweb.gentoo.org/proj/portage.git/commit/?id=71daef3a

bintree: Add invalid_paths member to API

Add object invalid_paths for new eclean feature to deal with invalid binpkgs.

This is needed for gentoolkit's eclean to handle cleaning up invalid binpkgs.

gentoolkit side PR: https://github.com/gentoo/gentoolkit/pull/28
Bug: https://bugs.gentoo.org/900224
Signed-off-by: Siddhanth Rathod  gmail.com>
Closes: https://github.com/gentoo/portage/pull/1016
Signed-off-by: Sam James  gentoo.org>

 NEWS| 7 +++
 lib/portage/dbapi/bintree.py| 4 
 lib/portage/tests/dbapi/test_bintree.py | 1 +
 3 files changed, 12 insertions(+)

diff --git a/NEWS b/NEWS
index a59af3818b..d770e0b7e9 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,10 @@
+portage-3.0.52 (UNRELEASED)
+--
+
+Features:
+* bintree: Add new API member (invalid_paths) to allow gentoolkit to later
+  clean up invalid binpkgs (bug #900224).
+
 portage-3.0.51 (2023-08-20)
 --
 

diff --git a/lib/portage/dbapi/bintree.py b/lib/portage/dbapi/bintree.py
index 5f58c548d6..af2113bd84 100644
--- a/lib/portage/dbapi/bintree.py
+++ b/lib/portage/dbapi/bintree.py
@@ -485,6 +485,7 @@ class binarytree:
 self._remotepkgs = None  # remote metadata indexed by cpv
 self._additional_pkgs = {}
 self.invalids = []
+self.invalid_paths: dict[str, list[str]] = {}
 self.settings = settings
 self._pkg_paths = {}
 self._populating = False
@@ -1017,12 +1018,14 @@ class binarytree:
 noiselevel=-1,
 )
 self.invalids.append(myfile[:-5])
+self.invalid_paths[myfile] = [full_path]
 continue
 
 try:
 binpkg_format = get_binpkg_format(myfile)
 except InvalidBinaryPackageFormat:
 self.invalids.append(myfile[:-5])
+self.invalid_paths[myfile[:-5]] = [full_path]
 continue
 
 if gpkg_only:
@@ -1089,6 +1092,7 @@ class binarytree:
 for line in textwrap.wrap("".join(msg), 72):
 writemsg(f"!!! {line}\n", noiselevel=-1)
 self.invalids.append(mypkg)
+self.invalid_paths[mypkg] = [full_path]
 continue
 
 multi_instance = False

diff --git a/lib/portage/tests/dbapi/test_bintree.py 
b/lib/portage/tests/dbapi/test_bintree.py
index 383d5585e7..60785b4e59 100644
--- a/lib/portage/tests/dbapi/test_bintree.py
+++ b/lib/portage/tests/dbapi/test_bintree.py
@@ -46,6 +46,7 @@ class BinarytreeTestCase(TestCase):
 "_remotepkgs",
 "_additional_pkgs",
 "invalids",
+"invalid_paths",
 "settings",
 "_pkg_paths",
 "_populating",



[gentoo-commits] proj/portage:master commit in: lib/portage/tests/dbapi/, lib/portage/dbapi/

2022-09-25 Thread Mike Gilbert
commit: a52b27e86680331abdc12f48ea50bc7d1080445f
Author: David Palao  gmail  com>
AuthorDate: Fri Sep  9 18:35:17 2022 +
Commit: Mike Gilbert  gentoo  org>
CommitDate: Sun Sep 25 19:07:52 2022 +
URL:https://gitweb.gentoo.org/proj/portage.git/commit/?id=a52b27e8

chore(style): some minor stylistic issues

* replaced printf-style string with f-string, and
* code passed through pylint and black

Signed-off-by: David Palao  gmail.com>
Signed-off-by: Mike Gilbert  gentoo.org>

 lib/portage/dbapi/bintree.py|  6 +--
 lib/portage/tests/dbapi/test_bintree.py | 68 +
 2 files changed, 47 insertions(+), 27 deletions(-)

diff --git a/lib/portage/dbapi/bintree.py b/lib/portage/dbapi/bintree.py
index 28b3c481b..cea9378d5 100644
--- a/lib/portage/dbapi/bintree.py
+++ b/lib/portage/dbapi/bintree.py
@@ -866,9 +866,9 @@ class binarytree:
 if not self._binrepos_conf:
 writemsg(
 _(
-"!!! %s is missing (or PORTAGE_BINHOST is unset), 
but use is requested.\n"
-)
-% (config_path,),
+f"!!! {config_path} is missing (or PORTAGE_BINHOST 
is unset), "
+"but use is requested.\n"
+),
 noiselevel=-1,
 )
 else:

diff --git a/lib/portage/tests/dbapi/test_bintree.py 
b/lib/portage/tests/dbapi/test_bintree.py
index d0bfa306e..881d8ff48 100644
--- a/lib/portage/tests/dbapi/test_bintree.py
+++ b/lib/portage/tests/dbapi/test_bintree.py
@@ -30,25 +30,44 @@ class BinarytreeTestCase(TestCase):
 # Quite smoky test. What would it be a better testing strategy?
 # Not sure yet...
 required_attrs_no_multi_instance = {
-"pkgdir", "_multi_instance", "dbapi", "update_ents",
-"move_slot_ent", "populated", "tree", "_binrepos_conf",
-"_remote_has_index", "_remotepkgs", "_additional_pkgs",
-"invalids", "settings", "_pkg_paths", "_populating",
-"_all_directory", "_pkgindex_version", "_pkgindex_hashes",
-"_pkgindex_file", "_pkgindex_keys", "_pkgindex_aux_keys",
-"_pkgindex_use_evaluated_keys", "_pkgindex_header",
-"_pkgindex_header_keys", "_pkgindex_default_pkg_data",
-"_pkgindex_inherited_keys", "_pkgindex_default_header_data",
-"_pkgindex_translated_keys", "_pkgindex_allowed_pkg_keys",
+"pkgdir",
+"_multi_instance",
+"dbapi",
+"update_ents",
+"move_slot_ent",
+"populated",
+"tree",
+"_binrepos_conf",
+"_remote_has_index",
+"_remotepkgs",
+"_additional_pkgs",
+"invalids",
+"settings",
+"_pkg_paths",
+"_populating",
+"_all_directory",
+"_pkgindex_version",
+"_pkgindex_hashes",
+"_pkgindex_file",
+"_pkgindex_keys",
+"_pkgindex_aux_keys",
+"_pkgindex_use_evaluated_keys",
+"_pkgindex_header",
+"_pkgindex_header_keys",
+"_pkgindex_default_pkg_data",
+"_pkgindex_inherited_keys",
+"_pkgindex_default_header_data",
+"_pkgindex_translated_keys",
+"_pkgindex_allowed_pkg_keys",
 }
 no_multi_instance_settings = MagicMock()
 no_multi_instance_settings.features = ""
 no_multi_instance_bt = binarytree(
-pkgdir="/tmp", settings=no_multi_instance_settings)
+pkgdir="/tmp", settings=no_multi_instance_settings
+)
 multi_instance_settings = MagicMock()
 multi_instance_settings.features = "binpkg-multi-instance"
-multi_instance_bt = binarytree(
-pkgdir="/tmp", settings=multi_instance_settings)
+multi_instance_bt = binarytree(pkgdir="/tmp", 
settings=multi_instance_settings)
 for attr in required_attrs_no_multi_instance:
 getattr(no_multi_instance_bt, attr)
 getattr(multi_instance_bt, attr)
@@ -57,8 +76,7 @@ class BinarytreeTestCase(TestCase):
 getattr(multi_instance_bt, "_allocate_filename")
 
 @patch("portage.dbapi.bintree.binarytree._populate_local")
-def test_populate_without_updates_repos_nor_getbinspkgs(
-self, ppopulate_local):
+def test_populate_without_updates_repos_nor_getbinspkgs(self, 
ppopulate_local):
 bt = binarytree(pkgdir="/tmp", settings=MagicMock())
 ppopulate_local.return_value = {}
 bt.populate()
@@ -67,8 +85,7 @@ class BinarytreeTestCase(TestCase):
 self.assertTrue(bt.populated)
 
 @patch("portage.dbapi.bintree.binarytree._populate_local")
-def test_populate_calls_twice_populate_local_if_updates(
-self,