#35454 cmake: skip missing example targets in libmultiprocess.cmake
| Reviewability | Reviews | Agreement | Size | ||||
|---|---|---|---|---|---|---|---|
| #35454 cmake: skip missing example targets in libmultiprocess.cmake | Author silent 149d | 0 | Strong | 5 | |||
|
|
|
|
| |||
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:
| Reviewer | Type | Harm, request, or question | Status | Must be | Author replied | Quote |
|---|---|---|---|---|---|---|
| hebasto (member) | objection, approach | subprojects force parent projects to process CMake code they will never use | accepted · v1, not yet re-checked | answered | yes | 2026-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
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