Wasting an Evening with distcc

April 25, 2022

I need to stop going down these Gentoo rabbit holes. Recently I picked up an old PowerBook G3, restored it to working order, and opposite of my better judgement immediately installed and compiled Gentoo. Got it working. All was well.

Unfortunately, because Gentoo builds all updates from source, it can take 3-4 days just to compile and update a bare-bones install running i3 and a web browser. I've known about distcc for a long time. Distcc allows other machines on the network to compile binaries. This sounded like the perfect solution! I could offload the compile time from the old 400mHz G3 and blaze through updates in just a few minutes utilizing a modern machine. I finally decided to give it a shot.

Got everything installed and configured on the PowerBook, the machine that would be doing all the heavy lifting (Gentoo in a VM on an AMD Ryzen 7), and for good measure and testing purposes, an old Dell Mini 9 also running Gentoo. This portion wasn't without its hiccups.

Tests worked well when running updates on the Dell. The Ryzen machine picked up the work from the old laptop and powered through. Not the same results when updating the PowerBook. Turns out cross compiling different architectures requires more work involving crossdev. Got crossdev installed, but ran into errors when building out the PowerPC toolchain. Something around gcc "not supported by your assembler." Tried different versions of gcc, but to no avail. At that point, things were beyond my knowledge base. (Some weird issue with keyboard input hanging when working with the VirtalBox VM didn't help.)

Cross compiling with distcc didn't work this time around. But it got me thinking about Gentoo in general. Gentoo used to be my favorite distro. It's a very educational distro in that it forces you to learn through their lower-level setup process. And it's one of the few distros that still supports older architectures such as 32-bit x86 and PowerPC. Just about every other distro has moved on to amd64 and ARM exclusively. The number of roadblocks when working with Gentoo day-to-day just feels much higher than it used to be. Emerge updates routinely result in conflicting packages and circular dependencies. Emerge --sync has been plagued with failed manifest validations requiring continuous mirror changes. Documentation is out of date.

I know it's pointless to try and keep this old hardware running, much less ask it to run the latest OS technology. But solving those puzzles are fun. Unfortunately, the puzzles seem to be getting more and more complex.