What's your fastest buildworld time?

I don't think so... but the way make(1) works, it would stop if there are syntax errors in the .conf files... it would let you know about those errors, no extra utilities required. The compilation process would not start. Well, it will start if the misconfig is not a showstopper, like not including the -O 3 flag ;)
That's only if you make changes to /etc/make.conf and manually run make ... (preferably while you are watching the paint dry). However, if I make small changes and run the build using what I call "set it & forget it" approach where I use commands such as ssh youngunix@192.168.1.32 'sh mk_conf_chgs.sh && sh buildworld.sh' and the build fails due to the changes I made, then that would be a major and unpleasant setback.

Which is worse, -O3 or cat /dev/null > /:-/
 
That's only if you make changes to /etc/make.conf and manually run make ... (preferably while you are watching the paint dry). However, if I make small changes and run the build using what I call "set it & forget it" approach where I use commands such as ssh youngunix@192.168.1.32 'sh mk_conf_chgs.sh && sh buildworld.sh' and the build fails due to the changes I made, then that would be a major and unpleasant setback.

Which is worse, -O3 or cat /dev/null > /:-/
You gotta remember to run make clean BEFORE running plain make - that will solve a LOT of errors for you if you need to edit a config file and re-compile. Skipping make clean will give you major and unpleasant setbacks.

As for which is worse - it's clearly the latter.
 
… Current …

… jobs …

If you haven't seen the very recent discussion about whitespace between -j and jobs number: tl;dr a __FreeBSD_version bump was committed half an hour ago.

"… Ports need to be rebuilt anew following this change to get off of theold libmd.so.6."

In the meantime, I have:

Code:
% file /lib/libmd.so.6
/lib/libmd.so.6: symbolic link to libmd.so.7
%
 
Last edited:
You gotta remember to run make clean BEFORE running plain make - that will solve a LOT of errors for you if you need to edit a config file and re-compile. Skipping make clean will give you major and unpleasant setbacks.

As for which is worse - it's clearly the latter.
Cleaning after make contradicts using WITH_META_MODE, unless I'm missing something.

Metamode is an incremental build system for FreeBSD, which uses bmake's meta mode and filemon(4) to create metadata files, substantially decreasing build times by only building what has changed since the last build.

Note: Enabling META_MODE also implies (enables) NO_CLEAN in the buildworld process[1]

[1]https://wiki.freebsd.org/MetaMode
 
I tried rebuilding again today and got the same results: 5hrs 42min total (WORLD & KERNEL).
Would CPUTYPE?=raptorlake be the culprit? I know that CPU is supported other wise FreeBSD won't run on that machine, but it's not listed in /usr/share/mk/bsd.cpu.mk (see FreeBSD Git repo).
 
Read that page about MetaMode carefully:


So no, there's no contradiction there - you still gotta do some cleanup after the previous round of compilation. Same idea.
Yeah, I don't think you read it "carefully". There is a reference at the bottom of the page that states make cleanworld needs to be run once and that's already done after the 1st build run.

......
You also need to 'make cleanworld' once. If objects don't have .meta
files then META_MODE won't do the right thing on an incremental build.
.......
 
I tested a different machine (not an OS copy of the other one) with same configs and here are the results:
Specs: i7-10700T, 16GB RAM, 250GB SSD.
5hrs25min is a long time! Any tips on reducing this time aside from the ones stated in my other previous posts?

--------------------------------------------------------------
>>> World built in 16577 seconds, ncpu: 16
--------------------------------------------------------------

--------------------------------------------------------------
>>> Kernel(s) GENERIC built in 2336 seconds, ncpu: 16
--------------------------------------------------------------
 
I tested a different machine (not an OS copy of the other one) with same configs and here are the results:
Specs: i7-10700T, 16GB RAM, 250GB SSD.
5hrs25min is a long time! Any tips on reducing this time aside from the ones stated in my other previous posts?

--------------------------------------------------------------
>>> World built in 16577 seconds, ncpu: 16
--------------------------------------------------------------

--------------------------------------------------------------
>>> Kernel(s) GENERIC built in 2336 seconds, ncpu: 16
--------------------------------------------------------------

Yeah, 5.5 hours is a surprisingly slow result, especially considering your specs... Especially if that was a first-time compilation, not a re-compilation that was run prior to a make clean ...
 
Yeah, 5.5 hours is a surprisingly slow result, especially considering your specs... Especially if that was a first-time compilation, not a re-compilation that was run prior to a make clean ...
I'm always happy to guide lost souls into the right path. Here you go buddy, and I hope everything works out well for you and a speedy recovery.
 
Been away from FreeBSD a good 20 years...

Just spent a few days re-familiarizing myself with the system and installing 14.2-RELEASE on one of my two main systems.

It's my hope to use FreeBSD as my main system for software development, coming from Windows 11

System Specifications:
AMD Ryzen 9 7950X, 64GB DDR5, T705 4TB NVMe, Nvidia RTX 4060, Gigabyte X670 mainboard.
64GB swap space (in the olden days, swap size should match physical memory size), tmpfs loaded at boot

Ran builds from within XFCE4, with "bpytop" running in separate terminal window.

Code:
14950.026u 568.024s 9:01.19 2867.3%    86257+1335k 26035+686772io 156767pf+0w
1286.794u 103.173s 0:48.76 2850.6%    77723+1129k 2+3749521io 72402pf+0w
objcopy --only-keep-debug ld.lld.full ld.lld.debug
--- ld.lld ---
objcopy --strip-debug --add-gnu-debuglink=ld.lld.debug  ld.lld.full ld.lld
       58.12 real      1555.70 user       102.54 sys
--- buildworld_epilogue ---

--------------------------------------------------------------
>>> World build completed on Mon Jan 13 20:12:09 CET 2025
>>> World built in 541 seconds, ncpu: 32, make -j32
--------------------------------------------------------------
--- kernel.debug ---
objcopy --only-keep-debug kernel.full kernel.debug
--- kernel ---
objcopy --strip-debug --add-gnu-debuglink=kernel.debug  kernel.full kernel
       48.22 real      1281.19 user        97.48 sys
--------------------------------------------------------------
>>> Kernel build for GENERIC completed on Mon Jan 13 20:12:58 CET 2025
--------------------------------------------------------------
>>> Kernel(s)  GENERIC built in 49 seconds, ncpu: 32, make -j32
--------------------------------------------------------------

Built with (stole this from an earlier post to keep consistency)

Code:
cd /usr/src && make clean && time make -j32 buildworld > & buildworld.log && time make -j32 buildkernel > & buildkernel.log && tail buildworld.log && tail buildkernel.log

If I find the time, I'll try on my other machine, an Intel 13900KF, 192GB DDR5, T705 4TB NVMe, RTX 4090, Asus Z790 mainboard.
 
buildworld > & buildworld.log && time make -j32 buildkernel > & buildkernel.log && tail buildworld.log
buildworld|kernel also comes with maximum jobs and logging as targets: buildworld-jobs, buildkernel-jobs.

/usr/src/UPDATING
Code:
20230420:
        Add jobs.mk to save typing. Enables -j${JOB_MAX} and logging
        eg.
                make buildworld-jobs
        runs
                make -j${JOB_MAX} buildworld > ../buildworld.log 2>&1

        where JOB_MAX is derrived from ncpus in local.sys.mk if not set in env.
 
Yes, I want to ask the experts: is there such an option -s when building. Does this option affect the speed of building or not? If it only displays what has already been compiled, and not the entire compilation process, then perhaps the build time increases or not?
4.5 hours on a machine with an Intel CORE i5-2300_@_2.8GHz processor (Socket 1155)/8GB RAM.
make -s -j4 buildworld
 
Yes, I want to ask the experts: is there such an option -s when building. Does this option affect the speed of building or not? If it only displays what has already been compiled, and not the entire compilation process, then perhaps the build time increases or not?
4.5 hours on a machine with an Intel CORE i5-2300_@_2.8GHz processor (Socket 1155)/8GB RAM.
make -s -j4 buildworld
Well, there is, but read the manpage for the command you're issuing when building something:

make(1):
-S Stop processing if an error is encountered. This is the de-
fault behavior and the opposite of -k.

-s Do not echo any commands as they are executed. Equivalent to
specifying `@' before each command line in the makefile.

clang(1) has this to say about the -s option:
OPTIONS
Stage Selection Options
-E
Run the preprocessor stage.

-fsyntax-only
Run the preprocessor, parser and semantic analysis stages.

-S Run the previous stages as well as LLVM generation and optimiza-
tion stages and target-specific code generation, producing an
assembly file.

Given that, it doesn't look like the -s flag affects the building speed all that much. If you want to control what's written out to the terminal when you build - the manpages will tell you about the other flags that can be used to accomplish that.
 
Back
Top