[coreboot] [PATCH] v3: Kill unnecessary rebuilds

Carl-Daniel Hailfinger c-d.hailfinger.devel.2006 at gmx.net
Thu Nov 6 15:21:16 CET 2008


On 06.11.2008 14:59, Carl-Daniel Hailfinger wrote:
> On 06.11.2008 14:46, Stefan Reinauer wrote:
>   
>> Carl-Daniel Hailfinger wrote:
>>   
>>     
>>> Every time we run make in a v3 tree, lar, lzma, nrv2b and the option
>>> table get rebuilt unconditionally due to slightly incorrect dependencies.
>>> That's wasteful and may hide other dependency bugs.
>>> Fix the lar, lzma, nrv2b and option table dependencies.
>>>
>>> This trims down recompilation time a lot. The only remaining stuff being
>>> rebuilt is:
>>> ~/corebootv3-better_dependencies> make
>>>   CP      build/config.h
>>>   GEN     build/build.h
>>>   LAR     build/coreboot.rom
>>>   PAYLOAD none (as specified by user)
>>>   CP      build/bios.bin
>>>   DONE
>>>
>>> Signed-off-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006 at gmx.net>
>>>
>>>   
>>>     
>>>       
>> Acked-by: Stefan Reinauer <stepan at coresystems.de>
>>   
>>     
>
> Thanks, committed in r984.
>   

I wanted to clean this up further, but I'm hitting a big dependency bug.
Try this patch and watch make explode:

Index: util/lar/Makefile
===================================================================
--- util/lar/Makefile	(Revision 984)
+++ util/lar/Makefile	(Arbeitskopie)
@@ -22,10 +22,8 @@
 LARDIR := $(obj)/util/lar/
 
 COMPRESSOR := $(LZMA_OBJ) $(obj)/util/lzma/lzma-compress.o
-LARDIR     += $(obj)/util/lzma/
 
 COMPRESSOR += $(obj)/util/nrv2b/nrv2b-compress.o
-LARDIR     += $(obj)/util/nrv2b/
 
 LAROBJ_ABS := $(patsubst %,$(obj)/util/lar/%,$(LAROBJ))
 


  HOSTCC  build/util/lar/lib.o
  HOSTCXX build/util/lzma/LZMAEncoder.o
Assembler messages:
Fatal error: can't create
/sources/tmptrees/corebootv3-better_dependencies/build/util/lzma/LZMAEncoder.o:
No such file or directory
make: ***
[/sources/tmptrees/corebootv3-better_dependencies/build/util/lzma/LZMAEncoder.o]
Fehler 1

The obvious bug is that build/util/lzma/LZMAEncoder.o does not depend on
build/util/lzma/ and that means compilation has no target directory.
As long as make is not run in parallel mode, you will not see the bug in
svn HEAD because make first creates build/util/lzma/ and then compiles
files there. Once you run in parallel mode, it is entirely possible that
the directory creation happens after the compile attempt and stuff will
explode even with current svn HEAD.

Fixing this would require us to add build/util/lzma/ as a dependency to
every lzma object in util/lzma/Makefile. And that's the point where I
ask about better solutions.


Regards,
Carl-Daniel

-- 
http://www.hailfinger.org/





More information about the coreboot mailing list