diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a4f3ef76..d007d47f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -7,14 +7,15 @@ name: CI on: [ push, pull_request ] jobs: - ubuntu-focal: - runs-on: ubuntu-20.04 + ubuntu: + runs-on: ubuntu-latest strategy: fail-fast: false matrix: - compiler: [ g++-9, g++-10, clang++-10 ] + compiler: [ g++-13, g++-14, clang++-19 ] + mpi: [ mpich, libopenmpi-dev ] steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 with: fetch-depth: '0' - uses: mstachniuk/ci-skip@v1 @@ -24,10 +25,8 @@ jobs: fail-fast: true - name: Set TOOLSET run: echo ${{ matrix.compiler }} | awk '/^g/ { print "TOOLSET=gcc" } /^clang/ { print "TOOLSET=clang" }' >> $GITHUB_ENV - - name: Add repository - run: sudo apt-add-repository -y "ppa:ubuntu-toolchain-r/test" - name: Install packages - run: sudo apt install g++-9 g++-10 clang-10 mpich + run: sudo apt-get update; sudo apt-get install -y g++-13 g++-14 clang-19 ${{matrix.mpi}} - name: Checkout main boost run: git clone -b develop --depth 1 https://github.com/boostorg/boost.git ../boost-root - name: Update tools/boostdep @@ -49,57 +48,10 @@ jobs: run: 'echo "using $TOOLSET : : ${{ matrix.compiler }} ;" > ~/user-config.jam && echo "using mpi ;" >> ~/user-config.jam' working-directory: ../boost-root - name: Config info - run: ../../../b2 print_config_info toolset=$TOOLSET cxxstd=03,11,14,17,2a + run: ../../../b2 print_config_info toolset=$TOOLSET cxxstd=14,17,20 working-directory: ../boost-root/libs/config/test - name: Test - run: ../../../b2 toolset=$TOOLSET cxxstd=03,11,14,17,2a - working-directory: ../boost-root/libs/graph_parallel/test - ubuntu-bionic: - runs-on: ubuntu-18.04 - strategy: - fail-fast: false - matrix: - compiler: [ g++-7, g++-8, clang++-7, clang++-8 ] - steps: - - uses: actions/checkout@v2 - with: - fetch-depth: '0' - - uses: mstachniuk/ci-skip@v1 - with: - commit-filter: '[skip ci];[ci skip];[CI SKIP];[SKIP CI];***CI SKIP***;***SKIP CI***;[windows];[Windows];[WINDOWS];[apple];[Apple];[APPLE]' - commit-filter-separator: ';' - fail-fast: true - - name: Set TOOLSET - run: echo ${{ matrix.compiler }} | awk '/^g/ { print "TOOLSET=gcc" } /^clang/ { print "TOOLSET=clang" }' >> $GITHUB_ENV - - name: Add repository - run: sudo apt-add-repository -y "ppa:ubuntu-toolchain-r/test" - - name: Install packages - run: sudo apt install g++-7 g++-8 clang-7 clang-8 mpich - - name: Checkout main boost - run: git clone -b develop --depth 1 https://github.com/boostorg/boost.git ../boost-root - - name: Update tools/boostdep - run: git submodule update --init tools/boostdep - working-directory: ../boost-root - - name: Copy files - run: cp -r $GITHUB_WORKSPACE/* libs/graph_parallel - working-directory: ../boost-root - - name: Install deps - run: python tools/boostdep/depinst/depinst.py graph_parallel - working-directory: ../boost-root - - name: Bootstrap - run: ./bootstrap.sh - working-directory: ../boost-root - - name: Generate headers - run: ./b2 headers - working-directory: ../boost-root - - name: Generate user config - run: 'echo "using $TOOLSET : : ${{ matrix.compiler }} ;" > ~/user-config.jam && echo "using mpi ;" >> ~/user-config.jam' - working-directory: ../boost-root - - name: Config info install - run: ../../../b2 print_config_info toolset=$TOOLSET cxxstd=03,11,14,17 - working-directory: ../boost-root/libs/config/test - - name: Test - run: ../../../b2 toolset=$TOOLSET cxxstd=03,11,14,17 + run: ../../../b2 toolset=$TOOLSET cxxstd=14,17,20 working-directory: ../boost-root/libs/graph_parallel/test macos: runs-on: macos-latest @@ -108,7 +60,7 @@ jobs: matrix: toolset: [ clang ] steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 with: fetch-depth: '0' - uses: mstachniuk/ci-skip@v1 @@ -138,8 +90,8 @@ jobs: - name: Generate user-config run: echo "using mpi ;" > ~/user-config.jam - name: Config info - run: ../../../b2 print_config_info toolset=${{ matrix.toolset }} cxxstd=03,11,14,17,2a + run: ../../../b2 print_config_info toolset=${{ matrix.toolset }} cxxstd=14,17,20 working-directory: ../boost-root/libs/config/test - name: Test - run: ../../../b2 toolset=${{ matrix.toolset }} cxxstd=03,11,14,17,2a define=CI_SUPPRESS_KNOWN_ISSUES + run: ../../../b2 toolset=${{ matrix.toolset }} cxxstd=14,17,20 define=CI_SUPPRESS_KNOWN_ISSUES working-directory: ../boost-root/libs/graph_parallel/test diff --git a/build.jam b/build.jam new file mode 100644 index 00000000..ce35ca77 --- /dev/null +++ b/build.jam @@ -0,0 +1,47 @@ +# Copyright René Ferdinand Rivera Morell 2024 +# Distributed under the Boost Software License, Version 1.0. +# (See accompanying file LICENSE_1_0.txt or copy at +# http://www.boost.org/LICENSE_1_0.txt) + +require-b2 5.2 ; + +constant boost_dependencies : + /boost/algorithm//boost_algorithm + /boost/assert//boost_assert + /boost/concept_check//boost_concept_check + /boost/config//boost_config + /boost/container_hash//boost_container_hash + /boost/core//boost_core + /boost/detail//boost_detail + /boost/dynamic_bitset//boost_dynamic_bitset + /boost/filesystem//boost_filesystem + /boost/foreach//boost_foreach + /boost/function//boost_function + /boost/graph//boost_graph + /boost/iterator//boost_iterator + /boost/lexical_cast//boost_lexical_cast + /boost/mpi//boost_mpi + /boost/mpl//boost_mpl + /boost/optional//boost_optional + /boost/property_map//boost_property_map + /boost/property_map_parallel//boost_property_map_parallel + /boost/random//boost_random + /boost/serialization//boost_serialization + /boost/smart_ptr//boost_smart_ptr + /boost/static_assert//boost_static_assert + /boost/tuple//boost_tuple + /boost/type_traits//boost_type_traits + /boost/variant//boost_variant ; + +project /boost/graph_parallel + ; + +explicit + [ alias boost_graph_parallel : build//boost_graph_parallel ] + [ alias all : boost_graph_parallel example test ] + ; + +call-if : boost-library graph_parallel + : install boost_graph_parallel + ; + diff --git a/build/Jamfile.v2 b/build/Jamfile.v2 index 5256fa78..b0874a33 100644 --- a/build/Jamfile.v2 +++ b/build/Jamfile.v2 @@ -6,19 +6,21 @@ import mpi ; -project boost/graph_parallel +project + : common-requirements ../include $(boost_dependencies) : requirements ../src : source-location ../src + : usage-requirements BOOST_GRAPH_PARALLEL_NO_LIB=1 ; local optional_sources ; local optional_reqs ; if [ mpi.configured ] -{ +{ lib boost_graph_parallel : mpi_process_group.cpp tag_allocator.cpp - : ../../mpi/build//boost_mpi + : /boost/mpi//boost_mpi /mpi//mpi [ mpi.extra-requirements ] BOOST_GRAPH_NO_LIB=1 shared:BOOST_GRAPH_DYN_LINK=1 @@ -33,11 +35,13 @@ if [ mpi.configured ] } else { - message boost_graph_parallel + alias boost_graph_parallel ; + if ! ( --without-graph_parallel in [ modules.peek : ARGV ] ) + { + message boost_graph_parallel : "warning: Graph library does not contain MPI-based parallel components." : "note: to enable them, add \"using mpi ;\" to your user-config.jam." : "note: to suppress this message, pass \"--without-graph_parallel\" to bjam." ; + } } - -boost-install boost_graph_parallel ; diff --git a/doc/distributed_adjacency_list.rst b/doc/distributed_adjacency_list.rst index 5b65f0a6..4b9e1e0a 100644 --- a/doc/distributed_adjacency_list.rst +++ b/doc/distributed_adjacency_list.rst @@ -58,7 +58,7 @@ vertices or edges of the graph. using namespace boost; typedef adjacency_list, + distributedS, directedS> Graph; @@ -120,7 +120,7 @@ respectively: :: typedef adjacency_list, + distributedS, directedS, City, Highway> RoadMap; diff --git a/doc/html/distributed_adjacency_list.html b/doc/html/distributed_adjacency_list.html index c4c8e63a..74afe15c 100644 --- a/doc/html/distributed_adjacency_list.html +++ b/doc/html/distributed_adjacency_list.html @@ -79,7 +79,7 @@

