Hello, after todays ~guix pull~, I cannot compile vterm anymore. I do not seem to have ~cc~ installed (anymore?). Am I missing a package? I have ~make~, ~cmake~, ~gcc~, and ~gcc-toolchain~ installed and didn't change anything on that front. Steps to reproduce (following the "Manual installation" from the docs[1]): #+begin_src sh git clone https://github.com/akermu/emacs-libvterm.git cd emacs-libvterm mkdir -p build cd build cmake .. make #+end_src Results in: #+begin_src sh [ 8%] Performing update step for 'libvterm' [ 16%] No patch step for 'libvterm' [ 25%] No configure step for 'libvterm' [ 33%] Performing build step for 'libvterm' CC src/encoding.c /home/ck/.guix-profile/bin/libtool: line 1933: cc: command not found make[3]: *** [Makefile:63: src/encoding.lo] Error 1 make[2]: *** [CMakeFiles/libvterm.dir/build.make:86: libvterm-prefix/src/libvterm-stamp/libvterm-build] Error 2 make[1]: *** [CMakeFiles/Makefile2:112: CMakeFiles/libvterm.dir/all] Error 2 make: *** [Makefile:91: all] Error 2 #+end_src [1] https://github.com/akermu/emacs-libvterm Thanks Chris
Chris Keschnat via <help-guix@gnu.org> writes:
> Hello, after todays ~guix pull~, I cannot compile vterm anymore. I do not
> seem to have ~cc~ installed (anymore?). Am I missing a package? I have
> ~make~, ~cmake~, ~gcc~, and ~gcc-toolchain~ installed and didn't change
> anything on that front.
>
>
> Steps to reproduce (following the "Manual installation" from the docs[1]):
>
> #+begin_src sh
>
> git clone https://github.com/akermu/emacs-libvterm.git
> cd emacs-libvterm
> mkdir -p build
> cd build
> cmake ..
> make
>
> #+end_src
>
>
> Results in:
>
> #+begin_src sh
>
> [ 8%] Performing update step for 'libvterm'
> [ 16%] No patch step for 'libvterm'
> [ 25%] No configure step for 'libvterm'
> [ 33%] Performing build step for 'libvterm'
> CC src/encoding.c
> /home/ck/.guix-profile/bin/libtool: line 1933: cc: command not found
> make[3]: *** [Makefile:63: src/encoding.lo] Error 1
> make[2]: *** [CMakeFiles/libvterm.dir/build.make:86: libvterm-prefix/src/libvterm-stamp/libvterm-build] Error 2
> make[1]: *** [CMakeFiles/Makefile2:112: CMakeFiles/libvterm.dir/all] Error 2
> make: *** [Makefile:91: all] Error 2
>
> #+end_src
>
> [1] https://github.com/akermu/emacs-libvterm
>
>
> Thanks
>
> Chris
Without having looked at the package, what I would recommend and what I
usually try in a case when something tries to use cc is set the CC
environment variable or configure flag. Its value should ideally be
#$(cc-for-target).
So you would have something like in modify-phases:
(add-before 'configure 'set-cc
(lambda _ (setenv "CC" #$(cc-for-target))))
> (anymore?)
Guix has never provided the 'cc' alias for GCC AFAIR.
Perhaps you were previously using 'clang-toolchain', which does symlink cc to clang? That's something that we, Guix, explicitly add; not upstream.
It's unfortunate that Guix promotes a non-GPL compiler over GCC this way.
Kind regards,
T G-R
Sent on the go. Excuse or enjoy my brevity.
Tobias Geerinckx-Rice <me@tobias.gr> writes:
>> (anymore?)
>
> Guix has never provided the 'cc' alias for GCC AFAIR.
>
> Perhaps you were previously using 'clang-toolchain', which does
> symlink cc to clang? That's something that we, Guix, explicitly add;
> not upstream.
>
> It's unfortunate that Guix promotes a non-GPL compiler over GCC this way.
>
> Kind regards,
>
> T G-R
>
> Sent on the go. Excuse or enjoy my brevity.
Hello,
I might have been confused about how I installed vterm before. I
thought I used straight.el, which builds the module as describe in my
previous mail. It could be that I had manually installed =emacs-vterm= and
didn't add it to my (guix) emacs profile.
I have now installed ~emacs-vterm~ through guix (together with ~libvterm~
in my emacs profile). When I try running vterm from emacs, it still asks
to compile the module though (which fails).
Looking at the ~emacs-vterm~ packages, this happens here:
#+begin_src sh
(unless (require 'vterm-module nil t)
....)
#+end_src
Trying manually:
#+begin_src sh
(require 'vterm-module)
=>
Debugger entered--Lisp error: (file-missing "Cannot open load file" "No such file or directory" "vterm-module")
require(vterm-module)
elisp--eval-last-sexp(nil)
eval-last-sexp(nil)
funcall-interactively(eval-last-sexp nil)
command-execute(eval-last-sexp)
#+end_src
There is a .so file in my emacs profile though, so I think there is something wrong with some kind of module path?
#+begin_src sh
~/.guix-extra-profiles/emacs/emacs $ find | grep vterm-module
./lib/vterm-module.so
#+end_src
I do not know how/what to check though. So far I have only found that my
~module-file-prefix~ is ".so". But other than that, I do not know how
the loading of modules works and would appreciate a hint.
Thank you
Chris
Chris Keschnat <chris@catsu.it> writes:
> Tobias Geerinckx-Rice <me@tobias.gr> writes:
>
>>> (anymore?)
>>
>> Guix has never provided the 'cc' alias for GCC AFAIR.
>>
>> Perhaps you were previously using 'clang-toolchain', which does
>> symlink cc to clang? That's something that we, Guix, explicitly add;
>> not upstream.
>>
>> It's unfortunate that Guix promotes a non-GPL compiler over GCC this way.
>>
>> Kind regards,
>>
>> T G-R
>>
>> Sent on the go. Excuse or enjoy my brevity.
>
>
> Hello,
> I might have been confused about how I installed vterm before. I
> thought I used straight.el, which builds the module as describe in my
> previous mail. It could be that I had manually installed =emacs-vterm= and
> didn't add it to my (guix) emacs profile.
>
> I have now installed ~emacs-vterm~ through guix (together with ~libvterm~
> in my emacs profile). When I try running vterm from emacs, it still asks
> to compile the module though (which fails).
>
> Looking at the ~emacs-vterm~ packages, this happens here:
>
> #+begin_src sh
>
> (unless (require 'vterm-module nil t)
> ....)
>
> #+end_src
>
>
> Trying manually:
>
> #+begin_src sh
>
> (require 'vterm-module)
>
> =>
>
> Debugger entered--Lisp error: (file-missing "Cannot open load file" "No such file or directory" "vterm-module")
> require(vterm-module)
> elisp--eval-last-sexp(nil)
> eval-last-sexp(nil)
> funcall-interactively(eval-last-sexp nil)
> command-execute(eval-last-sexp)
>
> #+end_src
>
>
> There is a .so file in my emacs profile though, so I think there is something wrong with some kind of module path?
>
> #+begin_src sh
>
> ~/.guix-extra-profiles/emacs/emacs $ find | grep vterm-module
> ./lib/vterm-module.so
>
> #+end_src
>
> I do not know how/what to check though. So far I have only found that my
> ~module-file-prefix~ is ".so". But other than that, I do not know how
> the loading of modules works and would appreciate a hint.
>
>
> Thank you
> Chris
As I couldn't figure out how to debug this, I chose trial and error. And
it workd. I'm not exactly sure what the issue was, but here is what I
did, in case it helps anyone in the future:
Added ~libtool~ and ~cmake~ to =emacs.scm= and installed those. After that
and running:
#+begin_src sh
GUIX_PROFILE="/home/ck/.guix-extra-profiles/emacs/emacs"
. "$GUIX_PROFILE/etc/profile"
#+end_src
the compilation worked. But the module could not be loaded:
#+begin_src sh
byte-code: Module could not be opened: "/home/ck/.emacs.d/straight/build/vterm/vterm-module.so", "libvterm.so.0: cannot open shared object file: No such file or directory"
#+end_src
Then changed (as stated in the docs)
#+begin_src emacs-lisp
(use-package vterm)
#+end_src
to
#+begin_src emacs-lisp
(use-package vterm
:load-path "/home/ck/.guix-extra-profiles/emacs/emacs/lib")
#+end_src
vterm now works again.