From 83d6af5162b20fa822f408cf8147964924ddadbc Mon Sep 17 00:00:00 2001 From: Maxime Desroches Date: Mon, 22 Jul 2024 11:45:39 -0700 Subject: [PATCH] ci: bring back aarch64 (#33017) * casadi wheel * ci * test 312 * test with new aarch64 build * use release wheels * assert * bool * try this * maybe * work * use final wheel old-commit-hash: dcdac84f0c7944433f262af903a39e6b5d3a026a --- .github/workflows/selfdrive_tests.yaml | 26 ++++++++++++++++++++++--- pyproject.toml | 3 ++- selfdrive/ui/SConscript | 2 +- third_party/libyuv/larch64/lib/libyuv.a | 4 ++-- uv.lock | 14 ++++++++++++- 5 files changed, 41 insertions(+), 8 deletions(-) diff --git a/.github/workflows/selfdrive_tests.yaml b/.github/workflows/selfdrive_tests.yaml index 8968b493c..42c1dbb5e 100644 --- a/.github/workflows/selfdrive_tests.yaml +++ b/.github/workflows/selfdrive_tests.yaml @@ -74,8 +74,11 @@ jobs: build: strategy: matrix: - arch: ${{ fromJson('["x86_64"]') }} # TODO: Re-add build test for aarch64 once we switched to ubuntu-2404 - runs-on: ubuntu-latest + arch: ${{ fromJson( + ((github.repository == 'commaai/openpilot') && + ((github.event_name != 'pull_request') || + (github.event.pull_request.head.repo.full_name == 'commaai/openpilot'))) && '["x86_64", "aarch64"]' || '["x86_64"]' ) }} + runs-on: ${{ (matrix.arch == 'aarch64') && 'namespace-profile-arm64-2x8' || 'ubuntu-latest' }} steps: - uses: actions/checkout@v4 with: @@ -84,7 +87,7 @@ jobs: if: github.ref == 'refs/heads/master' && github.event_name != 'pull_request' && github.repository == 'commaai/openpilot' run: | echo "PUSH_IMAGE=true" >> "$GITHUB_ENV" - : # (TODO: Re-add this once we test other archs) echo "TARGET_ARCHITECTURE=${{ matrix.arch }}" >> "$GITHUB_ENV" + echo "TARGET_ARCHITECTURE=${{ matrix.arch }}" >> "$GITHUB_ENV" $DOCKER_LOGIN - uses: ./.github/workflows/setup-with-retry with: @@ -118,6 +121,23 @@ jobs: - name: Building openpilot run: . .venv/bin/activate && scons -j$(nproc) + docker_push_multiarch: + name: docker push multiarch tag + runs-on: ubuntu-latest + if: github.ref == 'refs/heads/master' && github.event_name != 'pull_request' && github.repository == 'commaai/openpilot' + needs: [build] + steps: + - uses: actions/checkout@v4 + with: + submodules: false + - name: Setup docker + run: | + $DOCKER_LOGIN + - name: Merge x64 and arm64 tags + run: | + export PUSH_IMAGE=true + scripts/retry.sh selfdrive/test/docker_tag_multiarch.sh base x86_64 aarch64 + static_analysis: name: static analysis runs-on: ${{ ((github.repository == 'commaai/openpilot') && diff --git a/pyproject.toml b/pyproject.toml index 126e122ab..1226c8345 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -52,7 +52,8 @@ dependencies = [ "websocket_client", # acados deps - "casadi", + "casadi @ https://github.com/commaai/casadi/releases/download/nightly-release-3.6.6/casadi-3.6.6-cp312-none-manylinux2014_aarch64.whl ; (python_version == '3.12' and platform_machine == 'aarch64')", # TODO: Go back to pypi casadi when they fix aarch64 for python312 + "casadi; platform_machine != 'aarch64' or python_version != '3.12'", "future-fstrings", # these should be removed diff --git a/selfdrive/ui/SConscript b/selfdrive/ui/SConscript index 9046ecc22..c6b4860bf 100644 --- a/selfdrive/ui/SConscript +++ b/selfdrive/ui/SConscript @@ -109,7 +109,7 @@ if GetOption('extras') and arch != "Darwin": obj = senv.Object(f"installer/installers/installer_{name}.o", ["installer/installer.cc"], CPPDEFINES=d) f = senv.Program(f"installer/installers/installer_{name}", [obj, cont], LIBS=qt_libs) # keep installers small - assert f[0].get_size() < 350*1e3 + assert f[0].get_size() < 370*1e3 # build watch3 if arch in ['x86_64', 'aarch64', 'Darwin'] or GetOption('extras'): diff --git a/third_party/libyuv/larch64/lib/libyuv.a b/third_party/libyuv/larch64/lib/libyuv.a index fd18814ef..1c9125023 100644 --- a/third_party/libyuv/larch64/lib/libyuv.a +++ b/third_party/libyuv/larch64/lib/libyuv.a @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:85e765be665eab8ce8b64d6a884148e0ff3905fadcef6c0daa75e4efd84bb5cb -size 499734 +oid sha256:320bef5a75a62dd2731a496040921d5000f1ed237ae70fd7aeb6c010a1534363 +size 462482 diff --git a/uv.lock b/uv.lock index 7808954e7..8a0dc29b2 100644 --- a/uv.lock +++ b/uv.lock @@ -227,6 +227,17 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/88/08/c55e2172f033a44b831ee771bb32fa89c369311c0598a52c03755f29a75e/casadi-3.6.5-cp312-none-win_amd64.whl", hash = "sha256:fe2b64d777e36cc3f101220dd1e219a0e11c3e4ee2b5e708b30fea9a27107e41", size = 43057681 }, ] +[[distribution]] +name = "casadi" +version = "3.6.6" +source = { url = "https://github.com/commaai/casadi/releases/download/nightly-release-3.6.6/casadi-3.6.6-cp312-none-manylinux2014_aarch64.whl" } +dependencies = [ + { name = "numpy" }, +] +wheels = [ + { url = "https://github.com/commaai/casadi/releases/download/nightly-release-3.6.6/casadi-3.6.6-cp312-none-manylinux2014_aarch64.whl", hash = "sha256:06a15e0099657b960620a2491e565c7f126030018da80c39f6bd33439160c669" }, +] + [[distribution]] name = "certifi" version = "2024.7.4" @@ -1519,7 +1530,8 @@ source = { editable = "." } dependencies = [ { name = "aiohttp" }, { name = "aiortc" }, - { name = "casadi" }, + { name = "casadi", version = "3.6.5", source = { registry = "https://pypi.org/simple" }, marker = "python_version < '3.12' or python_version > '3.12' or platform_machine != 'aarch64'" }, + { name = "casadi", version = "3.6.6", source = { url = "https://github.com/commaai/casadi/releases/download/nightly-release-3.6.6/casadi-3.6.6-cp312-none-manylinux2014_aarch64.whl" }, marker = "python_version == '3.12' and platform_machine == 'aarch64'" }, { name = "cffi" }, { name = "crcmod" }, { name = "cython" },