-
Notifications
You must be signed in to change notification settings - Fork 38.8k
ci: Use qemu-user through container engine #28087
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
|
The following sections might be updated with supplementary metadata relevant to reviewers and maintainers. ReviewsSee the guideline for information on the review process.
If your review is incorrectly listed, please react with 👎 to this comment and the bot will ignore it on the next update. ConflictsReviewers, this pull request conflicts with the following ones:
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. |
|
If it doesn't work locally, you can check the enabled architectures via |
|
Looks like it is not set up on Cirrus CI: https://cirrus-ci.com/task/6369879847075840?logs=build#L42 ? |
|
I may try using a full CI VM next. |
|
The arm task is now run by @DrahtBot, which should make it green |
|
Looks like calling the armhf (cross) compiler (which happens often) via qemu-aarch64 on amd64 is too much overhead and times out? I'll try to run on aarch64 metal directly, which should avoid the extra hop through qemu in the CI. |
e098fe0 to
fa4096c
Compare
|
Looks like CI is now green :) Also the test failure from #27529 (comment) can now be tested on this pull with just: Output: |
|
I don't think I can give this much competent review I'm afraid. Partly because I can't get it working locally, and partly because I don't feel like I understand the changes fully yet. I did try to run I do have some questions for my own understanding though... Am I right in understanding that in the new setup, docker is using qemu and binfmt-misc from the container engines' kernel to run (emulate) e.g. the |
Yes, this is expected. Instead of just running
Jup, this should be unrelated, I presume it also happens on current master. You may be able to fix it by upgrading your
Yeah, it requires a minimal setup procedure on your container engine and it may run slower at runtime. However, the result is otherwise,
(I've added rocket emojis to the main features/bugfixes I am interested in) |
|
Thanks Marco, thats a very helpful explanation (and I nice changes for us!). I will give it another go this afternoon after trying to update qemu. |
Ok running this again... to setup and build Depends still takes more than an hour for me (with it taking 56 mins to progress past |
Yes, there seems to be quite an overhead in calling qemu for each configure check, and each build file. This is really the cost that is paid in this pull, but I think it is worth it the benefits.
CI will run on |
|
Unfortunately that build broke again for me for another seemingly unrealted reason. I have the correct version of qemu this time for sure: I don't think I can test this on my side, but I am a concept ACK on these changes, and they look correct to me. |
|
Feel free to create an issue with the unrelated stuff you ran into. Happy to take a look. Personally, I spin up a fresh VM (in a cloud or locally) to do testing, so I likely miss most CI UX issues. |
|
Rebased, and added one more line of documentation |
|
rebased 🥲 |
fanquake
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ACK fad0b67 - this seems ok to me, and removes complexity from our CI system.
I've locally tested the ENVs changed here, and seen the associated slowdown / resource consumption. Had GCC segfault more than once when cross-compiling s390x.
I think this can be fixed by setting |
I also ran into this on aarch64, and I presume it is just the CPU overheating (or some unrelated bug). |
It seems it only happens with qemu-s390x on aarch64, and not with e.g. qemu-riscv64 on the same aarch64. So it seems a bug with qemu-s390x. |
Currently the CI containers always run on the host architecture, and only wrap
bitcoindintoqemu-userwhen needed. This has many issues:i386tasks can not be run on non-x86 hosts.config.guessisn't present when building the CI image, which is fine. But it prints a warning, see ci: Add missing set -e to 01_base_install.sh #27739 (review)feature_addrman.pyon big-endian systems #27529 (comment)Fix all issues by:
HOSTfromci/test/00_setup_env.sh.QEMU_USER_CMDandci/test/wrap-qemu.sh.DPKG_ADD_ARCHwhere possible, and pruningPACKAGESwhere possible.CI_IMAGE_NAME_TAGto be used by the container engine.