Subject: Re: bug#43087: [PATCH] gnu: emacs: Strip double wrap.

From: Leo Prikler <[email-masked]>
Date: Sat, 29 Aug 2020 17:42:21 +0200

Am Samstag, den 29.08.2020, 16:25 +0200 schrieb Leo Prikler:
> Am Samstag, den 29.08.2020, 16:04 +0200 schrieb Mathieu Othacehe:
> > Hey Leo,
> > 
> > > Pushed, thanks!
> > 
> > I did revert this commit because it causes several regressions for
> > me. For some reason, "notmuch" and "emacs-guix" packages do not
> > build
> It seems this is because the phase inadvertently gets propagated to
> emacs-minimal et al. just like the restore-pdmp phase.  We could just
> delete it where not needed, but perhaps there's a better way of doing
> that.  I think we should make emacs-minimal the base package and have
> every other emacs package inherit it, so as to not cause too much
> cross-pollution.
While doing so would probably eradicate some bugs, having had a look at
the patch, that this would generate, I'm not so sure how beneficial it
would be in the long run.  I decided to use the shorter approach and
just delete it.

emacs-guix now builds and seems to function well in the correct (pure)
environment.  Haven't tested notmuch, but it should also work.
From 3a939372bfe5281ed525fb24bef5f4bc86bfb472 Mon Sep 17 00:00:00 2001
From: Leo Prikler <[email-masked]>
Date: Fri, 28 Aug 2020 15:34:00 +0200
Subject: [PATCH] gnu: emacs: Strip double wrap.

* gnu/packages/emacs.scm (emacs)[#:phases]: Add 'strip-double-wrap.
(emacs-minimal emacs-xwidgets emacs-no-x)
(emacs-no-x-toolkit guile-emacs)[#:phases]: Delete 'strip-double-wrap.

Signed-off-by: Mathieu Othacehe <[email-masked]>
---
 gnu/packages/emacs.scm | 26 +++++++++++++++++++++-----
 1 file changed, 21 insertions(+), 5 deletions(-)

diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm
index a338abc774..0cd3e04381 100644
--- a/gnu/packages/emacs.scm
+++ b/gnu/packages/emacs.scm
@@ -191,6 +191,17 @@
                            (rename-file real wrapper))
                          pdmp pdmp-real))
              #t))
+         (add-after 'glib-or-gtk-wrap '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 (package-version emacs)))
+                          "bin/emacs")
+               #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
@@ -278,7 +289,8 @@ languages.")
         `(list "--with-gnutls=no" "--disable-build-details"))
        ((#:phases phases)
         `(modify-phases ,phases
-           (delete 'restore-emacs-pdmp)))))
+           (delete 'restore-emacs-pdmp)
+           (delete 'strip-double-wrap)))))
     (inputs
      `(("guix-emacs.el" ,(search-auxiliary-file "emacs/guix-emacs.el"))
        ("ncurses" ,ncurses)))
@@ -297,7 +309,8 @@ editor (with xwidgets support)")
         `(cons "--with-xwidgets" ,flags))
        ((#:phases phases)
         `(modify-phases ,phases
-           (delete 'restore-emacs-pdmp)))))
+           (delete 'restore-emacs-pdmp)
+           (delete 'strip-double-wrap)))))
     (inputs
      `(("webkitgtk" ,webkitgtk)
        ("libxcomposite" ,libxcomposite)
@@ -323,7 +336,8 @@ editor (console only)")
         `(delete "--with-cairo" ,flags))
        ((#:phases phases)
         `(modify-phases ,phases
-           (delete 'restore-emacs-pdmp)))))))
+           (delete 'restore-emacs-pdmp)
+           (delete 'strip-double-wrap)))))))
 
 (define-public emacs-no-x-toolkit
   (package/inherit emacs
@@ -339,7 +353,8 @@ editor (without an X toolkit)" )
         `(cons "--with-x-toolkit=no" ,flags))
        ((#:phases phases)
         `(modify-phases ,phases
-           (delete 'restore-emacs-pdmp)))))))
+           (delete 'restore-emacs-pdmp)
+           (delete 'strip-double-wrap)))))))
 
 (define-public emacs-wide-int
   (package/inherit emacs
@@ -389,7 +404,8 @@ editor (with wide ints)" )
              (add-before 'build 'make-deps-dir
                (lambda _
                  (invoke "mkdir" "-p" "src/deps")))
-             (delete 'restore-emacs-pdmp))))))))
+             (delete 'restore-emacs-pdmp)
+             (delete 'strip-double-wrap))))))))
 
 (define-public m17n-db
   (package
-- 
2.28.0