Options are not reliably copied when using nested sections
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Buildout |
New
|
Undecided
|
Unassigned |
Bug Description
This is difficult to explain, please see attached buildout.
I've created two parts (instance1 and instance2), which both extend a part called zeoclient-instance. The zeoclient-instance part itself extends another part called zope-instance. I would expect both instance1 and instance2 to have the options provided by the zope-instance part. In the example, I'd expect the two instances to both have eggs options, but only the first one does.
Basically, when extending parts which themselves are extension, only the first part which extends the nested parts gets the options from the lowest level.
It appears to be caused by the fact that buildout pops the "<" option from any part it does the extensions for while it is doing the extensions. On line 1154 in buildout.py replacing .pop with .get results in the expected behaviour, but would mean that the '<' options would persist. Perhaps the '<' option could be removed outside the recursive call to _do_extend_raw (around line 1125)?