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 C++ SDK for Linux ARM64 #5489

Merged
merged 4 commits into from
Mar 14, 2024
Merged

Build C++ SDK for Linux ARM64 #5489

merged 4 commits into from
Mar 14, 2024

Conversation

Wumpf
Copy link
Member

@Wumpf Wumpf commented Mar 13, 2024

What

Had to use a buildjet runner because some of our rerun_c dependencies (ring foremost) had trouble cross compiling after all.

Artifact I built from CI by emulating push-to-main ci:
https://build.rerun.io/commit/04b1eb6/rerun_cpp_sdk.zip

Not properly tested, but evidently has arm64 linux static library in it.

Checklist

  • I have read and agree to Contributor Guide and the Code of Conduct
  • I've included a screenshot or gif (if applicable)
  • I have tested the web demo (if applicable):
  • The PR title and labels are set such as to maximize their usefulness for the next release's CHANGELOG
  • If applicable, add a new check to the release checklist!

@Wumpf

This comment was marked as outdated.

@Wumpf Wumpf force-pushed the andreas/cpp-arm64 branch from 2056560 to 775de22 Compare March 13, 2024 10:27
Wumpf added 2 commits March 13, 2024 12:07
and make naming of ci jobs a tad more consistent
@Wumpf Wumpf force-pushed the andreas/cpp-arm64 branch from 04b1eb6 to ea6ec4f Compare March 13, 2024 11:07
@Wumpf Wumpf marked this pull request as ready for review March 13, 2024 11:09
@Wumpf Wumpf requested a review from abey79 March 13, 2024 11:15
Copy link
Member

@abey79 abey79 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The cmake stuff if beyond me, but the rest appears really straightforward 👍🏻

@abey79 abey79 self-requested a review March 13, 2024 16:54
Copy link
Member

@abey79 abey79 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I take it back :) We must make sure to always accept aarch64 and arm64 in input interchangeably.

rerun_cpp/CMakeLists.txt Outdated Show resolved Hide resolved
@Wumpf
Copy link
Member Author

Wumpf commented Mar 14, 2024

python ./scripts/ci/bundle_and_upload_rerun_cpp.py --git-hash d548beb11a3579827e233ed9abee7b832e285589 --platform-filter linux-arm64 --skip-test

was used to create & upload a new linux arm only bundle. Tested by @abey79 on a debian VM against the opencv example. It works! \o/

@abey79 abey79 merged commit 1030934 into main Mar 14, 2024
36 checks passed
@abey79 abey79 deleted the andreas/cpp-arm64 branch March 14, 2024 09:35
@abey79 abey79 mentioned this pull request Mar 14, 2024
5 tasks
Wumpf added a commit that referenced this pull request Mar 14, 2024
### What

Add support for building a Linux ARM64 version of the CLI in our build
system.

- Follow-up to #5489
- Part of #4136

This PR introduces ugly work-around to be cleaned when our pixi deps
support linux-aarch64:
- #5507

### Checklist
* [x] I have read and agree to [Contributor
Guide](https://github.com/rerun-io/rerun/blob/main/CONTRIBUTING.md) and
the [Code of
Conduct](https://github.com/rerun-io/rerun/blob/main/CODE_OF_CONDUCT.md)
* [x] I've included a screenshot or gif (if applicable)
* [x] I have tested the web demo (if applicable):
* Using newly built examples:
[app.rerun.io](https://app.rerun.io/pr/5503/index.html)
* Using examples from latest `main` build:
[app.rerun.io](https://app.rerun.io/pr/5503/index.html?manifest_url=https://app.rerun.io/version/main/examples_manifest.json)
* Using full set of examples from `nightly` build:
[app.rerun.io](https://app.rerun.io/pr/5503/index.html?manifest_url=https://app.rerun.io/version/nightly/examples_manifest.json)
* [x] The PR title and labels are set such as to maximize their
usefulness for the next release's CHANGELOG
* [x] If applicable, add a new check to the [release
checklist](https://github.com/rerun-io/rerun/blob/main/tests/python/release_checklist)!

- [PR Build Summary](https://build.rerun.io/pr/5503)
- [Docs
preview](https://rerun.io/preview/65c8082ad0c5482bad9167e8620490494f80637e/docs)
<!--DOCS-PREVIEW-->
- [Examples
preview](https://rerun.io/preview/65c8082ad0c5482bad9167e8620490494f80637e/examples)
<!--EXAMPLES-PREVIEW-->
- [Recent benchmark results](https://build.rerun.io/graphs/crates.html)
- [Wasm size tracking](https://build.rerun.io/graphs/sizes.html)

---------

Co-authored-by: Andreas Reich <andreas@rerun.io>
@abey79 abey79 mentioned this pull request Mar 14, 2024
5 tasks
abey79 added a commit that referenced this pull request Mar 18, 2024
### What

Build linux-aarch64 wheels (with manylinux_2_31) and fixes the C and CLI
builds to bring the min required glibc version to 2.31.

**Note**: cursory inspection indicates that the _actual_ min glibc
version 2.29. However, we don't formally test that. The only test is
done by `maturin` on our wheels, against the `manylinux_2_31` standard.

Amongst other things, this PR:
- updates our ci docker image to be compatible with aarch64 (#5543 –
thanks @jleibs)
- remove all instances of double GCS authentication (our setup-rust
action auth to GCS, so an explicit auth isn't necessary, _and_ would
break cleanup in linux-arm/cli build workflow—why there only is unclear)
- use it for all linux-aarch64 builds
- fixes `pixi.toml` for linux-aarch64 compatibility
- bumps pixi to 0.16.1 everywhere in the ci
- adds a manual trigger for building wheels
- (mostly) unifies the target naming scheme

#### Related

- Follow-up to:
  - #5489 
  - #5503 
- Closes #4136 
- Fixes #5507

#### Further work
- ~~support lower glibc version:
#5512
- test more wheels: #5525

### Checklist
* [x] I have read and agree to [Contributor
Guide](https://github.com/rerun-io/rerun/blob/main/CONTRIBUTING.md) and
the [Code of
Conduct](https://github.com/rerun-io/rerun/blob/main/CODE_OF_CONDUCT.md)
* [x] I've included a screenshot or gif (if applicable)
* [x] I have tested the web demo (if applicable):
* Using newly built examples:
[app.rerun.io](https://app.rerun.io/pr/5511/index.html)
* Using examples from latest `main` build:
[app.rerun.io](https://app.rerun.io/pr/5511/index.html?manifest_url=https://app.rerun.io/version/main/examples_manifest.json)
* Using full set of examples from `nightly` build:
[app.rerun.io](https://app.rerun.io/pr/5511/index.html?manifest_url=https://app.rerun.io/version/nightly/examples_manifest.json)
* [x] The PR title and labels are set such as to maximize their
usefulness for the next release's CHANGELOG
* [x] If applicable, add a new check to the [release
checklist](https://github.com/rerun-io/rerun/blob/main/tests/python/release_checklist)!

- [PR Build Summary](https://build.rerun.io/pr/5511)
- [Docs
preview](https://rerun.io/preview/c029b411730d035b9babdba3f9721dbe2905196b/docs)
<!--DOCS-PREVIEW-->
- [Examples
preview](https://rerun.io/preview/c029b411730d035b9babdba3f9721dbe2905196b/examples)
<!--EXAMPLES-PREVIEW-->
- [Recent benchmark results](https://build.rerun.io/graphs/crates.html)
- [Wasm size tracking](https://build.rerun.io/graphs/sizes.html)

---------

Co-authored-by: Jeremy Leibs <jeremy@rerun.io>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants