Subject: bug#78770: 31.0.50; listing packages has become impossible without creating random lisp directories

From: "Mark A. Hershberger" <[email-masked]>
Date: Thu, 12 Jun 2025 09:29:34 -0400

Eli Zaretskii <[email-masked]> writes:

>> Attempting to list packages consistently ends up with an error.  Backtrace:
>
> I don't get any errors here, FWIW.

I, also, do not get any errors with emacs -Q.

>>   ad-Advice-execute-extended-command(#<subr execute-extended-command> nil "package-list-packages" nil)
>
> What is that advice shown in the backtrace?

The advice was from multiple-cursors.  Removing that package still
results in an error.  I thought the error might have something to do
with the directory it was executed in, but creating an empty  directory
under /tmp showed the same problem.

Here is the current backtrace with multiple-cursors removed and
executing in the new directory:

Debugger entered--Lisp error: (file-missing "Opening directory" "No such file or directory" "/tmp/test/lisp")
  package-vc-commit(#s(package-desc :name forge :version (0 5 3) :summary "Access Git forges from Magit" :reqs ((emacs (29 1)) (compat (30 1)) (closql (2 2 2)) (emacsql (4 3 1)) (ghub (4 3 2)) (let-alist (1 0 6)) (llama (0 6 3)) (magit (4 3 6)) (markdown-mode (2 7)) (seq (2 24)) (transient (0 9 0)) (yaml (1 2 0))) :kind vc :archive nil :dir "/home/mah/emacsd-test/elpa/forge" :extras ((:commit . "aaeec51cca677e678032c87c26d6024efd7c71c4")) :signed nil))
  package-menu--print-info-simple(#s(package-desc :name forge :version (0 5 3) :summary "Access Git forges from Magit" :reqs ((emacs (29 1)) (compat (30 1)) (closql (2 2 2)) (emacsql (4 3 1)) (ghub (4 3 2)) (let-alist (1 0 6)) (llama (0 6 3)) (magit (4 3 6)) (markdown-mode (2 7)) (seq (2 24)) (transient (0 9 0)) (yaml (1 2 0))) :kind vc :archive nil :dir "/home/mah/emacsd-test/elpa/forge" :extras ((:commit . "aaeec51cca677e678032c87c26d6024efd7c71c4")) :signed nil))
  package-menu--refresh(t nil)
  package-menu--generate(nil t)
  list-packages(nil)
  funcall-interactively(list-packages nil)
  command-execute(list-packages record)
  execute-extended-command(nil "list-packages" "package lis")
  funcall-interactively(execute-extended-command nil "list-packages" "package lis")
  command-execute(execute-extended-command)

I will continue to look for the cause.