omelette breaks with eggs that declare nested "top-levels" in the wrong order
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
collective.buildout |
Fix Released
|
Undecided
|
David Glick |
Bug Description
Some eggs declare more 'top-levels' than necessary, for instance by declaring as top-level a package that is nested in another package.
This is normally harmless, but if these top-levels are declared in the "wrong" order (nested package before its container) this breaks omelette, as it tries to create the link inside a directory that doesn't exist yet:
$ bin/buildout -v
Installing 'collective.
Picked: collective.
Getting required 'zc.recipe.egg'
required by collective.
Picked: zc.recipe.egg = 1.2.2
Installing omelette.
Installing 'SOAPPy ==0.12.0.1'.
We have the distribution that satisfies 'SOAPPy==0.12.0.1'.
Getting required 'PyXML'
required by SOAPpy 0.12.0.1.
Picked: PyXML = 0.8.4
Getting required 'fpconst'
required by SOAPpy 0.12.0.1.
Picked: fpconst = 0.7.2
While:
Installing omelette.
An internal error occured due to a bug in either zc.buildout or in a
recipe being used:
Traceback (most recent call last):
File "/home/
getattr(
File "/home/
installed_files = self[part]
File "/home/
return f()
File "/home/
symlink(
OSError: [Errno 2] No such file or directory
See the attached buildout.cfg for a reproduction
Changed in collective.buildout: | |
status: | New → Confirmed |
Changed in collective.buildout: | |
assignee: | nobody → David Glick (davisagli) |
status: | Confirmed → Fix Committed |
Changed in collective.buildout: | |
status: | Fix Committed → Fix Released |
The following one-line patch fixes this issue. Omelette will just issue a warning instead of failing with packages that failed before