Boost logo

Boost :

Subject: [boost] Cycle between Graph and GraphParallel
From: Peter Dimov (lists_at_[hidden])
Date: 2018-10-06 00:18:55


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>
#endif

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"
#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?


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