Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
222 commits
Select commit Hold shift + click to select a range
7917600
Split CMake identities: superproject and 'developer'
Oct 31, 2024
d3f7d13
It uses Boost.Core's lightweight_test, not Boost.Test
Oct 31, 2024
ed3ad56
Fix compile and link issues
Oct 31, 2024
16660dc
Fix finding Boost for the unit tests
jeremy-murphy Dec 4, 2024
3a51b37
Merge branch 'develop' into CMake
jeremy-murphy Dec 20, 2024
d4bf882
CMAKE_SOURCE_DIR != CMAKE_CURRENT_SOURCE_DIR == Graph developer
jeremy-murphy Jan 2, 2025
9eed47c
Merge branch 'develop' into CMake
jeremy-murphy Aug 18, 2025
a4326c3
Merge branch 'develop' into CMake
jeremy-murphy Oct 7, 2025
13b531b
Merge branch 'develop' into CMake
jeremy-murphy Oct 27, 2025
f4cf405
Use FILE_SET HEADERS and bump to 1.90
jeremy-murphy Mar 5, 2026
167e619
Merge branch 'develop' into CMake
jeremy-murphy Jun 8, 2026
dbbc4ea
Merge branch 'develop' into CMake
jeremy-murphy Jun 25, 2026
e61f290
doc: imitate unordered bundle to recover tocs
Becheler Jul 1, 2026
dde65fe
Merge pull request #519 from Becheler/doc/imitate-unordered-bundle
Becheler Jul 1, 2026
75fc41a
Change indentation for easier review
jeremy-murphy Jul 2, 2026
7474f49
Bump requirement to current version
jeremy-murphy Jul 2, 2026
35e20c2
Merge pull request #392 from jeremy-murphy/CMake
jeremy-murphy Jul 2, 2026
50e90d2
Revert "Merge pull request #392 from jeremy-murphy/CMake"
jeremy-murphy Jul 3, 2026
8286c07
doc: opt out of aggregated boostlook to solve toc issues
Becheler Jul 9, 2026
82e569c
fix: pin macos version
Becheler Jul 9, 2026
078f965
infra: add a boostdeps counting bot
Becheler Jul 9, 2026
abf032d
fix: boostdep needs boost headers and compiled filesystem
Becheler Jul 9, 2026
848786f
fix: minor fix tested against real logs
Becheler Jul 9, 2026
5a4d169
Merge pull request #522 from Becheler/ci/pin-macos-clang
jeremy-murphy Jul 13, 2026
e55c4f2
Merge pull request #523 from Becheler/ci/dependency-count-bot
Becheler Jul 14, 2026
b648c6e
Merge pull request #521 from Becheler/doc/imitate-unordered-bundle
Becheler Jul 14, 2026
2f65c69
test: locking behaviour against regressions
Becheler Jul 14, 2026
58a726f
bug: global_to_local on an edge absent from subgraph dereferences a m…
Becheler Jul 14, 2026
f611587
fix: global_to_local asserts on edges not in the subgraph, mirroring …
Becheler Jul 14, 2026
297a322
fix: tests now illustrate the query versus transform idioms
Becheler Jul 14, 2026
7db1f2e
doc: fix to describe the precise behavior
Becheler Jul 14, 2026
a4ee119
fix: remove dep to boost.conversion as implicit_cast was redundant
Becheler Jul 15, 2026
3e59c37
Merge pull request #525 from Becheler/fix/subgraph-124-ci
Becheler Jul 15, 2026
28ecc8a
fix: remove stale boost bind entry
Becheler Jul 15, 2026
4c1dad0
fix: remove stale boost typeof entry
Becheler Jul 15, 2026
97f2ee3
fix: remove dependency to boost move
Becheler Jul 15, 2026
3fc6574
fix: remove dependency to boost foreach
Becheler Jul 15, 2026
0ebbb93
fix: remove stale dependency on numeric_conversion
Becheler Jul 15, 2026
369326a
fix: remove dependencies from CMakeLists.txt
Becheler Jul 15, 2026
479ee6f
fix: remove dependency to MPL using detector idiom
Becheler Jul 16, 2026
1576c02
Merge pull request #528 from Becheler/refactor/graph-traits-void-t-de…
Becheler Jul 16, 2026
3b2cc9c
Merge pull request #526 from Becheler/fix/dependency-reduction
Becheler Jul 16, 2026
18c34a9
fix: refactor public traits from mpl to std
Becheler Jul 16, 2026
c9ce317
fix: from mpl::true to std::true_type in overload sets
Becheler Jul 17, 2026
b3cb647
refactor: remove dependency on boost.tti using detector idiom
Becheler Jul 17, 2026
5a18325
refactor: remove dependency to boost.math
Becheler Jul 17, 2026
fc60b86
introduce new functions
andreacassioli Jul 19, 2026
c736983
Merge pull request #530 from Becheler/refactor/mpl-public-traits-to-std
Becheler Jul 20, 2026
a46bb0c
Merge pull request #532 from Becheler/refactor/drop-math-dependency
Becheler Jul 20, 2026
59d477d
fix: handroll mpl facilities
Becheler Jul 16, 2026
8617207
refactor: import MP11 instead of handrolling
Becheler Jul 20, 2026
a6359db
remove dead Boost.MPL includes
Becheler Jul 16, 2026
330ded1
convert internal MPL metafunctions to std <type_traits>
Becheler Jul 16, 2026
81d5c1a
Merge pull request #529 from Becheler/refactor/graphml-remove-mpl-dep…
Becheler Jul 20, 2026
3c4d3d2
fix: resolve conflict with develop
Becheler Jul 20, 2026
80ed2d2
Merge branch 'develop' into refactor/mpl-to-mp11
Becheler Jul 20, 2026
ec7d9ac
Merge pull request #527 from Becheler/refactor/mpl-to-mp11
Becheler Jul 20, 2026
dbca3f1
Merge pull request #531 from Becheler/refactor/drop-tti-dependency
Becheler Jul 20, 2026
c63141b
[hawick] Support passing std::reference_wrapper to boost::hawick_circ…
ldionne Apr 14, 2021
ca4c9df
refactor: remove dead includes and modernize smart ptrs to STL where …
Becheler Jul 21, 2026
8b0ad13
Remove obsolete C++11 guards
ldionne Jul 21, 2026
81ac210
use = delete
ldionne Jul 21, 2026
d10a63b
Merge pull request #536 from ldionne/ldionne-ref-wrapper
Becheler Jul 21, 2026
70dd414
Merge pull request #537 from Becheler/refactor/modernize-internal-sma…
Becheler Jul 21, 2026
0457790
update tests and examples
andreacassioli Jul 23, 2026
7630d5c
modified jamfile
andreacassioli Jul 23, 2026
cde7dbe
fix: add Jamfile to follow unordered doc infra
Becheler Jul 25, 2026
ea3b5f4
Merge pull request #539 from Becheler/doc/add-antora-jamfile
Becheler Jul 25, 2026
c7836ca
fix: should exactly match unordered infra
Becheler Jul 25, 2026
2398325
Merge pull request #540 from Becheler/doc/mimic-unordered-deploy
Becheler Jul 25, 2026
1fd3ed4
fix: imitate unordered index.html file
Becheler Jul 27, 2026
2dedf40
Merge pull request #542 from Becheler/fix/doc-index-redirect
Becheler Jul 27, 2026
63ba397
deprecation info
andreacassioli Jul 31, 2026
b5ce4d0
update doc example
andreacassioli Aug 1, 2026
172b95b
Merge branch 'develop' into rcsp-new-interface-overloads
andreacassioli Aug 2, 2026
7f3e3b2
ci: add code coverage report
Becheler Aug 6, 2026
9e390a8
Merge pull request #548 from Becheler/ci/codecov
Becheler Aug 6, 2026
0f61678
fix: hyperlinks typos
Becheler Aug 7, 2026
dc8d567
Merge pull request #549 from Becheler/fix/readme-and-codecov
Becheler Aug 7, 2026
e8e3f01
ci: add Wall and Wextra
Becheler Aug 7, 2026
8d8dc81
Merge pull request #550 from Becheler/ci/add-warnings-wall-wextra
Becheler Aug 7, 2026
34c4c76
fix: making tests reproducible
Becheler Aug 10, 2026
bc05361
fix: this entire file was untested, added a bunch of invariants
Becheler Aug 10, 2026
0e818d4
Merge pull request #554 from Becheler/fix/test-seed-42
Becheler Aug 10, 2026
80dfe23
fix: typo bug from copy paste
Becheler Aug 10, 2026
609ff70
Merge pull request #561 from Becheler/fix/codecov-ignore-globs
Becheler Aug 10, 2026
68b16a5
fix: codecov comment for PR only: patch mode
Becheler Aug 11, 2026
5770ca5
Merge pull request #562 from Becheler/ci/fix-codecov-comment
Becheler Aug 11, 2026
b6c4e4a
fix: informational only for project, gated on PR
Becheler Aug 11, 2026
35b782d
Merge pull request #563 from Becheler/fix/ci-codecov-report
Becheler Aug 11, 2026
49d0970
refactor: decouple serialization
Becheler Jul 20, 2026
cb986e5
fix: block boostdep from reporting user-brough dependency
Becheler Aug 3, 2026
13e0d10
fix: removed old unused untested experiment file
Becheler Aug 12, 2026
cd0a3be
Merge pull request #565 from Becheler/fix/remove-adj-list-invalidatio…
Becheler Aug 12, 2026
f6b5d98
test: adding missing round-trip test for graphviz format
Becheler Aug 12, 2026
8d26a66
Merge pull request #567 from Becheler/test/graphviz-round-trip
Becheler Aug 12, 2026
10acc62
test: increase coverage in graphviz round trip test
Becheler Aug 12, 2026
6be9134
Merge pull request #568 from Becheler/test/graphviz-increase-coverage
Becheler Aug 12, 2026
30d31bf
fix: remove xpressive dependency
Becheler Aug 12, 2026
f3850c0
Arno comments
andreacassioli Aug 14, 2026
56ea53e
Try for docs
andreacassioli Aug 14, 2026
ef5634a
Merge pull request #534 from Becheler/refactor/decouple-serialization
Becheler Aug 21, 2026
870613f
revert unrelated changes
andreacassioli Aug 23, 2026
264e275
Merge branch 'boostorg:develop' into rcsp-new-interface-overloads
andreacassioli Aug 23, 2026
534e1d5
full change of the docs
andreacassioli Aug 23, 2026
7ac7481
fix docs
andreacassioli Aug 23, 2026
8960366
fix docs
andreacassioli Aug 23, 2026
ae18654
fix: modernize the test, make-it self-contained and assertive
Becheler Aug 10, 2026
23e4f2a
fix: johnsop-test.cpp was not testing anything
Becheler Aug 10, 2026
f67804c
fix: modernized and actually tests
Becheler Aug 10, 2026
71cf2ba
fix: did not test correctness
Becheler Aug 10, 2026
f33d225
fix: actually tests finish_edge must fire once per edge
Becheler Aug 10, 2026
c9929c8
fix: transitive closure was not testing correctness
Becheler Aug 10, 2026
147fe0f
fix: modernize test
Becheler Aug 11, 2026
ea4f5ae
drop dependency on boost.bimap
Becheler Jul 20, 2026
2aa276a
fix: include jeremy's comments
Becheler Aug 4, 2026
ed2f631
fix: fields initialized
Becheler Aug 8, 2026
79ae35b
fix: remove unused arguments
Becheler Aug 8, 2026
f764d7c
Merge pull request #552 from Becheler/fix/unused-main-args
Becheler Aug 24, 2026
dc09123
test: filling gaps in MAS and SW
Becheler Aug 20, 2026
a6fc56b
refactor: use boost::int128
Becheler Aug 24, 2026
6c14d17
Merge pull request #570 from Becheler/refactor/replace-multiprecision…
Becheler Aug 24, 2026
3ad9c92
Merge pull request #569 from Becheler/test/mas-sw-characterization
Becheler Aug 26, 2026
69dd000
fix: new interface, deprecating old broken one
Becheler Aug 25, 2026
0e8128e
Merge pull request #571 from Becheler/fix/mas-297-dedup
Becheler Aug 26, 2026
a077b12
Merge pull request #538 from andreacassioli/rcsp-new-interface-overloads
Becheler Aug 26, 2026
6170491
remove event stubs
Becheler Aug 27, 2026
b19359f
Merge pull request #573 from Becheler/refactor/remove-event-stub
Becheler Aug 27, 2026
aea6b04
refactor: migrate mas symbols to boost::graph namespace, deprecate ol…
Becheler Aug 26, 2026
f70bf30
Merge pull request #572 from Becheler/feature/mas-namespace-migration
Becheler Aug 27, 2026
2da3c15
feature: add support for MAS stateful visitor
Becheler Aug 27, 2026
bb97feb
Merge pull request #574 from Becheler/feature/mas-stateful-visitor
Becheler Aug 27, 2026
7050125
Reinstantiate 'Distance' type for template expansion.
ascherer Aug 30, 2026
a8a15d8
Use using instead of typedef.
ascherer Aug 30, 2026
42983e1
Discard single use of 'Distance' altogether.
ascherer Aug 30, 2026
e74e224
Avoid 'unused parameter' warning.
ascherer Aug 30, 2026
448a3c5
Fix signed/unsigned warning from g++.
ascherer Aug 31, 2026
cff46d3
Fix unused variable warning from g++.
ascherer Aug 31, 2026
4015eff
Revert "Discard single use of 'Distance' altogether."
ascherer Aug 31, 2026
7779e11
Merge pull request #575 from ascherer/develop
Becheler Aug 31, 2026
fc736e2
Merge pull request #577 from ascherer/fix-signed-unsigned-warning
Becheler Aug 31, 2026
38c2d3e
Merge pull request #578 from ascherer/fix-unused-variable-warning
Becheler Aug 31, 2026
3571fe7
refactor: migrate stoer wagner symbols, deprecate old symbols
Becheler Aug 31, 2026
768ca44
Make the output of girth more like the original.
ascherer Aug 31, 2026
b730fcc
Merge pull request #579 from Becheler/refactor/sw-namespace-migration
Becheler Aug 31, 2026
9247030
refactor: remove boost.spirit graphviz parser
Becheler Jul 17, 2026
e55bde3
Merge pull request #533 from Becheler/refactor/drop-spirit-dependency
Becheler Aug 31, 2026
f036dd4
align template and typedef types as per convention
andreacassioli Aug 31, 2026
d68ae0d
Fix \param tags in mcr_howard and put_property
karpovantonme Aug 5, 2026
417011f
refactor: move PBGL awareness to PGBL
Becheler Sep 1, 2026
5766566
Merge pull request #582 from andreacassioli/align-type-naming-rcsp
Becheler Sep 1, 2026
ea82445
fix: deprecation pragma message
Becheler Sep 2, 2026
bb497d6
Merge pull request #584 from Becheler/fix/use-spirit-deprecation-macro
Becheler Sep 2, 2026
6345572
doc: reinstate standard graph page
Becheler Sep 2, 2026
82dbeb4
Merge pull request #585 from Becheler/docs/reinstate-stanford-graph
Becheler Sep 2, 2026
8dd0321
Merge pull request #566 from Becheler/fix/graphviz-remove-xpressive-w…
Becheler Sep 3, 2026
9c5a0ca
Clean up c++ 11 guards and forward defintions
samkelemen Sep 4, 2026
b51b387
Clean up compiler warnings from Apple clang.
ascherer Sep 4, 2026
720c137
refactor: drop property_tree
Becheler Aug 5, 2026
42e3a19
Merge pull request #589 from ascherer/fix-compiler-warnings-fron-clang
Becheler Sep 4, 2026
1f9b292
Merge pull request #588 from samkelemen/cleanup-cxx11-guards
Becheler Sep 4, 2026
c7a9137
Merge pull request #547 from Becheler/refactor/drop-property-tree-dep…
Becheler Sep 5, 2026
ca7d38d
refactor: replace boost algorithms with standard
Becheler Sep 6, 2026
3f8a9ce
Merge pull request #590 from Becheler/refactor/drop-boost-algorithm
Becheler Sep 6, 2026
b867dde
fix: remove dead weight
Becheler Sep 6, 2026
70a485b
Merge pull request #591 from Becheler/refactor/drop-boost-range
Becheler Sep 6, 2026
6e892f0
refactor: iwyu
Becheler Sep 6, 2026
ed67ec4
Merge pull request #580 from ascherer/improve-format-of-girth
Becheler Sep 6, 2026
76ad637
introduce using, some auto and remove old define for C11 STD
andreacassioli Sep 7, 2026
05e3411
Add CGAL to users.adoc
afabri Sep 8, 2026
bb7a1a3
Merge pull request #594 from afabri/AddCGALtoUsers
Becheler Sep 8, 2026
fcf0146
Merge pull request #592 from Becheler/refactor/narrow-parameter-include
Becheler Sep 8, 2026
b49e18d
Merge branch 'boostorg:develop' into introduce-auto-using-in-rcsp
andreacassioli Sep 8, 2026
bafef0e
clang formatted
andreacassioli Sep 10, 2026
3b6931f
more use of auto
andreacassioli Sep 12, 2026
54f60e6
introduce more auto; fix wrong change to visitor;
andreacassioli Sep 15, 2026
3023fd6
revert clang format change
andreacassioli Sep 16, 2026
4ad6a97
chore: replace NULL with nullptr in file dimacs.hpp
cxljs Sep 20, 2026
de2eed5
Merge pull request #596 from cxljs/nullptr
Becheler Sep 21, 2026
dbd4980
Wire up test/undirected_dfs_visitor.cpp in the test Jamfile
reach2sayan Sep 21, 2026
daa6f09
chore: Migrate 1.4 mcgregor_subgraphs.cpp with range-based for
NNhanptnk Sep 21, 2026
79212c6
fix: remove unused header
NNhanptnk Sep 23, 2026
979ab59
Merge pull request #597 from NNhanptnk/BGL_FORALL_-migration/mcgregor…
Becheler Sep 23, 2026
5bb05c2
Turn test/bidir_vec_remove_edge.cpp into a compile-fail test
reach2sayan Sep 23, 2026
119377f
Merge pull request #598 from reach2sayan/wire-undirected-dfs-visitor-…
Becheler Sep 23, 2026
bf18f75
Replace NULL with nullptr in minimum_degree_ordering_cpp
NNhanptnk Sep 23, 2026
6af13cf
Merge pull request #600 from reach2sayan/compile-fail/bidir_vec_remov…
Becheler Sep 23, 2026
f770311
Merge pull request #601 from NNhanptnk/NULL_to_nullptr-minimum_degree…
Becheler Sep 23, 2026
7f72464
Replace BOOST_FOREACH with range-based for in test/grid_graph_test.cpp
reach2sayan Sep 23, 2026
fdf2acf
Merge pull request #595 from andreacassioli/introduce-auto-using-in-rcsp
Becheler Sep 24, 2026
6c82e19
drop BOOST_STATIC_ASSERT in csr graph
andreacassioli Sep 24, 2026
75d369a
Replace BOOST_FOREACH with range-based for in test/incremental_compon…
reach2sayan Sep 24, 2026
f097016
Merge pull request #603 from reach2sayan/foreach/grid_graph_test
Becheler Sep 24, 2026
201fe13
Merge pull request #604 from reach2sayan/foreach/incremental_componen…
Becheler Sep 25, 2026
0a363f4
Merge pull request #583 from Becheler/refactor/drop-mpi-pbgl-awareness
Becheler Sep 25, 2026
469a9b9
fix: iwyu
Becheler Sep 25, 2026
87a6485
Merge pull request #606 from Becheler/fix/ci-missing-throw-exception-…
Becheler Sep 25, 2026
2879afe
Replace BOOST_FOREACH with
reach2sayan Sep 25, 2026
95d6152
Drone: scan example/ for dependencies
reach2sayan Sep 25, 2026
8bdb2bf
improve error message
andreacassioli Sep 25, 2026
4204da4
remove BOOST_ASSERT
andreacassioli Sep 26, 2026
236c2e8
Merge pull request #609 from reach2sayan/foreach/incremental-componen…
Becheler Sep 26, 2026
192743b
Replace BOOST_FOREACH with range-based for in
reach2sayan Sep 25, 2026
ccc1c7a
Replace BOOST_FOREACH with
reach2sayan Sep 25, 2026
baa1fe0
Merge pull request #607 from reach2sayan/foreach/graph-thingie
Becheler Sep 26, 2026
c4d93b5
Merge pull request #608 from reach2sayan/foreach/incremental_components
Becheler Sep 26, 2026
e52e0a7
Refactor BOOST_STATIC_ASSERT : add clarify message with static_assert…
NNhanptnk Sep 27, 2026
934afbc
Refactor BOOST_STATIC_ASSERT : clear BOOST_STATIC_ASSERT comments in …
NNhanptnk Sep 27, 2026
c92a562
Merge pull request #611 from NNhanptnk/BOOST_STATIC_ASSERT-graph_conc…
Becheler Sep 27, 2026
4eb045a
improve message
andreacassioli Sep 27, 2026
05479fe
merging
andreacassioli Sep 27, 2026
719df12
Merge remote-tracking branch 'origin/develop' into drop-BOOST_STATIC_…
andreacassioli Sep 27, 2026
7db1f1e
also take care of commented out case
andreacassioli Sep 27, 2026
4721162
Merge pull request #602 from andreacassioli/drop-BOOST_STATIC_ASSERT-…
Becheler Sep 28, 2026
79b93a5
fix message as for reviewer suggestion
andreacassioli Sep 28, 2026
7f7f18d
fix missing pascal case in graph concept
andreacassioli Sep 28, 2026
bfe4626
Merge remote-tracking branch 'origin/develop' into fix-missing-pascal…
andreacassioli Sep 28, 2026
e50c95a
Merge pull request #610 from andreacassioli/drop-BOOST_STATIC_ASSERTI…
Becheler Sep 28, 2026
4f0e250
Merge remote-tracking branch 'origin/develop' into fix-missing-pascal…
andreacassioli Sep 29, 2026
47cc781
drop old macro loop
andreacassioli Sep 29, 2026
d8b2edb
Merge pull request #612 from andreacassioli/fix-missing-pascal-case-g…
Becheler Sep 30, 2026
90226ec
Merge pull request #615 from andreacassioli/iterator-range-csr-test
Becheler Sep 30, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 37 additions & 0 deletions .codecov.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
# Copyright 2019 - 2021 Alexander Grund
# Distributed under the Boost Software License, Version 1.0.
# (See accompanying file LICENSE_1_0.txt or copy at http://boost.org/LICENSE_1_0.txt)
#
# Sample codecov configuration file. Edit as required

codecov:
max_report_age: off
require_ci_to_pass: no
notify:
# posix + windows coverage jobs both upload, so wait for both
after_n_builds: 2
wait_for_ci: no

# project = whole-codebase %; report it but never let it gate a merge.
# patch = coverage of the lines this PR changed; that stays the real gate.
coverage:
status:
project:
default:
informational: true
patch:
default:
target: 100%

# Change how pull request comments look
comment:
layout: "condensed_header, condensed_files, condensed_footer"
hide_project_coverage: true

# Ignore specific files or folders. Glob patterns are supported.
# See https://docs.codecov.com/docs/ignoring-paths
ignore:
- example/**
- test/**
# vendored third-party rapidxml parser, not our code to test
- include/boost/graph/detail/rapidxml.hpp
2 changes: 1 addition & 1 deletion .drone/drone.sh
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ git submodule update --init tools/boost_install
git submodule update --init libs/headers
git submodule update --init tools/boostdep
cp -r $TRAVIS_BUILD_DIR/* libs/graph
python tools/boostdep/depinst/depinst.py graph
python tools/boostdep/depinst/depinst.py -I example graph
./bootstrap.sh
./b2 headers

Expand Down
131 changes: 131 additions & 0 deletions .github/scripts/dep_table.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,131 @@
#!/usr/bin/env python3
"""Print a markdown table of Boost dependency changes between two CI log archives.

Usage: dep_table.py BASELINE.zip AFTER.zip

Each archive is a GitHub Actions run-log zip. The `deps` job of the
dependency-report workflow prints two marker-delimited boostdep reports into
its log:

===DEP-BRIEF-START=== boostdep --brief graph ===DEP-BRIEF-END===
===DEP-PRIMARY-START=== boostdep graph (primary) ===DEP-PRIMARY-END===

From those it derives two metrics and prints their delta vs the baseline:
- the set of transitive Boost modules graph depends on (from --brief:
Primary + Secondary sections = the full transitive closure), and
- the header-inclusion weight of each direct dependency (from the primary
report: how many distinct boost/graph files pull that dependency in).
Weights are the live signal, they drop toward zero as coupling is removed;
the module count is the coarse target that only moves when a dep hits zero.
"""
import re
import sys
import zipfile

BRIEF = ("===DEP-BRIEF-START===", "===DEP-BRIEF-END===")
PRIMARY = ("===DEP-PRIMARY-START===", "===DEP-PRIMARY-END===")
# Module names as boostdep prints them, e.g. "numeric~conversion".
MODULE = re.compile(r"[A-Za-z0-9_.~-]+")
TIMESTAMP = re.compile(r"^\d{4}-\d\d-\d\dT[\d:.]+Z\s?") # GitHub log line prefix
ANSI = re.compile(r"\x1b\[[0-9;]*m")


def read_clean_lines(zip_path):
"""Top-level per-job logs, with GitHub timestamp and ANSI prefixes stripped."""
lines = []
with zipfile.ZipFile(zip_path) as z:
for entry in z.namelist():
if "/" in entry or not entry.endswith(".txt"):
continue
for ln in z.read(entry).decode("utf-8", "replace").splitlines():
lines.append(TIMESTAMP.sub("", ANSI.sub("", ln)))
return lines


def block(lines, markers):
"""Lines strictly between the marker lines, matched exactly.

Exact matching is what skips the echoed `echo "<marker>"` command lines
GitHub prepends to a run step, so we capture boostdep's real stdout.
"""
start, end = markers
out, capturing = [], False
for ln in lines:
s = ln.strip()
if s == start:
capturing = True
continue
if s == end and capturing:
break
if capturing:
out.append(ln)
return out


def parse_brief(lines):
"""--brief output -> set of module names (one bare name per line)."""
mods = set()
for ln in lines:
s = ln.strip()
if not s or s.startswith("#") or s.lower().startswith("brief dependency"):
continue
if MODULE.fullmatch(s):
mods.add(s)
return mods


def parse_weights(lines):
"""Primary report -> {dependency: number of distinct graph files that pull it in}."""
weights, cur = {}, None
for ln in lines:
head = re.match(r"^([A-Za-z0-9_.~-]+):\s*$", ln) # "module:" at column 0
if head:
cur = head.group(1)
weights.setdefault(cur, set())
continue
frm = re.match(r"^\s+from\s+(.+?)\s*$", ln)
if frm and cur is not None:
weights[cur].add(frm.group(1))
return {k: len(v) for k, v in weights.items()}


def main(base_zip, pr_zip):
bl, pl = read_clean_lines(base_zip), read_clean_lines(pr_zip)
base_mods = parse_brief(block(bl, BRIEF))
pr_mods = parse_brief(block(pl, BRIEF))
base_w = parse_weights(block(bl, PRIMARY))
pr_w = parse_weights(block(pl, PRIMARY))

# Header-inclusion weights: the live signal. Only rows that changed, most-reduced first.
print("**Header-inclusion weights** (graph files pulling each direct dependency in):")
print()
changed = []
for dep in base_w.keys() | pr_w.keys():
b, p = base_w.get(dep, 0), pr_w.get(dep, 0)
if b != p:
changed.append((p - b, dep, b, p))
if changed:
print("| Dependency | develop | PR | Δ |")
print("|-----|--------:|---:|----:|")
for d, dep, b, p in sorted(changed): # reductions (negative delta) first
print(f"| {dep} | {b} | {p} | {d:+d} |")
else:
print("_No header-inclusion-weight changes._")
print()

# Transitive module set: the coarse target.
added = sorted(pr_mods - base_mods)
removed = sorted(base_mods - pr_mods)
nb, np_ = len(base_mods), len(pr_mods)
diff = np_ - nb
print(f"**Transitive Boost modules:** {nb} → {np_} ({f'{diff:+d}' if diff else '0'})")
if added:
print(f"- added: {', '.join(added)}")
if removed:
print(f"- removed: {', '.join(removed)}")


if __name__ == "__main__":
if len(sys.argv) != 3:
sys.exit("usage: dep_table.py BASELINE.zip AFTER.zip")
main(sys.argv[1], sys.argv[2])
14 changes: 8 additions & 6 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@
run: cp -r $GITHUB_WORKSPACE/* libs/graph
working-directory: ../boost-root
- name: Install deps
run: python tools/boostdep/depinst/depinst.py graph
run: python tools/boostdep/depinst/depinst.py -I example graph
working-directory: ../boost-root
- name: Bootstrap
run: ./bootstrap.sh
Expand All @@ -53,48 +53,50 @@
run: ../../../b2 print_config_info toolset=$TOOLSET cxxstd=${{ matrix.cxxstd }}
working-directory: ../boost-root/libs/config/test
- name: Test
run: ../../../b2 toolset=$TOOLSET cxxstd=${{ matrix.cxxstd }}
run: ../../../b2 toolset=$TOOLSET cxxstd=${{ matrix.cxxstd }} cxxflags="-Wall -Wextra"
working-directory: ../boost-root/libs/graph/test
macos:
runs-on: macos-latest
runs-on: macos-15
strategy:
fail-fast: false
matrix:
toolset: [ clang ]
cxxstd: [ 14, 17, 20 ]
steps:
- uses: actions/checkout@master
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];[linux];[Linux];[LINUX]'
commit-filter-separator: ';'
fail-fast: true
- name: Print pinned AppleClang version
run: clang++ --version
- 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
working-directory: ../boost-root
- name: Install deps
run: python tools/boostdep/depinst/depinst.py graph
run: python tools/boostdep/depinst/depinst.py -I example graph
working-directory: ../boost-root
- name: Bootstrap
run: ./bootstrap.sh
working-directory: ../boost-root
- name: Generate headers
run: ./b2 headers
working-directory: ../boost-root
- name: Config info
run: ../../../b2 print_config_info toolset=${{ matrix.toolset }} cxxstd=${{ matrix.cxxstd }}
working-directory: ../boost-root/libs/config/test
- name: Test
run: ../../../b2 toolset=${{ matrix.toolset }} cxxstd=${{ matrix.cxxstd }} define=CI_SUPPRESS_KNOWN_ISSUES
run: ../../../b2 toolset=${{ matrix.toolset }} cxxstd=${{ matrix.cxxstd }} define=CI_SUPPRESS_KNOWN_ISSUES cxxflags="-Wall -Wextra"
working-directory: ../boost-root/libs/graph/test
windows_msvc_14_3:

Check warning

Code scanning / CodeQL

Workflow does not contain permissions Medium

Actions job or workflow does not limit the permissions of the GITHUB_TOKEN. Consider setting an explicit permissions block, using the following as a minimal starting point: {contents: read}
runs-on: windows-2022
defaults:
run:
Expand All @@ -121,7 +123,7 @@
run: xcopy /s /e /q %GITHUB_WORKSPACE% libs\graph
working-directory: ../boost-root
- name: Install deps
run: python tools/boostdep/depinst/depinst.py graph
run: python tools/boostdep/depinst/depinst.py -I example graph
working-directory: ../boost-root
- name: Bootstrap
run: bootstrap
Expand Down
Loading
Loading