I’ve found a good compromise between the two. I’ve disabled most of the desktop profile USE flags and I compile everything with -Ofast and LTO
Portage errors are uncommon, and build failures are easily fixed by disabling compilation flags from package.env. Build failures get less and less common as package.env grows (it’s currently at about 20 lines)
As for the kernel, I just started with a distribution kernel, disabled all modules and only enabled the ones that I need (this can automatically be done with make localmodconfig
). These modules are built-in (so lsmod
usually returns nothing)
I chose systemd because of the huge increase in boot speed
Compiling everything with LTO landed me in a situation where a bunch of packages fail to build because apparently having some LTO’d static libraries can cause issues.
I’m now going to start investigating where exactly the issue is. Trouble is, the package that was giving me errors, depended on a whole lot of static libraries, soooooo… Good luck to me.
Being an ultra-madlad, I used to also -ffast-math everything that didn’t fail, but because I didn’t know about package.env
yet, I found it easier to just keep it off rather than turning it off and on again every time I needed to emerge something that failed because of it.
apparently having some LTO’d static libraries can cause issues
Yeah, I think I’ve had that problem once or twice. I think I found the culprits by disabling all build flags for libraries that seemed related, rebuilding them, running emerge @preserved-rebuild
and then repeating the process to narrow it down
dmesg and PFL help with diagnosing crashes due to libraries, but I don’t think that would help here
If it helps, here’s my package.env:
# Build failures
app-emulation/wine-vanilla noflto O3
sys-apps/groff O3
dev-lang/rust noflto
dev-lang/python O3
sys-auth/polkit O3
sys-libs/libomp noflto
sys-libs/compiler-rt noflto
net-libs/nodejs O3
dev-lang/duktape O3
x11-drivers/xf86-video-intel noflto
# Runtime failures
gnome-extra/cjs noflto O3
sys-devel/llvm noflto