Emacs-compat warnings on Guix

Howdy!

My Emacs produces warning about being unable to activate packages because emacs-compat is unavailable. Right now, it seems the packages actually works despite warnings, but my Guix Emacs configuration is quite unstable and I want to figure this out as part of the debug process. Plus it’s annoying.

I use the latest packages from Guix, which means Emacs 29.4 and emacs-compat 30.0.0.0.

I get the following warnings when I start Emacs:

Unable to activate package ‘with-editor’.
Required package ‘compat-30.0.0.0’ is unavailable
Unable to activate package ‘vertico’.
Required package ‘compat-30’ is unavailable
Unable to activate package ‘transient’.
Required package ‘compat-30.0.0.0’ is unavailable
Unable to activate package ‘magit-section’.
Required package ‘compat-30.0.0.0’ is unavailable
Unable to activate package ‘magit’.
Required package ‘compat-30.0.0.0’ is unavailable
Unable to activate package ‘eat’.
Required package ‘compat-29.1’ is unavailable
Unable to activate package ‘corfu’.
Required package ‘compat-30’ is unavailable
Unable to activate package ‘consult’.
Required package ‘compat-30’ is unavailable

My home configuration:

...
  ;; Below is the list of packages that will show up in your
  ;; Home profile, under ~/.guix-home/profile.
 (packages
  (specifications->packages
   (list

    ;; Apps
    "firefox"
    "steam"

    ;; Emacs
    "emacs"
    "emacs-guix"
    "emacs-compat"
    "emacs-use-package"
...

I’ve tried to use version 29.* of emacs-compat, but there is none available in my channels (I’m a Guix noob, so I might be wrong).

Seems like Guix Emacs packages aren’t compatible? Any ideas on how to fix this? Should I try a different Emacs/package version or something?

I had the same issue when installing emacs-next. I did not found a solution, so I just installed the current version of emacs 2.9. 4.

Here is the problematic part I think, in compat.el.

(eval-when-compile
  (defmacro compat--maybe-require ()
    (when (version< emacs-version "30.0.50")
      (require 'compat-30)
      '(require 'compat-30))))
(compat--maybe-require)

The latest emacs version is above 30.0.50 so that test fails.

1 Like