commit:     cec349d7cfcda634e3f76cd3ca0c1a89bc46f414
Author:     hypersyd <70613804+siddhanthrathod <AT> users <DOT> noreply <DOT> 
github <DOT> com>
AuthorDate: Sat Sep  9 13:51:31 2023 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Tue Sep 26 21:09:28 2023 +0000
URL:        https://gitweb.gentoo.org/proj/portage.git/commit/?id=cec349d7

bintree: populate invalid_paths list for eclean-pkg

Enable eclean-pkg to handle incomplete merges from binhost.

It's an extension for gentoolkit's eclean-pkg clean invalids feature to deal 
with
binpkgs created by the new binhost without any tar header or format due to 
incomplete merges.

This results in gpkg.py --> class gpkg --> method _get_tar_format returning 
null which raises
PortagePackageException and SignatureException in binpkg.py --> Class 
binarytree.

Add an input for invalid paths api is being added so the eclean-pkg can clean 
it up.

Invalids feature: 
https://github.com/gentoo/gentoolkit/commit/a16d0d4fbfb4614832c4b682b41284a9050af29f,
 
https://github.com/gentoo/portage/commit/71daef3ac877329a0479a72ba333a9c801a36bf3
Bug: https://bugs.gentoo.org/900224
Signed-off-by: Siddhanth Rathod <xsiddhanthrathod <AT> gmail.com>
Closes: https://github.com/gentoo/portage/pull/1091
Signed-off-by: Sam James <sam <AT> gentoo.org>

 lib/portage/dbapi/bintree.py | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/lib/portage/dbapi/bintree.py b/lib/portage/dbapi/bintree.py
index 42912b2eb5..580ce2f290 100644
--- a/lib/portage/dbapi/bintree.py
+++ b/lib/portage/dbapi/bintree.py
@@ -1050,6 +1050,10 @@ class binarytree:
                         else:
                             binpkg_format = "gpkg"
 
+                    for ext in SUPPORTED_XPAK_EXTENSIONS + 
SUPPORTED_GPKG_EXTENSIONS:
+                        if myfile.endswith(ext):
+                            mypkg = myfile[: -len(ext)]
+                            break
                     try:
                         pkg_metadata = self._read_metadata(
                             full_path,
@@ -1062,14 +1066,11 @@ class binarytree:
                             f"!!! Invalid binary package: '{full_path}', 
{e}\n",
                             noiselevel=-1,
                         )
+                        self.invalid_paths[mypkg] = [full_path]
                         continue
                     mycat = pkg_metadata.get("CATEGORY", "")
                     mypf = pkg_metadata.get("PF", "")
                     slot = pkg_metadata.get("SLOT", "")
-                    for ext in SUPPORTED_XPAK_EXTENSIONS + 
SUPPORTED_GPKG_EXTENSIONS:
-                        if myfile.endswith(ext):
-                            mypkg = myfile[: -len(ext)]
-                            break
                     if not mycat or not mypf or not slot:
                         # old-style or corrupt package
                         writemsg(

Reply via email to