Re: Git and buildworld running at the same time

From: Brad Davis <brd_at_FreeBSD.org>
Date: Sat, 13 Sep 2025 17:15:18 UTC
On Sat, Sep 13, 2025, at 10:06 AM, Warner Losh wrote:
> 
> 
> On Sat, Sep 13, 2025 at 9:54 AM Brad Davis <brd@freebsd.org> wrote:
>> __
>> On Sat, Sep 13, 2025, at 9:40 AM, Warner Losh wrote:
>>> 
>>> 
>>> On Sat, Sep 13, 2025 at 9:28 AM Brad Davis <brd@freebsd.org> wrote:
>>>> On Sat, Sep 13, 2025, at 8:57 AM, bob prohaska wrote:
>>>> > Lately I've noticed that sometimes while running buildworld a top
>>>> > window reports git running also. Up to now, I've surmised that
>>>> > this is intentional, with git providing some housekeeping function.
>>>> >
>>>> > Yesterday a buildworld session was accompanied by a prolonged
>>>> > interval of git running also, with a large memory footprint,
>>>> > near 1GB. That seems rather excessive.
>>>> >
>>>> > At the same time, it dawned on me that my recent habit has been
>>>> > to run git pull, immediately followed by buildworld. Might it be
>>>> > prudent to wait (how long?) to let git finish any housekeeping
>>>> > triggered by the pull command? It seems likely that any overlap
>>>> > could readily lead to inconsistencies which might account for
>>>> > some of the buildworld problems I've been encountering lately.
>>>> 
>>>> This is part of the normal build process and how the output of uname -a includes bits like this: main-n280188-2024887abc7d-dirty or main-n280188-2024887abc7d
>>>> 
>>>> To find out of the src tree is pristine or dirty the build process uses git to find out.
>>> 
>>> Though that's only for the kernel, not for world builds. Right?
>> 
>> It happens for world builds as well.. newvers.sh runs git (used to be svnlite) and is called in Makefile.inc1.
> 
> It doesn't need git for this:
> 
> # Set VERSION for CTFMERGE to use via the default CTFFLAGS=-L VERSION.
> .for _V in BRANCH REVISION TYPE
> .if !defined(_${_V})
> ${_V}!=  eval $$(awk '/^${_V}=/{print}' ${SRCTOP}/sys/conf/newvers.sh); echo $$${_V}
> .export _${_V}
> .endif
> .endfor
> 
> In fact, it's not even running newvers.sh, just using awk to grep out these variables. Though it should be using newvers.sh -V here (which specifically doesn't run git).

Ooh, I see, good catch!


Regards,
Brad Davis