--- # Tools that can save round-trips to github and a lot of time: # # yamllint -f parsable pull_request.yml # pip3 install ruamel.yaml.cmd # yaml merge-expand pull_request.yml exp.yml && # diff -w -u pull_request.yml exp.yml # # github.com also has a powerful web editor that can be used without # committing. # TODO: finish scattering this very old workflow to more specific # .yml files name: Main Actions # yamllint disable-line rule:truthy on: push: branches: - 'main' - 'stable-**' - '**-stable' pull_request: branches: - 'main' - 'stable-**' - '**-stable' # Allows you to run this workflow manually from the Actions tab workflow_dispatch: # Allows to call this forkflow from other workflows workflow_call: jobs: doxygen: runs-on: ubuntu-22.04 steps: - uses: actions/checkout@v3 - name: apt get doxygen graphviz run: sudo apt-get -y install ninja-build doxygen graphviz - name: Show warnings but fail only on errors run: cmake -GNinja -S doc -B docbuild && ninja -C docbuild -v doc # Build again (it's very quick) so warnings don't go unnoticed. # For older doxygen versions that don't have FAIL_ON_WARNINGS, use # WARN_AS_ERROR = YES instead. 'YES' is inferior because it stops # on the first error. # # Note some doxygen bug(s) can cause some specific error types to # escape WARN_AS_ERROR, example: # https://github.com/doxygen/doxygen/issues/7970 and # https://github.com/thesofproject/sof/pull/5978 - name: Fail on warnings run: printf 'WARN_AS_ERROR = FAIL_ON_WARNINGS\n' >> doc/sof.doxygen.in && ninja -C docbuild -v doc # This is unfortunately a mix of sof-docs/.github/ + the previous job # above, duplicating a bit of both: please keep in sync with both. We # build sof-docs here too because waiting for sof-docs CI to find # regressions introduced in sof.git is very time-consuming, see # example in # https://github.com/thesofproject/sof/pull/5731#issuecomment-1175630147 sof-docs: runs-on: ubuntu-20.04 # sof-docs is still stuck to this for now steps: - uses: actions/checkout@v3 - name: apt-get update run: sudo apt-get update - name: apt-get install run: sudo apt-get -y install doxygen make default-jre graphviz cmake ninja-build - name: doxygen run: cmake -GNinja -S doc/ -B doxybuild/ && ninja -C doxybuild/ -v doc # Nested git clone, this is fine - name: clone sof-docs run: git clone https://github.com/thesofproject/sof-docs sof-docs/ - name: PATH += .local/bin run: echo "$HOME/.local/bin" >> $GITHUB_PATH - name: 'pip install -r sof-docs/scripts/requirements.txt' run: pip install -r sof-docs/scripts/requirements.txt - name: build sof-docs run: make -C sof-docs/ html SOF_DOC_BUILD="$(pwd)"/doxybuild/ # This is a bit redundant with the other jobs below and with the (much # faster!) installer[.yml] but it may differ in which platforms are # built. This makes sure platforms without any open-source toolchain # are added in the right place and do not accidentally break the -a # option, Docker testing etc. gcc-build-default-platforms: runs-on: ubuntu-22.04 steps: - uses: actions/checkout@v3 with: {fetch-depth: 5, submodules: recursive} - name: docker run: docker pull thesofproject/sof && docker tag thesofproject/sof sof - name: xtensa-build-all.sh -a run: ./scripts/docker-run.sh ./scripts/xtensa-build-all.sh -a || ./scripts/docker-run.sh ./scripts/xtensa-build-all.sh -a -j 1 gcc-build-only: runs-on: ubuntu-22.04 strategy: fail-fast: false matrix: # Use groups to avoid spamming the web interface. Pay attention # to COMMAS. Don't use a single big group so a single failure # does not block all other builds. platform: [imx8ulp, rn rmb, mt8186 mt8195, ] steps: - uses: actions/checkout@v3 with: {fetch-depth: 0, submodules: recursive} - name: docker run: docker pull thesofproject/sof && docker tag thesofproject/sof sof - name: xtensa-build-all.sh platforms env: PLATFORM: ${{ matrix.platform }} run: ./scripts/docker-run.sh ./scripts/xtensa-build-all.sh -r ${PLATFORM} # Warning: there is a fair amount of duplication between 'build-only' # and 'qemu-boot' because github does not support YAML anchors as of Jan # 2021. Defining our new actions would be overkill. Another popular # option is to generate this file from a source with YAML anchors # before committing it; also deemed overkill for the current amount of # duplication. qemu-boot-test: runs-on: ubuntu-22.04 strategy: fail-fast: false matrix: # Compiler-based groups, see HOST= compilers in # xtensa-build-all.sh. Pay attention to commas and whitespace. # The main reason for these groups is to avoid the matrix # swarming the Github web interface and burying other checks. # See longer example above. platform: [imx8 imx8x imx8m, ] steps: - uses: actions/checkout@v3 with: {fetch-depth: 0, submodules: recursive} - name: turn off HAVE_AGENT run: echo CONFIG_HAVE_AGENT=n > src/arch/xtensa/configs/override/no-agent.config - name: docker SOF run: docker pull thesofproject/sof && docker tag thesofproject/sof sof - name: xtensa-build-all.sh -o no-agent platforms env: PLATFORM: ${{ matrix.platform }} run: ./scripts/docker-run.sh ./scripts/xtensa-build-all.sh -o no-agent -r ${PLATFORM} - name: docker QEMU run: docker pull thesofproject/sofqemu && docker tag thesofproject/sofqemu sofqemu - name: qemu-check env: PLATFORM: ${{ matrix.platform }} run: ./scripts/docker-qemu.sh ../sof.git/scripts/qemu-check.sh ${PLATFORM}