Skip to content

#2528: CMake to disable fmt for each library when necessary - #2529

Merged
lifflander merged 4 commits into
developfrom
2528-cmake-disable-fmt-avoid-duplicate
Oct 19, 2026
Merged

lifflander merged 4 commits into
developfrom
2528-cmake-disable-fmt-avoid-duplicate

Conversation

@antoinemeyer5

@antoinemeyer5 antoinemeyer5 commented Sep 29, 2026 •

Copy link
Copy Markdown
Contributor

Fixes #2528

CMake to disable fmt for each library when necessary to avoid duplicate symbols.

VT standalone: configure, compile, and install pass.

Embedded hierarchy: exactly one compiled fmt, comm, loc, and LB reuse it.

All four setup_fmt.cmake copies are identical.

PR for LB: DARMA-tasking/LB#63 (MERGED)

PR for comm: DARMA-tasking/comm#13

PR for loc: DARMA-tasking/loc#14

The correct rule is:

  • If fmt::fmt does not exist, build the local vendored fmt.
  • If it exists, reuse it after verifying the fmt version.

@antoinemeyer5 antoinemeyer5 self-assigned this Sep 29, 2026
@github-actions

Copy link
Copy Markdown

clang-format output for this changeset:

no modified files to format

@codacy-production

Copy link
Copy Markdown

Up to standards ✅

🟢 Issues 0 issues

Results:
0 new issues

View in Codacy

NEW Get contextual insights on your PRs based on Codacy's metrics, along with PR and Jira context, without leaving GitHub. Enable AI reviewer
TIP This summary will be updated as you push new changes.

@github-actions

github-actions Bot commented Sep 29, 2026 •

Copy link
Copy Markdown

Pipelines results

vt-build-amd64-ubuntu-24-04-gcc-14-cpp

Build for db4cc42 (2026-10-14 08:39:14 UTC)

Compilation – successful

Testing – passed

View job log


vt-build-amd64-ubuntu-20-04-clang-9-cpp

Build for db4cc42 (2026-10-14 08:39:14 UTC)

Compilation – successful

Testing – passed

View job log


vt-build-amd64-alpine-3-16-clang-cpp

Build for db4cc42 (2026-10-14 08:39:14 UTC)

Compilation – successful

Testing – passed

View job log


vt-build-amd64-ubuntu-20-04-gcc-9-ldms-cpp

Build for db4cc42 (2026-10-14 08:39:14 UTC)

Compilation – successful

Testing – passed

View job log


vt-build-amd64-ubuntu-20-04-gcc-9-cpp

Build for db4cc42 (2026-10-14 08:39:14 UTC)

Compilation – successful

Testing – passed

View job log


vt-build-amd64-ubuntu-22-04-clang-11-cpp

Build for db4cc42 (2026-10-14 08:39:14 UTC)

Compilation – successful

Testing – passed

View job log


vt-build-amd64-ubuntu-24-04-clang-18-cpp

Build for db4cc42 (2026-10-14 08:39:14 UTC)

Compilation – successful

Testing – passed

View job log


vt-build-amd64-ubuntu-22-04-clang-12-cpp

Build for db4cc42 (2026-10-14 08:39:14 UTC)

Compilation – successful

Testing – passed

View job log


vt-build-amd64-ubuntu-24-04-clang-16-zoltan-cpp

Build for db4cc42 (2026-10-14 08:39:14 UTC)

Compilation – successful

Testing – passed

View job log


vt-build-amd64-ubuntu-22-04-clang-13-cpp

Build for db4cc42 (2026-10-14 08:39:14 UTC)

Compilation – successful

Testing – passed

View job log


vt-build-amd64-ubuntu-22-04-clang-14-cpp

Build for db4cc42 (2026-10-14 08:39:14 UTC)

Compilation – successful

Testing – passed

View job log


vt-build-amd64-ubuntu-24-04-clang-16-vtk-cpp

Build for db4cc42 (2026-10-14 08:39:14 UTC)

Compilation – successful

Testing – passed

View job log


vt-build-amd64-ubuntu-22-04-gcc-12-vtk-cpp

Build for db4cc42 (2026-10-14 08:39:14 UTC)

Compilation – successful

Testing – passed

View job log


vt-build-amd64-ubuntu-20-04-gcc-10-openmpi-cpp

Build for db4cc42 (2026-10-14 08:39:14 UTC)

Compilation – successful

Testing – passed

View job log


