Subject: [PATCH] gnu: Add emacspeak.

From: Kei Kebreau <[email-masked]>
Date: Mon, 10 Apr 2017 18:41:24 -0400

* gnu/packages/emacs.scm (emacspeak): New variable.
---
 gnu/packages/emacs.scm | 61 ++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 61 insertions(+)

diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm
index 3db31f207..ac78bea94 100644
--- a/gnu/packages/emacs.scm
+++ b/gnu/packages/emacs.scm
@@ -22,6 +22,7 @@
 ;;; Copyright © 2017 Clément Lassieur <[email-masked]>
 ;;; Copyright © 2017 Vasile Dumitrascu <[email-masked]>
 ;;; Copyright © 2017 Kyle Meyer <[email-masked]>
+;;; Copyright © 2017 Kei Kebreau <[email-masked]>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -51,6 +52,7 @@
   #:use-module (guix build-system glib-or-gtk)
   #:use-module (guix build-system trivial)
   #:use-module (gnu packages)
+  #:use-module (gnu packages audio)
   #:use-module (gnu packages code)
   #:use-module (gnu packages guile)
   #:use-module (gnu packages gtk)
@@ -58,6 +60,7 @@
   #:use-module (gnu packages ncurses)
   #:use-module (gnu packages tex)
   #:use-module (gnu packages texinfo)
+  #:use-module (gnu packages tcl)
   #:use-module (gnu packages tls)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages xorg)
@@ -4057,3 +4060,61 @@ jQuery and Bootstrap resources included via osscdn.")
     (description
      "This Emacs package highlights the s-exp at the current position.")
     (license license:gpl3+)))
+
+(define-public emacspeak
+  (package
+    (name "emacspeak")
+    (version "45.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://github.com/tvraman/emacspeak/releases/download/"
+             version "/emacspeak-" version ".tar.bz2"))
+       (sha256
+        (base32
+         "0npcr867xbbhwa0i7v26hnk4z2d51522jwcfwc594j74kbv3g6ka"))))
+    (build-system gnu-build-system)
+    (arguments
+     '(#:make-flags (list (string-append "prefix="
+                                         (assoc-ref %outputs "out")))
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'configure
+           (lambda* (#:key outputs #:allow-other-keys)
+             (substitute* "Makefile"
+               (("\\$\\(INSTALL\\) -d \\$\\(libdir\\)/servers/linux-outloud")
+                "")
+               (("\\$\\(INSTALL\\)  -m 755 \\$\\{OUTLOUD\\}.*$") "")
+               (("\\*info\\*") "*"))
+             (substitute* "etc/emacspeak.sh.def"
+               (("<emacspeak-dir>")
+                (string-append (assoc-ref outputs "out")
+                               "/share/emacs/site-lisp/emacspeak/lisp")))
+             (zero? (system* "make" "config"))))
+         (add-after 'install 'install-espeak-server
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))            
+               (with-directory-excursion "servers/linux-espeak"
+                 (and (zero? (system* "make"))
+                      (zero? (system* "make" "install"
+                                      (string-append "PREFIX=" out))))))))
+         (add-after 'install-espeak-server 'wrap-program
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (emacspeak (string-append out "/bin/emacspeak"))
+                    (espeak (string-append (assoc-ref inputs "espeak")
+                                          "/bin/espeak")))
+               (wrap-program emacspeak
+                 `("DTK_PROGRAM" ":" prefix (,espeak)))))))
+       #:tests? #f)) ; no check target
+    (inputs
+     `(("espeak" ,espeak)
+       ("tcl" ,tcl)
+       ("tclx" ,tclx)))
+    (native-inputs `(("emacs" ,emacs-minimal)))
+    (home-page "http://emacspeak.sourceforge.net")
+    (synopsis "Audio desktop interface for Emacs")
+    (description
+     "Emacspeak is an Emacs subsystem that provides complete speech access.")
+    (license license:gpl2+)))
-- 
2.12.2