u-boot-tools: Improve build preparation

Message ID 20181127191255.39052-1-abrodkin@synopsys.com
State New
Headers show
Series
  • u-boot-tools: Improve build preparation
Related show

Commit Message

Alexey Brodkin Nov. 27, 2018, 7:12 p.m.
Even though we're not going to build here real U-Boot binary
it is still required to "configure" U-Boot to get get to the
tools building.

We used to use "sandbox_defconfig" for that purpose but
since U-Boot v2018.11 it started to cause problems [1] due to [2].

So to have less dependencies let's create super minimalistic
configuration which is good enough to allow us to run "make tools".

[1] http://errors.yoctoproject.org/Errors/Details/202185/
[2] http://git.denx.de/?p=u-boot.git;a=commitdiff;h=a4958a71017fb142542f977c843c5fce769fc6ea

Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com>
Cc: Richard Purdie <richard.purdie@linuxfoundation.org>
Cc: Otavio Salvador <otavio@ossystems.com.br>
Cc: Martin Jansa <martin.jansa@gmail.com>
Cc: Andrea Galbusera <gizero@gmail.com>
Cc: Ross Burton <ross.burton@intel.com>
Cc: Tom Rini <trini@konsulko.com>
Cc: Marek Vasut <marex@denx.de>
---
 meta/recipes-bsp/u-boot/u-boot-tools_2018.11.bb | 13 +++++--------
 1 file changed, 5 insertions(+), 8 deletions(-)

Comments

Otavio Salvador Nov. 27, 2018, 7:30 p.m. | #1
On Tue, Nov 27, 2018 at 5:13 PM Alexey Brodkin
<alexey.brodkin@synopsys.com> wrote:
> Even though we're not going to build here real U-Boot binary
> it is still required to "configure" U-Boot to get get to the
> tools building.
>
> We used to use "sandbox_defconfig" for that purpose but
> since U-Boot v2018.11 it started to cause problems [1] due to [2].
>
> So to have less dependencies let's create super minimalistic
> configuration which is good enough to allow us to run "make tools".
>
> [1] http://errors.yoctoproject.org/Errors/Details/202185/
> [2] http://git.denx.de/?p=u-boot.git;a=commitdiff;h=a4958a71017fb142542f977c843c5fce769fc6ea
>
> Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com>

To allow extended use, we need to enable CONFIG_FIT_SIGNATURE
otherwise we won't have the support.

See:

# MXSImage needs LibSSL
ifneq ($(CONFIG_MX23)$(CONFIG_MX28)$(CONFIG_ARMADA_38X)$(CONFIG_ARMADA_39X)$(CONFIG_FIT_SIGNATURE),)
HOSTLOADLIBES_mkimage += \
        $(shell pkg-config --libs libssl libcrypto 2> /dev/null ||
echo "-lssl -lcrypto")

If you do that, we can likely rely on this and avoid some extra tools
packages (for example on meta-freescale).
Otavio Salvador Nov. 27, 2018, 7:52 p.m. | #2
On Tue, Nov 27, 2018 at 5:30 PM Otavio Salvador <otavio@ossystems.com.br> wrote:
>
> On Tue, Nov 27, 2018 at 5:13 PM Alexey Brodkin
> <alexey.brodkin@synopsys.com> wrote:
> > Even though we're not going to build here real U-Boot binary
> > it is still required to "configure" U-Boot to get get to the
> > tools building.
> >
> > We used to use "sandbox_defconfig" for that purpose but
> > since U-Boot v2018.11 it started to cause problems [1] due to [2].
> >
> > So to have less dependencies let's create super minimalistic
> > configuration which is good enough to allow us to run "make tools".
> >
> > [1] http://errors.yoctoproject.org/Errors/Details/202185/
> > [2] http://git.denx.de/?p=u-boot.git;a=commitdiff;h=a4958a71017fb142542f977c843c5fce769fc6ea
> >
> > Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com>
>
> To allow extended use, we need to enable CONFIG_FIT_SIGNATURE
> otherwise we won't have the support.
>
> See:
>
> # MXSImage needs LibSSL
> ifneq ($(CONFIG_MX23)$(CONFIG_MX28)$(CONFIG_ARMADA_38X)$(CONFIG_ARMADA_39X)$(CONFIG_FIT_SIGNATURE),)
> HOSTLOADLIBES_mkimage += \
>         $(shell pkg-config --libs libssl libcrypto 2> /dev/null ||
> echo "-lssl -lcrypto")
>
> If you do that, we can likely rely on this and avoid some extra tools
> packages (for example on meta-freescale).

