alezost / guix.el

Emacs interface for GNU Guix package manager
https://emacs-guix.gitlab.io/website/
GNU General Public License v3.0
139 stars 16 forks source link

Error on startup: Unbound variable: %max-returned-list-size #21

Closed Ambrevar closed 6 years ago

Ambrevar commented 6 years ago

The first time I run a guix command, I get the following error:

helm-M-x: Error in evaluating guile expression: <unnamed port>:17:23: In procedure module-lookup: Unbound variable: %max-returned-list-size

Entering a new prompt.  Type `,bt' for a backtrace or `,q' to continue.

Running the command again works though.

alezost commented 6 years ago

This variable (%max-returned-list-size) was added recently (by commit 00c87a9cafa3d74840be02efa2516286515b6f93), so I guess you use Emacs-Guix from MELPA, right?

Maybe the problem is that compiled (.go) files are from the previous version. Could you switch to *Guix REPL* buffer and check %load-path and %load-compiled-path variables there to check that both .go and .scm Emacs-Guix files come from the same place?

Also you may try to remove ~/.cache/guile/ccache directory (it shouldn't do any harm; there are only auto-compiled .go files there)

Ambrevar commented 6 years ago

Yes, I use Guix from MELPA. Note that I did not update the Guix package manager (no guix pull).

Both load paths point to the same store items.

How to reprocude:

I can repeat the above process ad infinitum.

More general question: Is it possible to skip Guix-managed packages when updating all packages from the M-x list-packages menu? In the long term I plan to switch to a full guix-controlled package management, but for now too many packages are missing.

alezost commented 6 years ago

Yes, I use Guix from MELPA.

OK, but do you have some other version of Emacs-Guix installed otherwise (with Guix, for example)? If you install it from MELPA, then .scm files are not compiled, but it looks like Guile still finds the compiled (.go) files from another version and loads them, so there is this conflict between .scm and .go files.

Note that I did not update the Guix package manager (no guix pull).

This shouldn't matter.

Both load paths point to the same store items.

Could you show the values of these variables?

How to reprocude:

Kill the guix REPL if any.
Run M-x guix-switch-to-repl. The error occurs.
Run it again. This time it's fine.

I can repeat the above process ad infinitum.

Sorry, I cannot reproduce, I use Emacs-Guix from the git checkout and it works fine for me. My guess is that there is a mismatch between .scm and .go files somewhere.

More general question: Is it possible to skip Guix-managed packages when updating all packages from the M-x list-packages menu? In the long term I plan to switch to a full guix-controlled package management, but for now too many packages are missing.

I think there is no easy way but since this 'list-package' machinery is just the elisp code, you can probably make your workaround. BTW I have the same plan (and I do nothing on implementing it :smile:): I install 16 emacs packages with Guix and several dozens from melpa (quelpa rather), and I have never experienced any conflicts using this approach.

Ambrevar commented 6 years ago

Right, I had two version installed: one from MELPA, one from Guix. I've removed the one from Guix for the time being (I'll switch to fully Guix-managed Emacs packages later).

After removing the emacs-guix package from Guix, removing the cache and re-logging, everything went back to normal!

I think you should document this in the info file and the package description.

alezost commented 6 years ago

I think you should document this in the info file and the package description.

I have mentioned it in the manual and README (commit 2d16d1666b8941e8b574919dc9935ee343e7a4a0). Thanks!

As for the package description of the emacs-guix Guix package (is that what you meant?), I doubt that this specific situation should be mentioned there. Anyway, it's a Guix question, so if you think it should be mentioned, please send a message to bug-guix@gnu.org.