ci: add newdeps job testing newer versions of cmake and capnproto #212

pull ryanofsky wants to merge 2 commits into bitcoin-core:master from ryanofsky:pr/newdeps changing 6 files +45 −7
  1. ryanofsky commented at 9:42 am on September 17, 2025: collaborator

    Add CI job testing latest released version of cmake, and latest unreleased version of cap’n proto to uncover any problems there may be with new releases. Use git version of cap’n proto because we’ve submitted patches to that project to fix issues in the past, so it would be good to know about any new issues as soon as possible.

    Also try to improve CI output since current output has not been very good for debugging, by adding git log calls, cmake debug options, and a dump of the cmake configure log on failure.

  2. ci: add newdeps job testing newest versions of cmake and capnproto 0ffdb140bf
  3. ci: add cmake debug output and --parallel build option 6ba1050bef
  4. ryanofsky commented at 9:43 am on September 17, 2025: collaborator
    These changes were originally part of #209 but moved them to a separate PR since #209 might be blocked or require more time to discuss
  5. in ci/scripts/ci.sh:48 in 6ba1050bef
    44+git --no-pager log -1 || true
    45+cmake_args=("${CMAKE_ARGS[@]+"${CMAKE_ARGS[@]}"}")
    46+if ! cmake "$src_dir" "${cmake_args[@]}"; then
    47+  # If cmake failed, try it again with debug options.
    48+  # Could add --trace / --trace-expand here too but they are very verbose.
    49+  cmake_args+=(--debug-find --debug-output --debug-trycompile --log-level=DEBUG)
    


    hebasto commented at 10:55 am on September 18, 2025:

    While this project maintains support for CMake versions as old as 3.12, I believe this support should also extend consistently to the CI infrastructure, particularly given the “olddeps” job, which runs CMake 3.12.4. Therefore, features incompatible with CMake 3.12, such as --debug-find and --log-level, should be avoided. For example, the “olddeps” CI job may result in:

    0+ cmake /home/runner/work/libmultiprocess/libmultiprocess --debug-find --debug-output --debug-trycompile --log-level=DEBUG
    1CMake Error: The source directory "/home/runner/work/libmultiprocess/libmultiprocess/build-olddeps/--log-level=DEBUG" does not exist.
    

    Alternatively, the minimum supported CMake version could be bumped.


    ryanofsky commented at 3:46 pm on September 18, 2025:

    re: #212 (review)

    For example, the “olddeps” CI job may result in

    If the problem you would like me to solve is that extra output potentially appearing in the olddeps job, it is trivial to skip the debug step there with:

    0-if ! cmake "$src_dir" "${cmake_args[@]}"; then
    1+if ! cmake "$src_dir" "${cmake_args[@]}" && ver_ge "$cmake_ver" "3.17"; then
    

    But I don’t see a problem with this extra output and I don’t know if this the issue you actually care about. If you are arguing that systems using cmake 3.16 should not be supported because it does not support the –debug-find option, than that sounds like something to mention in #175 more than here.

  6. in ci/scripts/ci.sh:50 in 6ba1050bef
    46+if ! cmake "$src_dir" "${cmake_args[@]}"; then
    47+  # If cmake failed, try it again with debug options.
    48+  # Could add --trace / --trace-expand here too but they are very verbose.
    49+  cmake_args+=(--debug-find --debug-output --debug-trycompile --log-level=DEBUG)
    50+  cmake "$src_dir" "${cmake_args[@]}" || : "cmake exited with $?"
    51+  cat CMakeFiles/CMakeConfigureLog.yaml || true
    


    hebasto commented at 11:01 am on September 18, 2025:

    Moving discussion from #209 (review).

    re: #209 (comment)

    6ba1050 This log file name has been used only since CMake 3.26.

    Yes that’s part of the reason for adding || true here. I think this code could potentially print log files used by older versions of cmake too, and originally this change tried that, but since all CI jobs except one are using new enough versions of cmake it didn’t seem worth complexity.

    One may argue: why introduce complexity for a feature that doesn’t work with the minimum supported CMake version in the first place?

    Would happily accept a PR to patch to improve this though.

    This would make sense if it were the only compatibility issue in this PR.


    ryanofsky commented at 3:35 pm on September 18, 2025:

    re: #212 (review)

    One may argue: why introduce complexity for a feature that doesn’t work with the minimum supported CMake version in the first place?

    It would be helpful to know what complexity you are referring to specifically here. The find_packge(Threads REQUIRED) issue would have been impossible to debug without the line:

    0cat CMakeFiles/CMakeConfigureLog.yaml || true
    

    and I do not feel like it adds much complexity. This CI script in general seems short and simple to me. I don’t know what problem you have with the other debug prints either. In general, I feel like it would be a lot easier to respond to your comments if they could make it clear:

    1. What observable problem you think this change causes, or could potentially cause.
    2. What change you would suggest to fix the problem.
  7. ryanofsky commented at 3:55 pm on September 18, 2025: collaborator

    Appreciate your review, even though I am having trouble understanding what your practical concerns are and what specific changes I could make that would address them.

    Hopefully we both accept the premise that it is good to have a new CI job testing newer versions of cmake and capnproto, and it is good to show more debug output when cmake configuration fails.

  8. fdtwd8vv45-sketch approved

github-metadata-mirror

This is a metadata mirror of the GitHub repository bitcoin-core/libmultiprocess. This site is not affiliated with GitHub. Content is generated from a GitHub metadata backup.
generated: 2025-12-04 19:30 UTC

This site is hosted by @0xB10C
More mirrored repositories can be found on mirror.b10c.me