Re: 'make depend' or 'make' bug on recent --current

From: Andrey Chernov <ache_at_freebsd.org>
Date: Wed, 1 Jun 2016 21:49:49 +0300
On 01.06.2016 21:18, Bryan Drewery wrote:
> On 6/1/2016 6:11 AM, Andrey Chernov wrote:
>> Steps to reproduce:
>>
>> cd /usr/src/lib/libc/stdlib
>> touch *div*.c
>> cd ..
>> make depend
>> make
>>
>> And see how imaxdiv.o only is recompiled.
>> No div.o ldiv.o lldiv.o are recompiled.
> 
> My dev system is busy at the moment. I'll test it and get back to you.

I need to add that I do 'make cleandepend/cleandir/cleanobj' + 'make
obj' again and full rebuild with no old files, but the bug repeated again.

>> P.S. new make depend is simple disgusting. It tends to recompile
>> everything in the system if some minor header file is touched, but
> 
> If the header is used by all source files then that is expected.
> 
> However if you do not have a .depend.obj.o file then it is quite
> aggressive with building.  If you touch any header it will rebuild
> everything.  But you shouldn't get into that situation unless you rm -f
> .depend* first.
> 
>> completely forget to recompile source code changes. I suggest to back
>> out all AI in that area.
>> 'make depend' is not time-consuming task and good old way never made
>> mistakes.
> 
> The graph in the original commit for WITH_FAST_DEPEND disagrees.
> https://svnweb.freebsd.org/base?view=revision&revision=290433
> 
> We run the preprocessor once now, not twice.

It sounds good, just implemented bad. You measure some spherical chicken
in vacuum, not what really happens. In the old times I almost never have
clang libs rebuild (few files from there max when FreeBSD_version is
increased), but now I got them fully rebuilt with any header change.
That is the biggest slowdown and not what you try to measure.
Don't ever use 'make world'. Try to rebuild the system incrementally and
you'll see.



Received on Wed Jun 01 2016 - 16:49:59 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:41:05 UTC