Subject: [PATCH] gnu: emacs-next: Fix load path and version

From: [email-masked]
Date: Mon, 14 Sep 2020 18:08:19 -0400

From: Morgan Smith <[email-masked]>

* gnu/packages/emacs.scm (emacs):
[strip-double-wrap] Modify to work with emacs-next

* gnu/packages/emacs.scm (emacs-next):
[version] Change version from 28.0.50.1 to 28.0.50
[arguments] Removed field
[native-search-paths] New field
---

The problem turned out to be that EMACSLOADPATH wasn't being set
properly.  This patch fixes that.

 gnu/packages/emacs.scm | 37 ++++++++++++++++---------------------
 1 file changed, 16 insertions(+), 21 deletions(-)

diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm
index 03c28ee7a7..b3d099257d 100644
--- a/gnu/packages/emacs.scm
+++ b/gnu/packages/emacs.scm
@@ -196,11 +196,12 @@
            (lambda* (#:key outputs #:allow-other-keys)
              ;; Directly copy emacs-X.Y to emacs, so that it is not wrapped
              ;; twice.  This also fixes a minor issue, where WMs would not be
-             ;; able to track emacs back to emacs.desktop.
+             ;; able to track emacs back to emacs.desktop.  It's done using
+             ;; this-package so emacs-next can reuse it
              (with-directory-excursion (assoc-ref outputs "out")
                (copy-file (string-append
                            "bin/emacs-"
-                           ,(version-major+minor (package-version emacs)))
+                           ,(car (string-split (package-version this-package) #\-)))
                           "bin/emacs")
                #t)))
          (add-before 'reset-gzip-timestamps 'make-compressed-files-writable
@@ -279,11 +280,10 @@ languages.")
 
 (define-public emacs-next
   (let ((commit "2ea34662c20f71d35dd52a5ed996542c7386b9cb")
-        (revision "0")
-        (emacs-version "28.0.50.1"))
+        (revision "0"))
     (package/inherit emacs
       (name "emacs-next")
-      (version (git-version emacs-version revision commit))
+      (version (git-version "28.0.50" revision commit))
       (source
        (origin
          (inherit (package-source emacs))
@@ -295,24 +295,19 @@ languages.")
          (sha256
           (base32
            "0igjm9kwiswn2dpiy2k9xikbdfc7njs07ry48fqz70anljj8y7y3"))))
-      (arguments
-       (substitute-keyword-arguments (package-arguments emacs)
-         ((#:phases phases)
-          `(modify-phases ,phases
-             (replace 'strip-double-wrap
-               (lambda* (#:key outputs #:allow-other-keys)
-                 ;; Directly copy emacs-X.Y to emacs, so that it is not wrapped
-                 ;; twice.  This also fixes a minor issue, where WMs would not be
-                 ;; able to track emacs back to emacs.desktop.
-                 (with-directory-excursion (assoc-ref outputs "out")
-                   (copy-file (string-append
-                               "bin/emacs-"
-                               ,(version-major+minor+point (package-version emacs-next)))
-                              "bin/emacs")
-                   #t)))))))
       (native-inputs
        `(("autoconf" ,autoconf)
-         ,@(package-native-inputs emacs))))))
+         ,@(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/" (car (string-split version #\-)) "/lisp"))))
+             (search-path-specification
+              (variable "INFOPATH")
+              (files '("share/info"))))))))
 
 (define-public emacs-minimal
   ;; This is the version that you should use as an input to packages that just
-- 
2.28.0