Defining a Distributed Adjacency List
 using namespace boost;
 typedef adjacency_list<vecS,
-                       distributedS<parallel::mpi::bsp_process_group, vecS>,
+                       distributedS<graph::distributed::mpi_process_group, vecS>,
                        directedS>
   Graph;
 
@@ -135,7 +135,7 @@

Distributed Vertex and Edge Properties
 typedef adjacency_list<vecS,
-                       distributedS<parallel::mpi::bsp_process_group, vecS>,
+                       distributedS<graph::distributed::mpi_process_group, vecS>,
                        directedS,
                        City, Highway>
   RoadMap;
diff --git a/doc/html/metis.html b/doc/html/metis.html
index 8ca97457..9f816f03 100644
--- a/doc/html/metis.html
+++ b/doc/html/metis.html
@@ -124,8 +124,9 @@ 

Member Functions

metis_reader(std::istream& in);

Constructs a new METIS reader that will retrieve edges from the input -stream in. If any errors are encountered while initially parsing -in, metis_input_exception will be thrown.

+stream in. The reader will read from the very beginning of the stream, +and to this end, in must support seeking. If any errors are encountered +while initially parsing in, metis_input_exception will be thrown.


 edge_iterator begin();
@@ -266,7 +267,7 @@ 

Member Functions

