diff mbox series

[v2] u-boot: set B = WORKDIR/build

Message ID 4641ec5ba60aa447167bbee07fac87a3f6da3aea.1720172390.git.joerg.sommer@navimatix.de
State New
Headers show
Series [v2] u-boot: set B = WORKDIR/build | expand

Commit Message

Jörg Sommer July 5, 2024, 9:39 a.m. UTC
From: Jörg Sommer <joerg.sommer@navimatix.de>

The build of u-boot fails, if `UBOOT_MACHINE` (instead of `UBOOT_CONFIG`) is
used. U-boot doe not like the setting of `O=$S` in the make call, which
happen when `UBOOT_MACHINE` is used. Therefore, use a dedicated build
directory to circumvent the conflict `$B == $S`.

Yocto build message:

```
| if [ -f /build/tmp/work/da850_funkwerk_rp1_eval_board-fwkos-linux-gnueabi/u-boot-variscite/1.0-r0.fwkos.6/git/.config -o -d /build/tmp/work/da850_funkwerk_rp1_eval_board-fwkos-linux-gnueabi/u-boot-variscite/1.0-r0.fwkos.6/git/include/config ]; then \
| 	echo >&2 "  /build/tmp/work/da850_funkwerk_rp1_eval_board-fwkos-linux-gnueabi/u-boot-variscite/1.0-r0.fwkos.6/git is not clean, please run 'make mrproper'"; \
| 	echo >&2 "  in the '/build/tmp/work/da850_funkwerk_rp1_eval_board-fwkos-linux-gnueabi/u-boot-variscite/1.0-r0.fwkos.6/git' directory.";\
| 	/bin/false; \
| fi;
|   /build/tmp/work/da850_funkwerk_rp1_eval_board-fwkos-linux-gnueabi/u-boot-variscite/1.0-r0.fwkos.6/git is not clean, please run 'make mrproper'
|   in the '/build/tmp/work/da850_funkwerk_rp1_eval_board-fwkos-linux-gnueabi/u-boot-variscite/1.0-r0.fwkos.6/git' directory.
| make[1]: Leaving directory '/build/tmp/work/da850_funkwerk_rp1_eval_board-fwkos-linux-gnueabi/u-boot-variscite/1.0-r0.fwkos.6/git'
| make[1]: *** [/build/tmp/work/da850_funkwerk_rp1_eval_board-fwkos-linux-gnueabi/u-boot-variscite/1.0-r0.fwkos.6/git/Makefile:1928: prepare3] Error 1
| ERROR: oe_runmake failed
```

U-Boot test:

```
% make O=$PWD all
make[1]: Entering directory '/home/joerg/git/u-boot'
  UPD     include/generated/timestamp_autogenerated.h
  Using /home/joerg/git/u-boot as source for U-Boot
  /home/joerg/git/u-boot is not clean, please run 'make mrproper'
  in the '/home/joerg/git/u-boot' directory.
make[1]: *** [/home/joerg/git/u-boot/Makefile:1928: prepare3] Error 1
make[1]: Leaving directory '/home/joerg/git/u-boot'
make: *** [Makefile:177: sub-make] Error 2
```

Signed-off-by: Jörg Sommer <joerg.sommer@navimatix.de>
---
 meta/recipes-bsp/u-boot/u-boot.inc | 2 ++
 1 file changed, 2 insertions(+)

Comments

