[CentOS-devel] Building ARM64 RPMs on AMD64?

Sat Dec 5 20:35:50 UTC 2020
Neal Gompa <ngompa13 at gmail.com>

On Sat, Dec 5, 2020 at 3:33 PM Simon Matter <simon.matter at invoca.ch> wrote:
>
> > On Sat, Dec 5, 2020 at 2:35 PM Mihai Moldovan <ionic at ionic.de> wrote:
> >>
> >> [Resent this message to the list without aa GPG signature, since my
> >> signature
> >> blows the message up past the 50 KB mark... meh.]
> >>
> >> * On 12/5/20 8:15 PM, Simon Matter wrote:
> >> > [...]
> >> > We are thinking about adding ARM64 based devices to our systems.
> >> >
> >> > As we are using CentOS almost everywhere and have quite a number of
> >> > inhouse RPM packages in our company repository, we'd like to enhance
> >> it
> >> > and add ARM64 alias aarch64 to it.
> >> >
> >> > What I'm still wondering is how to run the build environment for the
> >> new
> >> > arch?
> >> >
> >> > How does the CentOS project do it, run ARM64 hardware or using
> >> emulation?
> >> > Or to ask differently, is it an option to run the build system
> >> emulated
> >> > with QEMU?
> >>
> >> I cannot speak for the CentOS project, but I'm doing something along
> >> those
> >> lines, albeit in a Debian-context with sbuild chroots (which are static,
> >> compared to mock's chroots, so getting this stuff working with mock
> >> could be
> >> painful).
> >>
> >> Essentially, you can leverage the binfmt_misc Linux kernel feature inn
> >> tandem
> >> with qemu-static-user binaries. The Fedora package name for that is
> >> qemu-user-static, I believe it's the same for CentOS.
> >
> > I'd use "mock" on an arm64 architecture host. If I lack spare
> > hardware, I'd grab an AWS account and run mock in a CentOS 8 AMI. The
> > mock provided for Amazon Linux is, I'm afraid, a bit out of date and
> > tricky to manage due to "createrepo" versus "createrepo_c"
> > dependencies.
>
> Thanks for all who answered so far.
> We're not using mock but use our own build system to build for a number of
> distributions. It still uses an older python based createrepo which I
> hoped would also work for the aarch64 packages. Will it work at all for
> aarch64 RPMs?
>
> Will running a whole ARM64 VM going to be stable enough, I mean one with
> QEMU?
>

It should be fine, but I would recommend moving to createrepo_c since
it's faster and creates more correct repodata.

If you're doing it by hand (that is, not with Mock), you need to be
using DNF 2.6.2 or newer, as the --forcearch flag was introduced then.

The steps for doing it manually is documented by Mageia here:
https://wiki.mageia.org/en/Using_DNF#Setting_up_a_container_for_a_non-native_architecture



-- 
真実はいつも一つ!/ Always, there's only one truth!