On 6 June 2016 at 12:17, Profpatsch <[email protected]> wrote:
> In the past month or so more and more packages have been
> split into multiple outputs. I like that, but:
>
> Doing so breaks lots of dependencies silently.
>
> I think that is a very bad problem we need to address.
> Every program with runtime dependencies does build just
> fine, but breaks once its executed.
>
> Two solutions I can think of:
> 1. Programs can assert *files* they depend on directly in the
>    nix expression and nix ensures these exist on build time.
> 2. Don’t use the first element in the `outputs` list by default.
>    Default to a derivation of *all* outputs if no output is given
>    by name.
>
> 1 might be hard to implement (afaik aszlig tried something in that
> direction) and still breaks old packages that are not updated.
> 2 will un-break all packages again and they need to be patched to
> get the closure size down again.
>
> Thoughts? Anything I’ve missed?

My (crazy) idea to improve this is "hierarchical Nix store paths",
which I posted here:

http://comments.gmane.org/gmane.linux.distributions.nixos/20421

The idea is that if you refer to ${pkg}, you get the whole output. But
if you refer to ${pkg.bin.some-exe} you get that path (guaranteed),
and Nix is able to garbage collect the rest of ${pkg}, unless
something _else_ refers to anything in that output tree.

I don't really know Nix though, and that idea might very well be
impossible to implement. I just feel that the current multiple-outputs
system doesn't scale well, there is no way to create really fine
grained (sub)packages with it. So I had to post the idea.

Best regards,
Bjørn Forsman
_______________________________________________
nix-dev mailing list
[email protected]
http://lists.science.uu.nl/mailman/listinfo/nix-dev

Reply via email to