all messages for Guix-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Andrew Tropin <andrew@trop.in>
To: Xinglu Chen <public@yoctocell.xyz>
Cc: 50077@debbugs.gnu.org
Subject: [bug#50077] [PATCH 1/3] gnu: notmuch: Add separate 'emacs' output.
Date: Mon, 30 Aug 2021 10:14:46 +0300	[thread overview]
Message-ID: <87lf4j8kux.fsf@trop.in> (raw)
In-Reply-To: <87r1edvown.fsf@yoctocell.xyz>

[-- Attachment #1: Type: text/plain, Size: 5729 bytes --]

On 2021-08-28 12:34, Xinglu Chen wrote:

> [ Debbugs wasn’t Cc’d in the previous message ]
>

Oops)

>
> On Mon, Aug 23 2021, Andrew Tropin wrote:
>
>> On 2021-08-16 16:12, Xinglu Chen wrote:
>>
>>> * gnu/packages/mail.scm (notmuch)[outputs]: Add ‘emacs’ output
>>> [arguments]<#:modules>: Add (guix build emacs-utils).
>>> <#:phases>{configure}: Use the ‘emacs’ output.
>>> {make-autoloads}: Modify the default ‘make-autoloads’ phase to use the ‘emacs’
>>> output.
>>> ---
>>>  gnu/packages/mail.scm | 16 +++++++++++++---
>>>  1 file changed, 13 insertions(+), 3 deletions(-)
>>>
>>> diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm
>>> index ccf44b7cf3..bbc616f6f5 100644
>>> --- a/gnu/packages/mail.scm
>>> +++ b/gnu/packages/mail.scm
>>> @@ -1337,7 +1337,8 @@ invoking @command{notifymuch} from the post-new hook.")
>>>      (arguments
>>>       `(#:modules ((guix build gnu-build-system)
>>>                    ((guix build emacs-build-system) #:prefix emacs:)
>>> -                  (guix build utils))
>>> +                  (guix build utils)
>>> +                  (guix build emacs-utils))
>>>         #:imported-modules (,@%gnu-build-system-modules
>>>                             (guix build emacs-build-system)
>>>                             (guix build emacs-utils))
>>> @@ -1355,7 +1356,8 @@ invoking @command{notifymuch} from the post-new hook.")
>>>                        (setenv "CONFIG_SHELL" (which "sh"))
>>>  
>>>                        (let* ((out (assoc-ref outputs "out"))
>>> -                             (elisp (emacs:elpa-directory out)))
>>> +                             (emacs (assoc-ref outputs "emacs"))
>>> +                             (elisp (emacs:elpa-directory emacs)))
>>>                          (invoke "./configure"
>>>                                  (string-append "--prefix=" out)
>>>                                  (string-append "--emacslispdir=" elisp)
>>> @@ -1373,7 +1375,14 @@ invoking @command{notifymuch} from the post-new hook.")
>>>                        (substitute* (find-files "test" "\\.sh$")
>>>                          (("/bin/sh") (which "sh")))))
>>>                    (add-after 'install 'make-autoloads
>>> -                    (assoc-ref emacs:%standard-phases 'make-autoloads)))))
>>> +                    (lambda* (#:key outputs inputs #:allow-other-keys)
>>> +                      (let* ((emacs (string-append (assoc-ref inputs "emacs") "/bin/emacs"))
>>> +                             (out (assoc-ref outputs "emacs"))
>>> +                             (elpa-name-ver ((@@ (guix build emacs-build-system)
>>> +                                                 store-directory->elpa-name-version) out))
>>> +                             (elpa-name (package-name->name+version elpa-name-ver))
>>> +                             (el-dir (emacs:elpa-directory out)))
>>> +                        (emacs-generate-autoloads elpa-name el-dir)))))))
>>>      (native-inputs
>>>       `(("bash-completion" ,bash-completion)
>>>         ("emacs" ,emacs-no-x)    ; -minimal lacks libxml, needed for some tests
>>> @@ -1394,6 +1403,7 @@ invoking @command{notifymuch} from the post-new hook.")
>>>         ("talloc" ,talloc)
>>>         ("xapian" ,xapian)
>>>         ("zlib" ,zlib)))
>>> +    (outputs '("out" "emacs"))
>>>      (home-page "https://notmuchmail.org/")
>>>      (synopsis "Thread-based email index, search, and tagging")
>>>      (description
>>
>> The separate output is ok, but I think making a separate emacs-notmuch
>> package looks more consistent.  We can inherit it from notmuch package
>> to be sure that the packages are built from the same source code.
>
> Why would it be more consistent to make a separate package?  Making a
> separate package is usually used for packaging a slightly different
> version of the “regular” package, e.g., ‘emacs-next-pgtk’ adds native
> compilation and pure GTK support for Emacs., ‘emacs-no-x’ removes X
> suport for ‘emacs’.  ‘emacs-notmuch’ isn’t really a different version of
> ‘notmuch’, it’s just ‘notmuch’ but with all the non-Elisp stuff
> removed.  This is usually what using different outputs tries to achieve,
> e.g., separate documentation from the main package, or in this case,
> separate Elisp stuff from the main package.
>

Almost all elisp packages in Guix have a emacs- prefix, so as a user I
expect to find notmuch*.el in emacs-notmuch package and notmuch binary
in notmuch package, despite the fact that upstream distributes the
source code for both of them in one tarball.  Moreover, with
emacs-notmuch and notmuch packages it's possible to use different build
systems, which helps in automated package modification, for example I
want to native compile all emacs packages or generate some additional
metainformation, I just find all packages in my profile with
emacs-build-system and modify phases accordingly.  Yes, it's possible to
do such modification for other packages manually, but it feels hacky and
inconvinient.

The separate output can work, but a separate package looks better to me.

P.S. I know that there are some emacs packages in Guix already, which
doesn't use emacs-build-system, but I think we should keep that number
as low as possible and ideally to make it equal to 0 =)

> 
> The ‘notmuch’ package in Nixpkgs also uses multiple outputs[1], which
> I think makes sense.
>
> <https://github.com/NixOS/nixpkgs/blob/master/pkgs/applications/networking/mailreaders/notmuch/default.nix>
>>
>> Thank you for working on this, the changes are good and useful!)
>
> You are welcome!  :-)

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 832 bytes --]

  reply	other threads:[~2021-08-30  7:15 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-08-16 14:10 [bug#50077] [PATCH 0/3] Various improvements to Notmuch Xinglu Chen
2021-08-16 14:12 ` [bug#50077] [PATCH 1/3] gnu: notmuch: Add separate 'emacs' output Xinglu Chen
     [not found]   ` <87o89owoi0.fsf@trop.in>
2021-08-28 10:34     ` Xinglu Chen
2021-08-30  7:14       ` Andrew Tropin [this message]
2021-08-30 13:33         ` [bug#50077] Separate ‘emacs’ output vs separate ‘emacs-’ package (was Re: [bug#50077] [PATCH 1/3] gnu: notmuch: Add separate 'emacs' output.) Xinglu Chen
2021-09-01  9:50           ` Andrew Tropin
2021-09-01 12:05             ` Xinglu Chen
2021-09-01 12:48               ` Liliana Marie Prikler
2021-09-01 23:25                 ` Carlo Zancanaro
2021-09-03 16:14                   ` Xinglu Chen
2021-09-01 13:52               ` zimoun
2021-08-16 14:12 ` [bug#50077] [PATCH 2/3] gnu: notmuch: Build Info manual Xinglu Chen
2021-08-16 14:12 ` [bug#50077] [PATCH 3/3] gnu: notmuch: Use 'cc-for-target' instead of hardcoding 'gcc' Xinglu Chen
2021-09-04  9:41 ` [bug#50077] [PATCH v2 0/3] Improvements to Notmuch Xinglu Chen
2021-09-04  9:41   ` [bug#50077] [PATCH v2 1/3] gnu: notmuch: Build Texinfo manual Xinglu Chen
2021-09-04  9:41   ` [bug#50077] [PATCH v2 2/3] gnu: notmuch: Make cross-compilable Xinglu Chen
2021-09-04  9:42   ` [bug#50077] [PATCH v2 3/3] gnu: Add emacs-notmuch Xinglu Chen
2021-09-14  7:22     ` Andrew Tropin
2021-09-14 15:29       ` Xinglu Chen
2021-09-14 15:35         ` zimoun
2021-09-14 19:20           ` Xinglu Chen
2021-09-14  7:05   ` bug#50077: [PATCH v2 0/3] Improvements to Notmuch Nicolas Goaziou

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87lf4j8kux.fsf@trop.in \
    --to=andrew@trop.in \
    --cc=50077@debbugs.gnu.org \
    --cc=public@yoctocell.xyz \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/guix.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.