#35454 cmake: skip missing example targets in libmultiprocess.cmake

ReviewabilityReviewsAgreementSize
#35454 ryanofsky cmake: skip missing example targets in libmultiprocess.cmakeAuthor silent 149d0Strong5
  • Avoid CMake configure errors when building against external libmultiprocess versions
  • Keeps Bitcoin Core CI jobs running properly in the upstream libmultiprocess repository
  • Author has been inactive on the PR for over three months, so review feedback may wait on responses
  • Concept support for taking a defensive approach when integrating external subprojects (hebasto)
  • Resolved concern about parent projects processing unused subproject CMake code (hebasto)
  • 5 lines added or modified outside tests
  • 0 lines added or modified in tests
  • 1 lines removed in total
  • 1 files, 1 commits
Build and CI#42 of 56
P3 · bug fix
  • P3 because it fixes configure failures only when using updated external libmultiprocess versions
  • Prevents broken builds for developers using custom or upcoming upstream subproject changes
  • Ranking pass: Moved down from 28: only affects builds against an external libmultiprocess, not default in-tree builds
Reviewability: ReadyStalePaused
Agreement: StrongPositivePositive w/ caveatsNeutralMildDisputedBlockedCrickets
Reviews: current code-review ACKs, then (+stale ACKs) and -NACKs; greener = more ACKs.
Size: lines added or modified outside tests, then in tests; greener = smaller.

Goal

Check whether the example targets mpcalculator, mpprinter, and mpexample exist before setting their EXPORT_COMPILE_COMMANDS property in cmake/libmultiprocess.cmake. This allows CMake configuration to succeed when building against versions of libmultiprocess that do not define those targets.

Problem: Upstream libmultiprocess PR #287 removes example targets. Building Bitcoin Core against an updated external libmultiprocess fails at CMake configure time with an error that it cannot find the target mpcalculator to add properties to, which also breaks Bitcoin Core CI jobs running within the libmultiprocess repository.

Evidence of importance:

  • Commit b29f764890 / PR description: Upstream bitcoin-core/libmultiprocess#287 removes example targets, causing 'CMake Error at cmake/libmultiprocess.cmake:37 ... Can not find target to add properties to: mpcalculator'.
  • Commit b29f764890 / PR description: The check is needed for custom builds with external libmultiprocess and to keep Bitcoin Core CI jobs working in the libmultiprocess repository.

Reviewability

Stale · Author silent 149d

No author activity for 149 days; a review may wait a long time for a response.

Agreement

Strong

substantive support, no open objection (hebasto)

Thread notes: Recorded hebasto's Concept ACK and non-blocking approach claim suggesting subprojects handle unused example targets upstream, which was resolved in discussion.

Objections, suggestions, and questions:

ReviewerTypeHarm, request, or questionStatusMust beAuthor repliedQuote
hebasto (member)objection, approachsubprojects force parent projects to process CMake code they will never useaccepted · v1, not yet re-checkedansweredyes2026-06-04: 'such issues should be handled by the subprojects themselves, as they shouldn't force parent projects to process CMake code they will never use'
Status from: 2026-06-05: hebasto: 'Sure. As long as it does not "force parent projects to process CMake code they will never use."'

Support:

  • hebasto (member) (Concept ACK, 2026-06-04): on being defensive when integrating a subproject, regardless of https://github.com/bitcoin-core/libmultiprocess/pull/287

Participants:

  • hebasto (member, support, 3 statements 2026-06-04 to 2026-06-05): Concept ACK on defensive integration; suggested handling unused CMake code in subprojects

Files

0 lines under test/bench/ci.

  • cmake/libmultiprocess.cmake +5/-1

Card

The short text the ranking pass compares across PRs.

This pull request checks whether libmultiprocess example targets exist before setting their compile commands properties in CMake. Upstream changes in bitcoin-core/libmultiprocess#287 remove those example targets, causing CMake configuration errors when Bitcoin Core is built against an external libmultiprocess or tested in libmultiprocess CI. The change only affects custom or CI builds against an external libmultiprocess and does not alter default in-tree subtree builds.

Data

dossier JSON · extract JSON · model ledger, generated 2026-09-18T03:33, confidence high, input hash 810e36eb878dea8b
thread read through 2026-06-05 (5 statements), head b29f764890
Discussion read under schema 1 rules: suggestions and questions may be missing, and an objection may combine several harms (schema history).
labels: Build system · draft

Categories

Build and CI

P3 · bug fix (ranking pass: Moved down from 28: only affects builds against an external libmultiprocess, not default in-tree builds)

Prevents CMake configure failures by checking for example targets before setting properties when building against newer or external libmultiprocess versions. Upstream libmultiprocess PR #287 removes example targets, which causes configure errors and breaks Core CI jobs running in the libmultiprocess repo.

Membership: Touches cmake/libmultiprocess.cmake and bears the Build system label.

Factors: security/stability 0, bug 1, performance 0, user value 0, leverage 1