
on Sat Jun 23 2012, Daniel James <dnljms-AT-gmail.com> wrote:
On 23 June 2012 21:05, Dave Abrahams <dave@boostpro.com> wrote:
on Sat Jun 23 2012, Mathias Gaunard <mathias.gaunard-AT-ens-lyon.org> wrote:
On 06/22/2012 08:33 PM, Dave Abrahams wrote:
Good question. We do have two problematic dependency loops in Boost, but it's not caused by this sort of header structure:
What are the loops here? What do the colored boxes and arrows mean?
Each set of same-colored boxes is a SCC in the build dependency graph. Heavy black arrows are direct dependencies. Dashed arrows are dependencies introduced by usage-requirements (such as these: https://github.com/boost-lib/math/blob/master/CMakeLists.txt#L96). The blue ones are members of a transitive reduction of those usage dependencies. Ignoring the gray ones *might* make the structure easier to see.
Is this something we should be doing something about?
Yes, eventually.
I guess the Boost.Math circle could possibly be broken by splitting Boost.Math into smaller modules (obviously up to John).
There are a few libraries that are substantially, but not completely, usable without their compiled component. That is to say, they're header-only except for a few features. If in each case, those few features were split into their own module, this issue would go away.
Also this doesn't seem to cover all of Boost.
You don't want to see that graph :-). It looks something like http://f.cl.ly/items/3V2I3A103K1Y45113s3w/source-deps.pdf
That's pretty crazy. Do you know if separating test dependencies would make much of a difference?
They're already separated, along with documentation dependencies. You *really* don't want to see the graph that includes the test dependencies ;-) Cheers, -- Dave Abrahams BoostPro Computing http://www.boostpro.com