[2/3] boot/uboot: use HOSTCC_NOCCACHE as kconfig HOSTCC
diff mbox series

Message ID 20190110211500.14368-3-thomas.petazzoni@bootlin.com
State Accepted
Commit 9d684a096718eb0020550827f9641dca3f4ed06e
Headers show
Series
  • Fix pkg-kconfig packages with ccache enabled
Related show

Commit Message

Thomas Petazzoni Jan. 10, 2019, 9:14 p.m. UTC
At kconfig time, dependencies are not built, and therefore host-ccache
is not ready. Due to this, using $(HOSTCC) as the host compiler in
KCONFIG_OPTS does not work: a "make uboot-menuconfig" invocation from
a clean tree with ccache enabled fails.

This commit fixes this by using $(HOSTCC_NOCCACHE). We cannot rely on
the default value of HOSTCC passed by the kconfig-package
infrastructure, because $(UBOOT_MAKE_OPTS) also contains a HOSTCC
definition that would override the one passed by the kconfig-package
infrastructure.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
---
 boot/uboot/uboot.mk | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

Comments

Yann E. MORIN Jan. 13, 2019, 9:47 p.m. UTC | #1
Thomas, All,

On 2019-01-10 22:14 +0100, Thomas Petazzoni spake thusly:
> At kconfig time, dependencies are not built, and therefore host-ccache
> is not ready. Due to this, using $(HOSTCC) as the host compiler in
> KCONFIG_OPTS does not work: a "make uboot-menuconfig" invocation from
> a clean tree with ccache enabled fails.
> 
> This commit fixes this by using $(HOSTCC_NOCCACHE). We cannot rely on
> the default value of HOSTCC passed by the kconfig-package
> infrastructure, because $(UBOOT_MAKE_OPTS) also contains a HOSTCC
> definition that would override the one passed by the kconfig-package
> infrastructure.
> 
> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
> ---
>  boot/uboot/uboot.mk | 5 +++--
>  1 file changed, 3 insertions(+), 2 deletions(-)
> 
> diff --git a/boot/uboot/uboot.mk b/boot/uboot/uboot.mk
> index cbdfee6ac3..6977bcc064 100644
> --- a/boot/uboot/uboot.mk
> +++ b/boot/uboot/uboot.mk
> @@ -227,8 +227,9 @@ UBOOT_KCONFIG_EDITORS = menuconfig xconfig gconfig nconfig
>  # (which is typically wchar) but link with
>  # $(HOST_DIR)/lib/libncurses.so (which is not).  We don't actually
>  # need any host-package for kconfig, so remove the HOSTCC/HOSTLDFLAGS
> -# override again.
> -UBOOT_KCONFIG_OPTS = $(UBOOT_MAKE_OPTS) HOSTCC="$(HOSTCC)" HOSTLDFLAGS=""
> +# override again. In addition, host-ccache is not ready at kconfig
> +# time, so use HOSTCC_NOCCACHE.
> +UBOOT_KCONFIG_OPTS = $(UBOOT_MAKE_OPTS) HOSTCC="$(HOSTCC_NOCCACHE)" HOSTLDFLAGS=""

Since you're just switching over to the no-ccache variant:

Acked-by: "Yann E. MORIN" <yann.morin.1998@free.fr>

However, I wonder if we would not be better off if we had written
something like;

    UBOOT_KCONFIG_OPTS = $(filter-out HOSTCC=% HOSTLDFLAGS=%, $(UBOOT_MAKE_OPTS))

But this is another story. ;-)

Regards,
Yann E. MORIN.

>  define UBOOT_HELP_CMDS
>  	@echo '  uboot-menuconfig       - Run U-Boot menuconfig'
>  	@echo '  uboot-savedefconfig    - Run U-Boot savedefconfig'
> -- 
> 2.20.1
> 
> _______________________________________________
> buildroot mailing list
> buildroot@busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot
Yann E. MORIN Jan. 13, 2019, 9:51 p.m. UTC | #2
Thomas, All,

