Popsicle 🍧 β€” Create (and cache!) compiler toolchains for Icecream/IceCC


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! :shaved_ice: