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 binstall works.
- (Re)implement
spawn() in all languages using $PATH approach.
- Use
spawn() for all examples in all languages.
Pending questions
- What about
arrow-cpp artifacts?
Related issues
Context
We want our (pre-)releases to contain pre-compiled per-platform per-arch binary assets for all things Rerun:
rerun_c),rerun_cpp),rerun_sdk.zip),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
cargousers, it also makes installing the Rerun Viewer viacargo binstallpossible.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
cargo binstallworks.spawn()in all languages using$PATHapproach.spawn()for all examples in all languages.Pending questions
arrow-cppartifacts?Related issues
spawn-like functionality to C++ and Rust #3757spawnin favor of fork-exec + binary artifacts #2109rerunbinary release artifacts #2107rerunbinaries on popular package managers #2108