If you don't understand most of this message, don't worry.  This is a summary
of what's going on in pkg_add, and it requires some familiarity with the
pkg_add internals to fully get it....

while making things more dynamic, I've run into some performance snags,
so I had to revisit conflict handling and dependency solving. As a result,
sets are smarter and keep some more information around.

The whole idea was to be able to do things correctly for forward dependencies:
discover some packages are "tied" to other stuff, and merge UpdateSets so
that things could be updated in one go (for instance, generally,
postgresql-client and server must be updated together).

Thanks to Antoine Jacoutot, this got a whole lot more complicated: the
fam -> libgamin change triggered some HUGE UpdateSets merging, together
with some unforeseen dependency loops. My mutant pkg_add can deal with that,
but it's still a bit slow (though not glacial slow, as it used to be).
It ends up figuring out a minimal UpdateSet containing no less than 60
packages that need to be updated together...

This will probably become an option for pkg_add, maybe the default option,
with -F updatedepends only there for when you really need it (like when
you're building ports yourself, and thus do not have all the updated packages
yet).

There are a lot more improvements to come.
- there's a bug wrt .libs handling.  I hope to fix that today. If you
end up seeing ForwardDependencies::adjust saying it can't call pkgname,
you hit the bug (I just need to look at .libs in UpdateSet->older and
figure out a valid update pattern for them...)
- there are some more scenarios to caching I haven't tested. Thus,
the Solver object is still doing too much work in at least some cases.
- stuff that doesn't need reinstalling currently corrupts a whole UpdateSet.
Instead of refusing to reinstall, I should just move the handle from old/new to
kept, and keep doing things with the rest of the set.
- I should finally revisit how updates are done, so that packages have
full signatures, and so that I don't close ftp connections when I can avoid
to.

Reply via email to