Boost logo

Boost :

Subject: Re: [boost] Cycle between Graph and GraphParallel
From: Marc Glisse (marc.glisse_at_[hidden])
Date: 2018-10-06 07:01:36

On Sat, 6 Oct 2018, 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:
> # include <boost/graph/distributed/breadth_first_search.hpp>
> #endif
> at its end, and boost/graph/distributed/breadth_first_search.hpp does:
> #error "Parallel BGL files should not be included unless
> <boost/graph/use_mpi.hpp> has been included"
> #endif
> #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.
> Comments?

I don't know why you are calling this a dependency. The file declares the
sequential stuff, and if the parallel version is available/requested
(BOOST_GRAPH_USE_MPI) makes it available as well. So you don't need the
parallel version to use the sequential one.

Marc Glisse

Boost list run by bdawes at, gregod at, cpdaniel at, john at