Subject: emacs-next: emacs-29.1 fails to native-compile libraries, giving a runtime error that ctri.o and other files can't be found

From: Adam Porter <[email-masked]>
Date: Tue, 1 Aug 2023 13:00:08 -0500

Hi,

Since Emacs 29.1 was just released, I tried to install it with:

   guix install emacs-next --with-commit=emacs-next=emacs-29.1

This builds and installs without error, and it runs, but when Emacs 
tries to native-compile Elisp libraries at startup, I get these errors 
in the "*Warnings*" buffer:

#+begin_example
⛔ Error (use-package): magit/:catch: Native compiler error: (lambda 
(&rest arg158) (let ((f #'make-process)) (apply f arg158))), "Compiling 
/home/me/src/emacs/configs/ap.el/eln-cache/29.1-d107c3ce/subr--trampoline-6d616b652d70726f63657373_make_process_0.eln...
guile: warning: failed to install locale
ld: cannot find crti.o: No such file or directory
ld: cannot find crtbeginS.o: No such file or directory
ld: cannot find -lgcc: No such file or directory
ld: cannot find -lgcc: No such file or directory
libgccjit.so: error: error invoking gcc driver
Internal native compiler error: \"failed to compile\", 
\"/home/me/src/emacs/configs/ap.el/eln-cache/29.1-d107c3ce/subr--trampoline-6d616b652d70726f63657373_make_process_0.eln\", 
\"error invoking gcc driver\"

Error: native-ice (\"failed to compile\" 
\"/home/me/src/emacs/configs/ap.el/eln-cache/29.1-d107c3ce/subr--trampoline-6d616b652d70726f63657373_make_process_0.eln\" 
\"error invoking gcc driver\")
   mapbacktrace(#f(compiled-function (evald func args flags) #<bytecode 
-0x19aef44846510ebe>))
   debug-early-backtrace()
   debug-early(error (native-ice \"failed to compile\" 
\"/home/me/src/emacs/configs/ap.el/eln-cache/29.1-d107c3ce/subr--trampoline-6d616b652d70726f63657373_make_process_0.eln\" 
\"error invoking gcc driver\"))
 
comp--compile-ctxt-to-file(\"/home/me/src/emacs/configs/ap.el/eln-cache/29.1-d107c3ce/subr--trampoline-6d616b652d70726f63657373_make_process_0.eln\")
 
comp-compile-ctxt-to-file(\"/home/me/src/emacs/configs/ap.el/eln-cache/29.1-d107c3ce/subr--trampoline-6d616b652d70726f63657373_make_process_0.eln\")
   comp-final1()
 
load-with-code-conversion(\"/tmp/emacs-int-comp-subr--trampoline-6d616b652d70726f63657373_make_process_0-eF2T4W.el\" 
\"/tmp/emacs-int-comp-subr--trampoline-6d616b652d70726f63657373_make_process_0-eF2T4W.el\" 
nil t)
   command-line-1((\"-l\" 
\"/tmp/emacs-int-comp-subr--trampoline-6d616b652d70726f63657373_make_process_0-eF2T4W.el\"))
   command-line()
   normal-top-level()
"
#+end_example

I also have the "emacs" package installed at 28.2, which works 
flawlessly with native compilation.  I wonder if something changed in 
emacs.git since the 29.0.92 tag that requires a change to the Guix 
package definition in order to work.

Thanks for your work on Guix.