#33828 Check required interfaces before generating manpages
https://github.com/bitcoin/bitcoin/pull/33828 · · +56/-0 in 2 files, 1 commits · labels: none
Goal
- Prevents maintainers from accidentally generating incomplete manpages when build options are missing
- Ensures release documentation does not silently drop wallet or ZMQ command-line options
Updates `contrib/devtools/gen-manpages.py` to inspect `bitcoin-build-config.h` before generating manpages, failing with an explanatory message if `HAVE_SYSTEM`, `ENABLE_WALLET`, or `WITH_ZMQ` are missing. Adds `#cmakedefine WITH_ZMQ 1` to `cmake/bitcoin-build-config.h.in` to allow the script to verify ZMQ support from the header.
Problem: Running `gen-manpages.py` against a build configuration missing wallet or ZMQ options silently omits those CLI options from generated manpages, risking partial documentation being committed.
Category: Build and CI (#46 of 55)
P4 · bug fix
- P4 because it only exposes an internal define for script inspection
- It has no effect on runtime binary behavior, dependencies, or platform support
Touches the CMake build config header purely to provide an introspection mechanism for a devtool, with no direct impact on runtime binary output or platform support.
Membership: Modifies `cmake/bitcoin-build-config.h.in` to expose the `WITH_ZMQ` define.
Factors: security/stability 0, bug 1, performance 0, user value 0, leverage 0
Category: Tools and scripts (#17 of 22)
P4 · bug fix
- P4 because it only protects an infrequent release-preparation workflow
- Prevents accidental omission of CLI documentation during manual manpage generation
Prevents accidental generation of incomplete manpages by maintainers during release prep; affects an infrequent developer workflow.
Membership: Changes developer maintenance script `contrib/devtools/gen-manpages.py`.
Factors: security/stability 0, bug 1, performance 0, user value 1, leverage 0
Reviewability: Stale: Author silent
- Author has been silent for months awaiting build maintainer input on CMake conventions
The author has been inactive for 109 days after asking for build maintainer feedback regarding CMake header define conventions.
Author status: silent since 2026-05-30
Open concerns:
- maflcko questioned whether adding compile definitions like `WITH_ZMQ` to `bitcoin-build-config.h.in` adheres to CMake best practices.
Resolved concerns:
- Initial versions parsed `CMakeCache.txt` which failed because `HAVE_SYSTEM` is not always stored in the cache.
- Consolidated verification to a single config header rather than parsing multiple files.
Agreement: Mild
- Concept approval and request for re-review (sedited)
- Concern raised about mixing compile definitions and header defines (maflcko)
- Awaiting feedback from build maintainers on CMake naming conventions
maflcko raised concerns about mixing compile definitions and header defines; pending build maintainer review.
maflcko expressed concern regarding CMake conventions for `WITH_ZMQ` in `bitcoin-build-config.h.in` and deferred to build maintainers; sedited gave Concept ACK.
- fanquake pointed out `HAVE_SYSTEM` was absent from CMakeCache in earlier versions
- maflcko: 'i don't think compile definitions and build header defines should be mixed for the same symbol'
- author asked fanquake/hebasto to weigh in on naming conventions without subsequent response
- sedited asked for re-review
Review verdicts (DrahtBot): 0 (+1)
Files
53 lines under test/bench/ci.
- contrib/devtools/gen-manpages.py +53/-0
- cmake/bitcoin-build-config.h.in +3/-0
Card
Adds pre-generation configuration checks to gen-manpages.py to ensure wallet, system notifications, and ZMQ options are included in produced manpages. It addresses issue #17506 to keep release documentation from missing CLI options when run against incomplete builds. Progress is currently stalled because the author has been silent for over 100 days awaiting feedback from build maintainers on whether adding WITH_ZMQ to the CMake config header follows project conventions.