outrun
bazel-buildfarm
outrun | bazel-buildfarm | |
---|---|---|
13 | 4 | |
3,109 | 623 | |
- | 1.1% | |
0.0 | 9.5 | |
over 1 year ago | about 10 hours ago | |
Python | Java | |
Apache License 2.0 | Apache License 2.0 |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
outrun
-
Distcc: A fast, free distributed C/C++ compiler
While it's purpose is different it can be used to do distributed compiling, so I'll leave it here.
https://github.com/Overv/outrun
Since I was just going down this rabbit hole recently, I kind of wonder if it's possible to set the filesystem on something more like the BitTorrent protocol so things like the libraries/compilers/headers that are used during compilation dont all need to come from the main pc. It probably wouldn't be useful until you reached a stupid number of computers and you started reaching the limits of the Ethernet wire, but for something stupid that can run on a pi cluster it would be a fun project.
-
Programing laptop
Your mention of compile heavy workloads reminded me of a project called Outrun, it offloads work to another machine. All it seems to require is Python, Fuse3 and ssh.
-
The u-root CPU command
Awesome! This write up is satisfyingly detailed. Prior work in this space includes Plan9 of course, as well as the python project Outrun, which has it's own RPC-based FUSE FS: https://github.com/Overv/outrun
Other approachs to deployment in particular include the functional package managers Nix and Guix, which can create lightweight application images, and could probably be cobbled together into some sort of remote environment replication even across architectures. As I read on, I thought less about how this compares with Guix in regards to application/environment packaging and more about how these things could be glued together in interesting ways, because I think the intro leads in through slightly off-label examples, if that makes sense. Application packaging isn't what this addresses at the end of the day, but it's no less fascinating for it.
- GitHub - Overv/outrun: Execute a local command using the processing power of another Linux machine.
- Way to run commands using other linux system's compute power
- Outrun - Execute a local command using the processing power of another Linux machine.
bazel-buildfarm
-
Distcc: A fast, free distributed C/C++ compiler
It can be. By default it is local.
But it has protobufs interfaces (IIRC), so a distributed build farm would generate the grpc endpoints for their implementation and then you tell bazel on the command line (or via .bazelrc) the address of the build farm it can use.
There's a couple of projects that implement the distributed/grpc part, the main one is https://github.com/bazelbuild/bazel-buildfarm
-
Rust Is Portable
Not sure what to say concerning buildfarm's remote execution.
Reading an issue I've opened 1y ago [1], seems the backend requires the client to have a specific gcc version.
That's a strong limitation imho.
[1] https://github.com/bazelbuild/bazel-buildfarm/issues/545
-
Running container_push inside a container
You can also set up a remote build service that uses the same environment you run the containers in using something like https://github.com/bazelbuild/bazel-buildfarm
-
Distributed build clusters
Currently migrating to Bazel + bazel remote execution via Bazel buildfarm. Bazel has native support for build clusters.
What are some alternatives?
rffmpeg - rffmpeg: remote SSH FFmpeg wrapper tool
llama
OpenAFS - Fork of OpenAFS from git.openafs.org for visualization
gnu-parallel - A clone of GNU Parallel (git://git.savannah.gnu.org/parallel.git)
icecream - Distributed compiler with a central scheduler to share build load
mainframer - Tool for remote builds. Sync project to remote machine, execute command, sync back.
pyroscope-rs - Pyroscope Profiler for Rust. Profile your Rust applications.
cargo-mutants - :zombie: Inject bugs and see if your tests catch them!
sccache - Sccache is a ccache-like tool. It is used as a compiler wrapper and avoids compilation when possible. Sccache has the capability to utilize caching in remote storage environments, including various cloud storage options, or alternatively, in local storage.
remote-apis - An API for caching and execution of actions on a remote system.
rules_closure - Closure rules for Bazel