RE: 15.0 LONG buildworld time

From: Mark Millard <marklmi_at_yahoo.com>
Date: Fri, 15 Aug 2025 22:08:26 UTC
David Cross <david_at_crossfamilyweb.com> wrote on
Date: Fri, 15 Aug 2025 21:37:39 UTC :

> I just upgraded one of my machines to 15.0 for testing some USB related 
> work (see other thread), and one thing I noticed was that AFTER 
> upgrading to 15.0 build times *doubled*.  This is unusual since the 
> *first* build is typically the longest since it has to build the new 
> toolchain before compiling, and after that it just uses the system build 
> chain.
> 
> 
> In my case the build time (single threaded) was 38,000 seconds on 14.2, 
> however after rebooting and doing a second build it shot to 76,000 
> seconds (about) -- I had rebuilt a second time since I thought the 
> existence of a 14.2 library for SSL at build time contaminated the 
> build, it didn't, but an error I got at startup from unbound made me 
> think it did.
> 
> 
> It seems the GENERIC kernel in the 15.0 branch has some extra debugging 
> and validation, but builds shouldn't be primarily kernel limited should 
> they?  Build options are mostly stock, I add -O2, and REPTOLINE options, 
> and set CPU type to my native (raptorlake).  Nothing else of note, and 
> certainly have never had any other issues.

Well, an even bigger build is when poudriere bulk -Ca or the like
builds nearly all the port-packages, pkg 2.2.1+ in use. I've
experimented with such and found a large difference for
main-amd64p-default (so: latest) based on:

WITH_MALLOC_PRODUCTION and WITHOUT_LLVM_ASSERTIONS
vs.
WITHOUT_MALLOC_PRODUCTION and WITH_LLVM_ASSERTIONS

That is with the exact same (unchanging) boot-kernel
and boot-world but with different poudriere jail
world builds.

So, if you want faster build times under main [15 for
now], try a world that was built with
WITH_MALLOC_PRODUCTION and WITHOUT_LLVM_ASSERTIONS
to then do the to-be-faster builds using that new
build. Bootstrapping that might not have a way to
avoid the issue initially. Also, I've not tested
world or kernel build contexts, so my generalization
here could be false and I'd not know it.

Unfortunately, not even pkgbase provides such a pre-built
main-* world, despite providing both the (debug) kernel/
and the kernel.GENERIC-NODEBUG/ . I had to use my own
personal world build for the poudriere jail to test what
turned out to be so much faster.

The official FreeBSD port-package build servers for
main-* use poudriere jail worlds that are based on:

WITHOUT_MALLOC_PRODUCTION and WITH_LLVM_ASSERTIONS

and this leads to much longer build times compared
to the official, say, 142*-default (so: latest)
builders, since they use:

WITH_MALLOC_PRODUCTION and WITHOUT_LLVM_ASSERTIONS

instead.

(I've not tried to issolate the effect of the pair
for the other 2 combinations and do not intend to.)

===
Mark Millard
marklmi at yahoo.com