d12frosted / homebrew-emacs-plus

Emacs Plus formulae for the Homebrew package manager
MIT License
2.37k stars 182 forks source link

[General]: libgccjit.so error invoking gcc driver #733

Open elondres-mim opened 1 month ago

elondres-mim commented 1 month ago

Issue description

After updating to Sequoia I get the titular error every time I launch Emacs Plus from the applications folder or a saved-to-dock Emacs Plus and then run M-x.

I do not get the error in question when launching Emacs Plus from the command line, interestingly enough.

d12frosted commented 1 month ago

Pretty sure it's related to https://github.com/d12frosted/homebrew-emacs-plus/issues/720

Env injection is broken for whatever reason. Frankly, I will not have any time soon to investigate, so hopefuly as more people upgrade, someone will be able to spend some time investigating.

I wonder if using exce-path-from-shell solves the issue.

efroemling commented 1 month ago

Pretty sure it's related to #720

This is the exact problem I ran into which led me to looking into the paths thing, so I'd assume the same.

Prior to relying on emacs-plus' automatic path stuff I was using exec-path-from-shell so I'd imagine that could be a good fallback here too.

Though in my case I'm just explicitly setting the value from the Info.plist via a few lines at the top of my .emacs so that I theoretically get exactly what emacs-plus would be giving me:

;; Temp: Explicitly set PATH environment variable and update exec-path to match it.
;; (the string here should be copied from the PATH in Emacs.app/Contents/Info.plist)
(setenv "PATH" "/opt/homebrew/bin:/opt/homebrew/sbin:...etc etc...")
(setq exec-path (split-string (getenv "PATH") path-separator))
citizensn1ps commented 1 month ago
;; Temp: Explicitly set PATH environment variable and update exec-path to match it.
;; (the string here should be copied from the PATH in Emacs.app/Contents/Info.plist)
(setenv "PATH" "/opt/homebrew/bin:/opt/homebrew/sbin:...etc etc...")
(setq exec-path (split-string (getenv "PATH") path-separator))

@efroemling Thanks, this solution worked for me as well. Which kinda surprised me because the native compilation log was saying the libgccjit library emutls_w wasn't found. And only when compiling a handful of my packages. Sent me into the depths of the gcc directory...this solution is...much simpler 😅

EXT-OWL commented 3 weeks ago

Pretty sure it's related to #720

This is the exact problem I ran into which led me to looking into the paths thing, so I'd assume the same.

Prior to relying on emacs-plus' automatic path stuff I was using exec-path-from-shell so I'd imagine that could be a good fallback here too.

Though in my case I'm just explicitly setting the value from the Info.plist via a few lines at the top of my .emacs so that I theoretically get exactly what emacs-plus would be giving me:

;; Temp: Explicitly set PATH environment variable and update exec-path to match it.
;; (the string here should be copied from the PATH in Emacs.app/Contents/Info.plist)
(setenv "PATH" "/opt/homebrew/bin:/opt/homebrew/sbin:...etc etc...")
(setq exec-path (split-string (getenv "PATH") path-separator))

Can confirm this works for me as well. Thank you, kind internet stranger!

al3xandru commented 3 weeks ago

In my environment, setting the PATH as per efroemling's instructions did not work. I got the impression that it worked, but then noticed again the exact same error.

M-x getenv PATH: ~/bin:~/go/bin:~/.pyenv/plugins/pyenv-virtualenv/shims/:~/.pyenv/syms/:~/.sdkman/candidates/java/current/bin:opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

On the other hand, now looking for libgccjit.so I don't seem to find it anywhere. What package is it coming with and where is it supposed to be?

Update: I see libgccjit being installed, but there's no .so (only .dylibs)