Hi,
Bob currently has some scalability problems when working on large
projects with hundreds of packages. To address these problems [1] I've
implemented a prototype to reuse identical package trees. So far the
achieved speed gain is impressive but it will require to break the
plugin API in a backwards incompatible way.
The following changes are necessary to implement the optimization:
* No shell patterns allowed anymore in {checkout,build,package}Vars
* Plugins cannot iterate environment anymore. Access to specific
variables of the environment is still possible, though.
* Custom string functions do not get the package path (stack) anymore.
While changing quite a lot of code I came across some other problems.
Fixing those will also introduce incompatible changes. While I could
keep the old APIs I thought it would be good to clean them up in one big
step:
* Package.getIndirectDepSteps() does not return used tools and the used
sandbox anymore. Use getAllDepSteps() instead.
* Step.getTools() returns the actual tools (bob.input.Tool) instead of
the execution path referencing the tool.
* Step.getProvidedEnv(), .getProvidedTools(), .getProvidedDeps() and
.getProvidedSandbox() were removed.
I hope these changes will not break anything in production...
-- Jan
[1] https://github.com/jkloetzke/bob/tree/incremental-parsing