~ruther/guix-local

e9b13294700de7082ee23aa6e1c17b4a8c8828ec — Liliana Marie Prikler 1 year, 2 months ago 8f799ca
profiles: emacs-subdirs: Also expand native-comp-eln-load-path.

This patch ensures that the pinned natively compiled Emacs packages can
actually be found in the respective load path.  The rationale for expanding it
mimics the rationale previously applied to load-path for byte compilation: We
want to be able to `guix upgrade' emacs (or similar) without yanking compiled
packages from underneath.

* guix/profiles.scm (emacs-subdirs): Write an additional “line” of code to
deal with ‘native-comp-eln-load-path’.
1 files changed, 21 insertions(+), 1 deletions(-)

M guix/profiles.scm
M guix/profiles.scm => guix/profiles.scm +21 -1
@@ 1206,7 1206,15 @@ MANIFEST.  Single-file bundles are required by programs such as Git and Lynx."
                          (scandir dir (negate (cute member <> '("." "..")))))))
                  (filter file-exists?
                          (map (cute string-append <> "/share/emacs/site-lisp")
                               '#$(manifest-inputs manifest))))))
                               '#$(manifest-inputs manifest)))))
                (native-comp-needle
                 ;; Dynamically find native-site-lisp relative to profile.
                 ;; We can not hard-code the path here, because the output
                 ;; isn't known yet.
                 '(expand-file-name "../../../lib/emacs/native-site-lisp"))
                (native-comp-dirs
                 (search-path-as-list '("lib/emacs/native-site-lisp")
                                      '#$(manifest-inputs manifest))))
            (mkdir-p destdir)
            (with-directory-excursion destdir
              (call-with-output-file "subdirs.el"


@@ 1216,6 1224,18 @@ MANIFEST.  Single-file bundles are required by programs such as Git and Lynx."
                     (list ,@(delete-duplicates subdirs)))
                   port)
                  (newline port)
                  (write
                   `(when (boundp 'native-comp-eln-load-path)
                      (let ((needle ,native-comp-needle))
                        (setq native-comp-eln-load-path
                              (mapcan (lambda (dir)
                                        (if (equal dir needle)
                                            (nconc ',native-comp-dirs
                                                   (list dir))
                                            (list dir)))
                                      native-comp-eln-load-path))))
                   port)
                  (newline port)
                  #t)))))))
  (gexp->derivation "emacs-subdirs" build
                    #:system system