RE: 13.2 BETA2: how do debug META_MODE?

From: Mark Millard <>
Date: Tue, 21 Feb 2023 04:44:59 UTC
Peter <> wrote on
Date: Tue, 21 Feb 2023 03:45:12 UTC :

> on /some/ of my nodes, META_MODE seems not being honored anymore:
> I had to build them another time, and the lengthy lib/clang gets
> built all over again (tried two times).
> This is so since 13.2 (BETA2). It did work in 13.1 (RELENG), at least
> according to the timing from the logfiles. 
> Now I'm trying to figure out the difference, because I have some
> nodes where it appears to more-or-less work (have seen buildworld
> take 5 minutes), and others where it doesn't (take an hour to build).
> The thing is scripted, so it is not so very likely an operator error
> (while not impossible either).
> But it seems difficult to figure out details: "make -n" seems to not
> care about META_MODE, while META_MODE suppresses all useful output from
> make. And the docs say there are *.meta files (yes there are), but no
> info about how to verify their content, or how to get make tell what
> it is going to do and why (and the buildworld is not the most easy
> to understand target)...
> So, some inspiration would be welcome...

On thing to check on is if filemon.ko is loaded and operational.
META_MODE greatly depends on it.

Another thing to know is that the following are very different
for what all is built  for the "(again #0)" line vs. the other
two "again" lines, using buildworld as an example context.
Imagine here the the first buildworld rebuilds llvm/clang

# cd /usr/src/
# env WITH_META_MODE=yes make buildworld
# env WITH_META_MODE=yes make installworld
# env WITH_META_MODE=yes make buildworld (again #0)
## no more rebuilds below?
# env WITH_META_MODE=yes make buildworld (again #1)
# env WITH_META_MODE=yes make buildworld (again #2)

Unfortunately, the some of the install activity registers
as activity that is to cause later rebuild activity:
updated file dates.

There are also issues of sort of a feedback loop: rm
ends up updated (deleted and replaced) by install but rm
was also listed as part of the sequence of replacing some
other files. Result? The rm removal/replacement ends up
meaning the files are to be regenerated, not just recopied.
There is a long list of such commands, not just rm.

"again #0" will rebuild llvm/clang. The other two "again"s
will not.


and: .

Mark Millard
marklmi at