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(
