Hi, 宋文武 <iyzs...@envs.net> writes:
> 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: > <98a8666a0cbf33e24efff615243b98144a92c950.1693047369.git.iyzs...@member.fsf.org> > From: =?UTF-8?q?=E5=AE=8B=E6=96=87=E6=AD=A6?= <iyzs...@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) 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? -- Thanks, Maxim