Skip to content

cmake, ci: updates for recent nixpkgs#238

Open
ryanofsky wants to merge 2 commits intobitcoin-core:masterfrom
ryanofsky:pr/iwyufu
Open

cmake, ci: updates for recent nixpkgs#238
ryanofsky wants to merge 2 commits intobitcoin-core:masterfrom
ryanofsky:pr/iwyufu

Conversation

@ryanofsky
Copy link
Collaborator

@ryanofsky ryanofsky commented Jan 9, 2026

This PR fixes two problems that happen with recent nixpkgs. The first commit works around compilation errors that happen when IWYU is enabled with (-DMP_ENABLE_IWYU=ON) that were caused by NixOS/nixpkgs#445095. The second commit fixes problems building old versions of Cap'n Proto with CMake 4.0 in shell.nix.

Neither problem has showed up so far running in github actions, only running locally with unstable nixpkgs. More details about the problems and fixes are in the commit messages.

Without this change, building with -DMP_ENABLE_IWYU=ON and newer versions of
nixpkgs (after 2025-11-12) fails with mysterious errors that look like:

make[2]: *** [CMakeFiles/mputil.dir/build.make:79: CMakeFiles/mputil.dir/src/mp/util.cpp.o] Error 1

with no other error messages. The are no messages because cmake -E
__run_co_compile hides the output from IWYU and does not display anything itself.

The actual problem is missing include directories on the compiler command line,
and the fix here is to extend a workaround previously added for clang-tidy to
be used for IWYU as well.

Breakage seems to have been caused by
NixOS/nixpkgs@76a8ffa
from NixOS/nixpkgs#445095, which I found by bisecting
with --first-parent to a change between the following merge commit:

https://github.com/NixOS/nixpkgs/commits/de21549a840be528ef4763dd7dca2006caf9c11f (bad)
https://github.com/NixOS/nixpkgs/commits/c4d1151093af5d483d1900d9214a65e68bc21560 (good)

If you check out the bad commit above (or any later commit) and revert
NixOS/nixpkgs@76a8ffa
the problem disappears.

I suspect the problem happens because cmake is not handling -cxx-isystem
properly, but did not debug further. The later change
NixOS/nixpkgs#462747 which followed up on
NixOS/nixpkgs#445095 did not seem to have any effect on
this issue in my testing.
@DrahtBot
Copy link

DrahtBot commented Jan 9, 2026

The following sections might be updated with supplementary metadata relevant to reviewers and maintainers.

Reviews

See the guideline for information on the review process.

Type Reviewers
ACK sedited, hebasto

If your review is incorrectly listed, please copy-paste <!--meta-tag:bot-skip--> into the comment that the bot should ignore.

CMake 4.0 dropped support for older policies, so versions of Cap'n Proto <=
v1.1.0 (before capnproto/capnproto#2272) require an
additional option to build with CMake 4.0. Without this change, there are
errors like:

> CMake Error at CMakeLists.txt:1 (cmake_minimum_required):
>   Compatibility with CMake < 3.5 has been removed from CMake.
>
>   Update the VERSION argument <min> value.  Or, use the <min>...<max> syntax
>   to tell CMake that the project requires at least <min> but has been updated
>   to work with policies introduced by <max> or earlier.
>
>   Or, add -DCMAKE_POLICY_VERSION_MINIMUM=3.5 to try configuring anyway.

This change fixes the problem by specifying -DCMAKE_POLICY_VERSION_MINIMUM=3.5
when needed.
@ryanofsky ryanofsky changed the title cmake: Fix IWYU in nix by adding CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES cmake, ci: updates for recent nixpkgs Jan 9, 2026
Copy link
Member

@hebasto hebasto left a comment

Choose a reason for hiding this comment

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

ACK b66a6d3, I have reviewed the code and it looks OK.

@ryanofsky
Copy link
Collaborator Author

Updated b66a6d3 -> db7acb3 (pr/iwyufu.2 -> pr/iwyufu.3, compare) to remove an incorrect comment in the b66a6d3 commit message about the cmake 4.0 problem not affecting the olddeps CI job. The problem does affect the olddeps job when I run it locally. It doesn't affect github actions CI just because it is currently using CMake 3.31.6.

Copy link
Collaborator

@sedited sedited left a comment

Choose a reason for hiding this comment

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

ACK db7acb3

@DrahtBot DrahtBot requested a review from hebasto February 2, 2026 10:18
Copy link
Member

@hebasto hebasto left a comment

Choose a reason for hiding this comment

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

re-ACK db7acb3.

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.

4 participants