guix-patches
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

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


From: Maxime Devos
Subject: [bug#50833] [PATCH v2] gnu: Add bower.
Date: Wed, 20 Jul 2022 13:59:19 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.11.0


On 20-07-2022 07:18, jgart via Guix-patches via wrote:
* 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 <terramorpha@cock.li>
 ;;; Copyright © 2022 Thiago Jung Bauermann <bauermann@kolabnow.com>
 ;;; Copyright © 2022 Guillaume Le Vaillant <glv@posteo.net>
+;;; Copyright © 2022 jgart <jgart@dismail.de>
 ;;;
 ;;; 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))


IIRC, %output is not documented -- you can use #$output instead:

(arguments
  (list #: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")))

Not using input labels is preferred (such that package transformations can easily be used to, say, replace "coreutils" with something sufficiently compatible that isn't "coreutils"). You can use search-input-file instead. E.g.,:

(substitute* "src/detect_mime_type.m"
  ("\"file") (string-append "\"" (search-input-file inputs "/bin/file")))
  [...])

and likewise for the other substitutions.

+               (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)

You are not using inputs or outputs here, so they can be removed.

+             (when tests?
+               (chdir "tests")
+               (invoke "make"))))


Due to the issue noted below, I recommend keeping the 'chdir' unconditional. I believe (with-directory-excursion ...) to be even better, as it restores the change in directory automatically, less room for trouble.

+         (replace 'install
+           (lambda* (#:key outpus #:allow-other-keys)

You are not using 'outpus' here (also, 'outpus' -> 'outputs'), so it can be removed.

+             (let ((bin (string-append (assoc-ref %outputs "out") "/bin"))
+                   (man (string-append (assoc-ref %outputs "out") "/share/man/man1")))
I'd replace (assoc-ref %outputs "out") by #$output (don't forget to add #~ before the (modify-phases ...)) to avoid the assoc-ref construct and %outputs in favour of the simpler #$output.
+               (chdir "..")
This is to undo the (chdir "tests") above, right?  If so, remember that the (chdir "tests") above is unconditional, so this will break when tests are disabled (in case of --without-tests, or in case of cross-compiling with --target=aarch64-linux-gnu or such).  So it needs to be made conditional on tests? as well, or the (chdir "tests") from above would need to be made unconditional, or the with-directory-excursion.

Greetings,
Maxime

Attachment: OpenPGP_0x49E3EE22191725EE.asc
Description: OpenPGP public key

Attachment: OpenPGP_signature
Description: OpenPGP digital signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]