Python runs everywhere, right? All those libraries are just one ‘pip install’ away. And we are used to it. Unless on AArch64.
On AArch64 when you do pip install SOMETHING
you may end with “no compiler
installed” or “No lapack/blas resources found.” messages. All due to lack of
wheel files generated for this architecture… And even if you have all
dependencies installed then building takes more time than it takes to install
existing wheel file.
But there is a light!
PEP 599 defined “manylinux2014” target which is the first supporting something else than just “x86(-64)” architecture. The new arrivals are AArch64, PPC64 (Big and Little Endian) and 32-bit Arm.
I helped getting them working on AArch64. Do not remember how I ended there to be honest ;D
And those images are now available in Pypa repository on quay.io.
And there is more!
If your project uses Travis CI for testing and release then adding support for non-x86 architectures is just one edit away. All you need is entry in “arch” list of in “matrix”:
matrix:
include:
- os: linux
arch: amd64
- os: linux
arch: arm64
And it really works!
I added support for it in “dumb-init” so now kolla does not need to use any workarounds but can grab binary straight from project’s releases. Took just few simple lines in “.travis.yml” file.
What is left to do now?
There are many Python projects out there. Most of them do not know that manylinux2014 got released and what it brings. Or that Travis CI can give them non-x86 architecture support. I slowly started creating issues, bug reports in them to make sure they are aware.