Subject: Re: [bug#50077] Separate ‘emacs’ output vs separate ‘emacs-’package (was Re: [bug#50077] [PATCH 1/3] gnu: notmuch: Add separate 'emacs' output.)

From: zimoun <[email-masked]>
Date: Wed, 01 Sep 2021 15:52:01 +0200

Hi,

On Wed, 01 Sep 2021 at 14:05, Xinglu Chen <[email-masked]> wrote:

> Cc’ing guix-devel to see what other people think before we start
> breaking people’s setups.  :-)

I agree with this Andrew’s comment:

        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 =)
        
<http://issues.guix.gnu.org/issue/50077#5>

If I do:

  guix install emacs-next notmuch

then there is no guarantee that “M-x notmuch” will work.  Because
’notmuch.el’ is byte-compiled using ’emacs-no-x’.  The issue is that
some Emacs packages rely on ’emacs-minimal’, others on ’emacs-no-x’ as
input, others on other Emacs VM variant, therefore the transformation

  guix build -m manifest.scm --with-input=emacs-minimal=emacs-next

will not work, as pointed by Nicolas here [1].  Well, you will tell me
that ’outputs’ does not change much the issue. :-) For sure, but IMHO
having Emacs packages using ’emacs-build-system’ eases the write of
generic transformation.  Well, there is enough corner cases with Emacs
packages using ’emacs-build-system’ which rewriting their ’#:emacs’
argument.  Other speaking about Emacs packages using other build
systems.

Another point is, if I want to build ’notmuch’ but I am not an Emacs
user, then:

  guix environment notmuch

will download ’emacs-no-x’ for nothing.  When my network is poor, I am
unhappy.  Although, it is already the case. :-) Well, this is something
known, see:

<https://git.savannah.gnu.org/cgit/guix.git/tree/TODO#n37>

I am not convinced that several outputs help.  And generally speaking,
personally, I tend to prefer package inherit over several outputs.
Matter of taste I guess. :-)

Without speaking about cross-compilation. ;-)

>From my point of view, I would split the package ’notmuch’ and propagate
this new ’notmuch’ package with a new ’emacs-notmuch’ (if ’notmuch.el’
requires it).  Well, from my point of view, it would be how to improve
the situation. :-)

All the best,
simon

1: <http://issues.guix.gnu.org/41732#14>