guix-devel
[Top][All Lists]
Advanced

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

Re: A plan for parameterized packages


From: zimoun
Subject: Re: A plan for parameterized packages
Date: Mon, 16 Nov 2020 15:05:04 +0100

Hi,

On Mon, 16 Nov 2020 at 13:03, Pierre Neidhardt <mail@ambrevar.xyz> wrote:

> See point 7. about conflicts:
>
> https://lists.gnu.org/archive/html/guix-devel/2020-01/msg00026.html

Quoting for instance the 2 examples:

        For instance, use guile-2.2.4 instead of guile for all guile
        libraries, or use pulseaudio everywhere, including in
        dependencies that are not explicitly installed to the user
        profile.

>From my understanding, the first case (guile) is now covered by the
“package rewriting” transformation (see package-input-rewriting IIUC).

The issue with the second case is below.


> and comments:
>
> https://lists.gnu.org/archive/html/guix-devel/2020-01/msg00177.html

>From my understanding of the Ludo’s patch and from the Marius’s message,
the both looks really similar. :-)


> https://lists.gnu.org/archive/html/guix-devel/2020-01/msg00181.html

Quoting:

        To be usable, we would need something to say "build bar and all
        its inputs without pulseaudio, except for some given packages".

        While this is OK with 1 parameter, it's quickly gets much more
        complicated when packages have multiple parameters that maybe conflict
        with one another.

Is the combinatorial conflict solvable in advance?  Well, from my point
of view, it cannot be via package transformation.

For example, let’s consider the Emacs packages and #41732.  Quoting [1]:

        > Perhaps then,
        >
        > --8<---------------cut here---------------start------------->8---
        > guix build -m manifest.scm --with-input=emacs-minimal=emacs-next \
        >      --with-input=emacs=emacs-next
        > --8<---------------cut here---------------end--------------->8---

        Possibly. And then Magit uses emacs-no-x as an input, so we may
        need to also add --with-input=emacs-no-x=emacs-next to the
        command.

        I'm just pointing out that the process is not as straightforward
        as it might seem. So, it doesn't sound right to simply suggest

and [2]:

        For example, the package emacs-magit drags emacs-no-x because of
        emacs-libgit, why is emacs-minimal not enough here?

        Well, the emacs-build-system depends (implicitly) on emacs-minimal,
        only.  And the initial patch `package-with-emacs-next' was changing
        this, only.  However, the package emacs-libgit is cmake-build-system
        and the package emacs-no-x is an explicit dependency; which is another
        story. :-)

these both examples show that it is already complex enough just to
rebuild all the Emacs packages using another Emacs VM (emacs-next or
REmacs, etc.).

To be clear, I am not convinced that the current package recipes are
functional enough to be able to keep under control the combinatorial
conflict; in the general case.

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

All the best,
simon



reply via email to

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