pkgcore / pkgcheck

pkgcore-based QA utility for ebuild repos
https://pkgcore.github.io/pkgcheck
BSD 3-Clause "New" or "Revised" License
35 stars 29 forks source link

[Commits Bug]: Traceback during pkgdev push when a later commit deletes a changed ebuild #675

Open leio opened 6 months ago

leio commented 6 months ago

Is there an existing issue for this?

Current Behavior

When trying to pkgdev push the changeset that ended up in ::gentoo as 976c25abd584cc82adada7e80fcfead902dabe01..74b1ce4d40e78ea5a34a82ed1dc414ee169bb69e I got the following traceback from pkgdev push:

pkgdev push: error: Traceback (most recent call last):
  File "/usr/lib/python3.12/site-packages/pkgcheck/pipeline.py", line 237, in _run
    if results := tuple(runner.run(restriction)):
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/pkgcheck/runners.py", line 71, in run
    yield from check.feed(item)
  File "/usr/lib/python3.12/site-packages/pkgcheck/checks/git.py", line 527, in feed
    yield from self.removal_checks(list(pkg_map["D"]))
  File "/usr/lib/python3.12/site-packages/pkgcheck/checks/git.py", line 358, in removal_checks
    old_keywords = set().union(*(p.keywords for p in removal_repo.match(pkg.unversioned_atom)))
                                                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/pkgcore/repository/prototype.py", line 224, in match
    return list(self.itermatch(atom, **kwds))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/pkgcore/repository/prototype.py", line 314, in _internal_match
    for pkg in self._internal_gen_candidates(candidates, **kwargs):
  File "/usr/lib/python3.12/site-packages/pkgcore/repository/prototype.py", line 309, in _internal_gen_candidates
    yield from sorter(pkg_filter(pkgs))
  File "/usr/lib/python3.12/site-packages/pkgcore/ebuild/repository.py", line 591, in _pkg_filter
    if not pkg.is_supported:
           ^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/snakeoil/klass.py", line 389, in __call__
    return self.getter(obj)
           ^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/pkgcore/package/base.py", line 95, in dynamic_getattr_dict
    val = functor(self)
          ^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/pkgcore/ebuild/ebuild_src.py", line 289, in eapi
    i = fileutils.readlines_utf8(ebuild.path)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/snakeoil/_fileutils.py", line 85, in native_readlines
    handle = open(mypath, mode, encoding=encoding)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
FileNotFoundError: [Errno 2] No such file or directory: '/tmp/tmp-pkgcheck-7oftddfy.repo/media-libs/gst-plugins-bad/gst-plugins-bad-1.22.10.ebuild'

It looks like the commits scan broke because an earlier commit adds gst-plugins-bad-1.22.10, but then a later one moves it to gst-plugins-bad-1.22.11 instead in the same push. That's just an educated guess though.

Expected Behavior

No traceback and successful pkgdev push

master commit id

74b1ce4d40e78ea5a34a82ed1dc414ee169bb69e

HEAD link

https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=976c25abd584cc82adada7e80fcfead902dabe01

pkgcheck version

pkgcheck 0.10.26

pkgcore version

pkgcore 0.12.23

git remotes configuration

leio git@github.com:leio/gentoo.git (fetch) leio git@github.com:leio/gentoo.git (push) origin git+ssh://git@git.gentoo.org/repo/gentoo.git (fetch) origin git+ssh://git@git.gentoo.org/repo/gentoo.git (push)