Skip to content

Conversation

@NicolaLS
Copy link
Contributor

@NicolaLS NicolaLS commented Jan 10, 2025

Initially there was a distinction between the compiler dependencies and
other required dependencies (refs #23565) but the distinction was
removed (refs #24585) which is why having two distinct tables could lead
to confusion now.

@DrahtBot
Copy link
Contributor

DrahtBot commented Jan 10, 2025

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

Code Coverage & Benchmarks

For details see: https://corecheck.dev/bitcoin/bitcoin/pulls/31634.

Reviews

See the guideline for information on the review process.

Type Reviewers
ACK hodlinator, rkrux, achow101
Stale ACK maflcko

If your review is incorrectly listed, please react with 👎 to this comment and the bot will ignore it on the next update.

Conflicts

Reviewers, this pull request conflicts with the following ones:

  • #28710 (Remove the legacy wallet and BDB dependency by achow101)

If you consider this pull request important, please also help to review the conflicting pull requests. Ideally, start with the one that should be merged first.

@DrahtBot DrahtBot added the Docs label Jan 10, 2025
@maflcko
Copy link
Member

maflcko commented Jan 10, 2025

lgtm ACK 08c74105fd65b6356fcdb9d01972fd19f160b588, otherwise

@hodlinator
Copy link
Contributor

Would be good to move discussion/question-type commentary out of the PR summary into its own comment as it becomes part of the commit message, regarding the "I was a bit confused ... please let me know ...". Alternatively re-word it.

@fanquake
Copy link
Member

Not sure. Re-arranging this to put two different compilers under "required" doesn't seem less confusing. If anything, I think the tables should be left as-is, and a "developer tools" header added, if there is any confusion.

@NicolaLS
Copy link
Contributor Author

NicolaLS commented Jan 10, 2025

Not sure. Re-arranging this to put two different compilers under "required" doesn't seem less confusing. If anything, I think the tables should be left as-is, and a "developer tools" header added, if there is any confusion.

With a "development tools" header it would still be unclear which development tools are required (cmake, python), optional (systemtap) or mutual substitutes (gcc or clang) and since required ones would mixed with the two different compilers in the same table it would have the same issue that you pointed out imo.

Would it make sense to add a "Compiler" header with a paragraph that one of them is required and a table containing both. And then merge the other tables as @maflcko suggested ?

@NicolaLS NicolaLS force-pushed the doc-required-dependencies branch 3 times, most recently from c428bdb to ec60b6a Compare January 11, 2025 15:20
@NicolaLS
Copy link
Contributor Author

NicolaLS commented Jan 11, 2025

I agree that the previous version or this PR did not make sense for clearing up the confusion. I force pushed a new approach and amended the commit message / PR description.

(Preview)

@NicolaLS NicolaLS changed the title doc: merge required dependency tables doc: improve dependencies documentation Jan 11, 2025
@NicolaLS NicolaLS force-pushed the doc-required-dependencies branch from ec60b6a to d0ca5c5 Compare January 11, 2025 15:35
Copy link
Contributor

@hodlinator hodlinator left a comment

Choose a reason for hiding this comment

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

ACK d0ca5c53635916868e7d5da913faf3d9a8d706b7

Good to clarify that only one of the compilers is required, and re-introduce that section!

Thanks for updating the PR summary.

Commit message

Suggest removing repetition of initial sentence and fixing grammar of last line, + less important other changes.

-doc: improve dependencies documentation
+doc: Improve dependencies documentation
 
-This commit improves the dependencies documentation by:
-- moving "Clang" and "GCC" from the table to a new "Compiler" heading.
-- moving "Python" and "Cmake" into the required table.
-- merging the optional dependencies into one table. Removed sub-headers
+- Move "Clang" and "GCC" from the table to a new "Compiler" heading, indicating either is required.
+- Move "Python" and "CMake" into the required table.
+- Merge the optional dependencies into one table. Removed sub-headers
   are put into parentheses behind the dependency name in the first
   column.
-- replacing the whitespace in the "Minimum required" column of
+- Replace the whitespace in the "Minimum required" column of
   "qrencode" with "N/A" for consistency.
-- adding missing info in for the "systemtap" dependency.
+- Add missing info for the "systemtap" dependency.

@DrahtBot DrahtBot requested a review from maflcko January 11, 2025 21:00
@NicolaLS NicolaLS force-pushed the doc-required-dependencies branch from d0ca5c5 to 1fcc1ce Compare January 12, 2025 13:33
@NicolaLS NicolaLS changed the title doc: improve dependencies documentation doc: Improve dependencies documentation Jan 12, 2025
Copy link
Contributor

@hodlinator hodlinator 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 1fcc1ce0edcc8ae522ab9103ad79adf58fc0fe0e

Thanks for applying my suggestions.

Copy link
Member

Choose a reason for hiding this comment

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

Python isn't required.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

ah yes..thanks. should I move Linux Kernel to optional too then ?

@NicolaLS NicolaLS force-pushed the doc-required-dependencies branch from 1fcc1ce to 05a008c Compare January 14, 2025 09:09
@NicolaLS
Copy link
Contributor Author

added a blank line between the paragraph and the table in ## Compiler and moved Python to the ## Optional table. thanks for the help everyone.

I think Linux Kernel should be moved to optional as well then but since it was in the required table before and I'm not sure if I should change more stuff after receiving acks I just left it as is now.

@maflcko
Copy link
Member

maflcko commented Jan 14, 2025

Maybe a separate table for runtime dependencies makes more sense. It is pretty clear that runtime dependencies don't have a "Version used". An alternative would be to just remove the "Runtime" column, as it can be derived from the "Version used" column.

@NicolaLS
Copy link
Contributor Author

Maybe a separate table for runtime dependencies makes more sense. It is pretty clear that runtime dependencies don't have a "Version used". An alternative would be to just remove the "Runtime" column, as it can be derived from the "Version used" column.

tbh. I don't understand what "version used" really means in this context, looked at a few linked PR's but they went over my head...

but anyways I think this is out of scope for this PR / could be addressed in another PR. I only wanted to clear up some confusion I had because of the two separate tables.

@maflcko
Copy link
Member

maflcko commented Jan 14, 2025

"Version used" means the version used in Bitcoin Core's depends system, which compiles the version and statically links it into the release binaries.

Copy link
Contributor

Choose a reason for hiding this comment

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

Doesn't CMake dependency have a "version used"?

Copy link
Member

@hebasto hebasto Jan 14, 2025

Choose a reason for hiding this comment

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

CMake 3.24.2 is used for release binaries in the Guix environment.

Copy link
Contributor

@hodlinator hodlinator Jan 16, 2025

Choose a reason for hiding this comment

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

In thread #31634 (comment):

The plot thickens - reference to lower version than minimum under depends/:

# Refer to doc/dependencies.md for the minimum required kernel.
linux_cmake_system_version=3.17.0

I agree with the author in #31634 (comment) that it's fine to limit the scope of the current PR.

Copy link
Member

Choose a reason for hiding this comment

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

If you imply that 3.17.0 is a CMake version, it is not. It’s CMAKE_SYSTEM_VERSION.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

thank you. so the PR to reference for the "version used" would be #27172 correct ?

manifest uses ((gnu packages cmake) #:select (cmake-minimal)) which is why we can find the version (relevant comment in cmake.scm)

Copy link
Member

Choose a reason for hiding this comment

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

so the PR to reference for the "version used" would be #27172 correct ?

That refers to a Darwin-specific change. #29725 is a PR, which made cmake-minimal a global requirement.

However, in the future, updates like #30730 might bump the cmake-minimal version.

Copy link
Contributor

@hodlinator hodlinator 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 05a008c1d07a38f589536661822d5450aa4e9438

Copy link
Contributor

@hodlinator hodlinator Jan 16, 2025

Choose a reason for hiding this comment

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

In thread #31634 (comment):

The plot thickens - reference to lower version than minimum under depends/:

# Refer to doc/dependencies.md for the minimum required kernel.
linux_cmake_system_version=3.17.0

I agree with the author in #31634 (comment) that it's fine to limit the scope of the current PR.

- Move "Clang" and "GCC" from the table to a new "Compiler" heading,
  indicating either is required.
- Move "CMake" into the required table.
- Move "Python" into the optional table.
- Merge the optional dependencies into one table. Removed sub-headers
  are put into parentheses behind the dependency name in the first
  column.
- Replace the whitespace in the "Minimum required" column of "qrencode"
  with "N/A" for consistency.
- Add missing info for the "systemtap" dependency.
- Add context for "Linux Kernel" dependency in parentheses behind the
  dependency name.
Copy link
Contributor

@hodlinator hodlinator 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 a759ea3

git range-diff master 05a008c a759ea3

Resolved conflict with recently merged Qt depends upgrade, #30774.