summaryrefslogtreecommitdiff
path: root/zephyr/firmware_builder.py
diff options
context:
space:
mode:
authorYH Lin <yueherngl@google.com>2022-11-30 21:44:08 +0000
committerYH Lin <yueherngl@google.com>2022-11-30 21:44:08 +0000
commitaf25602b15b22b9ef5821dcba9934311f2157c48 (patch)
treed0c89ae8814c2ba35c238c6c0644ec6b1602c63a /zephyr/firmware_builder.py
parent54462f034b635260dd09173b3d082e47fc960ef3 (diff)
parentaa40b859b3a73e5a205bc561c1a29eff38485461 (diff)
downloadchrome-ec-af25602b15b22b9ef5821dcba9934311f2157c48.tar.gz
Merge remote-tracking branch cros/main into factory-brya-14517.B-main
Generated by: util/update_release_branch.py --baseboard brya --relevant_paths_file baseboard/brya/relevant-paths.txt factory-brya-14517.B-main Relevant changes: git log --oneline 54462f034b..aa40b859b3 -- baseboard/brya board/agah board/anahera board/banshee board/brya board/crota board/felwinter board/gimble board/kano board/mithrax board/osiris board/primus board/redrix board/taeko board/taniks board/vell board/volmar driver/bc12/pi3usb9201_public.* driver/charger/bq25710.* driver/ppc/nx20p348x.* driver/ppc/syv682x_public.* driver/retimer/bb_retimer_public.* driver/tcpm/nct38xx.* driver/tcpm/ps8xxx_public.* driver/tcpm/tcpci.* include/power/alderlake* include/intel_x86.h power/alderlake* power/intel_x86.c util/getversion.sh e6da633c38 driver: Sort header files 234a87ae2d tcpci: Add FRS enable to driver structure a56be59ccd tcpm_header: add test for tcpm_dump_registers 57b3256963 Rename CONFIG_CHARGER_INPUT_CURRENT to _CHARGER_DEFAULT_CURRENT_LIMIT e420c8ff9a marasov: Modify TypeC and TypeA configuration. 43b53e0045 Add default implementation of board_set_charge_limit b75dc90677 Add CONFIG_CHARGER_MIN_INPUT_CURRENT_LIMIT f1b563c350 baseboard: Sort header files 7d01b1e58d driver/retimer/ps8818.h: Add I2C ADDR FLAGS 0x30, 0x58, 0x70 ec31407993 Add CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT 8f89f69a5b crota: disable lid angle sensor for clamshell BRANCH=None BUG=b:259002141 b:255184961 b:247100970 b:259354679 b:260630630 BUG=b:163093572 b:254328661 TEST=`emerge-brya chromeos-ec` Force-Relevant-Builds: all Change-Id: Ia85a701fbf6b8e67ec214b9e25e0e55e980a6f47 Signed-off-by: YH Lin <yueherngl@google.com>
Diffstat (limited to 'zephyr/firmware_builder.py')
-rwxr-xr-xzephyr/firmware_builder.py76
1 files changed, 62 insertions, 14 deletions
diff --git a/zephyr/firmware_builder.py b/zephyr/firmware_builder.py
index 545d31312d..edcbfc58ef 100755
--- a/zephyr/firmware_builder.py
+++ b/zephyr/firmware_builder.py
@@ -24,28 +24,44 @@ DEFAULT_BUNDLE_DIRECTORY = "/tmp/artifact_bundles"
DEFAULT_BUNDLE_METADATA_FILE = "/tmp/artifact_bundle_metadata"
# Boards that we want to track the coverage of our own files specifically.
-SPECIAL_BOARDS = ["herobrine", "krabby", "nivviks", "skyrim", "kingler"]
+SPECIAL_BOARDS = ["herobrine", "krabby", "nivviks", "skyrim", "kingler", "rex"]
-def log_cmd(cmd):
+def log_cmd(cmd, env=None):
"""Log subprocess command."""
+ if env is not None:
+ print("env", end=" ")
+ [ # pylint:disable=expression-not-assigned
+ print(key + "=" + shlex.quote(str(value)), end=" ")
+ for key, value in env.items()
+ ]
print(" ".join(shlex.quote(str(x)) for x in cmd))
sys.stdout.flush()
-def run_twister(platform_ec, code_coverage=False, extra_args=None):
- """Build the tests using twister."""
+def run_twister(
+ platform_ec, code_coverage=False, extra_args=None, use_gcc=False
+):
+ """Build the tests using twister.
+
+ Returns the path to the twister-out dir.
+ """
+
+ if use_gcc:
+ outdir = "twister-out-gcc"
+ toolchain = "host"
+ else:
+ outdir = "twister-out-llvm"
+ toolchain = "llvm"
cmd = [
platform_ec / "twister",
"--outdir",
- platform_ec / "twister-out",
+ platform_ec / outdir,
"-v",
"-i",
- "-p",
- "native_posix",
- "-p",
- "unit_testing",
"--no-upload-cros-rdb",
+ "--toolchain",
+ toolchain,
]
if extra_args:
@@ -60,7 +76,14 @@ def run_twister(platform_ec, code_coverage=False, extra_args=None):
]
)
log_cmd(cmd)
- subprocess.run(cmd, check=True, cwd=platform_ec, stdin=subprocess.DEVNULL)
+
+ subprocess.run(
+ cmd,
+ check=True,
+ cwd=platform_ec,
+ stdin=subprocess.DEVNULL,
+ )
+ return platform_ec / outdir
def build(opts):
@@ -76,6 +99,11 @@ def build(opts):
stdin=subprocess.DEVNULL,
)
+ # Start with a clean build environment
+ cmd = ["make", "clobber"]
+ log_cmd(cmd)
+ subprocess.run(cmd, cwd=platform_ec, check=True, stdin=subprocess.DEVNULL)
+
cmd = ["zmake", "-D", "build", "-a"]
if opts.code_coverage:
cmd.append("--coverage")
@@ -243,7 +271,10 @@ def test(opts):
# Twister-based tests
platform_ec = zephyr_dir.parent
third_party = platform_ec.parent.parent / "third_party"
- run_twister(platform_ec, opts.code_coverage)
+ twister_out_dir = run_twister(platform_ec, opts.code_coverage)
+ twister_out_dir_gcc = run_twister(
+ platform_ec, opts.code_coverage, use_gcc=True
+ )
if opts.code_coverage:
build_dir = platform_ec / "build" / "zephyr"
@@ -252,7 +283,7 @@ def test(opts):
[
"/usr/bin/lcov",
"--summary",
- platform_ec / "twister-out" / "coverage.info",
+ twister_out_dir / "coverage.info",
],
cwd=zephyr_dir,
check=True,
@@ -262,6 +293,20 @@ def test(opts):
).stdout
_extract_lcov_summary("EC_ZEPHYR_TESTS", metrics, output)
+ output = subprocess.run(
+ [
+ "/usr/bin/lcov",
+ "--summary",
+ twister_out_dir_gcc / "coverage.info",
+ ],
+ cwd=zephyr_dir,
+ check=True,
+ stdout=subprocess.PIPE,
+ universal_newlines=True,
+ stdin=subprocess.DEVNULL,
+ ).stdout
+ _extract_lcov_summary("EC_ZEPHYR_TESTS_GCC", metrics, output)
+
cmd = ["make", "test-coverage", f"-j{opts.cpus}"]
log_cmd(cmd)
subprocess.run(
@@ -291,7 +336,9 @@ def test(opts):
"-a",
platform_ec / "build/coverage/lcov.info",
"-a",
- platform_ec / "twister-out" / "coverage.info",
+ twister_out_dir / "coverage.info",
+ "-a",
+ twister_out_dir_gcc / "coverage.info",
]
log_cmd(cmd)
output = subprocess.run(
@@ -343,6 +390,7 @@ def test(opts):
zephyr_dir / "emul/**",
zephyr_dir / "mock/**",
third_party / "zephyr/main/subsys/emul/**",
+ third_party / "zephyr/main/arch/posix/**",
# Exclude all files ending in _test.[ch] or _emul.[ch]
"**/*_test.c",
"**/*_test.h",
@@ -470,7 +518,7 @@ def test(opts):
# These are questionable, but they are essentially untestable
zephyr_dir / "drivers/**",
zephyr_dir / "include/drivers/**",
- zephyr_dir / "projects/**",
+ zephyr_dir / "program/**",
zephyr_dir / "shim/chip/**",
zephyr_dir / "shim/chip/npcx/npcx_monitor/**",
zephyr_dir / "shim/core/**",