I spent most of last week working on speed improvements in the package
creation process, with nice results.

print-package-signature and out-of-date are now about twice as fast.

packages with big dependency tree and no wantlib build very much faster (the
new meta/* stuff is a proof of that).

ports with lots of multi-packages will also see big improvements.

port-lib-depends-check will also benefit.

I think we're about back to the speeds before all the sanity checks,
but with all the sanity checks.

Technical details:
- every user-visible operation that wants a port's libraries will create
a cache directory and cache the results.
- resolve-lib has some new options specifically for lib-depends-args, so
that it gets invoked once instead of once per library.
- pkg_create runs a specialized solver, that will only solve its own libraries
instead of the full tree (and thus stops much earlier in many cases)
- pkg_create is aware of the cache directory and caches plists in there.
Thus, when they are already there, the next package in a multi-package
situation no longer needs to regenerate it.

This cache is destroyed after each user-invoked operation, because out-of-synch
issues would be really bad. Users that really know what they are doing (e.g.,
a build without any change whatsoever) can try creating a directory and setting
_DEPENDS_CACHE pointing to that directory.

Reply via email to