Looking at this, I am wondering if folowing wouldn't be a generic
solution capable of upstreaming:

diff --git a/configs/nativetools_defconfig b/configs/nativetools_defconfig
new file mode 100644
index 0000000000..be69bdf43a
--- /dev/null
+++ b/configs/nativetools_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_TEXT_BASE=0
+CONFIG_FIT=y
+CONFIG_FIT_SIGNATURE=y
diff --git a/tools/Makefile b/tools/Makefile
index 3c0521f655..e916d0cebb 100644
--- a/tools/Makefile
+++ b/tools/Makefile
@@ -124,7 +124,7 @@ fit_info-objs   := $(dumpimage-mkimage-objs) fit_info.o
 fit_check_sign-objs   := $(dumpimage-mkimage-objs) fit_check_sign.o
 file2include-objs := file2include.o

-ifneq ($(CONFIG_MX23)$(CONFIG_MX28),)
+ifneq ($(CONFIG_MX23)$(CONFIG_MX28)$(CONFIG_FIT_SIGNATURE),)
 # Add CONFIG_MXS into host CFLAGS, so we can check whether or not register
 # the mxsimage support within tools/mxsimage.c .
 HOSTCFLAGS_mxsimage.o += -DCONFIG_MXS
Otavio Salvador Nov. 27, 2018, 8:21 p.m. | #3
Hello all,

On Tue, Nov 27, 2018 at 5:52 PM Otavio Salvador <otavio@ossystems.com.br> wrote:
...
> Looking at this, I am wondering if folowing wouldn't be a generic
> solution capable of upstreaming:

I posted the proposed patch to U-Boot mailing list as RFC so we can
see what their feedback is about this approach.
Alexey Brodkin Nov. 27, 2018, 8:49 p.m. | #4
Hi Otavio,

On Tue, 2018-11-27 at 17:52 -0200, Otavio Salvador wrote:
> On Tue, Nov 27, 2018 at 5:30 PM Otavio Salvador <otavio@ossystems.com.br> wrote:
> > On Tue, Nov 27, 2018 at 5:13 PM Alexey Brodkin
> > <alexey.brodkin@synopsys.com> wrote:
> > > Even though we're not going to build here real U-Boot binary
> > > it is still required to "configure" U-Boot to get get to the
> > > tools building.
> > > 
> > > We used to use "sandbox_defconfig" for that purpose but
> > > since U-Boot v2018.11 it started to cause problems [1] due to [2].
> > > 
> > > So to have less dependencies let's create super minimalistic
> > > configuration which is good enough to allow us to run "make tools".
> > > 
> > > [1] 
> > > https://urldefense.proofpoint.com/v2/url?u=http-3A__errors.yoctoproject.org_Errors_Details_202185_&d=DwIBaQ&c=DPL6_X_6JkXFx7AXWqB0tg&r=lqdeeSSEes0GFDDl656eViXO7breS55ytWkhpk5R81I&m=6GBkAGgxs4IOh0rJ4joj36Xukb_msE_tdIIJQXh8Gbg&s=vuvAMfkM9WIKHek7mwuwSjWKKpUcKJ-zCcKypEfxCuw&e=
> > > [2] 
> > > https://urldefense.proofpoint.com/v2/url?u=http-3A__git.denx.de_-3Fp-3Du-2Dboot.git-3Ba-3Dcommitdiff-3Bh-3Da4958a71017fb142542f977c843c5fce769fc6ea&d=DwIBaQ&c=DPL6_X_6JkXFx7AXWqB0tg&r=lqdeeSSEes0GFDDl656eViXO7breS55ytWkhpk5R81I&m=6GBkAGgxs4IOh0rJ4joj36Xukb_msE_tdIIJQXh8Gbg&s=GN4U6Of_hi-W_5CEu3RvRUIVEjgaNwnK8CarkwIly4Y&e=
> > > 
> > > Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com>
> > 
> > To allow extended use, we need to enable CONFIG_FIT_SIGNATURE
> > otherwise we won't have the support.
> > 
> > See:
> > 
> > # MXSImage needs LibSSL
> > ifneq ($(CONFIG_MX23)$(CONFIG_MX28)$(CONFIG_ARMADA_38X)$(CONFIG_ARMADA_39X)$(CONFIG_FIT_SIGNATURE),)
> > HOSTLOADLIBES_mkimage += \
> >         $(shell pkg-config --libs libssl libcrypto 2> /dev/null ||
> > echo "-lssl -lcrypto")
> > 
> > If you do that, we can likely rely on this and avoid some extra tools
> > packages (for example on meta-freescale).
> 
> Looking at this, I am wondering if folowing wouldn't be a generic
> solution capable of upstreaming:
> 
> diff --git a/configs/nativetools_defconfig b/configs/nativetools_defconfig
> new file mode 100644
> index 0000000000..be69bdf43a
> --- /dev/null
> +++ b/configs/nativetools_defconfig
> @@ -0,0 +1,3 @@
> +CONFIG_SYS_TEXT_BASE=0
> +CONFIG_FIT=y
> +CONFIG_FIT_SIGNATURE=y
> diff --git a/tools/Makefile b/tools/Makefile
> index 3c0521f655..e916d0cebb 100644
> --- a/tools/Makefile
> +++ b/tools/Makefile
> @@ -124,7 +124,7 @@ fit_info-objs   := $(dumpimage-mkimage-objs) fit_info.o
>  fit_check_sign-objs   := $(dumpimage-mkimage-objs) fit_check_sign.o
>  file2include-objs := file2include.o
> 
> -ifneq ($(CONFIG_MX23)$(CONFIG_MX28),)
> +ifneq ($(CONFIG_MX23)$(CONFIG_MX28)$(CONFIG_FIT_SIGNATURE),)
>  # Add CONFIG_MXS into host CFLAGS, so we can check whether or not register
>  # the mxsimage support within tools/mxsimage.c .
>  HOSTCFLAGS_mxsimage.o += -DCONFIG_MXS

