~ruther/guix-local

307a2d2e2a833c2e1f7a79f46e4c6945c618cd8c — Liliana Marie Prikler 5 years ago 68228d8
gnu: emacs: Wrap EMACSLOADPATH.

With this, the search path specification of EMACSLOADPATH does no longer
depend on the version of Emacs, which should make upgrading major versions
less painful.  See also:
- <https://bugs.gnu.org/43627>
- <https://bugs.gnu.org/47458>

* gnu/packages/emacs.scm (emacs)[#:phases]: Add ‘wrap-load-path’.
[native-search-path]<EMACSLOADPATH>: Do not search for builtin libraries.
(emacs-next)[native-search-path]: Inherit from emacs.
1 files changed, 20 insertions(+), 15 deletions(-)

M gnu/packages/emacs.scm
M gnu/packages/emacs.scm => gnu/packages/emacs.scm +20 -15
@@ 201,6 201,24 @@
                (car (find-files "bin" "^emacs-([0-9]+\\.)+[0-9]+$"))
                "bin/emacs")
               #t)))
         (add-after 'strip-double-wrap 'wrap-load-path
           (lambda* (#:key outputs #:allow-other-keys)
             (let* ((out (assoc-ref outputs "out"))
                    (lisp-dirs (find-files (string-append out "/share/emacs")
                                           "^lisp$"
                                           #:directories? #t)))
               (for-each
                (lambda (prog)
                  (wrap-program prog
                    `("EMACSLOADPATH" suffix ,lisp-dirs)))
                (find-files (string-append out "/bin")
                            ;; Matches versioned and unversioned emacs binaries.
                            ;; We don't patch emacsclient, because it takes its
                            ;; environment variables from emacs.
                            ;; Likewise, we don't need to patch helper binaries
                            ;; like etags, ctags or ebrowse.
                            "^emacs(-[0-9]+(\\.[0-9]+)*)?$"))
               #t)))
         (add-before 'reset-gzip-timestamps 'make-compressed-files-writable
           ;; The 'reset-gzip-timestamps phase will throw a permission error
           ;; if gzip files aren't writable then.  This phase is needed when


@@ 255,9 273,7 @@
    (native-search-paths
     (list (search-path-specification
            (variable "EMACSLOADPATH")
            ;; The versioned entry is for the Emacs' builtin libraries.
            (files (list "share/emacs/site-lisp"
                         (string-append "share/emacs/" version "/lisp"))))
            (files '("share/emacs/site-lisp")))
           (search-path-specification
            (variable "INFOPATH")
            (files '("share/info")))))


@@ 294,18 310,7 @@ languages.")
           "0igjm9kwiswn2dpiy2k9xikbdfc7njs07ry48fqz70anljj8y7y3"))))
      (native-inputs
       `(("autoconf" ,autoconf)
         ,@(package-native-inputs emacs)))
      (native-search-paths
       (list (search-path-specification
              (variable "EMACSLOADPATH")
              ;; The versioned entry is for the Emacs' builtin libraries.
              (files (list "share/emacs/site-lisp"
                           (string-append "share/emacs/"
                                          (version-major+minor+point version)
                                          "/lisp"))))
             (search-path-specification
              (variable "INFOPATH")
              (files '("share/info"))))))))
         ,@(package-native-inputs emacs))))))

(define-public emacs-next-pgtk
  (let ((commit "ae18c8ec4f0ef37c8c9cda473770ff47e41291e2")