Subject: [bug#50833] [PATCH v2] gnu: Add bower.

From: jgart <[email-masked]>
Date: Wed, 20 Jul 2022 00:18:34 -0500

* gnu/packages/mail.scm (bower): New variable.

Hi Maxim, Here's v2 patching the executables you requested. Sorry for the delay.

all best,

jgart
---
 gnu/packages/mail.scm | 80 +++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 80 insertions(+)

diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm
index 556c5b4305..afad1cc4bf 100644
--- a/gnu/packages/mail.scm
+++ b/gnu/packages/mail.scm
@@ -48,6 +48,7 @@
 ;;; Copyright © 2022 Justin Veilleux <[email-masked]>
 ;;; Copyright © 2022 Thiago Jung Bauermann <[email-masked]>
 ;;; Copyright © 2022 Guillaume Le Vaillant <[email-masked]>
+;;; Copyright © 2022 jgart <[email-masked]>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -124,6 +125,7 @@ (define-module (gnu packages mail)
   #:use-module (gnu packages lua)
   #:use-module (gnu packages m4)
   #:use-module (gnu packages man)
+  #:use-module (gnu packages mercury)
   #:use-module (gnu packages ncurses)
   #:use-module (gnu packages nettle)
   #:use-module (gnu packages networking)
@@ -1522,6 +1524,84 @@ (define-public python-notmuch2
     (synopsis "Pythonic bindings for the notmuch mail database using CFFI")
     (license license:gpl3+)))
 
+(define-public bower
+  (package
+    (name "bower")
+    (version "0.13")
+    (home-page "https://github.com/wangp/bower")
+    (source
+     (origin
+       (method git-fetch)
+       (uri
+        (git-reference
+         (url home-page)
+         (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0r5s16pc3ym5nd33lv9ljv1p1gpb7yysrdni4g7w7yvjrnwk35l6"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:make-flags
+       (list
+        "bower"
+        "man"
+        (string-append "CC=" ,(cc-for-target))
+        (string-append "prefix=" %output))
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure)
+         (add-after 'unpack 'patch-executables
+           (lambda* (#:key inputs #:allow-other-keys)
+             (let ((file (assoc-ref inputs "file"))
+                   (base64 (assoc-ref inputs "coreutils"))
+                   (lynx (assoc-ref inputs "lynx"))
+                   (sendmail (assoc-ref inputs "sendmail"))
+                   (notmuch (assoc-ref inputs "notmuch")))
+               (substitute* "src/detect_mime_type.m"
+                 (("\"file")
+                  (string-append "\"" file "/bin/file")))
+               (substitute* "src/compose.m"
+                 (("\"base64")
+                  (string-append "\"" base64 "/bin/base64"))
+                  (("\"lynx")
+                   (string-append "\"" lynx "/bin/lynx")))
+               (substitute* "src/prog_config.m"
+                 (("\"notmuch\"")
+                  (string-append "\"" notmuch "/bin/notmuch\""))
+                  (("/usr/bin/sendmail")
+                  (string-append sendmail "/sbin/sendmail"))
+                  (("\"lynx")
+                   (string-append "\"" lynx "/bin/lynx"))))))
+         (replace 'check
+           (lambda* (#:key inputs outputs tests? #:allow-other-keys)
+             (when tests?
+               (chdir "tests")
+               (invoke "make"))))
+         (replace 'install
+           (lambda* (#:key outpus #:allow-other-keys)
+             (let ((bin (string-append (assoc-ref %outputs "out") "/bin"))
+                   (man (string-append (assoc-ref %outputs "out") "/share/man/man1")))
+               (chdir "..")
+               (install-file "bower" bin)
+               (install-file "bower.1" man)))))))
+    (native-inputs
+     (list diffutils
+           gawk
+           mercury
+           pandoc
+           util-linux))
+    (inputs
+     (list gpgme
+           coreutils
+           lynx
+           notmuch
+           sendmail
+           ncurses))
+    (synopsis "Terminal client for the notmuch email system")
+    (description "@code{bower} is a curses frontend for the notmuch email
+system.  It is written in @{mercury}.")
+    (license license:gpl3+)))
+
 (define-public muchsync
   (package
     (name "muchsync")
-- 
2.37.1