Richard Purdie July 5, 2024, 10:03 a.m. UTC | #1
On Fri, 2024-07-05 at 11:39 +0200, Jörg Sommer via lists.openembedded.org wrote:
> From: Jörg Sommer <joerg.sommer@navimatix.de>
> 
> The build of u-boot fails, if `UBOOT_MACHINE` (instead of `UBOOT_CONFIG`) is
> used. U-boot doe not like the setting of `O=$S` in the make call, which
> happen when `UBOOT_MACHINE` is used. Therefore, use a dedicated build
> directory to circumvent the conflict `$B == $S`.
> 
> Yocto build message:
> 
> ```
> > if [ -f /build/tmp/work/da850_funkwerk_rp1_eval_board-fwkos-linux-gnueabi/u-boot-variscite/1.0-r0.fwkos.6/git/.config -o -d /build/tmp/work/da850_funkwerk_rp1_eval_board-fwkos-linux-gnueabi/u-boot-variscite/1.0-r0.fwkos.6/git/include/config ]; then \
> > 	echo >&2 "  /build/tmp/work/da850_funkwerk_rp1_eval_board-fwkos-linux-gnueabi/u-boot-variscite/1.0-r0.fwkos.6/git is not clean, please run 'make mrproper'"; \
> > 	echo >&2 "  in the '/build/tmp/work/da850_funkwerk_rp1_eval_board-fwkos-linux-gnueabi/u-boot-variscite/1.0-r0.fwkos.6/git' directory.";\
> > 	/bin/false; \
> > fi;
> >   /build/tmp/work/da850_funkwerk_rp1_eval_board-fwkos-linux-gnueabi/u-boot-variscite/1.0-r0.fwkos.6/git is not clean, please run 'make mrproper'
> >   in the '/build/tmp/work/da850_funkwerk_rp1_eval_board-fwkos-linux-gnueabi/u-boot-variscite/1.0-r0.fwkos.6/git' directory.
> > make[1]: Leaving directory '/build/tmp/work/da850_funkwerk_rp1_eval_board-fwkos-linux-gnueabi/u-boot-variscite/1.0-r0.fwkos.6/git'
> > make[1]: *** [/build/tmp/work/da850_funkwerk_rp1_eval_board-fwkos-linux-gnueabi/u-boot-variscite/1.0-r0.fwkos.6/git/Makefile:1928: prepare3] Error 1
> > ERROR: oe_runmake failed
> ```
> 
> U-Boot test:
> 
> ```
> % make O=$PWD all
> make[1]: Entering directory '/home/joerg/git/u-boot'
>   UPD     include/generated/timestamp_autogenerated.h
>   Using /home/joerg/git/u-boot as source for U-Boot
>   /home/joerg/git/u-boot is not clean, please run 'make mrproper'
>   in the '/home/joerg/git/u-boot' directory.
> make[1]: *** [/home/joerg/git/u-boot/Makefile:1928: prepare3] Error 1
> make[1]: Leaving directory '/home/joerg/git/u-boot'
> make: *** [Makefile:177: sub-make] Error 2
> ```
> 
> Signed-off-by: Jörg Sommer <joerg.sommer@navimatix.de>
> ---
>  meta/recipes-bsp/u-boot/u-boot.inc | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/meta/recipes-bsp/u-boot/u-boot.inc b/meta/recipes-bsp/u-boot/u-boot.inc
> index fc36c21ec2..bdc4b60e43 100644
> --- a/meta/recipes-bsp/u-boot/u-boot.inc
> +++ b/meta/recipes-bsp/u-boot/u-boot.inc
> @@ -9,6 +9,8 @@ inherit uboot-config uboot-extlinux-config uboot-sign deploy python3native kerne
>  
>  DEPENDS += "swig-native"
>  
> +B = "${WORKDIR}/build"
> +
>  EXTRA_OEMAKE = 'CROSS_COMPILE=${TARGET_PREFIX} CC="${TARGET_PREFIX}gcc ${TOOLCHAIN_OPTIONS} ${DEBUG_PREFIX_MAP}" V=1'
>  EXTRA_OEMAKE += 'HOSTCC="${BUILD_CC} ${BUILD_CFLAGS} ${BUILD_LDFLAGS}"'
>  EXTRA_OEMAKE += 'STAGING_INCDIR=${STAGING_INCDIR_NATIVE} STAGING_LIBDIR=${STAGING_LIBDIR_NATIVE}'
> 

I did a little digging as I wondered why this wasn't already the case.
That variable is set in u-boot-common.inc along with a cleandirs for B.
Are you able to use that common inc file? I didn't check the situation
on older releases.

Cheers,

Richard
Jörg Sommer July 5, 2024, 10:35 a.m. UTC | #2
Richard Purdie schrieb am Fr 05. Jul, 11:03 (GMT):
> On Fri, 2024-07-05 at 11:39 +0200, Jörg Sommer via lists.openembedded.org wrote:
> > From: Jörg Sommer <joerg.sommer@navimatix.de>
> > 
> > The build of u-boot fails, if `UBOOT_MACHINE` (instead of `UBOOT_CONFIG`) is
> > used. U-boot doe not like the setting of `O=$S` in the make call, which
> > happen when `UBOOT_MACHINE` is used. Therefore, use a dedicated build
> > directory to circumvent the conflict `$B == $S`.
> > 
> > Yocto build message:
> > 
> > ```
> > > if [ -f /build/tmp/work/da850_funkwerk_rp1_eval_board-fwkos-linux-gnueabi/u-boot-variscite/1.0-r0.fwkos.6/git/.config -o -d /build/tmp/work/da850_funkwerk_rp1_eval_board-fwkos-linux-gnueabi/u-boot-variscite/1.0-r0.fwkos.6/git/include/config ]; then \
> > > 	echo >&2 "  /build/tmp/work/da850_funkwerk_rp1_eval_board-fwkos-linux-gnueabi/u-boot-variscite/1.0-r0.fwkos.6/git is not clean, please run 'make mrproper'"; \
> > > 	echo >&2 "  in the '/build/tmp/work/da850_funkwerk_rp1_eval_board-fwkos-linux-gnueabi/u-boot-variscite/1.0-r0.fwkos.6/git' directory.";\
> > > 	/bin/false; \
> > > fi;
> > >   /build/tmp/work/da850_funkwerk_rp1_eval_board-fwkos-linux-gnueabi/u-boot-variscite/1.0-r0.fwkos.6/git is not clean, please run 'make mrproper'
> > >   in the '/build/tmp/work/da850_funkwerk_rp1_eval_board-fwkos-linux-gnueabi/u-boot-variscite/1.0-r0.fwkos.6/git' directory.
> > > make[1]: Leaving directory '/build/tmp/work/da850_funkwerk_rp1_eval_board-fwkos-linux-gnueabi/u-boot-variscite/1.0-r0.fwkos.6/git'
> > > make[1]: *** [/build/tmp/work/da850_funkwerk_rp1_eval_board-fwkos-linux-gnueabi/u-boot-variscite/1.0-r0.fwkos.6/git/Makefile:1928: prepare3] Error 1
> > > ERROR: oe_runmake failed
> > ```
> > 
> > U-Boot test:
> > 
> > ```
> > % make O=$PWD all
> > make[1]: Entering directory '/home/joerg/git/u-boot'
> >   UPD     include/generated/timestamp_autogenerated.h
> >   Using /home/joerg/git/u-boot as source for U-Boot
> >   /home/joerg/git/u-boot is not clean, please run 'make mrproper'
> >   in the '/home/joerg/git/u-boot' directory.
> > make[1]: *** [/home/joerg/git/u-boot/Makefile:1928: prepare3] Error 1
> > make[1]: Leaving directory '/home/joerg/git/u-boot'
> > make: *** [Makefile:177: sub-make] Error 2
> > ```
> > 
> > Signed-off-by: Jörg Sommer <joerg.sommer@navimatix.de>
> > ---
> >  meta/recipes-bsp/u-boot/u-boot.inc | 2 ++
> >  1 file changed, 2 insertions(+)
> > 
> > diff --git a/meta/recipes-bsp/u-boot/u-boot.inc b/meta/recipes-bsp/u-boot/u-boot.inc
> > index fc36c21ec2..bdc4b60e43 100644
> > --- a/meta/recipes-bsp/u-boot/u-boot.inc
> > +++ b/meta/recipes-bsp/u-boot/u-boot.inc
> > @@ -9,6 +9,8 @@ inherit uboot-config uboot-extlinux-config uboot-sign deploy python3native kerne
> >  
> >  DEPENDS += "swig-native"
> >  
> > +B = "${WORKDIR}/build"
> > +
> >  EXTRA_OEMAKE = 'CROSS_COMPILE=${TARGET_PREFIX} CC="${TARGET_PREFIX}gcc ${TOOLCHAIN_OPTIONS} ${DEBUG_PREFIX_MAP}" V=1'
> >  EXTRA_OEMAKE += 'HOSTCC="${BUILD_CC} ${BUILD_CFLAGS} ${BUILD_LDFLAGS}"'
> >  EXTRA_OEMAKE += 'STAGING_INCDIR=${STAGING_INCDIR_NATIVE} STAGING_LIBDIR=${STAGING_LIBDIR_NATIVE}'
> > 
> 
> I did a little digging as I wondered why this wasn't already the case.
> That variable is set in u-boot-common.inc along with a cleandirs for B.
> Are you able to use that common inc file? I didn't check the situation
> on older releases.

Interesting. So this is a bug in the variscite layer. They supersede the
u-boot-common.inc with there own which does not set B:
https://github.com/varigit/meta-variscite-bsp-imx/blob/kirkstone/recipes-bsp/u-boot/u-boot-common.inc

So, we can drop the patch and I ask variscite to fix the issue.

Many thanks for your help!

Kind regards, Jörg
diff mbox series

Patch

diff --git a/meta/recipes-bsp/u-boot/u-boot.inc b/meta/recipes-bsp/u-boot/u-boot.inc
index fc36c21ec2..bdc4b60e43 100644
--- a/meta/recipes-bsp/u-boot/u-boot.inc
+++ b/meta/recipes-bsp/u-boot/u-boot.inc
@@ -9,6 +9,8 @@  inherit uboot-config uboot-extlinux-config uboot-sign deploy python3native kerne
 
 DEPENDS += "swig-native"
 
+B = "${WORKDIR}/build"
+
 EXTRA_OEMAKE = 'CROSS_COMPILE=${TARGET_PREFIX} CC="${TARGET_PREFIX}gcc ${TOOLCHAIN_OPTIONS} ${DEBUG_PREFIX_MAP}" V=1'
 EXTRA_OEMAKE += 'HOSTCC="${BUILD_CC} ${BUILD_CFLAGS} ${BUILD_LDFLAGS}"'
 EXTRA_OEMAKE += 'STAGING_INCDIR=${STAGING_INCDIR_NATIVE} STAGING_LIBDIR=${STAGING_LIBDIR_NATIVE}'