vt-build-amd64-ubuntu-24-04-clang-17-cpp

Build for db4cc42 (2026-10-14 08:39:14 UTC)

Compilation – successful

Testing – passed

View job log


vt-build-amd64-ubuntu-22-04-clang-15-cpp-cxx20

Build for db4cc42 (2026-10-14 08:39:14 UTC)

Compilation – successful

Testing – passed

View job log


vt-build-amd64-ubuntu-24-04-gcc-13-cpp

Build for db4cc42 (2026-10-14 08:39:14 UTC)

Compilation – successful

Testing – passed

View job log


vt-build-amd64-ubuntu-24-04-icpx-cpp

Build for db4cc42 (2026-10-14 08:39:14 UTC)

Compilation – successful

Testing – passed

View job log


vt-build-amd64-ubuntu-20-04-gcc-9-cuda-11-4-3-cpp

Build for db4cc42 (2026-10-14 08:39:14 UTC)

/vt/src/vt/pipe/pipe_manager.impl.h(135): warning: missing return statement at end of non-void function "vt::pipe::PipeManager::makeSend<f,Target>(Target) [with f=&vt::vrt::collection::lb::GreedyLB::collectHandler, Target=vt::objgroup::proxy::ProxyElm<vt::vrt::collection::lb::GreedyLB>]"
          detected during:
            instantiation of "auto vt::pipe::PipeManager::makeSend<f,Target>(Target) [with f=&vt::vrt::collection::lb::GreedyLB::collectHandler, Target=vt::objgroup::proxy::ProxyElm<vt::vrt::collection::lb::GreedyLB>]" 
/vt/src/vt/objgroup/proxy/proxy_objgroup.impl.h(221): here
            instantiation of "vt::objgroup::proxy::Proxy<ObjT>::PendingSendType vt::objgroup::proxy::Proxy<ObjT>::reduce<f,Op,Target,Args...>(Target, Args &&...) const [with ObjT=vt::vrt::collection::lb::GreedyLB, f=&vt::vrt::collection::lb::GreedyLB::collectHandler, Op=vt::collective::PlusOp, Target=vt::objgroup::proxy::ProxyElm<vt::vrt::collection::lb::GreedyLB>, Args=<vt::vrt::collection::lb::GreedyPayload>]" 
/vt/src/vt/vrt/collection/balance/greedylb/greedylb.cc(222): here

/vt/src/vt/pipe/pipe_manager.impl.h(135): warning: missing return statement at end of non-void function "vt::pipe::PipeManager::makeSend<f,Target>(Target) [with f=&vt::vrt::collection::lb::TemperedLB::remoteBlockCountHandler, Target=vt::objgroup::proxy::ProxyElm<vt::vrt::collection::lb::TemperedLB>]"
          detected during:
            instantiation of "auto vt::pipe::PipeManager::makeSend<f,Target>(Target) [with f=&vt::vrt::collection::lb::TemperedLB::remoteBlockCountHandler, Target=vt::objgroup::proxy::ProxyElm<vt::vrt::collection::lb::TemperedLB>]" 
/vt/src/vt/objgroup/proxy/proxy_objgroup.impl.h(221): here
            instantiation of "vt::objgroup::proxy::Proxy<ObjT>::PendingSendType vt::objgroup::proxy::Proxy<ObjT>::reduce<f,Op,Target,Args...>(Target, Args &&...) const [with ObjT=vt::vrt::collection::lb::TemperedLB, f=&vt::vrt::collection::lb::TemperedLB::remoteBlockCountHandler, Op=vt::collective::

 ==> And there is more. Read log. <==

View job log


vt-build-amd64-ubuntu-20-04-gcc-9-cuda-12-2-0-cpp

Build for db4cc42 (2026-10-14 08:39:14 UTC)

