From 0f66bb62eb82e2df9f25c037a52b88417f84c078 Mon Sep 17 00:00:00 2001 From: Andrei Litvin Date: Tue, 5 Apr 2022 12:30:33 -1000 Subject: [PATCH] Glob blacklist the interactive chip-tool build when cross-compiling (#17084) * Glob blacklist interactive builds of chip-tool in cross compile * Fix unit tests * blacklist only arm64 builds not all builds * Only blacklist chip tool * Update tests * Whitelist chip tool nointeractive builds * Fix unit tests --- scripts/build/build/targets.py | 12 +++++++--- scripts/build/testdata/build_linux_on_x64.txt | 22 +++++++++---------- 2 files changed, 19 insertions(+), 15 deletions(-) diff --git a/scripts/build/build/targets.py b/scripts/build/build/targets.py index de3e94538ade28..399e2a2fb1913d 100644 --- a/scripts/build/build/targets.py +++ b/scripts/build/build/targets.py @@ -222,8 +222,8 @@ def HostTargets(): targets = [target_native] # x64 linux supports cross compile - if (HostBoard.NATIVE.PlatformName() == 'linux') and ( - HostBoard.NATIVE.BoardName() != HostBoard.ARM64.BoardName()): + cross_compile = (HostBoard.NATIVE.PlatformName() == 'linux') and (HostBoard.NATIVE.BoardName() != HostBoard.ARM64.BoardName()) + if cross_compile: targets.append(target.Extend('arm64', board=HostBoard.ARM64)) app_targets = [] @@ -266,6 +266,7 @@ def HostTargets(): "clang"], use_libfuzzer=True), builder.AppendVariant(name="clang", use_clang=True), + builder.WhitelistVariantNameForGlob('no-interactive') builder.WhitelistVariantNameForGlob('ipv6only') for target in app_targets: @@ -276,7 +277,12 @@ def HostTargets(): builder.targets.append(target) for target in builder.AllVariants(): - yield target + if cross_compile and 'chip-tool' in target.name and 'arm64' in target.name and '-no-interactive' not in target.name: + # Interactive builds will not compile by default on arm cross compiles + # because libreadline is not part of the default sysroot + yield target.GlobBlacklist('Arm crosscompile does not support libreadline-dev') + else: + yield target # Without extra build variants yield target_native.Extend('chip-cert', app=HostApp.CERT_TOOL) diff --git a/scripts/build/testdata/build_linux_on_x64.txt b/scripts/build/testdata/build_linux_on_x64.txt index 44f1f6addfd6ea..24cafcda0bb651 100644 --- a/scripts/build/testdata/build_linux_on_x64.txt +++ b/scripts/build/testdata/build_linux_on_x64.txt @@ -11,15 +11,10 @@ bash -c ' PKG_CONFIG_PATH="SYSROOT_AARCH64/lib/aarch64-linux-gnu/pkgconfig" \ gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/all-clusters-app/linux '"'"'--args=chip_inet_config_enable_ipv4=false target_cpu="arm64" is_clang=true chip_crypto="mbedtls" sysroot="SYSROOT_AARCH64"'"'"' {out}/linux-arm64-all-clusters-ipv6only' -# Generating linux-arm64-chip-tool +# Generating linux-arm64-chip-tool-no-interactive bash -c ' PKG_CONFIG_PATH="SYSROOT_AARCH64/lib/aarch64-linux-gnu/pkgconfig" \ - gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/chip-tool '"'"'--args=target_cpu="arm64" is_clang=true chip_crypto="mbedtls" sysroot="SYSROOT_AARCH64"'"'"' {out}/linux-arm64-chip-tool' - -# Generating linux-arm64-chip-tool-ipv6only -bash -c ' -PKG_CONFIG_PATH="SYSROOT_AARCH64/lib/aarch64-linux-gnu/pkgconfig" \ - gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/chip-tool '"'"'--args=chip_inet_config_enable_ipv4=false target_cpu="arm64" is_clang=true chip_crypto="mbedtls" sysroot="SYSROOT_AARCH64"'"'"' {out}/linux-arm64-chip-tool-ipv6only' + gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/chip-tool '"'"'--args=config_use_interactive_mode=false target_cpu="arm64" is_clang=true chip_crypto="mbedtls" sysroot="SYSROOT_AARCH64"'"'"' {out}/linux-arm64-chip-tool-no-interactive' # Generating linux-arm64-door-lock bash -c ' @@ -102,6 +97,9 @@ gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/exa # Generating linux-x64-chip-tool-ipv6only gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/chip-tool --args=chip_inet_config_enable_ipv4=false {out}/linux-x64-chip-tool-ipv6only +# Generating linux-x64-chip-tool-no-interactive +gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/chip-tool --args=config_use_interactive_mode=false {out}/linux-x64-chip-tool-no-interactive + # Generating linux-x64-door-lock gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/door-lock-app/linux {out}/linux-x64-door-lock @@ -156,11 +154,8 @@ ninja -C {out}/linux-arm64-all-clusters # Building linux-arm64-all-clusters-ipv6only ninja -C {out}/linux-arm64-all-clusters-ipv6only -# Building linux-arm64-chip-tool -ninja -C {out}/linux-arm64-chip-tool - -# Building linux-arm64-chip-tool-ipv6only -ninja -C {out}/linux-arm64-chip-tool-ipv6only +# Building linux-arm64-chip-tool-no-interactive +ninja -C {out}/linux-arm64-chip-tool-no-interactive # Building linux-arm64-door-lock ninja -C {out}/linux-arm64-door-lock @@ -219,6 +214,9 @@ ninja -C {out}/linux-x64-chip-tool # Building linux-x64-chip-tool-ipv6only ninja -C {out}/linux-x64-chip-tool-ipv6only +# Building linux-x64-chip-tool-no-interactive +ninja -C {out}/linux-x64-chip-tool-no-interactive + # Building linux-x64-door-lock ninja -C {out}/linux-x64-door-lock