diff --git a/lisa/_kmod.py b/lisa/_kmod.py index a4fc9ecf3ceb19309c5480fb5bb48d3dd94530c0..207f6da283cd9d1b4836b05dbc1c5c27862d5580 100644 --- a/lisa/_kmod.py +++ b/lisa/_kmod.py @@ -245,24 +245,23 @@ def _make_chroot(make_vars, bind_paths=None, alpine_version='3.15.0', overlay_ba 'bison', 'flex', 'python3', - - # TODO: As of october 2021 for some reason, the kernel still needs GCC - # to build some tools even when compiling with clang - 'gcc', ] make_vars = make_vars or {} - try: - cc = make_vars['CC'] - except KeyError: - cc = 'gcc' + def add_compiler(cc): + if cc == 'clang': + packages.extend([ + 'lld', + 'llvm', + ]) + packages.append(cc) + + cc = make_vars.get('CC', 'gcc') + add_compiler(cc) - if cc == 'clang': - packages.extend([ - 'lld', - 'llvm', - ]) - packages.append(cc) + hostcc = make_vars.get('HOSTCC', cc) + if hostcc != cc: + add_compiler(hostcc) devlib_arch = make_vars.get('ARCH', LISA_HOST_ABI) @@ -891,6 +890,10 @@ class KernelTree(Loggable, SerializeViaConstructor): # Alpine chroot, so there is no need for a cross compiler make_vars.pop('CROSS_COMPILE', None) + # Avoid requiring another compiler to build the tools used to build + # the kernel. + make_vars['HOSTCC'] = cc + return (make_vars, cc) @classmethod