So do you think there's a room for improvement in my patch for OE?
Or before we get a missing part for tools/Makefile there's nothing more
to be done in OE?

-Alexey
Otavio Salvador Nov. 28, 2018, 10:58 a.m. | #5
On Tue, Nov 27, 2018 at 6:49 PM Alexey Brodkin
<alexey.brodkin@synopsys.com> wrote:
> On Tue, 2018-11-27 at 17:52 -0200, Otavio Salvador wrote:
> > On Tue, Nov 27, 2018 at 5:30 PM Otavio Salvador <otavio@ossystems.com.br> wrote:
> > > On Tue, Nov 27, 2018 at 5:13 PM Alexey Brodkin
> > > <alexey.brodkin@synopsys.com> wrote:
> > > > Even though we're not going to build here real U-Boot binary
> > > > it is still required to "configure" U-Boot to get get to the
> > > > tools building.
> > > >
> > > > We used to use "sandbox_defconfig" for that purpose but
> > > > since U-Boot v2018.11 it started to cause problems [1] due to [2].
> > > >
> > > > So to have less dependencies let's create super minimalistic
> > > > configuration which is good enough to allow us to run "make tools".
> > > >
> > > > [1]
> > > > https://urldefense.proofpoint.com/v2/url?u=http-3A__errors.yoctoproject.org_Errors_Details_202185_&d=DwIBaQ&c=DPL6_X_6JkXFx7AXWqB0tg&r=lqdeeSSEes0GFDDl656eViXO7breS55ytWkhpk5R81I&m=6GBkAGgxs4IOh0rJ4joj36Xukb_msE_tdIIJQXh8Gbg&s=vuvAMfkM9WIKHek7mwuwSjWKKpUcKJ-zCcKypEfxCuw&e=
> > > > [2]
> > > > https://urldefense.proofpoint.com/v2/url?u=http-3A__git.denx.de_-3Fp-3Du-2Dboot.git-3Ba-3Dcommitdiff-3Bh-3Da4958a71017fb142542f977c843c5fce769fc6ea&d=DwIBaQ&c=DPL6_X_6JkXFx7AXWqB0tg&r=lqdeeSSEes0GFDDl656eViXO7breS55ytWkhpk5R81I&m=6GBkAGgxs4IOh0rJ4joj36Xukb_msE_tdIIJQXh8Gbg&s=GN4U6Of_hi-W_5CEu3RvRUIVEjgaNwnK8CarkwIly4Y&e=
> > > >
> > > > Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com>
> > >
> > > To allow extended use, we need to enable CONFIG_FIT_SIGNATURE
> > > otherwise we won't have the support.
> > >
> > > See:
> > >
> > > # MXSImage needs LibSSL
> > > ifneq ($(CONFIG_MX23)$(CONFIG_MX28)$(CONFIG_ARMADA_38X)$(CONFIG_ARMADA_39X)$(CONFIG_FIT_SIGNATURE),)
> > > HOSTLOADLIBES_mkimage += \
> > >         $(shell pkg-config --libs libssl libcrypto 2> /dev/null ||
> > > echo "-lssl -lcrypto")
> > >
> > > If you do that, we can likely rely on this and avoid some extra tools
> > > packages (for example on meta-freescale).
> >
> > Looking at this, I am wondering if folowing wouldn't be a generic
> > solution capable of upstreaming:
> >
> > diff --git a/configs/nativetools_defconfig b/configs/nativetools_defconfig
> > new file mode 100644
> > index 0000000000..be69bdf43a
> > --- /dev/null
> > +++ b/configs/nativetools_defconfig
> > @@ -0,0 +1,3 @@
> > +CONFIG_SYS_TEXT_BASE=0
> > +CONFIG_FIT=y
> > +CONFIG_FIT_SIGNATURE=y
> > diff --git a/tools/Makefile b/tools/Makefile
> > index 3c0521f655..e916d0cebb 100644
> > --- a/tools/Makefile
> > +++ b/tools/Makefile
> > @@ -124,7 +124,7 @@ fit_info-objs   := $(dumpimage-mkimage-objs) fit_info.o
> >  fit_check_sign-objs   := $(dumpimage-mkimage-objs) fit_check_sign.o
> >  file2include-objs := file2include.o
> >
> > -ifneq ($(CONFIG_MX23)$(CONFIG_MX28),)
> > +ifneq ($(CONFIG_MX23)$(CONFIG_MX28)$(CONFIG_FIT_SIGNATURE),)
> >  # Add CONFIG_MXS into host CFLAGS, so we can check whether or not register
> >  # the mxsimage support within tools/mxsimage.c .
> >  HOSTCFLAGS_mxsimage.o += -DCONFIG_MXS
>
> So do you think there's a room for improvement in my patch for OE?
> Or before we get a missing part for tools/Makefile there's nothing more
> to be done in OE?

