Bug 10161 - unable to build u-boot.imx reliably
Summary: unable to build u-boot.imx reliably
Status: RESOLVED WONTFIX
Alias: None
Product: buildroot
Classification: Unclassified
Component: Other (show other bugs)
Version: unspecified
Hardware: All Linux
: P5 normal
Target Milestone: ---
Assignee: unassigned
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2017-08-03 17:29 UTC by Andrey Yurovsky
Modified: 2018-01-11 07:50 UTC (History)
1 user (show)

See Also:
Host:
Target:
Build:


Attachments
hacky workaround (1.63 KB, patch)
2017-08-03 17:29 UTC, Andrey Yurovsky
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Andrey Yurovsky 2017-08-03 17:29:55 UTC
Created attachment 7156 [details]
hacky workaround

I'm unable to build the u-boot.imx image (for Freescale i.MX SoCs) reliably (that is, it generally works but if I "slow down" my system by making the CPUs busy, or use a slower machine, I can break the build very often).

The issue seems to be in u-boot's build system but I'm not certain so I wanted to check if there's anything that we might be doing in buildroot that should be done differently before taking this up with them.

To build the i.MX image the config should have:

BR2_TARGET_UBOOT_FORMAT_IMX=y

(and be one of the i.MX targets anyway since we need a board target in u-boot). What happens is u-boot will process a template config file and eventually mkimage is run to generate the .imx image using the .cfg files in the board directory. The build will fail because the processed .cfg isn't found and it seems that the .cfg was in fact built, it just raced with the image step.

I have a workaround that, while hacky, shows that we can prevent the problem by making those steps less parallel (attached).
Comment 1 Arnout Vandecappelle 2017-08-04 17:04:57 UTC
Without any other evidence, we can only assume it's an issue with the U-Boot build system. And something that is very hard to fix at the Buildroot level: since we don't know which U-Boot version is being used, we can't easily patch it.

I have done a quick review of the Makefile for imx in the U-Boot source, and it looks good to me. But you haven't really given sufficient information to pinpoint the problem. You should try to reproduce with V=1 so we get usable output. And also try to reproduce outside of Buildroot - should be easy, you basically just have to run 'make CROSS_COMPILE=... ARCH=arm ..._defconfig; make CROSS_COMPILE=... ARCH=arm V=1 u-boot.imx'.

Or perhaps it only happens when you try to build u-boot.imx and u-boot-dtb.imx in parallel?
Comment 2 Andrey Yurovsky 2017-08-04 17:37:30 UTC
Sorry, I meant to say I tried 2017.05 and 2017.07. I'll reproduce this and post output, however the output is a bit unclear (even at V=1) because this is a parallel make problem so we're dealing with some kind of race condition.

I believe that I can only reproduce it by building the way buildroot does (one make invocation with multiple targets), the attached workaround patch shows that we avoid the problem by invoking make twice.

I'll try to reproduce this with u-boot on its own. The Makefile portions dealing with building a .imx image have changed significantly between 2017.05 and 2017.07.
Comment 3 Thomas Petazzoni 2017-08-11 16:13:04 UTC
I also believe that Buildroot is not at fault here, it's U-Boot build system that doesn't have the proper dependencies. Could you report this issue to upstream U-Boot instead ? I'm pretty sure you can reproduce it outside of Buildroot by running the same build commands.
Comment 4 Thomas Petazzoni 2018-01-11 07:50:55 UTC
This problem clearly seems to be a U-Boot issue, so it should be reported to the upstream U-Boot project instead.