[PATCH v2 02/16] buildman/toolchain.py: set CROSS_COMPILE only if self.cross is set

Simon Glass sjg at chromium.org
Sun Sep 1 22:10:00 CEST 2024


Hi Jerome,

On Fri, 30 Aug 2024 at 04:17, Jerome Forissier
<jerome.forissier at linaro.org> wrote:
>
> In MakeEnvironment(), CROSS_COMPILE is defined to be self.cross (with
> or without a full path), optionally prefixed by the toolchain wrapper
> defined in ~/.buildman. This is fine when self.cross is not empty, but
> it doesn't make sense when it is:
> - Either there is no wrapper and we end up with an empty CROSS_COMPILE
> which is the same as not defining it (the host compiler will be used),
> - Or there is a wrapper and CROSS_COMPILE will contain only the wrapper
> which obviously is not a valid compiler, hence an error.
>
> Test case:
>
>  $ sudo apt install ccache
>  $ grep -q toolchain-wrapper ~/.buildman || \
>      printf "[toolchain-wrapper]\nwrapper = ccache\n" >>~/.buildman
>  $ make mrproper
>  $ ./tools/buildman/buildman sandbox_noinst
>  $ ./tools/buildman/buildman sandbox_noinst
>  Building current source for 1 boards (1 thread, 24 jobs per thread)
>     sandbox:  +   sandbox_noinst
>  +In file included from boot/bootmeth_efi.c:16:
>  +include/efi_default_filename.h:20:15: error: operator '==' has no left operand
>  +   20 | #if HOST_ARCH == HOST_ARCH_X86_64
>  +      |               ^~
>  [...]
>
> Signed-off-by: Jerome Forissier <jerome.forissier at linaro.org>
> ---
>  tools/buildman/toolchain.py | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)

Can you please put this on top of [1]? I am trying to resolve a
code-coverage problem in the same function.

Also, please do add a test case.

>
> diff --git a/tools/buildman/toolchain.py b/tools/buildman/toolchain.py
> index 324ad0e082..ff987a9eea 100644
> --- a/tools/buildman/toolchain.py
> +++ b/tools/buildman/toolchain.py
> @@ -201,10 +201,10 @@ class Toolchain:
>          if self.override_toolchain:
>              # We'll use MakeArgs() to provide this
>              pass
> -        elif full_path:
> +        elif full_path and self.cross:
>              env[b'CROSS_COMPILE'] = tools.to_bytes(
>                  wrapper + os.path.join(self.path, self.cross))
> -        else:
> +        elif self.cross:
>              env[b'CROSS_COMPILE'] = tools.to_bytes(wrapper + self.cross)
>              env[b'PATH'] = tools.to_bytes(self.path) + b':' + env[b'PATH']
>
> --
> 2.40.1
>

Regards,
Simon


More information about the U-Boot mailing list