GNU bug report logs - #75851
Don't add propagated-inputs for all outputs

Previous Next

Package: guix-patches;

Reported by: 宋文武 <iyzsong <at> envs.net>

Date: Sun, 26 Jan 2025 04:09:02 UTC

Severity: normal

Done: 宋文武 <iyzsong <at> envs.net>

Bug is archived. No further changes may be made.

Full log


View this message in rfc822 format

From: help-debbugs <at> gnu.org (GNU bug Tracking System)
To: 宋文武 <iyzsong <at> envs.net>
Cc: tracker <at> debbugs.gnu.org
Subject: bug#75851: closed (Don't add propagated-inputs for all outputs)
Date: Tue, 04 Feb 2025 11:52:02 +0000
[Message part 1 (text/plain, inline)]
Your message dated Tue, 04 Feb 2025 19:54:43 +0800
with message-id <87frktq60s.fsf <at> envs.net>
and subject line Re: bug#75851: Don't add propagated-inputs for all outputs
has caused the debbugs.gnu.org bug report #75851,
regarding Don't add propagated-inputs for all outputs
to be marked as done.

(If you believe you have received this mail in error, please contact
help-debbugs <at> gnu.org.)


-- 
75851: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=75851
GNU Bug Tracking System
Contact help-debbugs <at> gnu.org with problems
[Message part 2 (message/rfc822, inline)]
From: 宋文武 <iyzsong <at> envs.net>
To: guix-patches <at> gnu.org
Cc: guix-devel <at> gnu.org
Subject: Don't add propagated-inputs for all outputs
Date: Sat, 26 Aug 2023 19:35:55 +0800
[Message part 3 (text/plain, inline)]
Hello, we have a TODO for "extend `propagated-inputs` with support for
multiple outputs".  I try to do it for a while, but unable to find a
clear way, since add a new syntax for specify output in
propagated-inputs require changes in too many places..

Think about the intention, what we want is to avoid unwanted
propagated-inputs for building a package or user profiles, and
propagated-inputs is mostly used for development packages which
requiring headers/libraries from its inputs.  It seems I can hardcode
the choice here to the "dev" output (if a package have both "dev" and
"out", its "out" should considered be an application) or the "out"
output (a library/development package).


Then the change is straight:

[0001-packages-Don-t-propagate-inputs-for-non-development-.patch (text/x-patch, inline)]
From 98a8666a0cbf33e24efff615243b98144a92c950 Mon Sep 17 00:00:00 2001
Message-ID: <98a8666a0cbf33e24efff615243b98144a92c950.1693047369.git.iyzsong <at> member.fsf.org>
From: =?UTF-8?q?=E5=AE=8B=E6=96=87=E6=AD=A6?= <iyzsong <at> member.fsf.org>
Date: Sat, 26 Aug 2023 18:27:09 +0800
Subject: [PATCH] packages: Don't propagate inputs for non-development package
 outputs.

* guix/packages.scm (transitive-inputs): Only include propagated inputs from a
package for its "dev" output, or its "out" output if the package doesn't have
a "dev" one.
---
 guix/packages.scm | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/guix/packages.scm b/guix/packages.scm
index ba98bb0fb4..435d55de71 100644
--- a/guix/packages.scm
+++ b/guix/packages.scm
@@ -1143,7 +1143,13 @@ (define (transitive-inputs inputs)
            (loop rest result propagated first? seen)
            (loop rest
                  (cons input result)
-                 (cons (package-propagated-inputs package) propagated)
+                 ;; Only add propagated inputs for PACKAGE:dev, or PACKAGE:out
+                 ;; when PACKAGE doesn't have a "dev" output.
+                 (if (if (member "dev" (package-outputs package))
+                         (member "dev" outputs)
+                         (or (null? outputs) (member "out" outputs)))
+                     (cons (package-propagated-inputs package) propagated)
+                     propagated)
                  first?
                  (vhash-consq package outputs seen))))
       ((input rest ...)

base-commit: eeb71d778f149834015858467fbeeb1276d96d1d
-- 
2.41.0

[Message part 5 (text/plain, inline)]

Not much benifits now, but i think it will helps when we have more
mulitple outputs packages.  Also how about add a slimming team aiming to
reduce the closure size of packages and system, anyone interested?

Thanks. 🥳
[Message part 6 (message/rfc822, inline)]
From: 宋文武 <iyzsong <at> envs.net>
To: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
Cc: 75851-done <at> debbugs.gnu.org
Subject: Re: bug#75851: Don't add propagated-inputs for all outputs
Date: Tue, 04 Feb 2025 19:54:43 +0800
Maxim Cournoyer <maxim.cournoyer <at> gmail.com> writes:

> [...]
>> * guix/packages.scm (transitive-inputs): Only include propagated inputs from a
>> package for its "dev" output, or its "out" output if the package doesn't have
>> a "dev" one.
>
> That seems a heuristic that is bound to fail in surprising ways (and
> with no easy recourse).  I think it's best to not merge this; perhaps
> close it to focus on other ways to get rid of propagated inputs, like
> that GCD you've submitted that would help in the GTK/KDE worlds.
>
> What do you think?

Yes, I agree it's too risky.  Close now, thank you!


This bug report was last modified 158 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.