You could use this attached patch (marking as Pending as it is still
RFC). It allow us to drop or 'mxsboot' recipe on meta-freescale, for
example.
Otavio Salvador Nov. 28, 2018, 10:59 a.m. | #6
On Wed, Nov 28, 2018 at 8:58 AM Otavio Salvador <otavio@ossystems.com.br> wrote:
> On Tue, Nov 27, 2018 at 6:49 PM Alexey Brodkin
> <alexey.brodkin@synopsys.com> wrote:
> > On Tue, 2018-11-27 at 17:52 -0200, Otavio Salvador wrote:
> > > On Tue, Nov 27, 2018 at 5:30 PM Otavio Salvador <otavio@ossystems.com.br> wrote:
> > > > On Tue, Nov 27, 2018 at 5:13 PM Alexey Brodkin
> > > > <alexey.brodkin@synopsys.com> wrote:
> > > > > Even though we're not going to build here real U-Boot binary
> > > > > it is still required to "configure" U-Boot to get get to the
> > > > > tools building.
> > > > >
> > > > > We used to use "sandbox_defconfig" for that purpose but
> > > > > since U-Boot v2018.11 it started to cause problems [1] due to [2].
> > > > >
> > > > > So to have less dependencies let's create super minimalistic
> > > > > configuration which is good enough to allow us to run "make tools".
> > > > >
> > > > > [1]
> > > > > https://urldefense.proofpoint.com/v2/url?u=http-3A__errors.yoctoproject.org_Errors_Details_202185_&d=DwIBaQ&c=DPL6_X_6JkXFx7AXWqB0tg&r=lqdeeSSEes0GFDDl656eViXO7breS55ytWkhpk5R81I&m=6GBkAGgxs4IOh0rJ4joj36Xukb_msE_tdIIJQXh8Gbg&s=vuvAMfkM9WIKHek7mwuwSjWKKpUcKJ-zCcKypEfxCuw&e=
> > > > > [2]
> > > > > https://urldefense.proofpoint.com/v2/url?u=http-3A__git.denx.de_-3Fp-3Du-2Dboot.git-3Ba-3Dcommitdiff-3Bh-3Da4958a71017fb142542f977c843c5fce769fc6ea&d=DwIBaQ&c=DPL6_X_6JkXFx7AXWqB0tg&r=lqdeeSSEes0GFDDl656eViXO7breS55ytWkhpk5R81I&m=6GBkAGgxs4IOh0rJ4joj36Xukb_msE_tdIIJQXh8Gbg&s=GN4U6Of_hi-W_5CEu3RvRUIVEjgaNwnK8CarkwIly4Y&e=
> > > > >
> > > > > Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com>
> > > >
> > > > To allow extended use, we need to enable CONFIG_FIT_SIGNATURE
> > > > otherwise we won't have the support.
> > > >
> > > > See:
> > > >
> > > > # MXSImage needs LibSSL
> > > > ifneq ($(CONFIG_MX23)$(CONFIG_MX28)$(CONFIG_ARMADA_38X)$(CONFIG_ARMADA_39X)$(CONFIG_FIT_SIGNATURE),)
> > > > HOSTLOADLIBES_mkimage += \
> > > >         $(shell pkg-config --libs libssl libcrypto 2> /dev/null ||
> > > > echo "-lssl -lcrypto")
> > > >
> > > > If you do that, we can likely rely on this and avoid some extra tools
> > > > packages (for example on meta-freescale).
> > >
> > > Looking at this, I am wondering if folowing wouldn't be a generic
> > > solution capable of upstreaming:
> > >
> > > diff --git a/configs/nativetools_defconfig b/configs/nativetools_defconfig
> > > new file mode 100644
> > > index 0000000000..be69bdf43a
> > > --- /dev/null
> > > +++ b/configs/nativetools_defconfig
> > > @@ -0,0 +1,3 @@
> > > +CONFIG_SYS_TEXT_BASE=0
> > > +CONFIG_FIT=y
> > > +CONFIG_FIT_SIGNATURE=y
> > > diff --git a/tools/Makefile b/tools/Makefile
> > > index 3c0521f655..e916d0cebb 100644
> > > --- a/tools/Makefile
> > > +++ b/tools/Makefile
> > > @@ -124,7 +124,7 @@ fit_info-objs   := $(dumpimage-mkimage-objs) fit_info.o
> > >  fit_check_sign-objs   := $(dumpimage-mkimage-objs) fit_check_sign.o
> > >  file2include-objs := file2include.o
> > >
> > > -ifneq ($(CONFIG_MX23)$(CONFIG_MX28),)
> > > +ifneq ($(CONFIG_MX23)$(CONFIG_MX28)$(CONFIG_FIT_SIGNATURE),)
> > >  # Add CONFIG_MXS into host CFLAGS, so we can check whether or not register
> > >  # the mxsimage support within tools/mxsimage.c .
> > >  HOSTCFLAGS_mxsimage.o += -DCONFIG_MXS
> >
> > So do you think there's a room for improvement in my patch for OE?
> > Or before we get a missing part for tools/Makefile there's nothing more
> > to be done in OE?
>
> You could use this attached patch (marking as Pending as it is still
> RFC). It allow us to drop or 'mxsboot' recipe on meta-freescale, for
> example.

