Valve uses an adapted version of the Arch Linux distribution in its products. At Collabora we have been working with Valve on Holo Core, a pure aarch64 port of Arch Linux to be used as the basis for the OS running on the Steam Frame, which uses an aarch64 CPU. Since Arch Linux does not officially support the aarch64 architecture, we have needed to work on the tooling and CI infrastructure to make this possible.
In this first step toward opening up the work on the aarch64 port, we are publishing prepared binaries, their sources, and the development containers we've built from them, allowing anyone to begin to explore the port and experiment with Arch Linux on aarch64 :
These published artifacts correspond to a subset of packages from a snapshot of the Arch Linux “state” repository with commit 97c0a0b47d15 with any modifications needed to build for the aarch64 architecture.
Behind the scenes
At this stage, we have not rebuilt the entire world (all the packages available in the Arch Linux repositories). Our initial goal is to provide the set of packages required for development and image creation for the Steam Frame. Even when limiting ourselves to this subset of Arch Linux packages, including these packages along with their runtime and build dependencies still results in several thousand packages.
The idea behind this port is much more complex than simply recompiling and installing selected packages for the aarch64 architecture. We are trying to solve two main problems:
Build binaries from recent Arch package versions for a foreign architecture.
Create a CI system capable of building binaries for a distribution that currently has no CI infrastructure of its own. As Arch Linux is a rolling-release distribution, enable this CI system to determine the correct dependencies to use as the distribution updates
Challenges
It is more or less known how to create a port: initial cross-compilation, bootstrap preparation, package rebuilds, and so on. However, it becomes much less obvious when you want the entire process to be reproducible from scratch in CI.
... continue reading