Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Build wheels for Linux ARM64 #5511

Merged
merged 28 commits into from
Mar 18, 2024
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
1ef8c51
Build wheels for Linux-aarch64
abey79 Mar 14, 2024
750681c
(TEMPORARY) Add linux arm64 build/test on pr
abey79 Mar 14, 2024
de2644b
lint
abey79 Mar 14, 2024
fdcb625
[TEMPORARY] try another way to test the #&%@ build
abey79 Mar 14, 2024
6aebcae
Made pixi.toml possibly compatible with linux-aarch64 + bumped to 0.1…
abey79 Mar 15, 2024
bb9393e
Remove pixi workaround
abey79 Mar 15, 2024
f36275d
Merge branch 'main' into antoine/wheels-linux-aarch64
abey79 Mar 15, 2024
58b98cc
Merge branch 'main' into antoine/wheels-linux-aarch64
abey79 Mar 15, 2024
011b59e
Try with manylinux container?
abey79 Mar 15, 2024
86a0c4b
Revert manylinux container and set compat to 2.35 instead
abey79 Mar 15, 2024
26463d1
fix
abey79 Mar 15, 2024
d3918ba
Merge branch 'main' into antoine/wheels-linux-aarch64
abey79 Mar 15, 2024
6010ac0
spelling
abey79 Mar 15, 2024
9e42bac
pr tests back to linux-x64
abey79 Mar 15, 2024
d6b1083
sort some stuff
abey79 Mar 15, 2024
82b4fbe
Merge branch 'main' into antoine/wheels-linux-aarch64
abey79 Mar 15, 2024
ca13fdc
add rationale for the min test wheel
abey79 Mar 15, 2024
3833e42
Include multi-platform dockerbuild with arm64 support (#5543)
jleibs Mar 15, 2024
69e81df
use our container for all linux-arm64 build
abey79 Mar 16, 2024
2a4092e
[TEMP] switch to arm for PR wheel build&test
abey79 Mar 16, 2024
26c27ca
Revert "[TEMP] switch to arm for PR wheel build&test"
abey79 Mar 16, 2024
f8fcb02
always use pixi to build the web viewer (needed for wasm-opt)
abey79 Mar 16, 2024
e718959
Merge branch 'main' into antoine/wheels-linux-aarch64
abey79 Mar 16, 2024
c1b3397
Merge branch 'main' into antoine/wheels-linux-aarch64
abey79 Mar 18, 2024
838990f
Misc minor change to make the reusable_build_* files more similar
abey79 Mar 18, 2024
cff5b0c
Try remove double google auth in CLI build
abey79 Mar 18, 2024
0724ba2
Remove double GCS auth and clarify that setup-rust also auth to gcs
abey79 Mar 18, 2024
c029b41
Merge branch 'main' into antoine/wheels-linux-aarch64
abey79 Mar 18, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
6 changes: 3 additions & 3 deletions .github/workflows/nightly.yml
Original file line number Diff line number Diff line change
Expand Up @@ -53,8 +53,8 @@ jobs:
uses: ./.github/workflows/reusable_build_and_upload_wheels.yml
with:
CONCURRENCY: nightly-linux
PLATFORM: linux
WHEEL_ARTIFACT_NAME: linux-wheel
PLATFORM: linux-x64
WHEEL_ARTIFACT_NAME: linux-x64-wheel
MODE: "pr"
secrets: inherit

Expand All @@ -65,7 +65,7 @@ jobs:
with:
CONCURRENCY: nightly
CHANNEL: nightly
WHEEL_ARTIFACT_NAME: linux-wheel
WHEEL_ARTIFACT_NAME: linux-x64-wheel
secrets: inherit

upload-examples:
Expand Down
12 changes: 6 additions & 6 deletions .github/workflows/on_pull_request.yml
Original file line number Diff line number Diff line change
Expand Up @@ -83,8 +83,8 @@ jobs:
with:
CONCURRENCY: pr-${{ github.event.pull_request.number }}
MODE: "pr"
PLATFORM: linux
WHEEL_ARTIFACT_NAME: "linux-wheel-fast"
PLATFORM: linux-arm64
WHEEL_ARTIFACT_NAME: "linux-arm64-wheel-fast"
secrets: inherit

min-wheel-test:
Expand All @@ -94,8 +94,8 @@ jobs:
uses: ./.github/workflows/reusable_test_wheels.yml
with:
CONCURRENCY: pr-${{ github.event.pull_request.number }}
PLATFORM: linux
WHEEL_ARTIFACT_NAME: "linux-wheel-fast"
abey79 marked this conversation as resolved.
Show resolved Hide resolved
PLATFORM: linux-arm64
WHEEL_ARTIFACT_NAME: "linux-arm64-wheel-fast"
secrets: inherit

build-js:
Expand Down Expand Up @@ -133,7 +133,7 @@ jobs:
with:
CONCURRENCY: pr-${{ github.event.pull_request.number }}
CHANNEL: main
WHEEL_ARTIFACT_NAME: linux-wheel-fast
WHEEL_ARTIFACT_NAME: linux-x64-wheel-fast
secrets: inherit

track-sizes:
Expand Down Expand Up @@ -163,7 +163,7 @@ jobs:
uses: ./.github/workflows/reusable_run_notebook.yml
with:
CONCURRENCY: pr-${{ github.event.pull_request.number }}
WHEEL_ARTIFACT_NAME: linux-wheel-fast
WHEEL_ARTIFACT_NAME: linux-x64-wheel-fast
secrets: inherit

save-pr-summary:
Expand Down
84 changes: 48 additions & 36 deletions .github/workflows/on_push_main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -209,78 +209,90 @@ jobs:

# -----------------------------------------------------------------------------------

build-wheel-linux:
build-wheel-linux-arm64:
needs: [checks]
name: "Linux: Build & Upload Wheels"
name: "Linux-arm64: Build & Upload Wheels"
uses: ./.github/workflows/reusable_build_and_upload_wheels.yml
with:
CONCURRENCY: push-linux-${{ github.ref_name }}
PLATFORM: linux
WHEEL_ARTIFACT_NAME: linux-wheel
CONCURRENCY: push-linux-arm64-${{ github.ref_name }}
PLATFORM: linux-arm64
WHEEL_ARTIFACT_NAME: linux-arm64-wheel
MODE: "pypi"
secrets: inherit

build-wheel-linux-x64:
needs: [checks]
name: "Linux-x64: Build & Upload Wheels"
uses: ./.github/workflows/reusable_build_and_upload_wheels.yml
with:
CONCURRENCY: push-linux-x64-${{ github.ref_name }}
PLATFORM: linux-x64
WHEEL_ARTIFACT_NAME: linux-x64-wheel
MODE: "pypi"
secrets: inherit

build-wheel-windows:
build-wheel-windows-x64:
needs: [checks]
name: "Windows: Build & Upload Wheels"
name: "Windows-x64: Build & Upload Wheels"
uses: ./.github/workflows/reusable_build_and_upload_wheels.yml
with:
CONCURRENCY: push-windows-${{ github.ref_name }}
PLATFORM: windows
WHEEL_ARTIFACT_NAME: windows-wheel
CONCURRENCY: push-windows-x64-${{ github.ref_name }}
PLATFORM: windows-x64
WHEEL_ARTIFACT_NAME: windows-x64-wheel
MODE: "pypi"
secrets: inherit

build-wheel-macos-arm:
build-wheel-macos-arm64:
needs: [checks]
name: "Macos-Arm: Build & Upload Wheels"
name: "Macos-arm64: Build & Upload Wheels"
uses: ./.github/workflows/reusable_build_and_upload_wheels.yml
with:
CONCURRENCY: push-macos-arm-${{ github.ref_name }}
PLATFORM: macos-arm
WHEEL_ARTIFACT_NAME: macos-arm-wheel
CONCURRENCY: push-macos-arm64-${{ github.ref_name }}
PLATFORM: macos-arm64
WHEEL_ARTIFACT_NAME: macos-arm64-wheel
MODE: "pypi"
secrets: inherit

build-wheel-macos-intel:
build-wheel-macos-x64:
needs: [checks]
name: "Macos-Intel: Build & Upload Wheels"
name: "Macos-x64: Build & Upload Wheels"
uses: ./.github/workflows/reusable_build_and_upload_wheels.yml
with:
CONCURRENCY: push-macos-intel-${{ github.ref_name }}
PLATFORM: macos-intel
WHEEL_ARTIFACT_NAME: "macos-intel-wheel"
CONCURRENCY: push-macos-x64-${{ github.ref_name }}
PLATFORM: macos-x64
WHEEL_ARTIFACT_NAME: "macos-x64-wheel"
MODE: "pypi"
secrets: inherit

test-wheel-linux:
needs: [checks, build-wheel-linux]
name: "Linux: Test Wheels"
test-wheel-linux-x64:
needs: [checks, build-wheel-linux-x64]
name: "Linux-x64: Test Wheels"
uses: ./.github/workflows/reusable_test_wheels.yml
with:
CONCURRENCY: push-linux-${{ github.ref_name }}
PLATFORM: linux
WHEEL_ARTIFACT_NAME: linux-wheel
CONCURRENCY: push-linux-x64-${{ github.ref_name }}
PLATFORM: linux-x64
WHEEL_ARTIFACT_NAME: linux-x64-wheel
secrets: inherit

test-wheel-windows:
needs: [checks, build-wheel-windows]
name: "Windows: Test Wheels"
test-wheel-windows-x64:
needs: [checks, build-wheel-windows-x64]
name: "Windows-x64: Test Wheels"
uses: ./.github/workflows/reusable_test_wheels.yml
with:
CONCURRENCY: push-windows-${{ github.ref_name }}
PLATFORM: windows
WHEEL_ARTIFACT_NAME: windows-wheel
CONCURRENCY: push-windows-x64-${{ github.ref_name }}
PLATFORM: windows-x64
WHEEL_ARTIFACT_NAME: windows-x64-wheel
secrets: inherit

generate-pip-index:
name: "Generate Pip Index"
needs:
[
build-wheel-linux,
build-wheel-windows,
build-wheel-macos-arm,
build-wheel-macos-intel,
build-wheel-linux-x64,
build-wheel-linux-arm64,
build-wheel-windows-x64,
build-wheel-macos-arm64,
build-wheel-macos-x64,
abey79 marked this conversation as resolved.
Show resolved Hide resolved
]
uses: ./.github/workflows/reusable_pip_index.yml
with:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/reusable_build_and_upload_rerun_cli.yml
Original file line number Diff line number Diff line change
Expand Up @@ -157,7 +157,7 @@ jobs:
run: |
pixi run cargo run --locked -p re_build_web_viewer -- --release

# TODO(#5507): supress this workaround when pixi dependencies are available on linux-arm64
# TODO(#5507): suppress this workaround when pixi dependencies are available on linux-arm64
- name: Build web-viewer (release, Linux ARM64)
if: ${{ inputs.PLATFORM == 'linux-arm64' }}
shell: bash
Expand Down
57 changes: 52 additions & 5 deletions .github/workflows/reusable_build_and_upload_wheels.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,41 @@ on:
type: string
default: ""

workflow_dispatch:
inputs:
PLATFORM:
type: choice
options:
- linux-arm64
- linux-x64
- windows-x64
- macos-arm64
- macos-x64
description: "Platform to build for"
required: true
MODE:
type: choice
required: false
options:
- pypi
- pr
description: "The build mode (`pypi` includes the web viewer, `pr` does not)"
CONCURRENCY:
required: false
type: string
default: "adhoc"
description: "Concurrency group to use"
WHEEL_ARTIFACT_NAME:
required: false
type: string
default: ""
description: "If set, will be saved under that name in the workflow artifacts"
RELEASE_COMMIT:
required: false
type: string
default: ""
description: "Release commit"

concurrency:
group: ${{ inputs.CONCURRENCY }}-build-wheels
cancel-in-progress: true
Expand Down Expand Up @@ -62,22 +97,27 @@ jobs:
shell: bash
run: |
case "${{ inputs.PLATFORM }}" in
linux)
linux-arm64)
runner="buildjet-8vcpu-ubuntu-2204-arm"
target="aarch64-unknown-linux-gnu"
container="null"
;;
linux-x64)
runner="ubuntu-latest-16-cores"
target="x86_64-unknown-linux-gnu"
container="{'image': 'rerunio/ci_docker:0.11.0'}"
;;
windows)
windows-x64)
runner="windows-latest-8-cores"
target="x86_64-pc-windows-msvc"
container="null"
;;
macos-arm)
macos-arm64)
runner="macos-latest-large" # See https://github.blog/2023-10-02-introducing-the-new-apple-silicon-powered-m1-macos-larger-runner-for-github-actions/
target="aarch64-apple-darwin"
container="null"
;;
macos-intel)
macos-x64)
runner="macos-latest-large" # See https://github.blog/2023-10-02-introducing-the-new-apple-silicon-powered-m1-macos-larger-runner-for-github-actions/
target="x86_64-apple-darwin"
container="null"
Expand Down Expand Up @@ -127,7 +167,14 @@ jobs:

- uses: prefix-dev/setup-pixi@v0.4.1
with:
pixi-version: v0.13.0
pixi-version: v0.16.1

# TODO(#5507): suppress this workaround when we can use pixi on linux-aarch64
- name: Build web-viewer (release, Linux ARM64)
if: ${{ inputs.PLATFORM == 'linux-arm64' }}
shell: bash
run: |
sudo apt-get install binaryen

- name: Install dependencies
shell: bash
Expand Down