[U-Boot] build fail due to dependence error

Patrick DELAUNAY patrick.delaunay at st.com
Mon Jul 9 07:18:21 UTC 2018


> From: U-Boot <u-boot-bounces at lists.denx.de> On Behalf Of Masahiro Yamada
> Sent: lundi 9 juillet 2018 07:27
> Subject: Re: [U-Boot] build fail due to dependence error
> 
> Hi.
> 
> 
> 2018-07-09 11:39 GMT+09:00 Simon Glass <sjg at chromium.org>:
> > +Masahiro who might know
> >
> > On 2 July 2018 at 01:23, Dr. Philipp Tomsich
> > <philipp.tomsich at theobroma-systems.com> wrote:
> >> Kever,
> >>
> >> Could you check the build artifacts in Jenkins to see whether after
> >> the ‘make [configname]_defconfig’, the link for asm/arch is correctly
> >> set up?
> >>
> >> Thanks,
> >> Philipp.
> >>
> >> On 2 Jul 2018, at 09:54, Kever Yang <kever.yang at rock-chips.com> wrote:
> >>
> >> Hi Simon,
> >>
> >>
> >> On 06/30/2018 12:19 PM, Simon Glass wrote:
> >>
> >> Hi,
> >>
> >> On 28 June 2018 at 01:41, Dr. Philipp Tomsich
> >> <philipp.tomsich at theobroma-systems.com> wrote:
> >>
> >> Kever,
> >>
> >> is the link for ‘asm’ set up correctly?
> >>
> >> Thanks,
> >> Philipp.
> >>
> >> On 28 Jun 2018, at 10:38, Kever Yang <kever.yang at rock-chips.com> wrote:
> >>
> >> Hi Simon,
> >>
> >>        Do you have any idea about this error?
> >>
> >>
> >> CC      lib/asm-offsets.s
> >>  CC      arch/arm/lib/asm-offsets.s
> >> fixdep: error opening config file:
> >> arch/arm/include/asm/arch/hardware.h: No such file or directory
> >> Kbuild:64: recipe for target 'arch/arm/lib/asm-offsets.s' failed
> >> make[1]: *** [arch/arm/lib/asm-offsets.s] Error 2
> >> make[1]: *** 正在等待未完成的任务....
> >>  CHK     include/config.h
> >> Makefile:1340: recipe for target 'prepare0' failed
> >>
> >> Thanks,
> >> - Kever
> >>
> >> On 06/01/2018 05:59 PM, Kever Yang wrote:
> >>
> >> Hi Guys,
> >>
> >>     I met below error from time to time when build U-Boot project.
> >>
> >> fixdep: error opening config file:
> >> arch/arm/include/asm/arch/hardware.h: No such file or directory
> >>
> >>    The folder 'arch/arm/include/asm/arch' is a link for
> >> 'arch/arm/include/asm/arch-rockchip',
> >>
> >> which is dynamic generate by build system, I thinks there should be
> >> some dependency issue?
> >>
> >>    How to fix this kind of issue?
> >>
> >> I am not sure what is going on there. I don't see this.
> >>
> >> Are you using 'make distclean' or 'make mrproper' on your object tree
> >> every now and then?
> >>
> >>
> >> This is happen sometimes in our Jenkins verify, It will gone when I
> >> rebase the patch(re-build without any change), we do 'make distclean'
> >> every time before a new build.
> 
> 
> Hmm, I cannot reproduce this error.
> 
> 
> I have no clue about this.

Just for information, I have also the same issue sometime in the same context (Jenkins build) for stm32mp1 board.

The error is : "Missing stm32.h file in the directory include/asm/arch/"

I try to understood the dependency issue, but I don't found any issue: 
the needed symbolic link is done just before in the trace of the artifact...

2018-03-03-17-00-02] | if [ -d /opt/STM/workspace/workdir/rdk/build-stm32mp1/tmp-glibc/work/stm32mp1-stm32mpvalid-linux-gnueabi/u-boot-basic-stm32mp/2018.01-git-AUTOINC+d741b91b3c.r0/git/arch/arm/mach-stm32mp/include/mach ]; then   \
[2018-03-03-17-00-02] |        dest=arch/arm/mach-stm32mp/include/mach;                 \
[2018-03-03-17-00-02] | else                                                                 \
[2018-03-03-17-00-02] |        dest=arch/arm/include/asm/arch-stm32mp;       \
[2018-03-03-17-00-02] | fi;                                                                  \
[2018-03-03-17-00-02] | ln -fsn /opt/STM/workspace/workdir/rdk/build-stm32mp1/tmp-glibc/work/stm32mp1-stm32mpvalid-linux-gnueabi/u-boot-basic-stm32mp/2018.01-git-AUTOINC+d741b91b3c.r0/git/$dest include/asm/arch
[2018-03-03-17-00-02] | fixdep: error opening config file: include/asm/arch/stm32.h: No such file or directory

I don't understood why the dependency failed....

Perhaps it is because in our Jenkins task the parallel compilation is requested with high value... (-J 8)
and the dependency check is done in parallel of the link creation....

The  dependancy are :
./arch/arm/lib/asm-offsets.c => Kbuild 

with:
lib/asm-offsets.s: lib/asm-offsets.c FORCE
 

but the link on the directory is requested only by the rules about config.h not for stm32.h (or hardware.h in your case):
./scripts/Makefile.autoconf:115:include/config.h: scripts/Makefile.autoconf create_symlink FORCE

Perhaps add  a simple rule in some makefile can solve the issue....

For me

	include/asm/arch/stm32.h: create_symlink

or for you :

	include/asm/arch/hardware.h: create_symlink


or it is better to add generic dependancy in ./scripts/Makefile.autoconf ?

	include/asm/arch/*.h: create_symlink


> --
> Best Regards
> Masahiro Yamada

Regards

Patrick.


More information about the U-Boot mailing list