Boost logo

Boost :

Subject: Re: [boost] Boost and exceptions
From: Dave Abrahams (dave_at_[hidden])
Date: 2012-06-23 16:05:45


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:
>>
>> http://f.cl.ly/items/343N460u3b3039091C0g/deps.pdf
>>
>
> 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

Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk