Conversation
doc: imitate unordered bundle to recover tocs
Split CMake identities: superproject and developer
fix: pin macos version
infra: add a boostdeps counting bot
doc: opt out of aggregated boostlook to solve toc issues
…the vertex overload
…ts_test Replace BOOST_FOREACH with range-based for in test/incremental_components_test.cpp
refactor: move distributed awareness to PGBL
|
You are seeing this message because GitHub Code Scanning has recently been set up for this repository, or this pull request contains the workflow file for the Code Scanning tool. What Enabling Code Scanning Means:
For more information about GitHub Code Scanning, check out the documentation. |
| defaults: | ||
| run: | ||
| shell: bash | ||
|
|
||
| strategy: | ||
| fail-fast: false | ||
| matrix: | ||
| include: | ||
| - { name: Collect coverage, coverage: yes, | ||
| compiler: gcc-14, cxxstd: '23', os: ubuntu-24.04, install: 'g++-14', address-model: '64' } | ||
|
|
||
| timeout-minutes: 120 | ||
| runs-on: ${{matrix.os}} | ||
| container: ${{matrix.container}} | ||
| env: {B2_USE_CCACHE: 1} | ||
|
|
||
| steps: | ||
| - name: Setup environment | ||
| run: | | ||
| if [ -f "/etc/debian_version" ]; then | ||
| echo "DEBIAN_FRONTEND=noninteractive" >> $GITHUB_ENV | ||
| export DEBIAN_FRONTEND=noninteractive | ||
| fi | ||
| if [ -n "${{matrix.container}}" ] && [ -f "/etc/debian_version" ]; then | ||
| apt-get -o Acquire::Retries=$NET_RETRY_COUNT update | ||
| apt-get -o Acquire::Retries=$NET_RETRY_COUNT install -y sudo software-properties-common curl | ||
| # Need (newer) git, and the older Ubuntu container may require requesting the key manually using port 80 | ||
| curl -sSL --retry ${NET_RETRY_COUNT:-5} 'http://keyserver.ubuntu.com/pks/lookup?op=get&search=0xE1DD270288B4E6030699E45FA1715D88E1DF1F24' | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/git-core_ubuntu_ppa.gpg | ||
| for i in {1..${NET_RETRY_COUNT:-3}}; do sudo -E add-apt-repository -y ppa:git-core/ppa && break || sleep 10; done | ||
| apt-get -o Acquire::Retries=$NET_RETRY_COUNT update | ||
| osver=$(lsb_release -sr | cut -f1 -d.) | ||
| pkgs="g++ git" | ||
| # Ubuntu 22+ has only Python 3 in the repos | ||
| if [ -n "$osver" ] && [ "$osver" -ge "22" ]; then | ||
| pkgs+=" python-is-python3 libpython3-dev" | ||
| else | ||
| pkgs+=" python libpython-dev" | ||
| fi | ||
| apt-get -o Acquire::Retries=$NET_RETRY_COUNT install -y $pkgs | ||
| fi | ||
| # For jobs not compatible with ccache, use "ccache: no" in the matrix | ||
| if [[ "${{ matrix.ccache }}" == "no" ]]; then | ||
| echo "B2_USE_CCACHE=0" >> $GITHUB_ENV | ||
| fi | ||
| git config --global pack.threads 0 | ||
|
|
||
| - uses: actions/checkout@v4 | ||
| with: | ||
| # For coverage builds fetch the whole history, else only 1 commit using a 'fake ternary' | ||
| fetch-depth: ${{ matrix.coverage && '0' || '1' }} | ||
|
|
||
| - name: Cache ccache | ||
| uses: actions/cache@v4 | ||
| if: env.B2_USE_CCACHE | ||
| with: | ||
| path: ~/.ccache | ||
| key: ${{matrix.os}}-${{matrix.container}}-${{matrix.compiler}}-${{github.sha}} | ||
| restore-keys: ${{matrix.os}}-${{matrix.container}}-${{matrix.compiler}}- | ||
|
|
||
| - name: Fetch Boost.CI | ||
| uses: actions/checkout@v4 | ||
| with: | ||
| repository: boostorg/boost-ci | ||
| ref: master | ||
| path: boost-ci-cloned | ||
|
|
||
| - name: Get CI scripts folder | ||
| run: | | ||
| # Copy ci folder if not testing Boost.CI | ||
| [[ "$GITHUB_REPOSITORY" =~ "boost-ci" ]] || cp -r boost-ci-cloned/ci . | ||
| rm -rf boost-ci-cloned | ||
|
|
||
| - name: Install packages | ||
| if: startsWith(matrix.os, 'ubuntu') | ||
| run: | | ||
| SOURCE_KEYS=(${{join(matrix.source_keys, ' ')}}) | ||
| SOURCES=(${{join(matrix.sources, ' ')}}) | ||
| # Add this by default | ||
| SOURCES+=(ppa:ubuntu-toolchain-r/test) | ||
| for key in "${SOURCE_KEYS[@]}"; do | ||
| for i in {1..$NET_RETRY_COUNT}; do | ||
| keyfilename=$(basename -s .key $key) | ||
| curl -sSL --retry ${NET_RETRY_COUNT:-5} "$key" | sudo gpg --dearmor > /etc/apt/trusted.gpg.d/${keyfilename} && break || sleep 10 | ||
| done | ||
| done | ||
| for source in "${SOURCES[@]}"; do | ||
| for i in {1..$NET_RETRY_COUNT}; do | ||
| sudo add-apt-repository $source && break || sleep 10 | ||
| done | ||
| done | ||
| sudo apt-get -o Acquire::Retries=$NET_RETRY_COUNT update | ||
| if [[ -z "${{matrix.install}}" ]]; then | ||
| pkgs="${{matrix.compiler}}" | ||
| pkgs="${pkgs/gcc-/g++-}" | ||
| else | ||
| pkgs="${{matrix.install}}" | ||
| fi | ||
| sudo apt-get -o Acquire::Retries=$NET_RETRY_COUNT install -y $pkgs | ||
|
|
||
| - name: Setup GCC Toolchain | ||
| if: matrix.gcc_toolchain | ||
| run: | | ||
| GCC_TOOLCHAIN_ROOT="$HOME/gcc-toolchain" | ||
| echo "GCC_TOOLCHAIN_ROOT=$GCC_TOOLCHAIN_ROOT" >> $GITHUB_ENV | ||
| if ! command -v dpkg-architecture; then | ||
| apt-get install -y dpkg-dev | ||
| fi | ||
| MULTIARCH_TRIPLET="$(dpkg-architecture -qDEB_HOST_MULTIARCH)" | ||
| mkdir -p "$GCC_TOOLCHAIN_ROOT" | ||
| ln -s /usr/include "$GCC_TOOLCHAIN_ROOT/include" | ||
| ln -s /usr/bin "$GCC_TOOLCHAIN_ROOT/bin" | ||
| mkdir -p "$GCC_TOOLCHAIN_ROOT/lib/gcc/$MULTIARCH_TRIPLET" | ||
| ln -s "/usr/lib/gcc/$MULTIARCH_TRIPLET/${{matrix.gcc_toolchain}}" "$GCC_TOOLCHAIN_ROOT/lib/gcc/$MULTIARCH_TRIPLET/${{matrix.gcc_toolchain}}" | ||
|
|
||
| - name: Setup multiarch | ||
| if: matrix.multiarch | ||
| run: | | ||
| sudo apt-get install --no-install-recommends -y binfmt-support qemu-user-static | ||
| sudo docker run --rm --privileged multiarch/qemu-user-static --reset -p yes | ||
| git clone https://github.com/jeking3/bdde.git | ||
| echo "$(pwd)/bdde/bin/linux" >> ${GITHUB_PATH} | ||
| echo "BDDE_DISTRO=${{ matrix.distro }}" >> ${GITHUB_ENV} | ||
| echo "BDDE_EDITION=${{ matrix.edition }}" >> ${GITHUB_ENV} | ||
| echo "BDDE_ARCH=${{ matrix.arch }}" >> ${GITHUB_ENV} | ||
| echo "B2_WRAPPER=bdde" >> ${GITHUB_ENV} | ||
|
|
||
| - name: Setup Boost | ||
| env: | ||
| B2_ADDRESS_MODEL: ${{matrix.address-model}} | ||
| B2_COMPILER: ${{matrix.compiler}} | ||
| B2_CXXSTD: ${{matrix.cxxstd}} | ||
| B2_SANITIZE: ${{matrix.sanitize}} | ||
| B2_STDLIB: ${{matrix.stdlib}} | ||
| # More entries can be added in the same way, see the B2_ARGS assignment in ci/enforce.sh for the possible keys. | ||
| B2_DEFINES: ${{matrix.defines}} | ||
| # Variables set here (to non-empty) will override the top-level environment variables, e.g. | ||
| B2_VARIANT: ${{matrix.variant}} | ||
| # Set the (B2) target(s) to build, defaults to the test folder of the current library | ||
| # Can alternatively be done like this in the build step or in the build command of the build step, e.g. `run: B2_TARGETS=libs/$SELF/doc ci/build.sh` | ||
| # B2_TARGETS: libs/foo/test//bar | ||
| run: source ci/github/install.sh | ||
|
|
||
| - name: Setup coverage collection | ||
| if: matrix.coverage | ||
| run: ci/github/codecov.sh "setup" | ||
|
|
||
| - name: Run tests | ||
| if: '!matrix.coverity' | ||
| run: ci/build.sh | ||
|
|
||
| - name: Upload coverage | ||
| if: matrix.coverage | ||
| run: ci/codecov.sh "upload" | ||
| env: | ||
| BOOST_CI_CODECOV_IO_UPLOAD: skip | ||
|
|
||
| - name: Upload coverage | ||
| if: matrix.coverage | ||
| uses: codecov/codecov-action@v4 | ||
| with: | ||
| disable_search: true | ||
| file: coverage.info | ||
| name: Github Actions | ||
| token: ${{secrets.CODECOV_TOKEN}} | ||
| verbose: true | ||
|
|
||
| windows: |
| defaults: | ||
| run: | ||
| shell: cmd | ||
| strategy: | ||
| fail-fast: false | ||
| matrix: | ||
| include: | ||
| - { name: Collect MSVC coverage, coverage: yes, | ||
| toolset: msvc-14.3, cxxstd: 'latest', addrmd: '64', os: windows-2022 } | ||
|
|
||
| runs-on: ${{matrix.os}} | ||
|
|
||
| steps: | ||
| - uses: actions/checkout@v4 | ||
|
|
||
| - name: Fetch Boost.CI | ||
| uses: actions/checkout@v4 | ||
| with: | ||
| repository: boostorg/boost-ci | ||
| ref: master | ||
| path: boost-ci-cloned | ||
| - name: Get CI scripts folder | ||
| run: | | ||
| REM Copy ci folder if not testing Boost.CI | ||
| if "%GITHUB_REPOSITORY%" == "%GITHUB_REPOSITORY:boost-ci=%" xcopy /s /e /q /i /y boost-ci-cloned\ci .\ci | ||
| rmdir /s /q boost-ci-cloned | ||
| - name: Setup Boost | ||
| run: ci\github\install.bat | ||
|
|
||
| - name: Run tests | ||
| if: '!matrix.coverage' | ||
| run: ci\build.bat | ||
| env: | ||
| B2_TOOLSET: ${{matrix.toolset}} | ||
| B2_CXXSTD: ${{matrix.cxxstd}} | ||
| B2_ADDRESS_MODEL: ${{matrix.addrmd}} | ||
| B2_DEFINES: ${{matrix.defines}} | ||
| B2_VARIANT: ${{matrix.variant}} | ||
| B2_LINK: ${{matrix.link}} | ||
|
|
||
| - name: Collect coverage | ||
| shell: powershell | ||
| if: matrix.coverage | ||
| run: ci\opencppcoverage.ps1 | ||
| env: | ||
| B2_TOOLSET: ${{matrix.toolset}} | ||
| B2_CXXSTD: ${{matrix.cxxstd}} | ||
| B2_ADDRESS_MODEL: ${{matrix.addrmd}} | ||
| B2_DEFINES: ${{matrix.defines}} | ||
| B2_VARIANT: ${{matrix.variant}} | ||
| B2_LINK: ${{matrix.link}} | ||
|
|
||
| - name: Upload | ||
| uses: codecov/codecov-action@v5 | ||
| with: | ||
| disable_search: true | ||
| files: __out/cobertura.xml | ||
| name: ${{env.CODECOV_NAME}} (Windows) | ||
| token: ${{secrets.CODECOV_TOKEN}} | ||
| verbose: true No newline at end of file |
| runs-on: ubuntu-24.04 | ||
| steps: | ||
| - uses: actions/checkout@v4 | ||
| - name: Set up Boost tree and build boostdep | ||
| run: | | ||
| git clone -b develop --depth 1 https://github.com/boostorg/boost.git ../boost-root | ||
| cd ../boost-root | ||
| cp -r $GITHUB_WORKSPACE/* libs/graph | ||
| git submodule update --init tools/boostdep | ||
| # depinst pulls graph's deps; also ensure boostdep's own dep | ||
| # (Boost.Filesystem) is present since boostdep links against it. | ||
| python tools/boostdep/depinst/depinst.py --git_args "--jobs 3" graph | ||
| python tools/boostdep/depinst/depinst.py --git_args "--jobs 3" filesystem | ||
| ./bootstrap.sh | ||
| ./b2 headers | ||
| # boostdep #includes <boost/filesystem.hpp> and links the compiled | ||
| # library, so build it with b2 (a bare c++ compile can't resolve that). | ||
| ./b2 tools/boostdep/build | ||
| - name: Boostdep dependency report | ||
| working-directory: ../boost-root | ||
| run: | | ||
| BOOSTDEP=$(find "$PWD" -type f -name boostdep -perm -u+x 2>/dev/null | grep -v '/src/' | head -1) | ||
| if [ -z "$BOOSTDEP" ]; then echo "boostdep executable not found after build" >&2; exit 1; fi | ||
| echo "using boostdep: $BOOSTDEP" | ||
| echo "===DEP-BRIEF-START===" | ||
| "$BOOSTDEP" --boost-root . --track-sources --no-track-tests --brief graph | ||
| echo "===DEP-BRIEF-END===" | ||
| echo "===DEP-PRIMARY-START===" | ||
| "$BOOSTDEP" --boost-root . --track-sources --no-track-tests graph | ||
| echo "===DEP-PRIMARY-END===" |
|
An automated preview of the documentation is available at https://605.graph.prtest3.cppalliance.org/libs/graph/doc/html/index.html If more commits are pushed to the pull request, the docs will rebuild at the same URL. 2026-09-27 07:44:41 UTC |
|
Boost dependency footprint vs Header-inclusion weights (graph files pulling each direct dependency in): No header-inclusion-weight changes. Transitive Boost modules: 47 → 47 (0) |
|
Compiler-warning counts vs
|
…and-example-deps
range-based for in example/incremental-components-eg.cpp
…ts-eg Replace BOOST_FOREACH with range-based for in example/incremental-components-eg.cpp
example/graph-thingie.cpp
range-based for in example/incremental_components.cpp
… in graph_concept.hpp
…graph_concept.hpp
…from-csr drop BOOST_STATIC_ASSERT in csr graph
Master branch closes for breaking changes in less than a month (October 21). This PR aims at testing a bit in advance.
Note: not sure I understand why commits from @jeremy-murphy in 2024/2025 show up in that PR ?