On 2019-01-13 22:47 +0100, Yann E. MORIN spake thusly:
> On 2019-01-10 22:14 +0100, Thomas Petazzoni spake thusly:
> > At kconfig time, dependencies are not built, and therefore host-ccache
> > is not ready. Due to this, using $(HOSTCC) as the host compiler in
> > KCONFIG_OPTS does not work: a "make uboot-menuconfig" invocation from
> > a clean tree with ccache enabled fails.
> > 
> > This commit fixes this by using $(HOSTCC_NOCCACHE). We cannot rely on
> > the default value of HOSTCC passed by the kconfig-package
> > infrastructure, because $(UBOOT_MAKE_OPTS) also contains a HOSTCC
> > definition that would override the one passed by the kconfig-package
> > infrastructure.
> > 
> > Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
> > ---
> >  boot/uboot/uboot.mk | 5 +++--
> >  1 file changed, 3 insertions(+), 2 deletions(-)
> > 
> > diff --git a/boot/uboot/uboot.mk b/boot/uboot/uboot.mk
> > index cbdfee6ac3..6977bcc064 100644
> > --- a/boot/uboot/uboot.mk
> > +++ b/boot/uboot/uboot.mk
> > @@ -227,8 +227,9 @@ UBOOT_KCONFIG_EDITORS = menuconfig xconfig gconfig nconfig
> >  # (which is typically wchar) but link with
> >  # $(HOST_DIR)/lib/libncurses.so (which is not).  We don't actually
> >  # need any host-package for kconfig, so remove the HOSTCC/HOSTLDFLAGS
> > -# override again.
> > -UBOOT_KCONFIG_OPTS = $(UBOOT_MAKE_OPTS) HOSTCC="$(HOSTCC)" HOSTLDFLAGS=""
> > +# override again. In addition, host-ccache is not ready at kconfig
> > +# time, so use HOSTCC_NOCCACHE.
> > +UBOOT_KCONFIG_OPTS = $(UBOOT_MAKE_OPTS) HOSTCC="$(HOSTCC_NOCCACHE)" HOSTLDFLAGS=""
> 
> Since you're just switching over to the no-ccache variant:
> 
> Acked-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
> 
> However, I wonder if we would not be better off if we had written
> something like;
> 
>     UBOOT_KCONFIG_OPTS = $(filter-out HOSTCC=% HOSTLDFLAGS=%, $(UBOOT_MAKE_OPTS))

No, no, we can't, because there might be spaces in the previous HOSTCC="..."
definition, so we really need to over-override it.

Regards,
Yann E. MORIN.

