From 5d5ec433cdf267b3de47bab1d28cdf191f357e2a Mon Sep 17 00:00:00 2001 From: Szymon Janc Date: Fri, 6 Oct 2023 16:51:59 +0200 Subject: [PATCH] ci: Build bootloader for supported BSPs This builds default bootloader configuration for all supported BSPs. --- .github/test_build_bootloader.sh | 69 ++++++++++++++++++++++++++ .github/workflows/build_bootloader.yml | 63 +++++++++++++++++++++++ 2 files changed, 132 insertions(+) create mode 100644 .github/test_build_bootloader.sh create mode 100644 .github/workflows/build_bootloader.yml diff --git a/.github/test_build_bootloader.sh b/.github/test_build_bootloader.sh new file mode 100644 index 0000000000..caa426f0e0 --- /dev/null +++ b/.github/test_build_bootloader.sh @@ -0,0 +1,69 @@ +#!/bin/bash -x + +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + +EXIT_CODE=0 + +BSPS=$(ls repos/apache-mynewt-core/hw/bsp) +IGNORED_BSPS="ci40 dialog_cmac embarc_emsk hifive1 native-armv7 native-mips\ + olimex-pic32-emz64 olimex-pic32-hmz144 pic32mx470_6lp_clicker\ + pic32mz2048_wi-fire usbmkw41z" + +# native is supported only on Linux (mind the space) +if [ $RUNNER_OS != "Linux" ]; then + IGNORED_BSPS+=" native" +fi + +BSP_COUNT=0 + +for bsp in ${BSPS}; do + # NOTE: do not remove the spaces around IGNORED_BSPS; it's required to + # match against the first and last entries + if [[ " ${IGNORED_BSPS} " =~ [[:blank:]]${bsp}[[:blank:]] ]]; then + echo "Skipping bsp=$bsp" + continue + fi + + # Limit build on non-Linux VMs to 10 BSPs + if [ $RUNNER_OS != "Linux" ]; then + ((BSP_COUNT++)) + + if [ $BSP_COUNT -gt 10 ]; then + echo "Skipping bsp=$bsp (limit reached)" + continue + fi + fi + + + echo "Testing bsp=$bsp" + + target="test-bootloader-$bsp" + newt target delete -s -f $target &> /dev/null + newt target create -s $target + newt target set -s $target bsp="@apache-mynewt-core/hw/bsp/$bsp" + newt target set -s $target app="@mcuboot/boot/mynewt" + newt target set -s $target build_profile=optimized + newt build -q $target + + rc=$? + [[ $rc -ne 0 ]] && EXIT_CODE=$rc + + newt target delete -s -f $target +done + +exit $EXIT_CODE diff --git a/.github/workflows/build_bootloader.yml b/.github/workflows/build_bootloader.yml new file mode 100644 index 0000000000..0cd89f9aa9 --- /dev/null +++ b/.github/workflows/build_bootloader.yml @@ -0,0 +1,63 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +name: Build check + +on: [push, pull_request] + +jobs: + bootloader: + name: Build bootloader + strategy: + fail-fast: false + matrix: + os: [ubuntu-latest] + runs-on: ${{ matrix.os }} + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-go@v3 + with: + go-version: 'stable' + - uses: carlosperate/arm-none-eabi-gcc-action@48db4484a55750df7a0ccca63347fcdea6534d78 + with: + release: '12.2.Rel1' + - name: Install Dependencies + if: matrix.os == 'ubuntu-latest' + run: | + sudo apt-get update + sudo apt-get install -y gcc-multilib + - name: Install newt + run: | + go version + go install mynewt.apache.org/newt/newt@latest + - name: Setup project + shell: bash + run: | + newt new build + cp -f .github/project.yml build/project.yml + cd build + newt upgrade --shallow=1 + rm -rf repos/apache-mynewt-core + git clone .. repos/apache-mynewt-core + cd .. + - name: Build bootloader + shell: bash + run: | + cd build + bash ../.github/test_build_bootloader.sh