Subject: bug#75851: closed (Re: bug#75851: Don't add propagated-inputs for all outputs)

From: [email-masked] (GNU bug Tracking System)
Date: Tue, 04 Feb 2025 11:52:02 +0000

Your bug report

#75851: Don't add propagated-inputs for all outputs

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

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

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

Subject: Re: bug#75851: Don't add propagated-inputs for all outputs
From: 宋文武 <[email-masked]>
To: Maxim Cournoyer <[email-masked]>
Cc: [email-masked]
Date: Tue, 04 Feb 2025 19:54:43 +0800
List-Id: <debbugs-submit.debbugs.gnu.org>

Maxim Cournoyer <[email-masked]> 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!

Subject: Don't add propagated-inputs for all outputs
From: 宋文武 <[email-masked]>
To: [email-masked]
Cc: [email-masked]
Date: Sat, 26 Aug 2023 19:35:55 +0800
List-Id: <debbugs-submit.debbugs.gnu.org>

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:

>From 98a8666a0cbf33e24efff615243b98144a92c950 Mon Sep 17 00:00:00 2001
Message-ID: <[email-masked]>
From: =?UTF-8?q?=E5=AE=8B=E6=96=87=E6=AD=A6?= <[email-masked]>
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

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. 🥳