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