Re: Geiser and Guix - how to avoid long compilation steps?

2020-05-26 Thread Ludovic Courtès
Hi,

Pierre Neidhardt  skribis:

> This has been a source of headaches for me too.  I like to run Geiser
> to hack my Guix checkout.  But if I forget to compile a (big) scheme
> file, geiser will grind to a halt when switching to a module that
> depends on the uncompiled file.
>
> Something weird: If I repeat the module switch, Geiser still takes ages
> to do it, as if it didn't persist the .go files (normally in
> ~/.cache/guile/ccache?)
>
> In my understanding, the solution here is to run `guix environment
> guix -- make` all the time.
>
> Maybe I'll add an override for geiser-mode-switch-to-repl-and-enter that
> compiles Guix automatically.
>
> Any other tip?

I run “make” before starting the REPL to avoid the problem you mention
(bah!), but from there on I can happily hack on my stuff.

A little-known feature of Emacs-Guix is C-c . u (guix-devel-use-module),
which allows you to load a module without compiling it with C-c C-k.
It’s fast and non-intrusive, unlike C-c C-k.

Ludo’.



Re: Geiser and Guix - how to avoid long compilation steps?

2020-05-26 Thread divoplade
Hello,

Le lundi 25 mai 2020 à 22:32 -0400, Jonathan Frederickson a écrit :
> Ah! Thanks for the hint about the version of Guile.
> 
> Turns out it was actually the other way around; I had built Guix
> with 
> Guile 3 but still had Guile 2.2 in my profile. This explains why an 
> ad-hoc environment with Guile worked just fine, but Guile in my
> normal 
> profile did not. (Looks like Guix gained support for Guile 3 prior
> to 
> version 1.1.0: 
> https://guix.gnu.org/blog/2020/gnu-guix-1.1.0-released/)

I am glad this helped even if I was 100% wrong!

> 
> On Tue, May 26, 2020 at 2:05 am, divoplade  wrote:
> > Hello,
> > 
> > I think that guix does not support guile 3 yet, so you should have
> > guile 2 bytecode for the guix modules. If geiser starts guile 3,
> > then
> > guile 3 will recompile everything because the bytecode format
> > changed
> > (and it could even compile native code).
> > 
> > Maybe it could work if you used guile 2.2 with geiser.
> > 
> > divoplade
> > 
> > Le lundi 25 mai 2020 à 19:02 -0400, Jonathan Frederickson a écrit :
> > >  I've been using Geiser to hack on Guix lately, which is
> > > absolutely
> > >  wonderful to use when it works. The trouble is, after I upgrade
> > > my
> > >  system's Guix, Guile attempts to compile large portions of Guix
> > > when
> > >  I
> > >  attempt to switch to the module I'm working on in Geiser, e.g.:
> > > 
> > >  M-x run-guile
> > >  ,m (gnu services games)
> > > 
> > >  This despite the fact that I'm working on a copy of Guix that
> > > I've
> > >  already compiled with 'make' and that has the compiled copy
> > >  alongside
> > >  the source. The compilation step takes a *long* time on my
> > > hardware,
> > >  which is fairly painful when I want to hack on Guix.
> > > 
> > >  I do have my Guix checkout in geiser-guile-load-path in my emacs
> > >  config
> > >  as per
> > >  https://guix.gnu.org/manual/en/html_node/The-Perfect-Setup.html:
> > > 
> > >  (with-eval-after-load 'geiser-guile
> > >(add-to-list 'geiser-guile-load-path "~/sources/guix"))
> > > 
> > >  My guess is that Guile is picking up my system's version of Guix
> > >  before
> > >  my local copy. I understand that I could start a version of
> > > Emacs in
> > >  a
> > >  pure ad-hoc environment (and Guile doesn't appear to start
> > >  recompiling
> > >  Guix when I do so), but the typical Emacs workflow is to have a
> > >  long-running Emacs session and use that for everything; that's
> > > what
> > >  I'm
> > >  used to, and I'd like to continue to do so if possible.
> > > 
> > >  Does anyone else experience this? What's the best way to use
> > > Geiser
> > >  to
> > >  hack on Guix when running Guix System?
> > > 
> > > 
> > > 
> 
> 




Re: Geiser and Guix - how to avoid long compilation steps?

2020-05-25 Thread Jonathan Frederickson

Ah! Thanks for the hint about the version of Guile.

Turns out it was actually the other way around; I had built Guix with 
Guile 3 but still had Guile 2.2 in my profile. This explains why an 
ad-hoc environment with Guile worked just fine, but Guile in my normal 
profile did not. (Looks like Guix gained support for Guile 3 prior to 
version 1.1.0: https://guix.gnu.org/blog/2020/gnu-guix-1.1.0-released/)


On Tue, May 26, 2020 at 2:05 am, divoplade  wrote:

Hello,

I think that guix does not support guile 3 yet, so you should have
guile 2 bytecode for the guix modules. If geiser starts guile 3, then
guile 3 will recompile everything because the bytecode format changed
(and it could even compile native code).

Maybe it could work if you used guile 2.2 with geiser.

divoplade

Le lundi 25 mai 2020 à 19:02 -0400, Jonathan Frederickson a écrit :

 I've been using Geiser to hack on Guix lately, which is absolutely
 wonderful to use when it works. The trouble is, after I upgrade my
 system's Guix, Guile attempts to compile large portions of Guix when
 I
 attempt to switch to the module I'm working on in Geiser, e.g.:

 M-x run-guile
 ,m (gnu services games)

 This despite the fact that I'm working on a copy of Guix that I've
 already compiled with 'make' and that has the compiled copy
 alongside
 the source. The compilation step takes a *long* time on my hardware,
 which is fairly painful when I want to hack on Guix.

 I do have my Guix checkout in geiser-guile-load-path in my emacs
 config
 as per
 https://guix.gnu.org/manual/en/html_node/The-Perfect-Setup.html:

 (with-eval-after-load 'geiser-guile
   (add-to-list 'geiser-guile-load-path "~/sources/guix"))

 My guess is that Guile is picking up my system's version of Guix
 before
 my local copy. I understand that I could start a version of Emacs in
 a
 pure ad-hoc environment (and Guile doesn't appear to start
 recompiling
 Guix when I do so), but the typical Emacs workflow is to have a
 long-running Emacs session and use that for everything; that's what
 I'm
 used to, and I'd like to continue to do so if possible.

 Does anyone else experience this? What's the best way to use Geiser
 to
 hack on Guix when running Guix System?











Re: Geiser and Guix - how to avoid long compilation steps?

2020-05-25 Thread divoplade
Hello,

I think that guix does not support guile 3 yet, so you should have
guile 2 bytecode for the guix modules. If geiser starts guile 3, then
guile 3 will recompile everything because the bytecode format changed
(and it could even compile native code).

Maybe it could work if you used guile 2.2 with geiser.

divoplade

Le lundi 25 mai 2020 à 19:02 -0400, Jonathan Frederickson a écrit :
> I've been using Geiser to hack on Guix lately, which is absolutely 
> wonderful to use when it works. The trouble is, after I upgrade my 
> system's Guix, Guile attempts to compile large portions of Guix when
> I 
> attempt to switch to the module I'm working on in Geiser, e.g.:
> 
> M-x run-guile
> ,m (gnu services games)
> 
> This despite the fact that I'm working on a copy of Guix that I've 
> already compiled with 'make' and that has the compiled copy
> alongside 
> the source. The compilation step takes a *long* time on my hardware, 
> which is fairly painful when I want to hack on Guix.
> 
> I do have my Guix checkout in geiser-guile-load-path in my emacs
> config 
> as per 
> https://guix.gnu.org/manual/en/html_node/The-Perfect-Setup.html:
> 
> (with-eval-after-load 'geiser-guile
>   (add-to-list 'geiser-guile-load-path "~/sources/guix"))
> 
> My guess is that Guile is picking up my system's version of Guix
> before 
> my local copy. I understand that I could start a version of Emacs in
> a 
> pure ad-hoc environment (and Guile doesn't appear to start
> recompiling 
> Guix when I do so), but the typical Emacs workflow is to have a 
> long-running Emacs session and use that for everything; that's what
> I'm 
> used to, and I'd like to continue to do so if possible.
> 
> Does anyone else experience this? What's the best way to use Geiser
> to 
> hack on Guix when running Guix System?
> 
> 
> 




Geiser and Guix - how to avoid long compilation steps?

2020-05-25 Thread Jonathan Frederickson
I've been using Geiser to hack on Guix lately, which is absolutely 
wonderful to use when it works. The trouble is, after I upgrade my 
system's Guix, Guile attempts to compile large portions of Guix when I 
attempt to switch to the module I'm working on in Geiser, e.g.:


M-x run-guile
,m (gnu services games)

This despite the fact that I'm working on a copy of Guix that I've 
already compiled with 'make' and that has the compiled copy alongside 
the source. The compilation step takes a *long* time on my hardware, 
which is fairly painful when I want to hack on Guix.


I do have my Guix checkout in geiser-guile-load-path in my emacs config 
as per https://guix.gnu.org/manual/en/html_node/The-Perfect-Setup.html:


(with-eval-after-load 'geiser-guile
 (add-to-list 'geiser-guile-load-path "~/sources/guix"))

My guess is that Guile is picking up my system's version of Guix before 
my local copy. I understand that I could start a version of Emacs in a 
pure ad-hoc environment (and Guile doesn't appear to start recompiling 
Guix when I do so), but the typical Emacs workflow is to have a 
long-running Emacs session and use that for everything; that's what I'm 
used to, and I'd like to continue to do so if possible.


Does anyone else experience this? What's the best way to use Geiser to 
hack on Guix when running Guix System?