> Hi Pierre,

> Pierre Neidhardt <m...@ambrevar.xyz> skribis:

> > One of the biggest struggle we had when discussing it was figuring out
> > what to do about parameter propagation across dependencies.

> > For instance, what if we want to build "all packages without X support"?
> > This means that the parameter must traverse all inputs recursively if we
> > don't want to drag X indirectly.

> > If I understand your change correctly, the patch is only applying
> > parameters to the given package and it's not propagated to the inputs,
> > is that correct?

> That’s correct: in this patch set parameters are per-package, and I
think it’s easier to start simple, but we could implement what you
describe without too much hassle I think.

> For example, you’d type ‘--with-parameters=x11=false’, and that’d be
applied to all the packages that have an ‘x11’ parameter.

> Ludo’.

I have done a lot of work with the Conan package manager, a c++ language 
package manager, that has grown in capability. It is not fully functional, but 
works on the hash of the key parameters of the package (name, version, etc.) to 
find the right reproducible binary. Two important parameters are "options" and 
"settings".

Options are per-package, and generally affect none below it. You can specify 
defaults for the options in the package, and also call for specific options on 
dependencies in package "recipes". There are also ways to define 
incompatibilities and substitutes. On the command line, you can specify options 
with -o,--options, with no namespace needed for the package you are installing, 
and package:option to specify for other packages pulled in. I prefer this 
syntax to all the equal signs you proposed (though I defer if this is standard 
throughout Guix/Guile)

Settings are more "system-wide", though being a language package manager, it 
does not have a "system". The same settings are applied to the whole tree 
during an install, and are usually things like compiler, architecture, and 
build type. These settings are chosen through a profile file, of which there is 
a default generated for a given computer. Settings can also be set at the 
command line during install with -s,--settings, but of course there is no 
namespacing.

https://docs.conan.io/en/latest/mastering/conditional.html

I think there is a lot of good stuff in Conan that Guix could learn from. It's 
a lot closer in architecture than any of the traditional system package 
managers.

If you would, please forward this to the mailing list that this message was 
from, as I am not currently on that list.

Sincerely,
Stephen Christie

Reply via email to