If you use Icecream (a.k.a. IceCC) for doing distributed compilation of software, you may be interested in Popsicle. It can be used as a fire-and-forget method to setup Icecream and always having it use an to-to-date toolchain tarball:
# Call Popsicle always, it prints the toolchain tarball path.
# It is fast: a cached copy is used if contents are unchanged.
ICECC_VERSION="$(popsicle clang)" make CC=clang -j20
Also, it’s one of my first complete working programs written in Rust, and all feedback is appreciated — specially when it comes to idiomatic Rust usage, which probably is not great.
Popsicle grew out of my frustration with the
icecc-create-env script included with Icecream, which half of the time would create toolchain tarballs which would not work on many remote build hosts, and specially when using Clang.
I hope someone else out there finds it useful as well!