/vt/lib/fmt/include/fmt-vt/base.h(458): warning #128-D: loop is not reachable
    for (; n != 0; ++s1, ++s2, --n) {
    ^
          detected during:
            instantiation of "auto fmt::v12::detail::compare(const Char *, const Char *, size_t)->int [with Char=char]" at line 573
            instantiation of "auto fmt::v12::basic_string_view<Char>::compare(fmt::v12::basic_string_view<Char>) const->int [with Char=char]" at line 580
            instantiation of class "fmt::v12::basic_string_view<Char> [with Char=char]" at line 2624
            instantiation of "auto fmt::v12::basic_format_args<Context>::get_id(fmt::v12::basic_string_view<Char>) const->int [with Context=fmt::v12::context, Char=char]" at line 2661

Remark: The warnings can be suppressed with "-diag-suppress <warning-number>"

/vt/lib/fmt/include/fmt-vt/format.h(2775): warning #2417-D: constexpr constructor calls non-constexpr function "fmt::v12::basic_memory_buffer<T, SIZE, Allocator>::basic_memory_buffer(const Allocator &) [with T=fmt::v12::detail::bigint::bigit, SIZE=32UL, Allocator=fmt::v12::detail::allocator<fmt::v12::detail::bigint::bigit>]"
    constexpr bigint() : exp_(0) {}
                                 ^

/vt/lib/fmt/include/fmt-vt/base.h(458): warning #128-D: loop is not reachable
    for (; n != 0; ++s1, ++s2, --n) {
    ^
          detected during:
            instantiation of "auto fmt::v12::detail::compare(const Char *, const Char *, size_t)->int [with Char=char]" at line 573
            instantiation of "auto fmt::v12::basic_string_view<Char>::compare(fmt::v12::basic_string_view<Char>) const->int [with Char=char]" at line 580
            instantiation of class "fmt::v12::basic_string_view<Char> [with Char=char]" at line 2624
            instantiation of "auto fmt::v12::basic_format_args<Context>::get_id(fmt::v12::basic_string_view<Char>) const->int [with Context=fmt::v12::context, Char=char]" at line 2661

Remark: The warnings can be suppressed with "-diag-suppress <warning-number>"

/

 ==> And there is more. Read log. <==

View job log


vt-build-amd64-ubuntu-22-04-gcc-12-cpp

Build for db4cc42 (2026-10-14 08:39:14 UTC)

Compilation – successful

Testing – passed

View job log


vt-build-amd64-ubuntu-20-04-gcc-10-cpp

Build for db4cc42 (2026-10-14 08:39:14 UTC)

Compilation – successful

Testing – passed

View job log


vt-build-amd64-ubuntu-22-04-gcc-11-cpp

Build for db4cc42 (2026-10-14 08:39:14 UTC)

Compilation – successful

Testing – passed

View job log


vt-build-amd64-ubuntu-20-04-clang-10-cpp

Build for db4cc42 (2026-10-14 08:39:14 UTC)

Compilation – successful

Testing – passed

View job log


vt-build-amd64-ubuntu-24-04-gcc-14-cpp-docs

Build for db4cc42 (2026-10-14 08:39:14 UTC)

Compilation – successful

Testing – passed

View job log


vt-build-amd64-ubuntu-20-04-gcc-10-openmpi-cpp-spack

Build for db4cc42 (2026-10-14 08:39:14 UTC)

Compilation – successful

Testing – passed

View job log


@codecov

codecov Bot commented Sep 30, 2026 •

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 88.51%. Comparing base (e39766e) to head (4ee7f6f).

Additional details and impacted files

Impacted file tree graph

@@             Coverage Diff             @@
##           develop    #2529      +/-   ##
===========================================
- Coverage    88.51%   88.51%   -0.01%     
===========================================
  Files          728      728              
  Lines        31028    31028              
===========================================
- Hits         27464    27463       -1     
- Misses        3564     3565       +1     

see 1 file with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@antoinemeyer5

antoinemeyer5 commented Oct 5, 2026 •

Copy link
Copy Markdown
Contributor Author

vt-build-amd64-ubuntu-20-04-gcc-10-openmpi-cpp-spack be fix with #2532 and #2535

@antoinemeyer5
antoinemeyer5 force-pushed the 2528-cmake-disable-fmt-avoid-duplicate branch from e6eb873 to 32a22cb Compare October 7, 2026 08:30
@antoinemeyer5
antoinemeyer5 marked this pull request as ready for review October 7, 2026 09:08
@antoinemeyer5
antoinemeyer5 marked this pull request as draft October 14, 2026 07:46
@antoinemeyer5
antoinemeyer5 force-pushed the 2528-cmake-disable-fmt-avoid-duplicate branch from 32a22cb to 4ee7f6f Compare October 14, 2026 08:39
@antoinemeyer5
antoinemeyer5 marked this pull request as ready for review October 14, 2026 09:15

@lifflander lifflander left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@lifflander
lifflander merged commit d799645 into develop Oct 19, 2026
39 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

CMake to disable fmt for each library when necessary to avoid duplicate symbols

2 participants