Subject: Re: bug#64226: 30.0.50; emacs-lisp-native-compile-and-load permission error

From: Eli Zaretskii <[email-masked]>
Date: Thu, 22 Jun 2023 19:12:53 +0300

> From: No Wayman <[email-masked]>
> Cc: Andrea Corallo <[email-masked]>, [email-masked]
> Date: Thu, 22 Jun 2023 11:44:33 -0400
> 
> I have reproduced from emacs -Q as well. Same error as above:
> 
> 
> Compiling /home/n/.emacs.d/elpaca/repos/elpaca/elpaca.el...done
> comp--native-compile: Native compiler error: 
> "/home/n/.emacs.d/elpaca/repos/elpaca/elpaca.el", "Compiling 
> /usr/lib/emacs/30.0.50/native-lisp/30.0.50-58a66af6/elpaca-0646d6fc-1256ece5.eln...
> Creating file with prefix: Permission denied, 
> /usr/lib/emacs/30.0.50/native-lisp/30.0.50-58a66af6/elpaca-0646d6fc-1256ece5
> 
> Error: permission-denied (\"Creating file with prefix\" 
> \"Permission denied\" 
> \"/usr/lib/emacs/30.0.50/native-lisp/30.0.50-58a66af6/elpaca-0646d6fc-1256ece5\")
>   mapbacktrace(#f(compiled-function (evald func args flags) 
>   #<bytecode 0x70d6f07f3ae8645>))
>   debug-early-backtrace()
>   debug-early(error (permission-denied \"Creating file with 
>   prefix\" \"Permission denied\" 
>   \"/usr/lib/emacs/30.0.50/native-lisp/30.0.50-58a66af6/elpaca-0646d6fc-1256ece5\"))
>   make-temp-file(\"/usr/lib/emacs/30.0.50/native-lisp/30.0.50-58a66af6/elpaca-0646d6fc-1256ece5\" 
>   nil \".eln.tmp\" nil)
>   comp--compile-ctxt-to-file(\"/usr/lib/emacs/30.0.50/native-lisp/30.0.50-58a66af6/elpaca-0646d6fc-1256ece5.eln\")
>   comp-compile-ctxt-to-file(\"/usr/lib/emacs/30.0.50/native-lisp/30.0.50-58a66af6/elpaca-0646d6fc-1256ece5.eln\")
>   comp-final1()
>   load-with-code-conversion(\"/tmp/emacs-int-comp-elpaca-0646d6fc-1256ece5-oSdhiB.el\" 
>   \"/tmp/emacs-int-comp-elpaca-0646d6fc-1256ece5-oSdhiB.el\" nil 
>   t)
>   command-line-1((\"-l\" 
>   \"/tmp/emacs-int-comp-elpaca-0646d6fc-1256ece5-oSdhiB.el\"))
>   command-line()
>   normal-top-level()
>  
> > I also don't understand why the backtrace above seems to imply 
> > that
> > you invoked Emacs like this:
> >
> >   emacs -l 
> >   /tmp/emacs-int-comp-elpaca-0646d6fc-1256ece5-73Dpd0.el
> 
> > IOW, the backtrace doesn't show invocation of
> > emacs-lisp-native-compile-and-load, it shows the attempt to load 
> > an
> > already-compiled .eln file.  What am I missing?  I added Andrea 
> > to
> > this discussion.
> 
> The compilation takes place in a subprocess, no?

No, I don't think so, not with emacs-lisp-native-compile-and-load.
Andrea, am I right?

And you haven't answered my other question:

> If, in "emacs -Q", you visit the source file, that is
> 
>   $HOME/.emacs.d/elpaca/builds/elpaca/elpaca.el
> 
> and then type
> 
>   M-: (native-compile buffer-file-name) RET
> 
> what file name do you see in the echo-area after the compilation
> finishes?