Merge branch 'mtl-005-drop-stable' of https://github.com/thesofprojec… #26
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
--- | |
name: Sparse Zephyr | |
# 'workflow_dispatch' allows running this workflow manually from the | |
# 'Actions' tab | |
# yamllint disable-line rule:truthy | |
on: [push, pull_request, workflow_dispatch, workflow_call] | |
jobs: | |
# As of sparse commit ce1a6720f69e / Sept 2022, the exit status of | |
# sparse.c is an unusable mess and always zero in practice. Moreover | |
# SOF has hundreds of sparse warnings right now. So fail only on a | |
# small subset of specific warnings defined in | |
# sof/scripts/parse_sparse_output.sh | |
warnings-subset: | |
# We're sharing binaries with the zephyr-build container so keep | |
# this in sync with it. | |
runs-on: ubuntu-20.04 | |
strategy: | |
fail-fast: false | |
matrix: | |
platforms: [ | |
{platform: tgl, | |
real_cc: xtensa-intel_s1000_zephyr-elf/bin/xtensa-intel_s1000_zephyr-elf-gcc}, | |
# This is the WRONG compiler for MTL but for now this is the | |
# one and only one expected by the Zephyr build system so it | |
# must be set to this value to sparse MTL. | |
# Sparse needs a REAL_CC but it does not matter which one, it | |
# does not affect sparse results. | |
# As soon as sof/west.yml is updated to a fixed Zephyr version | |
# this will fail with an error message that will show the | |
# exact value that must replace this one. | |
{platform: mtl, | |
real_cc: xtensa-intel_s1000_zephyr-elf/bin/xtensa-intel_s1000_zephyr-elf-gcc}, | |
] | |
steps: | |
- name: git clone sparse analyzer | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 10 | |
# TODO: switch to thesofproject/sparse | |
repository: marc-hb/sparse | |
path: workspace/sparse | |
- name: build sparse analyzer | |
run: cd workspace/sparse && make -j4 | |
- name: git clone sof | |
uses: actions/checkout@v3 | |
# From time to time this will catch a git tag and change SOF_VERSION | |
with: | |
fetch-depth: 10 | |
path: ./workspace/sof | |
- name: west clones | |
run: pip3 install west && cd workspace/sof/ && west init -l && | |
west update --narrow --fetch-opt=--depth=5 | |
# Not strictly necessary but saves a lot of scrolling in the next step | |
# Caching a 12G image is unfortunately not possible: | |
# https://github.com/ScribeMD/docker-cache/issues/304 | |
# For faster builds we would have to pay for some persistent runners. | |
- name: Download docker image && ls /opt/toolchains/ | |
run: cd workspace && ./sof/zephyr/docker-run.sh ls -l /opt/toolchains/ | |
# We have to painfully extract REAL_CC from the docker image to | |
# tell the Zephyr build what it... already knows and wants!! Zephyr | |
# commit 3ebb18b8826 explains this sparse problem. | |
# | |
# --pristine is important to reproduce _warnings_. It makes no | |
# difference for github but it's useful for anyone trying to | |
# reproduce and copying the command from the logs. | |
- name: analyze zephyr | |
working-directory: ./workspace | |
run: | | |
./sof/zephyr/docker-run.sh /bin/sh -c \ | |
'cmake -P ./sof/zephyr/FindZephyr-sdk.cmake > zsdk_location' | |
cat zsdk_location | |
ZSDK=$(cat zsdk_location); _RCC=${{ matrix.platforms.real_cc }} | |
REAL_CC="$ZSDK/$_RCC" ./sof/zephyr/docker-run.sh \ | |
./sof/zephyr/docker-build.sh ${{ matrix.platforms.platform }} \ | |
--cmake-args=-DSPARSE=y --cmake-args=-DCONFIG_LOG_USE_VLA=n --pristine 2>&1 | tee _.log | |
printf '\n\n\t\t\t ---- Messages below are treated as sparse errors --- \n\n\n' | |
(set -x; ./sof/scripts/parse_sparse_output.sh ${{ matrix.platforms.platform }} <_.log) |