Subject: bug#53915: closed (Re: bug#53915: No way of replacing an input in modify-input syntax structure but keep all the outputs)

From: [email-masked] (GNU bug Tracking System)
Date: Wed, 16 Mar 2022 14:55:02 +0000

Your bug report

#53915: No way of replacing an input in modify-input syntax structure but keep all the outputs

which was filed against the guix package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
53915: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=53915
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#53915: No way of replacing an input in modify-input syntax structure but keep all the outputs
From: Ludovic Courtès <[email-masked]>
To: Liliana Marie Prikler <[email-masked]>
Cc: [email-masked], Gordon Quad <[email-masked]>
Date: Wed, 16 Mar 2022 15:53:49 +0100
List-Id: <debbugs-submit.debbugs.gnu.org>

Hi,

Liliana Marie Prikler <[email-masked]> skribis:

> Am Dienstag, dem 08.03.2022 um 17:11 +0100 schrieb Ludovic Courtès:
>> [...]
>> With the patch below, we get more sensible behavior:
>> 
>> --8<---------------cut here---------------start------------->8---
>> scheme@(guile-user)> (modify-inputs (append $5 $4)
>>                        (replace "glib" xpdf))
>> $8 = (("glib" #<package [email-masked] gnu/packages/pdf.scm:395
>> 7f9b1457c9a0>) ("pkg-config" #<package
>> [email-masked] gnu/packages/pkg-config.scm:36 7f9b13a30580>)
>> ("glib" #<package [email-masked] gnu/packages/pdf.scm:395 7f9b1457c9a0>
>> "bin") ("gobject-introspection" #<package
>> [email-masked] gnu/packages/glib.scm:428
>> 7f9b12994e70>))
>> --8<---------------cut here---------------end--------------->8---
>> 
>> If that makes sense to you, I’ll go ahead with this change and adjust
>> documentation accordingly.
> Sounds better than my own suggestion, since it'll keep working the way
> it did even when labels are eventually dropped.

Pushed with tests in 00dfff84c66c5c6aa4853684419a92befe55d4b4.

> If more control is needed, we can always later extend it to support
> (replace ("label" "output") (package output)).  WDYT?

I’d rather not: the goal of ‘modify-inputs’ is to provide an interface
that works as if input labels didn’t exist, with an eye on removing them
entirely in the future:

  https://guix.gnu.org/en/blog/2021/the-big-change/

Regardless, we’ll have to keep an eye on all these corner cases and to
adjust the plan accordingly.

Thanks!

Ludo’.

Subject: No way of replacing an input in modify-input syntax structure but keep all the outputs
From: Gordon Quad <[email-masked]>
To: [email-masked]
Date: Thu, 10 Feb 2022 10:09:41 +0000
List-Id: <debbugs-submit.debbugs.gnu.org>

poppler package include glib as a native-input with "bin" output.

If I am doing the following:

(package/inherit poppler
    (native-inputs
        (modify-inputs (package-native-inputs poppler)
            (replace "glib" my-glib))))

poppler's build will fail becuase replace syntax will replace "glib"
package erasing its outputs. I can specify output explicitly by doing
(replace "glib" (my-glib "bin")) in this case, but that makes mass input
modification difficult (e.g. if i want to replace all instances of glib
to my-glib).

That said there is a value in having such behaviour for replace syntax
in case for example if I replace package with my own version that has no
extra outputs, so it would be nice to have both options available.