Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 907807 - emerge breaks because of broken binpkg
Summary: emerge breaks because of broken binpkg
Status: UNCONFIRMED
Alias: None
Product: Portage Development
Classification: Unclassified
Component: Binary packages support (show other bugs)
Hardware: AMD64 Linux
: Normal normal (vote)
Assignee: Portage team
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2023-06-03 19:26 UTC by Nguyen Thai Ngoc Duy
Modified: 2024-03-03 22:36 UTC (History)
2 users (show)

See Also:
Package list:
Runtime testing required: ---


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Nguyen Thai Ngoc Duy 2023-06-03 19:26:37 UTC
I've got some temporary and probably broken file in /var/cache/binpkgs and emerge breaks with this. I've deleted the file so I don't think I can reproduce it, but it would be nice if this exception can be caught somehow, because otherwise emerge completely stops working

Traceback (most recent call last):                                                             
  File "/usr/lib/python3.11/site-packages/portage/xpak.py", line 441, in scan                                                                                                                  
    get_binpkg_format(self.file, check_file=True)                                                                                                                                                File "/usr/lib/python3.11/site-packages/portage/binpkg.py", line 49, in get_binpkg_format    
    if "gpkg-1" in (os.path.basename(f) for f in gpkg_tar.getnames()):                                                                                                                         
                                                 ^^^^^^^^^^^^^^^^^^^                           
  File "/usr/lib/python3.11/tarfile.py", line 1830, in getnames                           
    return [tarinfo.name for tarinfo in self.getmembers()]
                                        ^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/tarfile.py", line 1822, in getmembers
    self._load()        # all members, we first have to
    ^^^^^^^^^^^^
  File "/usr/lib/python3.11/tarfile.py", line 2422, in _load
    tarinfo = self.next()
              ^^^^^^^^^^^
  File "/usr/lib/python3.11/tarfile.py", line 2344, in next
    self.fileobj.seek(self.offset - 1)
  File "/usr/lib/python3.11/bz2.py", line 261, in seek
    return self._buffer.seek(offset, whence)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/_compression.py", line 153, in seek
    data = self.read(min(io.DEFAULT_BUFFER_SIZE, offset))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/_compression.py", line 99, in read
    raise EOFError("Compressed file ended before the "
EOFError: Compressed file ended before the end-of-stream marker was reached

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python-exec/python3.11/emerge", line 58, in <module>
    retval = emerge_main()
             ^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/_emerge/main.py", line 1294, in emerge_main
    return run_action(emerge_config)
           ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/_emerge/actions.py", line 3445, in run_action
    and _global_updates(
        ^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/portage/_global_updates.py", line 41, in _global_updates
    return _do_global_updates(
           ^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/portage/_global_updates.py", line 133, in _do_global_updates
    bindb.bintree.populate()
  File "/usr/lib/python3.11/site-packages/portage/dbapi/bintree.py", line 826, in populate
    update_pkgindex = self._populate_local(
                      ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/portage/dbapi/bintree.py", line 1037, in _populate_local
    pkg_metadata = self._read_metadata(
                   ^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/portage/dbapi/bintree.py", line 1720, in _read_metadata
    binpkg_metadata = portage.xpak.tbz2(filename).get_data()
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/portage/xpak.py", line 552, in get_data
    if not self.scan():
           ^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/portage/xpak.py", line 471, in scan
    get_binpkg_format(self.file, check_file=True)
  File "/usr/lib/python3.11/site-packages/portage/binpkg.py", line 49, in get_binpkg_format
    if "gpkg-1" in (os.path.basename(f) for f in gpkg_tar.getnames()):
                                                 ^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/tarfile.py", line 1830, in getnames
    return [tarinfo.name for tarinfo in self.getmembers()]
                                        ^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/tarfile.py", line 1822, in getmembers
    self._load()        # all members, we first have to
    ^^^^^^^^^^^^
  File "/usr/lib/python3.11/tarfile.py", line 2422, in _load
    tarinfo = self.next()
              ^^^^^^^^^^^
  File "/usr/lib/python3.11/tarfile.py", line 2344, in next
    self.fileobj.seek(self.offset - 1)
  File "/usr/lib/python3.11/bz2.py", line 261, in seek
    return self._buffer.seek(offset, whence)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/_compression.py", line 153, in seek
    data = self.read(min(io.DEFAULT_BUFFER_SIZE, offset))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/_compression.py", line 99, in read
    raise EOFError("Compressed file ended before the "
EOFError: Compressed file ended before the end-of-stream marker was reached