Skip to content

Support buildbox-run as sandboxing backend

Background

!951 (merged) has added an experimental sandboxing backend for buildbox-fuse. However, the more recent buildbox-run-* sandboxing runners use a different command line interface (closer to the remote execution API) and thus the current buildbox sandboxing backend in BuildStream cannot be used with buildbox-run-*.

The plan on the BuildBox side is to move the bubblewrap sandboxing backend from buildbox-fuse to a new buildbox-run-bubblewrap and add FUSE support to buildbox-casd (using buildbox-fuse). However, this hasn't happened yet.

Task description

We should add a buildbox-run sandboxing backend (based on the code from the current buildbox backend as far as applicable) to support the new interface. When the planned changes on the BuildBox side are complete, we can migrate the buildbox-fuse tests to buildbox-run-bubblewrap and drop the old buildbox backend.

As the buildbox-run interface is relatively close to the remote execution API, it likely makes sense to share some code with the remote execution client code (Action and ActionResult handling). A common base class may be useful for this.

buildbox-run will have to talk to the buildbox-casd instance spawned by BuildStream.

A CI job should be added to test this with buildbox-run-userchroot.

To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information