I’m trying to run the arm64
worker job (ARM, unit tests, no functional tests) on my M4 mac, because that should be lot faster than emulating it in Qemu on my x86_64 machine.
Unfortunately so far it fails:
0[10:34:36.739] Test project /ci_container_base/ci/scratch/build-arm-linux-gnueabihf
1[10:34:36.742] Start 2: util_rpcauth_test
2[10:34:36.744] Start 4: univalue_object_test
3[10:34:36.747] Start 6: secp256k1_tests
4[10:34:36.751] Start 8: test_bitcoin-qt
5[10:34:36.754] Start 10: addrman_tests
6[10:34:36.756] 2/141 Test [#4](/bitcoin-bitcoin/4/): univalue_object_test .................***Failed 0.01 sec
7[10:34:36.756] /ci_container_base/ci/scratch/build-arm-linux-gnueabihf/src/univalue/object: 1: Syntax error: word unexpected (expecting ")")
8[10:34:36.756]
9[10:34:36.769] 9/141 Test [#2](/bitcoin-bitcoin/2/): util_rpcauth_test .................... Passed 0.03 sec
10[10:34:36.888] 10/141 Test [#1](/bitcoin-bitcoin/1/): util_test_runner .....................***Failed 0.15 sec
11[10:34:36.888] 2024-11-22 10:34:36,767 - ERROR - OSError, Failed to execute /ci_container_base/ci/scratch/build-arm-linux-gnueabihf/src/bitcoin-util
https://cirrus-ci.com/task/4863394807808000
This is running https://github.com/Sjors/bitcoin/pull/67 which is based on master @ 2638fdb4f934be96b7c798dbac38ea5ab8a6374a.
My current setup:
- MacBook Pro with M4 Pro chip
- UTM to run a VM: https://mac.getutm.app
- Ubuntu Server 24.0.1 for ARM: https://ubuntu.com/download/server/arm
- UTM machine settings:
- ARM64 (aarch64)
- System: QEMU 7.2 ARM virt-8.2
- 14 GB RAM
- 10 CPU cores
- haven’t touched other default settings
For .cirrus.yaml
I use:
0name: MBP24-I
1token: ...
2
3labels:
4 type: arm64
I start the worker with:
0RESTART_CI_DOCKER_BEFORE_RUN=1 cirrus worker run -f ~/.cirrus.yaml
I also tried running the cirrus worker outside a VM, with cirrus
installed via Homebrew. For setup that I used Podman Desktop with the Docker extension.
It fails with the same error. Here’s the log for that:
https://cirrus-ci.com/task/4838331626815488
For comparison here’s the same job (still) running on x86_64 with qemu: