Skip to content

Tracking issue: binary assets for everyone and everything #3942

@teh-cmc

Description

@teh-cmc

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

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions