Subject: [bug#39336] [PATCH] gnu: Add emacs-gnus-harvest.

From: Amin Bandali <[email-masked]>
Date: Sun, 02 Feb 2020 13:06:26 -0500

Hi,

Nicolas Goaziou <[email-masked]> writes:

[...]
>
> Must "sqlite" be a propagated input? IOW, could you patch source so it
> can be an input instead?
>

Indeed, I see no particular preason to have it as a propagated input.
The v2 attached below implements your suggestion of making it an input
and patching gnus-harvest.el to use it.

>
>> +      (description "@code{gnus-harvest} notices email address in every
>> +message or post you read or write, and collects them in a SQLite
>> +database, which can be easily and quickly queried to determine the
>> +completion list.  Optionally uses @code{bbdb} and @code{message-x}.")
>
> Would it make sense to add "emacs-message-x" as a propagated input too?
>

Summarizing our short chat in #guix, I'm a bit torn on this.  I would
personally probably add message-x to my profile whenever I wanted to use
gnus-harvest, but I'm not sure if I'd want to impose that onto others.
Especially since message-x, like bbdb, is an optional dependency and is
mentioned in the package description.  Of course, if it turns out that
people really always want message-x automatically pulled in along with
gnus-harvest, we could then add it as a propagated input.

-amin

                                 * * *

From 6e56509fca510da3a07107d9ebf00c52de0a39b5 Mon Sep 17 00:00:00 2001
From: Amin Bandali <[email-masked]>
Date: Sun, 2 Feb 2020 12:52:54 -0500
Subject: [PATCH v2] gnu: Add emacs-gnus-harvest.

* gnu/packages/emacs-xyz.scm (emacs-gnus-harvest): New variable.
---
 gnu/packages/emacs-xyz.scm | 39 ++++++++++++++++++++++++++++++++++++++
 1 file changed, 39 insertions(+)

diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index 8265b44d88..d302067216 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -21357,3 +21357,42 @@ sense on the @samp{Newsgroups} header, whereas mail alias expansion makes
 sense in the @samp{To} and @samp{Cc} headers).  When in the message body, this
 executes a different function (default: @code{indent-relative}).")
       (license license:gpl2+))))
+
+(define-public emacs-gnus-harvest
+  (let ((commit "feda071a87b799bd5d23cacde3ee71f0b166e75d")
+        (revision "0"))
+    (package
+      (name "emacs-gnus-harvest")
+      (version (git-version "1.0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/jwiegley/gnus-harvest.git")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "08zb7vc3v3wdxkzgi902vlc5ybfvm8fxrvm5drnwfsjj9873pbcb"))))
+      (build-system emacs-build-system)
+      (inputs
+       `(("sqlite" ,sqlite)))
+      (arguments
+       `(#:phases
+         (modify-phases %standard-phases
+           (add-before 'build 'patch-exec-paths
+             (lambda* (#:key inputs #:allow-other-keys)
+               (let ((sqlite (assoc-ref inputs "sqlite"))
+                     (file "gnus-harvest.el"))
+                 (make-file-writable file)
+                 (emacs-substitute-variables file
+                   ("gnus-harvest-sqlite-program"
+                    (string-append sqlite "/bin/sqlite3"))))
+               #t)))))
+      (home-page "https://github.com/jwiegley/gnus-harvest")
+      (synopsis
+       "Harvest email addresses from read/written Gnus articles")
+      (description "@code{gnus-harvest} notices email address in every
+message or post you read or write, and collects them in a SQLite
+database, which can be easily and quickly queried to determine the
+completion list.  Optionally uses @code{bbdb} and @code{message-x}.")
+      (license license:gpl3+))))
-- 
2.25.0