pkgdev icon indicating copy to clipboard operation
pkgdev copied to clipboard

`pkgdev commit` backtraces if committing changes with unstaged ebuild

Open ajakk opened this issue 3 years ago • 1 comments

I am working on a radare2 bump. In the course of doing this, I noticed that its remote ID was missing from its metadata. I decided to modify the metadata, stage, and commit just this change to the metadata. Reproduction is roughly the following, from gentoo/gentoo@d30761d3c18593bbee87fd2f56fad7e5893042d0:

~/gentoo/gentoo/dev-util/radare2 $ cp radare2-5.7.8.ebuild radare2-5.8.2.ebuild
~/gentoo/gentoo/dev-util/radare2 $ $EDITOR metadata.xml
~/gentoo/gentoo/dev-util/radare2 $ git add metadata.xml
~/gentoo/gentoo/dev-util/radare2 $ git status
On branch master
Your branch is up to date with 'origin/master'.

Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        modified:   metadata.xml

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        radare2-5.8.2.ebuild
~/gentoo/gentoo/dev-util/radare2 $ pkgdev commit
Traceback (most recent call last):
  File "/usr/lib/python-exec/python3.10/pkgdev", line 8, in <module>
    sys.exit(main())
  File "/usr/lib/python3.10/site-packages/pkgdev/scripts/__init__.py", line 46, in main
    run(os.path.basename(sys.argv[0]))
  File "/usr/lib/python3.10/site-packages/pkgdev/scripts/__init__.py", line 38, in run
    sys.exit(tool())
  File "/usr/lib/python3.10/site-packages/snakeoil/cli/tool.py", line 81, in __call__
    ret = self.main()
  File "/usr/lib/python3.10/site-packages/pkgdev/cli.py", line 24, in main
    return super().main()
  File "/usr/lib/python3.10/site-packages/snakeoil/cli/tool.py", line 191, in main
    self.handle_exec_exception(e)
  File "/usr/lib/python3.10/site-packages/snakeoil/cli/tool.py", line 176, in main
    exitstatus = func(self.options, self.out, self.err)
  File "/usr/lib/python3.10/site-packages/pkgdev/scripts/pkgdev_commit.py", line 835, in _commit
    args = determine_msg_args(options, changes)
  File "/usr/lib/python3.10/site-packages/pkgdev/scripts/pkgdev_commit.py", line 709, in determine_msg_args
    message.append(changes.prefix + changes.summary)
  File "/usr/lib/python3.10/site-packages/snakeoil/klass.py", line 203, in __get__
    obj = self.function(instance)
  File "/usr/lib/python3.10/site-packages/pkgdev/scripts/pkgdev_commit.py", line 612, in summary
    return str(MetadataSummary(self._options, self.pkg_changes))
  File "/usr/lib/python3.10/site-packages/pkgdev/scripts/pkgdev_commit.py", line 262, in __str__
    if s := self.status_funcs[statuses](self):
  File "/usr/lib/python3.10/site-packages/pkgdev/scripts/pkgdev_commit.py", line 285, in modify
    old_pkg = self.old_repo.match(atom)[0]
  File "/usr/lib/python3.10/site-packages/pkgcore/repository/prototype.py", line 227, in match
    return list(self.itermatch(atom, **kwds))
  File "/usr/lib/python3.10/site-packages/pkgcore/repository/prototype.py", line 317, in _internal_match
    for pkg in self._internal_gen_candidates(candidates, **kwargs):
  File "/usr/lib/python3.10/site-packages/pkgcore/repository/prototype.py", line 312, in _internal_gen_candidates
    yield from sorter(pkg_filter(pkgs))
  File "/usr/lib/python3.10/site-packages/pkgcore/ebuild/repository.py", line 574, in _pkg_filter
    if not pkg.is_supported:
  File "/usr/lib/python3.10/site-packages/snakeoil/klass.py", line 389, in __call__
    return self.getter(obj)
  File "/usr/lib/python3.10/site-packages/pkgcore/package/base.py", line 97, in dynamic_getattr_dict
    val = functor(self)
  File "/usr/lib/python3.10/site-packages/pkgcore/ebuild/ebuild_src.py", line 289, in eapi
    i = fileutils.readlines_utf8(ebuild.path)
  File "/usr/lib/python3.10/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/tmpg_8vhxva/dev-util/radare2/radare2-5.8.2.ebuild'

ajakk avatar Jan 23 '23 02:01 ajakk

Can confirm, ran into this today. I was committing just metadata.xml while an unstaged new ebuild for the same package was present. pkgcore 0.12.30

jjakob avatar Aug 13 '25 16:08 jjakob