Skip to content

Commit

Permalink
ci: Build bootloader for supported BSPs
Browse files Browse the repository at this point in the history
This builds default bootloader configuration for all supported BSPs.
  • Loading branch information
sjanc committed Oct 9, 2023
1 parent 763b634 commit 5d5ec43
Show file tree
Hide file tree
Showing 2 changed files with 132 additions and 0 deletions.
69 changes: 69 additions & 0 deletions .github/test_build_bootloader.sh
Original file line number Diff line number Diff line change
@@ -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
63 changes: 63 additions & 0 deletions .github/workflows/build_bootloader.yml
Original file line number Diff line number Diff line change
@@ -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

0 comments on commit 5d5ec43

Please sign in to comment.