Subject: Re: bug#22550: (require 'magit) produces error: "no such file or directory" "dash"

From: Alex Kost <[email-masked]>
Date: Thu, 04 Feb 2016 16:17:36 +0300

myglc2 (2016-02-04 07:15 +0300) wrote:

> with magit installed on guixSD following the config shown further below.
>
> With init.el containing ...
>
> VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
> (add-to-list 'load-path "/run/current-system/profile/share/emacs/site-lisp")
> (require 'guix-init nil t)
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

You don't need to add these lines to your init file.  On GuixSD this
code is executed by "/etc/emacs/site-start.el" (it is a default value of
EMACSLOADPATH which is honored by Emacs).

> (require 'magit)
>
> ... generates this traceback ...
>
> VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
> Debugger entered--Lisp error: (file-error "Cannot open load file" "no such file or directory" "dash")
>   require(dash)
>   byte-code("\300\301!\210\300\302!\210\300\303!\210\300\304!\210\300\305!\210\300\306!\210\300\307!\210\300\310!\210\300\311!\210\300\312\313\314#\207" [require cl-lib dash with-editor git-commit magit-core magit-diff magit-apply magit-log format-spec package nil t] 4)
>   require(magit)
>   eval((require (quote magit)) nil)
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Yes, the problem is: currently only a user profile is "inspected" for
emacs packages, but not a system profile.  I didn't realize people could
install emacs packages globally, but apparently we should also check the
system profile as well.  Thanks for reporting!

> Adding emac-dash to config.h.scm does not change the behavior.

There is no need to install emacs-dash explicitly, as magit "propagates"
this library.  You can do "M-x guix-edit magit" to see that "dash" is in
"propagated-inputs".

Now could you try this after starting Emacs:

  M-: (guix-emacs-load-autoloads "/run/current-system/profile")

and check that "M-x magit-status" works after that?

-- 
Alex