Now... with patch...

Patch

diff --git a/meta/recipes-bsp/u-boot/u-boot-tools_2018.11.bb b/meta/recipes-bsp/u-boot/u-boot-tools_2018.11.bb
index 127c4c15d1..d1cfea05f5 100644
--- a/meta/recipes-bsp/u-boot/u-boot-tools_2018.11.bb
+++ b/meta/recipes-bsp/u-boot/u-boot-tools_2018.11.bb
@@ -18,14 +18,11 @@  EXTRA_OEMAKE_class-native = 'CC="${BUILD_CC} ${BUILD_CFLAGS} ${BUILD_LDFLAGS}" H
 EXTRA_OEMAKE_class-nativesdk = 'CROSS_COMPILE="${HOST_PREFIX}" CC="${CC} ${CFLAGS} ${LDFLAGS}" HOSTCC="${BUILD_CC} ${BUILD_CFLAGS} ${BUILD_LDFLAGS}" STRIP=true V=1'
 
 do_compile () {
-	oe_runmake sandbox_defconfig
-
-	# Disable CONFIG_CMD_LICENSE, license.h is not used by tools and
-	# generating it requires bin2header tool, which for target build
-	# is built with target tools and thus cannot be executed on host.
-	sed -i "s/CONFIG_CMD_LICENSE=.*/# CONFIG_CMD_LICENSE is not set/" .config
-
-	oe_runmake cross_tools NO_SDL=1
+	# Create the simplest configuration which is just enough
+	# to get to the building of tools.
+	echo "CONFIG_SYS_TEXT_BASE=0" > .config
+	oe_runmake olddefconfig
+	oe_runmake cross_tools
 }
 
 do_install () {