summary refs log tree commit diff
path: root/gnu/packages/emacs.scm
diff options
context:
space:
mode:
authorMaxim Cournoyer <maxim.cournoyer@gmail.com>2020-03-21 23:16:08 -0400
committerMaxim Cournoyer <maxim.cournoyer@gmail.com>2020-03-22 21:17:39 -0400
commit4cbd60698daf648979fe8ad924602e87dcdefde1 (patch)
treef4018999e01e495876c7201ff127b8b7edf86167 /gnu/packages/emacs.scm
parent393c5e69281d997b345362626d7ffb988ab862f6 (diff)
downloadguix-4cbd60698daf648979fe8ad924602e87dcdefde1.tar.gz
gnu: emacs: Patch references to /bin/sh.
When attempting to run ert-runner in the build side environment where /bin/sh
doesn't exist as part of the emacs-elpy test suite, Emacs was throwing the
error "Searching for program: No such file or directory, /bin/sh".  This is
because the default shell when SHELL is not set was "/bin/sh", as can be seen
in callproc.c:

  sh = getenv ("SHELL");
  Vshell_file_name = build_string (sh ? sh : "/bin/sh");

Thus, patch the occurrences of "/bin/sh" in the source files of Emacs to refer
to their correct store location.

* gnu/packages/emacs.scm (emacs)[phases]{patch-program-file-names}: Add phase.
Diffstat (limited to 'gnu/packages/emacs.scm')
-rw-r--r--gnu/packages/emacs.scm10
1 files changed, 10 insertions, 0 deletions
diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm
index 3be3ff0188..de19998a41 100644
--- a/gnu/packages/emacs.scm
+++ b/gnu/packages/emacs.scm
@@ -131,6 +131,16 @@
                                "--disable-build-details")
        #:phases
        (modify-phases %standard-phases
+         (add-after 'unpack 'patch-program-file-names
+           (lambda _
+             (substitute* '("src/callproc.c"
+                            "lisp/term.el"
+                            "lisp/htmlfontify.el"
+                            "lisp/textmodes/artist.el"
+                            "lisp/progmodes/sh-script.el")
+               (("\"/bin/sh\"")
+                (format "~s" (which "sh"))))
+             #t))
          (add-before 'configure 'fix-/bin/pwd
            (lambda _
              ;; Use `pwd', not `/bin/pwd'.