
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.
Also how were those dependencies defined? From analysis of header includes or just by hand?
From automatically analyzing the CMakeLists.txt files in modularized Boost (https://github.com/ryppl/ryppl/blob/develop/scripts/dump_cmake.py). The entries in the CMakeLists.txt files were generated by automatically analyzing header files.
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 The first one shows only the libraries with build dependencies, i.e. it eliminates all leaves in the build dependency tree. Since leaves can't participate in dependency cycles, that reduced view allows us to better understand the reasons for the SCCs. -- Dave Abrahams BoostPro Computing http://www.boostpro.com