🏳️‍⚧️ and I make good posts sometimes!

pfp by me!
banner by https://twitter.com/spect_ion


fediverse
‪@PolyWolf@social.treehouse.systems‬
bluesky
@wolf.girl.technology

(because I needed an older compiler version for Reasons) and YIKES does that build take a long time. Something like 3 bootstrap stages at least??? and much of it seems to be single-threaded for some reason. Then, at like the last moment, it failed for some doc error already commented on on the AUR.

I was going to throw in the towel & find yet another old Ubuntu image to move my dev environment to, when I remembered: I know Nix!! A simple setup and nix-env -iA gcc-10 later (I am not caring about reproducibility), I had the binaries on my computer in like 3 minutes flat.

Forever cursing GCC for not providing binary releases, much more enamored with NixPkgs for having them so readily available...


You must log in to comment.

in reply to @PolyWolf's post:

It indeed is compiling itself (by default) 3 times, which is more a test that the compiler indeed works than for actually producing a binary. This is common practice in many compilers tho. It's also documented well in the gcc makefile documentation over at https://gcc.gnu.org/onlinedocs/gcc-8.3.0/gccint/Makefile.html :

When GCC is configured for a native configuration, the default action for make is to do a full three-stage bootstrap. This means that GCC is built three times—once with the native compiler, once with the native-built compiler it just built, and once with the compiler it built the second time. In theory, the last two should produce the same results, which ‘make compare’ can check. Each stage is configured separately and compiled into a separate directory, to minimize problems due to ABI incompatibilities between the native compiler and GCC.

What wonders me tho is that GCC doesnt itself provide binary releases. Then again it's a GNU project and they're well known to have made some verrrrry akwards decisions in the past. Guess this is just one of them.

I just ever compiled LLVM (and Clang) myself and that was already an pain beyond words. No amount of -j can speed it up; it just takes ages.