Subject: [bug#33982] emacs-irony-mode: Don't require propagated inputs

From: Tim Gesthuizen <[email-masked]>
Date: Fri, 4 Jan 2019 23:46:03 +0100

Hi,
emacs-irony-mode needs emacs-irony-mode-server as a propagated input at
the moment.
This can be avoided with the attached patch.

Tim.
>From 528e0ebf36c07960776e8070584dce09088328d7 Mon Sep 17 00:00:00 2001
From: Tim Gesthuizen <[email-masked]>
Date: Mon, 24 Dec 2018 14:46:27 +0100
Subject: [PATCH] gnu: emacs-irony-mode: Remove propagated input

emacs-irony-mode finds its server binary because its a propagated input and is
in the path. We can substitute the variable `irony-server-install-prefix` to
not propagate the input and keep the binary isolated from the user.

* gnu/packages/emacs.scm (emacs-irony-mode):
[propagated-inputs] Remove propagated inputs
[inputs] Add emacs-irony-mode-server
[arguments] Add phase substituting the variable of the server path
---
 gnu/packages/emacs.scm | 14 ++++++++++----
 1 file changed, 10 insertions(+), 4 deletions(-)

diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm
index 7fdcfb1a3..df4e676c0 100644
--- a/gnu/packages/emacs.scm
+++ b/gnu/packages/emacs.scm
@@ -2831,9 +2831,16 @@ These are distributed in separate files and can be used individually.")
                 "0nhjrnlmss535jbshjjd30vydbr8py21vkx4p294w6d8vg2rssf8"))
               (file-name (string-append name "-" version ".tar.gz"))))
     (build-system emacs-build-system)
-    (arguments '())
-    (propagated-inputs
-     `(("emacs-irony-mode-server" ,emacs-irony-mode-server)))
+    (inputs `(("server" ,emacs-irony-mode-server)))
+    (arguments `(#:phases
+                 (modify-phases %standard-phases
+                   (add-after 'unpack 'configure
+                        (lambda* (#:key inputs #:allow-other-keys)
+                          (chmod "irony.el" #o644)
+                          (emacs-substitute-variables "irony.el"
+                            ("irony-server-install-prefix"
+                             (assoc-ref inputs "server")))
+                          #t)))))
     (synopsis "C/C++/ObjC Code completion and syntax checks for Emacs")
     (description "Irony-mode provides Clang-assisted syntax checking and
 completion for C, C++, and ObjC in GNU Emacs.  Using @code{libclang} it can
@@ -2848,7 +2855,6 @@ described on the homepage.")
     (name "emacs-irony-mode-server")
     (inputs
      `(("clang" ,clang)))
-    (propagated-inputs '())
     (arguments
      `(#:phases
        (modify-phases %standard-phases
-- 
2.20.1