From mboxrd@z Thu Jan 1 00:00:00 1970 From: Patrick DELAUNAY Date: Wed, 4 Nov 2020 08:53:07 +0000 Subject: [PATCH] Makefile: Fix u-boot-nodtb.bin target In-Reply-To: <20201102141533.fegm33d4i2aumxcw@pali> References: <20201007133940.21028-1-pali@kernel.org> <20201024145138.GC14816@bill-the-cat> <20201102141533.fegm33d4i2aumxcw@pali> Message-ID: <1604479987440.27440@st.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Hi Pali, > From: Pali Roh?r > 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 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 > > > > Reviewed-by: Simon Glass > > > > > > 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. Regards Patrick