@@ -180,6 +180,14 @@ jobs:
180180 - name : Override rust toolchain
181181 run : rustup override set ${{ matrix.rust }}
182182
183+ - uses : taiki-e/install-action@nextest
184+
185+ # qemu runs the cross-compiled aarch64 test binaries; the aarch64 cross
186+ # runtime provides the sysroot qemu loads guest libs from; gpgsm is needed
187+ # by the x509 signing e2e test (ssh-keygen/gpg/openssl are preinstalled).
188+ - name : Install emulation and signing tools
189+ run : sudo apt-get update && sudo apt-get install -y qemu-user-static libc6-arm64-cross libgcc-s1-arm64-cross gpgsm
190+
183191 - name : Setup ARM toolchain
184192 run : |
185193 rustup target add aarch64-unknown-linux-gnu
@@ -201,6 +209,16 @@ jobs:
201209 - name : Build Debug
202210 run : |
203211 make build-linux-arm-debug
212+
213+ # Run the suite for aarch64 under emulation. qemu emulates the aarch64
214+ # test binary (loading its libs from the cross sysroot via -L) while
215+ # passing native x86 child processes (git, gpg, ssh-keygen, ...) straight
216+ # through to the host, so the signing e2e tests exercise the real tools.
217+ - name : Run tests (aarch64, emulated)
218+ env :
219+ CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_RUNNER : qemu-aarch64-static -L /usr/aarch64-linux-gnu
220+ run : make test-linux-arm
221+
204222 - name : Build Release
205223 run : |
206224 make build-linux-arm-release
0 commit comments