Subject: Re: [boost] Cycle between Graph and GraphParallel
From: Edward Diener (eldiener_at_[hidden])
Date: 2018-10-06 02:43:23
On 10/5/2018 8:18 PM, Peter Dimov via Boost wrote:
> Currently we have a dependency cycle between `graph` and
> `graph_parallel`. It's not the only one, but it's notable with the fact
> that both libraries are buildable and we therefore can't ignore it as we
> can ignore cycles between header-only libraries that at release time
> become a single directory.
> In the particular, this impedes efforts to generate CMake config files.
> Under one scheme I'm currently working on, for instance, Boost.Python
> can't be installed because it tries to install Graph, which tries to
> install GraphParallel, which tries to install Graph.
> The cycle between these two is an interesting one.
> boost/graph/breadth_first_search.hpp does:
> #ifdef BOOST_GRAPH_USE_MPI
> #Â include <boost/graph/distributed/breadth_first_search.hpp>
> at its end, and boost/graph/distributed/breadth_first_search.hpp does:
> #ifndef BOOST_GRAPH_USE_MPI
> #error "Parallel BGL files should not be included unless
> <boost/graph/use_mpi.hpp> has been included"
> #include <boost/graph/breadth_first_search.hpp>
> at its very start. So these headers include each other.
> One would naively think that only the parallel header should include the
> normal one, but one is not well versed in graph library architectures,
> so one might quite possibly be missing something, or a lot.
I believe you are correct here. Boost Graph should not depend on Boost
Graph Parallel in any situation. Boost Graph Parallel is a library
end-users should be able to use as they choose and Boost Graph itself
should be usable without ever bringing in the Parallel code.
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk