Subject: [PATCH] gnu: emacs: Make DocView PDF work out of the box.
From: Liliana Marie Prikler <[email-masked]>
To: [email-masked]
Date: Sat, 13 Nov 2021 07:44:57 +0100
List-Id: <debbugs-submit.debbugs.gnu.org>

* gnu/packages/emacs.scm (emacs)[patch-program-file-names]: Add patches for
the programs “gs”, “dvipdf”, “ps2pdf” and “pdftotext”.
[inputs]: Add ghostscript and poppler.
---
This patch might be simplified post core-updates merge by using
search-input-file.

 gnu/packages/emacs.scm | 19 +++++++++++++++++--
 1 file changed, 17 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm
index 22d8db3839..7cc726be6f 100644
--- a/gnu/packages/emacs.scm
+++ b/gnu/packages/emacs.scm
@@ -18,7 +18,7 @@
 ;;; Copyright © 2018, 2019, 2021 Tobias Geerinckx-Rice <[email-masked]>
 ;;; Copyright © 2019 Jesse John Gildersleve <[email-masked]>
 ;;; Copyright © 2019 Valentin Ignatev <[email-masked]>
-;;; Copyright © 2019 Liliana Marie Prikler <[email-masked]>
+;;; Copyright © 2019, 2021 Liliana Marie Prikler <[email-masked]>
 ;;; Copyright © 2019 Amin Bandali <[email-masked]>
 ;;; Copyright © 2020 Jack Hill <[email-masked]>
 ;;; Copyright © 2020 Morgan Smith <[email-masked]>
@@ -54,6 +54,7 @@ (define-module (gnu packages emacs)
   #:use-module (gnu packages fribidi)
   #:use-module (gnu packages gd)
   #:use-module (gnu packages gettext)
+  #:use-module (gnu packages ghostscript)
   #:use-module (gnu packages glib)
   #:use-module (gnu packages gnome)     ; for librsvg
   #:use-module (gnu packages gtk)
@@ -63,6 +64,7 @@ (define-module (gnu packages emacs)
   #:use-module (gnu packages mail)      ; for mailutils
   #:use-module (gnu packages multiprecision)
   #:use-module (gnu packages ncurses)
+  #:use-module (gnu packages pdf)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages texinfo)
   #:use-module (gnu packages tls)
@@ -128,7 +130,7 @@ (define-public emacs
        #:phases
        (modify-phases %standard-phases
          (add-after 'unpack 'patch-program-file-names
-           (lambda _
+           (lambda* (#:key inputs #:allow-other-keys)
              (substitute* '("src/callproc.c"
                             "lisp/term.el"
                             "lisp/htmlfontify.el"
@@ -136,6 +138,17 @@ (define-public emacs
                             "lisp/progmodes/sh-script.el")
                (("\"/bin/sh\"")
                 (format #f "~s" (which "sh"))))
+             (substitute* "lisp/doc-view.el"
+               (("\"(gs|dvipdf|ps2pdf)\"" all what)
+                (let ((ghostscript (assoc-ref inputs "ghostscript")))
+                  (if ghostscript
+                      (string-append "\"" ghostscript "/bin/" what "\"")
+                      all)))
+               (("\"(pdftotext)\"" all what)
+                (let ((poppler (assoc-ref inputs "poppler")))
+                  (if poppler
+                      (string-append "\"" poppler "/bin/" what "\"")
+                      all))))
              #t))
          (add-before 'configure 'fix-/bin/pwd
            (lambda _
@@ -258,6 +271,8 @@ (define* (emacs-byte-compile-directory dir)
        ("acl" ,acl)
        ("jansson" ,jansson)
        ("gmp" ,gmp)
+       ("ghostscript" ,ghostscript)
+       ("poppler" ,poppler)
 
        ;; When looking for libpng `configure' links with `-lpng -lz', so we
        ;; must also provide zlib as an input.
-- 
2.33.1