Subject: Re: bug#73102: 29.4; `package-recompile-all' should skip packages installed by distro package manager

From: Philip Kaludercic <[email-masked]>
Date: Tue, 10 Sep 2024 14:59:01 +0000

Zhengyi Fu <[email-masked]> writes:

> Philip Kaludercic <[email-masked]> writes:
>
>> Zhengyi Fu <[email-masked]> writes:
>>
>>> When I try recompiling all packages installed by package.el with `M-x
>>> package-recompile-all', I got the following error:
>>>
>>> Debugger entered--Lisp error: (permission-denied "Removing old name"
>>> "Permission denied"
>>> "/usr/share/emacs/site-lisp/elpa/mu4e-1.10.8/mu4e-a...")
>>>   package-recompile(#s(package-desc :name mu4e :version (1 10 8)
>>> :summary "the mu mail user agent" :reqs nil :kind nil :archive nil
>>> :dir "/usr/share/emacs/site-lisp/elpa/mu4e-1.10.8" :extras nil
>>> :signed nil))
>>>   package-recompile-all()
>>>   funcall-interactively(package-recompile-all)
>>>   command-execute(package-recompile-all record)
>>>   execute-extended-command(nil "package-recompile-all" "recom all")
>>>   funcall-interactively(execute-extended-command nil "package-recompile-all" "recom all")
>>>   command-execute(execute-extended-command)
>>>
>>> This is possibly because the package `mu4e' was installed by the distro
>>> package manager in a path where normal users don't have write access.
>>>
>>> I think `package-recompile-all' should either skip those packages that
>>> are not installed by package.el or ignore such errors and continue to
>>> recompile other packages.
>>
>> We have installed a patch in Bug#68678 on master (the commit is from
>> last February, so you wouldn't see it yet on 29.4) that wraps the
>> `package-recompile' call in a `with-demoted-errors' block.  That would
>> still emit a error message, but it wouldn't break the recompilation
>> procedure.  Do you think that is enough, or should be explicitly and
>> additionally avoid re-compiling external packages?
>
> Yes.  That patch is enough for me.  Thanks!!

Great, I'll close this report then.  If you haven't fixed the issue
locally yet: Until you upgrade, a simple fix would be to add some advice
around package-recompile that wraps it in a `with-demoted-errors' block.

-- 
	Philip Kaludercic on siskin