[PATCH] Makefile: Fix u-boot-nodtb.bin target

Pali Rohár pali at kernel.org
Wed Nov 4 10:32:46 CET 2020


On Wednesday 04 November 2020 08:53:07 Patrick DELAUNAY wrote:
> Hi Pali,
> 
> 
> > From: Pali Rohár <pali at kernel.org>
> > Sent: lundi 2 novembre 2020 15:16
> > 
> > On Monday 02 November 2020 13:25:56 Patrick DELAUNAY wrote:
> > > Hi Tom and Pali,
> > >
> > > > From: U-Boot <u-boot-bounces at lists.denx.de> On Behalf Of Tom Rini
> > > > Sent: samedi 24 octobre 2020 16:52
> > > >
> > > > On Wed, Oct 07, 2020 at 03:39:40PM +0200, Pali Rohár wrote:
> > > >
> > > > > This change fixes two issues when building u-boot-nodtb.bin target:
> > > > >
> > > > > * Remove intermediate binary u-boot-nodtb.bin from disk when static_rela
> > > > >   call (which modifies u-boot-nodtb.bin binary) failed. It is required
> > > > >   because previous objcopy call creates binary and static_rela finish it.
> > > > >
> > > > > * Do not call static_rela cmd when u-boot-nodtb.bin binary was not
> > > > >   created/updated by previous objcopy call.
> > > > >
> > > > > Second fix would ensure that u-boot-nodtb.bin binary is not
> > > > > updated when all prerequisites were up-to-date. And therefore
> > > > > final binary u-boot.bin is not updated in case all prerequisites
> > > > > were not modified and were up-to-date.
> > > > >
> > > > > Now running 'make SOURCE_DATE_EPOCH=0 u-boot.bin' second time
> > now
> > > > does
> > > > > not touch u-boot.bin binary in case nothing was modified, so GNU
> > > > > make can correctly detect that everything is up-to-date.
> > > > >
> > > > > Signed-off-by: Pali Rohár <pali at kernel.org>
> > > > > Reviewed-by: Simon Glass <sjg at chromium.org>
> > > >
> > > > Applied to u-boot/master, thanks!
> > >
> > > Since this patch is applyied on master branch, I have error when I compile with
> > the verbose option V=1.
> > >
> > > I don't found a correction for this issue until now... except revert this commit.
> > >
> > > For information: I use stm32mp1 platform = ARMv7 32bits I have the
> > > error:
> > >
> > > scripts/Kbuild.include:220: *** Recursive variable 'echo-cmd' references itself
> > (eventually).  Stop.
> > > make[1]: *** Waiting for unfinished jobs....
> > > make -f /local/home/frq07632/views/u-boot/scripts/Makefile.build
> > > obj=arch/arm/dts dtbs
> > 
> > Hello Patrick!
> > 
> > Now I was able to trigger this issue, but it seems to be present only sometimes.
> > Calling make more times hides that issue, so it looks like something broken in
> > Kconfig dependency generator for Makefiles... Or maybe something dependent on
> > GNU make...
> > 
> > I played a bit with it and after changing following line in that patch
> > 
> > shell_cmd = { $(echo-cmd) $(cmd_$(1)); }
> > 
> > by
> > 
> > shell_cmd = { $(call echo-cmd,$(1)) $(cmd_$(1)); }
> > 
> > that issue disappeared. But because it triggered on my machine only sometimes, I
> > do not know if it finally fixes it.
> 
> on my machine (Ubuntu 18.04 / fast laptop with Core i7) it is 100% reproduce with:
> 1/ gcc version 9.2.1 20191025 (GNU Toolchain for the A-profile Architecture 9.2-2019.12 (arm-9.10))
> 
> 2/ make --version
> GNU Make 4.1
> Built for x86_64-pc-linux-gnu
> 
> 3/ the request
> export CROSS_COMPILE="arm-none-linux-gnueabihf-"
> make stm32mp15_basic_defconfig
> make V=1 all
> 
>  > Could you please try this change? And do you have reproducer how to _always_
> > trigger it and not only sometimes?
> 
> I test it with the change:
> 
> -shell_cmd = { $(echo-cmd) $(cmd_$(1)); }
> +shell_cmd = { $(call echo-cmd, $(1)) $(cmd_$(1)); }
> 
> And I never reproduced the error again and command is correctly displayed with V=1:
> 
> arm-none-linux-gnueabihf-objcopy --gap-fill=0xff  -j .text -j .secure_text -j .secure_data -j .rodata -j .hash -j .data -j .got -j .got.plt -j .u_boot_list -j .rel.dyn -j .binman_sym_table -j .text_rest -j .dtb.init.rodata -j .efi_runtime -j .efi_runtime_rel -O binary   u-boot u-boot-nodtb.bin && {  true; } || rm -f u-boot-nodtb.bin
> 
> or without option 
> 
> OBJCOPY u-boot-nodtb.bin
> 
> So I think that the issue is fixed.

Ok, thank you for testing! I will send a proper git format patch to ML.


More information about the U-Boot mailing list