diff --git a/doc/metis.rst b/doc/metis.rst index 17eb51ae..4a917fa3 100644 --- a/doc/metis.rst +++ b/doc/metis.rst @@ -118,8 +118,9 @@ Member Functions metis_reader(std::istream& in); Constructs a new METIS reader that will retrieve edges from the input -stream ``in``. If any errors are encountered while initially parsing -``in``, ``metis_input_exception`` will be thrown. +stream ``in``. The reader will read from the very beginning of the stream, +and to this end, ``in`` must support seeking. If any errors are encountered +while initially parsing ``in``, ``metis_input_exception`` will be thrown. ----------------------------------------------------------------------------- diff --git a/example/Jamfile.v2 b/example/Jamfile.v2 index e8877757..17c6d7dc 100644 --- a/example/Jamfile.v2 +++ b/example/Jamfile.v2 @@ -5,9 +5,12 @@ # http://www.boost.org/LICENSE_1_0.txt) -project : requirements ../build//boost_graph_parallel - ../../system/build//boost_system - ../../mpi/build//boost_mpi +using python ; + +project : requirements /boost/graph_parallel//boost_graph_parallel + /boost/system//boost_system + /boost/mpi//boost_mpi + /python//python ; exe breadth_first_search : breadth_first_search.cpp ; diff --git a/include/boost/graph/distributed/adjlist/serialization.hpp b/include/boost/graph/distributed/adjlist/serialization.hpp index d6b14e5d..55fa4e8c 100644 --- a/include/boost/graph/distributed/adjlist/serialization.hpp +++ b/include/boost/graph/distributed/adjlist/serialization.hpp @@ -13,6 +13,7 @@ # include # include # include +# include # include # include # include @@ -91,7 +92,7 @@ namespace detail { namespace parallel for (filesystem::directory_iterator i(filename), end; i != end; ++i) { - if (!filesystem::is_regular(*i)) + if (!filesystem::is_regular_file(*i)) boost::throw_exception(std::runtime_error("directory contains non-regular entries")); std::string process_name = i->path().filename().string(); diff --git a/meta/libraries.json b/meta/libraries.json index c0247bc1..b0528d6c 100644 --- a/meta/libraries.json +++ b/meta/libraries.json @@ -11,7 +11,7 @@ "Iterators" ], "maintainers": [ - "K. Noel Belcourt " + "Jeremy W. Murphy " ], "cxxstd": "03" } diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index b3e062e4..37bfdaca 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -2,15 +2,18 @@ # (C) Copyright 2005, 2006 Trustees of Indiana University # (C) Copyright 2005 Douglas Gregor # -# Distributed under the Boost Software License, Version 1.0. (See accompanying +# Distributed under the Boost Software License, Version 1.0. (See accompanying # file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) +using python ; -# use-project /boost/mpi : ../build ; +project /boost/graph_parallel/test + : requirements + /boost/graph_parallel//boost_graph_parallel + /boost/system//boost_system + /python//python + ; -project /boost/graph_parallel/test - : requirements ../build//boost_graph_parallel ../../system/build//boost_system ; - import mpi : mpi-test ; if [ mpi.configured ] @@ -46,4 +49,3 @@ test-suite graph_parallel } build-project ../example ; -