> But this is another story. ;-)
> 
> Regards,
> Yann E. MORIN.
> 
> >  define UBOOT_HELP_CMDS
> >  	@echo '  uboot-menuconfig       - Run U-Boot menuconfig'
> >  	@echo '  uboot-savedefconfig    - Run U-Boot savedefconfig'
> > -- 
> > 2.20.1
> > 
> > _______________________________________________
> > buildroot mailing list
> > buildroot@busybox.net
> > http://lists.busybox.net/mailman/listinfo/buildroot
> 
> -- 
> .-----------------.--------------------.------------------.--------------------.
> |  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
> | +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
> | +33 223 225 172 `------------.-------:  X  AGAINST      |  \e/  There is no  |
> | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
> '------------------------------^-------^------------------^--------------------'
> _______________________________________________
> buildroot mailing list
> buildroot@busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot
Peter Korsgaard Jan. 16, 2019, 10:39 p.m. UTC | #3
>>>>> "Thomas" == Thomas Petazzoni <thomas.petazzoni@bootlin.com> writes:

 > At kconfig time, dependencies are not built, and therefore host-ccache
 > is not ready. Due to this, using $(HOSTCC) as the host compiler in
 > KCONFIG_OPTS does not work: a "make uboot-menuconfig" invocation from
 > a clean tree with ccache enabled fails.

 > This commit fixes this by using $(HOSTCC_NOCCACHE). We cannot rely on
 > the default value of HOSTCC passed by the kconfig-package
 > infrastructure, because $(UBOOT_MAKE_OPTS) also contains a HOSTCC
 > definition that would override the one passed by the kconfig-package
 > infrastructure.

 > Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>

Committed, thanks.
Arnout Vandecappelle Jan. 24, 2019, 4:12 p.m. UTC | #4
On 13/01/2019 22:51, Yann E. MORIN wrote:
> Thomas, All,
> 
> On 2019-01-13 22:47 +0100, Yann E. MORIN spake thusly:
>> On 2019-01-10 22:14 +0100, Thomas Petazzoni spake thusly:
>>> At kconfig time, dependencies are not built, and therefore host-ccache
>>> is not ready. Due to this, using $(HOSTCC) as the host compiler in
>>> KCONFIG_OPTS does not work: a "make uboot-menuconfig" invocation from
>>> a clean tree with ccache enabled fails.
>>>
>>> This commit fixes this by using $(HOSTCC_NOCCACHE). We cannot rely on
>>> the default value of HOSTCC passed by the kconfig-package
>>> infrastructure, because $(UBOOT_MAKE_OPTS) also contains a HOSTCC
>>> definition that would override the one passed by the kconfig-package
>>> infrastructure.
>>>
>>> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
>>> ---
>>>  boot/uboot/uboot.mk | 5 +++--
>>>  1 file changed, 3 insertions(+), 2 deletions(-)
>>>
>>> diff --git a/boot/uboot/uboot.mk b/boot/uboot/uboot.mk
>>> index cbdfee6ac3..6977bcc064 100644
>>> --- a/boot/uboot/uboot.mk
>>> +++ b/boot/uboot/uboot.mk
>>> @@ -227,8 +227,9 @@ UBOOT_KCONFIG_EDITORS = menuconfig xconfig gconfig nconfig
>>>  # (which is typically wchar) but link with
>>>  # $(HOST_DIR)/lib/libncurses.so (which is not).  We don't actually
>>>  # need any host-package for kconfig, so remove the HOSTCC/HOSTLDFLAGS
>>> -# override again.
>>> -UBOOT_KCONFIG_OPTS = $(UBOOT_MAKE_OPTS) HOSTCC="$(HOSTCC)" HOSTLDFLAGS=""
>>> +# override again. In addition, host-ccache is not ready at kconfig
>>> +# time, so use HOSTCC_NOCCACHE.
>>> +UBOOT_KCONFIG_OPTS = $(UBOOT_MAKE_OPTS) HOSTCC="$(HOSTCC_NOCCACHE)" HOSTLDFLAGS=""
>>
>> Since you're just switching over to the no-ccache variant:
>>
>> Acked-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
>>
>> However, I wonder if we would not be better off if we had written
>> something like;
>>
>>     UBOOT_KCONFIG_OPTS = $(filter-out HOSTCC=% HOSTLDFLAGS=%, $(UBOOT_MAKE_OPTS))
> 
> No, no, we can't, because there might be spaces in the previous HOSTCC="..."
> definition, so we really need to over-override it.

 Maybe, instead of over-overriding HOSTCC, we can just avoid using
UBOOT_MAKE_OPTS in UBOOT_KCONFIG_OPTS, instead passing the ARCH= and
CROSS_COMPILE= explicitly. And we probably don't even need CROSS_COMPILE for
configuring.

 Regards,
 Arnout
Peter Korsgaard Jan. 28, 2019, 5:01 p.m. UTC | #5
>>>>> "Thomas" == Thomas Petazzoni <thomas.petazzoni@bootlin.com> writes:

 > At kconfig time, dependencies are not built, and therefore host-ccache
 > is not ready. Due to this, using $(HOSTCC) as the host compiler in
 > KCONFIG_OPTS does not work: a "make uboot-menuconfig" invocation from
 > a clean tree with ccache enabled fails.

 > This commit fixes this by using $(HOSTCC_NOCCACHE). We cannot rely on
 > the default value of HOSTCC passed by the kconfig-package
 > infrastructure, because $(UBOOT_MAKE_OPTS) also contains a HOSTCC
 > definition that would override the one passed by the kconfig-package
 > infrastructure.

 > Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>

Committed to 2018.11.x, thanks.

Patch
diff mbox series

diff --git a/boot/uboot/uboot.mk b/boot/uboot/uboot.mk
index cbdfee6ac3..6977bcc064 100644
--- a/boot/uboot/uboot.mk
+++ b/boot/uboot/uboot.mk
@@ -227,8 +227,9 @@  UBOOT_KCONFIG_EDITORS = menuconfig xconfig gconfig nconfig
 # (which is typically wchar) but link with
 # $(HOST_DIR)/lib/libncurses.so (which is not).  We don't actually
 # need any host-package for kconfig, so remove the HOSTCC/HOSTLDFLAGS
-# override again.
-UBOOT_KCONFIG_OPTS = $(UBOOT_MAKE_OPTS) HOSTCC="$(HOSTCC)" HOSTLDFLAGS=""
+# override again. In addition, host-ccache is not ready at kconfig
+# time, so use HOSTCC_NOCCACHE.
+UBOOT_KCONFIG_OPTS = $(UBOOT_MAKE_OPTS) HOSTCC="$(HOSTCC_NOCCACHE)" HOSTLDFLAGS=""
 define UBOOT_HELP_CMDS
 	@echo '  uboot-menuconfig       - Run U-Boot menuconfig'
 	@echo '  uboot-savedefconfig    - Run U-Boot savedefconfig'