Commit 5f3dd47
{Continuous Integration} Wheels - Add Linux aarch64 build matrix leg (facebookresearch#387)
Summary:
X-link: https://github.com/facebookexternal/projectaria_private_libs/pull/35
Pull Request resolved: facebookresearch#387
Explanation:
Adds a native Linux aarch64 wheel to the `projectaria_tools` build matrix using GitHub's `ubuntu-24.04-arm` runner (free for public repos, so no QEMU emulation is needed). Three changes make the aarch64 build work:
1. `build_third_party_libs/install_manylinux_deps.sh` — two fixes, both of which also apply to x86_64:
- The aarch64 `manylinux2014` image does not enable EPEL by default, so `gtest-devel` and `xxhash-devel` fail to resolve and `yum install` aborts the script. Add `yum install -y epel-release` first; this is a no-op on the x86_64 image, which already has EPEL enabled.
- `libjpeg-turbo` 3.0.1 declares a `cmake_minimum_required` below 3.5, which CMake 4.x rejects outright. The `manylinux2014` image bumped CMake to 4.4 on both arches, so pass the CMake-suggested `-DCMAKE_POLICY_VERSION_MINIMUM=3.5`.
2. `setup.py` — Ocean's NEON RGB-conversion code passes signed vector types to unsigned intrinsics (for example `int8x16_t` into `vget_low_u8`). Clang accepts this by default, which is why Ocean's Android and iOS builds are unaffected, but GCC on Linux aarch64 rejects it and asks for `-flax-vector-conversions`. Add that flag to `CMAKE_CXX_FLAGS`, gated on Linux aarch64 so x86_64 and macOS builds are untouched.
3. `.github/workflows/build-wheels-and-deploy.yml` and `.github/workflows/test-for-build-wheels.yml` — add `ubuntu-24.04-arm` to the OS matrix, extend the ffmpeg-install step's condition to cover it, and add a build step with `CIBW_ARCHS: aarch64`. The step relies on `cibuildwheel`'s default `auditwheel repair`, which vendors the third-party shared libraries into the wheel and retags it `manylinux2014_aarch64`. NVDEC is not wired up on this leg because `libnvcuvid` has no aarch64 build.
Reproducibility:
Built and tested end-to-end in native `linux/arm64` containers. The resulting `manylinux2014_aarch64` wheel installs into a clean `python:3.11-slim` image — one with none of the build-time libraries present — and passes all 115 Python tests in the repository, including the H.265 random-access test that reads `data/gen2/aria_gen2_unit_test_sequence_with_pframe.vrs`. See the test plan for the full breakdown.
Reviewed By: SeaOtocinclus, nrraina
Differential Revision: D114764549
fbshipit-source-id: efb3c83e7fe5f55edced50a66dac3456f47a0c221 parent 11c1f6d commit 5f3dd47
4 files changed
Lines changed: 48 additions & 5 deletions
File tree
- .github/workflows
- build_third_party_libs
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
89 | 89 | | |
90 | 90 | | |
91 | 91 | | |
92 | | - | |
| 92 | + | |
93 | 93 | | |
94 | 94 | | |
95 | 95 | | |
| |||
119 | 119 | | |
120 | 120 | | |
121 | 121 | | |
122 | | - | |
| 122 | + | |
123 | 123 | | |
124 | 124 | | |
125 | 125 | | |
| |||
147 | 147 | | |
148 | 148 | | |
149 | 149 | | |
| 150 | + | |
| 151 | + | |
| 152 | + | |
| 153 | + | |
| 154 | + | |
| 155 | + | |
| 156 | + | |
| 157 | + | |
| 158 | + | |
| 159 | + | |
| 160 | + | |
| 161 | + | |
| 162 | + | |
| 163 | + | |
150 | 164 | | |
151 | 165 | | |
152 | 166 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
91 | 91 | | |
92 | 92 | | |
93 | 93 | | |
94 | | - | |
| 94 | + | |
95 | 95 | | |
96 | 96 | | |
97 | 97 | | |
| |||
120 | 120 | | |
121 | 121 | | |
122 | 122 | | |
123 | | - | |
| 123 | + | |
124 | 124 | | |
125 | 125 | | |
126 | 126 | | |
| |||
148 | 148 | | |
149 | 149 | | |
150 | 150 | | |
| 151 | + | |
| 152 | + | |
| 153 | + | |
| 154 | + | |
| 155 | + | |
| 156 | + | |
| 157 | + | |
| 158 | + | |
| 159 | + | |
| 160 | + | |
| 161 | + | |
| 162 | + | |
| 163 | + | |
| 164 | + | |
151 | 165 | | |
152 | 166 | | |
153 | 167 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
22 | 22 | | |
23 | 23 | | |
24 | 24 | | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
25 | 28 | | |
26 | 29 | | |
27 | 30 | | |
| |||
34 | 37 | | |
35 | 38 | | |
36 | 39 | | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
37 | 43 | | |
38 | 44 | | |
39 | | - | |
| 45 | + | |
40 | 46 | | |
41 | 47 | | |
42 | 48 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
13 | 13 | | |
14 | 14 | | |
15 | 15 | | |
| 16 | + | |
16 | 17 | | |
17 | 18 | | |
18 | 19 | | |
| |||
64 | 65 | | |
65 | 66 | | |
66 | 67 | | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
67 | 76 | | |
68 | 77 | | |
69 | 78 | | |
| |||
0 commit comments