Hi Hugo,

Basic question as a relative newcomer: why would you want to convert the propagated-inputs to normal inputs? What would be the benefits?

This is an honest question, because I (probably naively) see some drawbacks.

From the manual:

propagated-inputs is similar to inputs, but the specified packages will be automatically installed to profiles alongside the package
they belong to

Isn't that always what a user wants? E.g. if I install scipy, I assume
I'll get numpy along with it.

We do this because it is what users want, but it is a very extreme way of fulfilling the users' needs. Note that for native binaries we don't do this. When you install the "bash" package your profile doesn't also contain "glibc", "ncurses", "readline", "gcc:lib" in the versions that the "bash" package demands. It would be terribly inconvenient to get that GCC installed alongside "bash", because then you'd get a file conflict whenever you start a Guix shell session with "bash" and "gcc-toolchain".

While store items have unique names thanks to a unique prefix directory, files in profiles do not have this property: there can only ever be one "lib/libreadline.so.8", for example.

Since all Python modules are propagated (recursively) to the profile we have to treat the large collection of Python packages in Guix as a single namespace, and that makes partial upgrades very difficult.

Furthermore, many Python packages provide both executables and libraries. Even if I only want to use the executable I still have to install the whole Python dependency graph into my profile, where those modules may conflict with the independent modules I want to use as libraries.

--
Ricardo

Reply via email to