Skip to content

Conversation

maflcko
Copy link
Member

@maflcko maflcko commented Sep 25, 2025

Fixes #33437

Historically, the centos task was added to add CI coverage for old packages and 32-bit depends builds, but both are now covered by different tasks.

The CentOS task aligns with Ubuntu/Debian CI tasks in terms of libc usage, but (slightly) differs in package naming and update philosophy. I am not aware of the task ever discovering a centos-related issue, so it seems fine to recycle it into an Alpine Linux task.

The main difference would be that musl libc is now used. Also, busybox is used in Alpine, so in theory the busybox install could be removed from the arm CI task in the future.

Packaging considerations: All packages should roughly be the same (gcc remains at version 14, python remains at version 3.12, etc). Also, all packages are from the Alpine main track, coming with 2 years of support. The only exception is the py3-pip package (https://pkgs.alpinelinux.org/packages?name=py3-pip&branch=v3.22&repo=&arch=riscv64) from the community track, however, I don't expect any issues arising from that.

@DrahtBot DrahtBot added the Tests label Sep 25, 2025
@DrahtBot
Copy link
Contributor

DrahtBot commented Sep 25, 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/33480.

Reviews

See the guideline for information on the review process.

Type Reviewers
ACK janb84, willcl-ark
Concept ACK RandyMcMillan, dergoegge

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:

  • #bitcoin-core/gui/896 (rpcconsole: display signet challenge by RandyMcMillan)
  • #33514 (Clear out space on centos job by willcl-ark)
  • #31349 (ci: detect outbound internet traffic generated while running tests by vasild)

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.

@willcl-ark
Copy link
Member

Concept ACK

@maflcko
Copy link
Member Author

maflcko commented Sep 25, 2025

Interesting side note: Looks like most unit tests are minimally faster on Alpine, except for the secp tests:

https://github.com/bitcoin/bitcoin/actions/runs/18007497948/job/51231174310?pr=33480#step:9:3415:

148/150 Test   #4: secp256k1_noverify_tests .............   Passed   38.88 sec
149/150 Test   #5: secp256k1_tests ......................   Passed   57.62 sec

https://github.com/bitcoin/bitcoin/actions/runs/18007193787/job/51230198016#step:9:2625 :

145/150 Test   #4: secp256k1_noverify_tests .............   Passed   12.96 sec
148/150 Test   #5: secp256k1_tests ......................   Passed   26.79 sec

@janb84
Copy link
Contributor

janb84 commented Sep 25, 2025

So Centos as CI task was not added to give good RHEL distro / Enterprise Linux support ?

@maflcko
Copy link
Member Author

maflcko commented Sep 25, 2025

So Centos as CI task was not added to give good RHEL distro / Enterprise Linux support ?

No, as mentioned in the pull description. For reference, the history was:

Copy link
Contributor

@janb84 janb84 left a comment

Choose a reason for hiding this comment

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

Concept ACK fa6b2e9

This PR introduces more libc diversity in the CI pipeline (in the form of using Alpine), which is welcome.

Not completely agreeing with this PR sentence;

"So basically, the centos task is similar to all the Ubuntu/Debian CI tasks, possibly with some packages named slightly differently. "

Yes and No; (Risk of being too much of a nitpicker.)

  • Yes from a Libc perspective; Centos is glibc and Debian is also glibc

  • No from a distro philosophy; Ubuntu/Debian and RHEL distro's are different in philosophy REHL is slower, more enterprise-focused. But do we need it as a CI step ? no as you mentioned, it does not give us new information.

There for this seems like a good improvement.

Also thanks for the extensive answer.

@maflcko
Copy link
Member Author

maflcko commented Sep 25, 2025

nitpicker

No worries. Happy to adjust the pull description, if you have any suggestions I could take over.

@maflcko
Copy link
Member Author

maflcko commented Sep 25, 2025

Also confirmed that the gcc debug mode works on alpine: https://github.com/maflcko/bitcoin-core-with-ci/actions/runs/18013008390/job/51250509812#step:8:2473 :

/usr/include/c++/14.2.0/debug/vector:508:
In function:
    constexpr std::debug::vector<_Tp, _Allocator>::reference std::
    debug::vector<_Tp, _Allocator>::operator[](size_type) [with _Tp = 
    CTxOut; _Allocator = std::allocator<CTxOut>; reference = CTxOut&; 
    size_type = long unsigned int]

Error: attempt to subscript container with out-of-bounds index 3, but 
container only holds 3 elements.

Objects involved in the operation:
    sequence "this" @ 0x7fffcfe17008 {
      type = std::debug::vector<CTxOut, std::allocator<CTxOut> >;
    }

@janb84
Copy link
Contributor

janb84 commented Sep 26, 2025

nitpicker

No worries. Happy to adjust the pull description, if you have any suggestions I could take over.

How about something like this:

The CentOS task aligns with Ubuntu/Debian CI tasks in terms of libc usage, but (slightly) differs in package naming and update philosophy. I am not aware of the task ever discovering a centos-related issue, so it seems fine to recycle it into an Alpine Linux task.

@maflcko
Copy link
Member Author

maflcko commented Sep 26, 2025

thx, edited description

Copy link
Contributor

@janb84 janb84 left a comment

Choose a reason for hiding this comment

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

ACK fa6b2e9

This PR introduces more libc diversity in the CI pipeline (in the form of using Alpine), which is welcome.

@RandyMcMillan
Copy link
Contributor

Concept ACK

@RandyMcMillan
Copy link
Contributor

tACK


It may be worth mentioning that this change fixed an issue (I was unable to isolate) on CentOS using HexStr() formatting a custom signetchallenge to display in the rpcconsole.

@maflcko
Copy link
Member Author

maflcko commented Sep 29, 2025

It may be worth mentioning that this change fixed an issue (I was unable to isolate) on CentOS using HexStr() formatting a custom signetchallenge to display in the rpcconsole.

That is unrelated to both this pull request and your pull request, see #33293.

Copy link
Member

@willcl-ark willcl-ark left a comment

Choose a reason for hiding this comment

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

ACK fa6b2e9

Alpine/musl feels much more useful to me than a frozen-in-time CentOS build.

Not tested locally as I'm a bit bandwidth-contrained at the moment, but the code changes and CI look good to me.

Copy link
Contributor

@janb84 janb84 left a comment

Choose a reason for hiding this comment

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

reACK 444409f

changes since last ACK:

  • changed container size to md. CI still works with this size. ✅

@DrahtBot DrahtBot requested a review from willcl-ark September 29, 2025 10:48
Copy link
Member

@willcl-ark willcl-ark left a comment

Choose a reason for hiding this comment

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

ACK 444409f

This took 29 minutes for an alpine depends, gui build, with no docker/ccache/depends caches (as no merges to master yet) which seems in line with other jobs.

@maflcko
Copy link
Member Author

maflcko commented Oct 2, 2025

Another (tiny) benefit of this pull request is that the task will now finally be able to run on my riscv64 box (modulo the two python wheels)

@dergoegge
Copy link
Member

Concept ACK

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

ci: add an Alpine (musl libc) job
6 participants