Repository navigation
ci: speed up the multi-arch builds - #179
Merged
Merged
Conversation
GitHub now provides native arm64 runners, so there is no need to build aarch64 under QEMU emulation, which is slow. Move aarch64 to a separate job that runs on ubuntu-24.04-arm, sharing the build script with the emulated job via a YAML anchor. Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com>
Running autotools under QEMU is slow. As the generated files do not depend on the target architecture, run autogen.sh natively on the host, and only do configure and make in the emulated environment. This also means autotools are no longer needed inside the emulated container. The explicit submodule update in setup is redundant, as actions/checkout already fetches submodules. Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com>
In the emulated builds, distcheck takes about half of the job time, as it does yet another configure and a full rebuild under QEMU. What it validates (the distribution tarball and a VPATH build) does not depend on the architecture, so it is enough to run it once natively. While at it, run the tests in parallel. Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com>
The packages are installed under emulation, which is slow. Yet, the list includes git, wget, and xz-utils, which are no longer needed (and wget never was), and apt also pulls in a lot of recommended packages, such as perl, fonts, and fontconfig. Remove the unneeded packages, and use --no-install-recommends. As gcc only recommends libc6-dev, add it explicitly. As git is no longer available, drop the safe.directory setup. It is not needed in the native job either, since actions/checkout already does that (see set-safe-directory). Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com>
kolyshkin
marked this pull request as ready for review
October 12, 2026 06:25
giuseppe
approved these changes
Oct 12, 2026
giuseppe
left a comment
Member
There was a problem hiding this comment.
LGTM
Does Merge work now? :-)
Collaborator
Author
it does, thanks! |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The "Build on" jobs take about 8 minutes, mostly because everything,
including autotools and
make distcheck, runs under QEMU emulation.So while waiting on it (for #177), I decided to speed it up a bit.
This PR:
ubuntu-24.04-armrunner. The buildscript is shared between the native and emulated jobs via a YAML
anchor.
autogen.shon the host rather than under emulation (withNOCONFIGURE=1, which also removes a redundantconfigurerun, asautogen.shwas running it before the explicit./configure).make distcheck(and the clean working tree check) only in thenative job, as what it validates does not depend on the
architecture. Also, run the tests in parallel.
git,wget, andxz-utils, which are no longer needed, and uses--no-install-recommends(which brings the package count down from125 to about 55). This matters because the container image is built
under emulation whenever the package list changes. Note that the
image is cached in ghcr.io, but only pushes to main can update it,
so in this PR it is rebuilt on every run, adding about a minute.
Should bring the builds down from ~8 to ~3 minutes (and to <1 minute for arm64).