-
Notifications
You must be signed in to change notification settings - Fork 596
Description
Context
We want our (pre-)releases to contain pre-compiled per-platform per-arch binary assets for all things Rerun:
- the Rerun Viewer itself,
- our python wheels,
- our C bindings (
rerun_c), - our C++ bindings (
rerun_cpp), - our all-in-one crossplatform C/C++ package (
rerun_sdk.zip), - anything else that fit.
These release assets are the most reliable and scalable way to distribute Rerun, no matter how complex the end user's build system situation happens to be: they integrate well with even the most complex workflows.
Additionally, a pre-built viewer makes spawn() in Rust & C++ possible, and allows us to not embed the full viewer in our python wheel if we don't want to.
For cargo users, it also makes installing the Rerun Viewer via cargo binstall possible.
Our contributor workflow is currently built on top of our cloud storage (build.rerun.io): all binary artifacts are neatly shipped and versioned in there, and CI actions simply copy stuff in and out as needed.
This is quite nice, but we cannot expect end-users to dig through our internal build systems to get what they need: only contributors should ever have to deal with build.rerun.io URLs.
End users wanting to get their hands on our release assets should need to go no further than the well standardized path provided by Github, which neatly integrates with a million tools out there.
Proposal
- Keep everything as-is for contributors (build.rerun.io for everything).
- Implement a new script and associated action that automatically uploads release assets from build.rerun.io to their associated github (pre)release.
- That way everything is still driven by build.rerun.io internally, we just copy things back-and-forth at the last minute.
- Implement an action that builds and uploads the Rerun Viewer for all platforms.
- Make sure
cargo binstallworks.
- Make sure
- (Re)implement
spawn()in all languages using$PATHapproach.- Use
spawn()for all examples in all languages.
- Use
Pending questions
- What about
arrow-cppartifacts?
Related issues
- Add
spawn-like functionality to C++ and Rust #3757 - Rust SDK: remove old threaded
spawnin favor of fork-exec + binary artifacts #2109 - Set up
rerunbinary release artifacts #2107 - Attach per-arch Rerun & dependency artificats to our releases #3901
- Publish
rerunbinaries on popular package managers #2108