guix-devel
[Top][All Lists]
Advanced

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

Re: should gnome-desktop-service really provide all of this to a profile


From: 宋文武
Subject: Re: should gnome-desktop-service really provide all of this to a profile?
Date: Wed, 09 Mar 2016 15:38:46 +0800
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.5 (gnu/linux)

address@hidden (Ludovic Courtès) writes:

> Pulseaudio also propagates a few things.
Yes, I think it should be splited into “out” and “dev”, if we can make
only the “dev” output propagating libcap and gdbm.
>
>>>>> Good point, this sounds undesirable (and shows that some packages would
>>>>> benefit from separate outputs—e.g., “doc” output for xcb.)
>> It seems that multiple outputs doesn’t help here.
>
> Multiple outputs do help here: propagating libxcb:out only propagates
> libxcb:out, and not libxcb:doc.
OK, but here we don’t want libxcb at all :-)
>
>> For example, install ‘gtk+:doc’ into the profile will bring all
>> propagated-inputs of ‘gtk+’ into profile too, because
>> propagated-inputs aren’t per output…
>
> Right, it’s a limitation that we could fix.
>
> It’s rarely a problem though, because usually when you install the “doc”
> or “debug” output, you also want the rest, including propagated
> inputs.
>
>> IIUC, in nix, it’s handled by writing files to specified output:
>> ‘$out/nix-support/propagated-build-inputs’
>> ‘$out/nix-support/propagated-native-build-inputs’
>> ‘$out/nix-support/propagated-user-env-packages’
>>
>> And only items in ‘propagated-user-env-packages’ are included when
>> install into the profile.
>
> Two things here:
>
>   • Back in the day, I couldn’t think of a situation where it would make
>     sense for ‘propagated-inputs’ to be different from
>     ‘propagated-user-env-packages’ (at the time, the latter was little
>     known so in practice people had to install dependencies by
>     themselves.)  So in Guix I chose to have just one.
In nix ‘propagated-build-inputs’ is propagations and ‘inputs’ for building
while ‘propagated-user-env-packages’ is propagations for profile.
In guix ‘propagated-inputs’ is propagations for both building and profile
and at the same time is ‘inputs’ for building.
I agree that propagations for building or for profile is the same thing,
and there’re some runtime only dependencies worthing treating as
non-inputs (eg: adwaita-icon-themes, plugins for gstreamer).

How about seperating propagations from ‘propagated-inputs’?
This requires listing some packages twice, but I think it will be more
clear considering ‘inputs’ are for building the whole package while
‘propagations’ are (should be) per-output.

eg:
--8<---------------cut here---------------start------------->8---
(package
  (name "pulseaudio")
  (outputs '("out" "include" "lib" "dev"))
  (inputs
   `(("libpcap" ,libcap)
     ("gdbm" ,gdmb)
     ...))
  (propagations
    #:output "dev"
    `(("pulseaudio:include" ,pulseaudio "include")
      ("pulseaudio:lib"     ,pulseaudio "lib")
      ("libpcap" ,libpcap)
      ("gdbm" ,gdbm)))
  ...)
--8<---------------cut here---------------end--------------->8---

>
>   • I found the ‘nix-support’ trick (that is, having high-level
>     information on the build side) kind of hacky, which is why this
>     information is solely on the build side in Guix.  This is what
>     allows higher-level functionality such as --search-paths to be
>     implemented on the host side.
>
>     OTOH, things like <http://bugs.gnu.org/22138> could be more easily
>     addressed if all the info was already on the build side.
Agree :-)
>
>
> […]
> Anyway, what do you think would be the best way to avoid “profile
> pollution” with the GNOME meta-package?
I think, for now:

Attachment: 0001-gnu-nautilus-Don-t-propagate-gtk.patch
Description: Text Data

(Actually, I’m ok with a polluted profile.
And the ‘xfce’ propagates gtk+ by exo too.)

Next is to make propagations (and ‘search-paths’?) per-output.

And we can add some filter (based on search-paths or services
extensions?) to profile for hide unwanted files.

reply via email to

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