buildout/buildout — pull request #37 by kilink (2012-12-14 23:32:40+00:00)
Title: Fix macro inheritance bug

The best way to describe this bug is with the following contrived example.

If section "bar" is extended by section "foo", and section "foo"is extended via another section, and both sections are listed in buildout:parts, attempting to buildout will result in an exception being
raised.

The following buildout.cfg exercises a trivial example of this bug:

```cfg
[buildout]
parts = foo bar

[base]
recipe = zc.recipe.egg

[foo]
<=base
eggs = zc.buildout
interpreter = python

[bar]
<=foo
interpreter = py
```

running ./bin/buildout, we get the following error:
```
While:
Installing.
Error: Missing option: bar:recipe
```

However, installing just one of the parts works:
```
./bin/buildout
Uninstalling bar.
Installing bar.
Generated script '/Users/patrick/dev/blah/bin/buildout'.
Generated interpreter '/Users/patrick/dev/blah/bin/py'.
```

The bug exists because the "<" key is removed from the raw section mapping when processing a section, so whichever section is listed second in parts (in this case bar) will not see any macro
references in the section(s) it depends on.

This pull requests fixes the issue and adds a test.