| # |
| # Copyright (c) 2020, The OpenThread Authors. |
| # All rights reserved. |
| # |
| # Redistribution and use in source and binary forms, with or without |
| # modification, are permitted provided that the following conditions are met: |
| # 1. Redistributions of source code must retain the above copyright |
| # notice, this list of conditions and the following disclaimer. |
| # 2. Redistributions in binary form must reproduce the above copyright |
| # notice, this list of conditions and the following disclaimer in the |
| # documentation and/or other materials provided with the distribution. |
| # 3. Neither the name of the copyright holder nor the |
| # names of its contributors may be used to endorse or promote products |
| # derived from this software without specific prior written permission. |
| # |
| # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
| # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
| # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
| # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE |
| # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
| # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
| # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
| # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN |
| # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
| # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
| # POSSIBILITY OF SUCH DAMAGE. |
| # |
| |
| name: Build |
| |
| on: [push, pull_request] |
| |
| jobs: |
| |
| cancel-previous-runs: |
| runs-on: ubuntu-latest |
| steps: |
| - uses: rokroskar/workflow-run-cleanup-action@master |
| env: |
| GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}" |
| if: "github.ref != 'refs/heads/master'" |
| |
| pretty: |
| runs-on: ubuntu-18.04 |
| steps: |
| - uses: actions/checkout@v2 |
| - name: Bootstrap |
| run: | |
| sudo rm /etc/apt/sources.list.d/* && sudo apt-get update |
| sudo apt-get remove -y clang-6.0 libclang-common-6.0-dev libclang1-6.0 libllvm6.0 |
| sudo apt-get autoremove |
| sudo apt-get --no-install-recommends install -y clang-tools clang-format-6.0 shellcheck |
| python3 -m pip install yapf==0.29.0 |
| sudo snap install shfmt |
| - name: Check |
| run: | |
| script/make-pretty check |
| |
| cmake-version: |
| runs-on: ubuntu-18.04 |
| steps: |
| - uses: actions/checkout@v2 |
| - name: Bootstrap |
| run: | |
| sudo pip3 install --system -U cmake==3.10.3 |
| cmake --version | grep 3.10.3 |
| sudo apt-get --no-install-recommends install -y ninja-build libreadline-dev libncurses-dev |
| - name: Build |
| run: | |
| NODE_MODE=rcp ./script/test build |
| |
| package: |
| name: package-${{ matrix.compiler }} |
| runs-on: ubuntu-18.04 |
| strategy: |
| matrix: |
| include: |
| - compiler: gcc |
| compiler_c: gcc |
| compiler_cpp: g++ |
| - compiler: clang |
| compiler_c: clang |
| compiler_cpp: clang++ |
| env: |
| CC: ${{ matrix.compiler_c }} |
| CXX: ${{ matrix.compiler_cpp }} |
| steps: |
| - uses: actions/checkout@v2 |
| - name: Bootstrap |
| run: | |
| sudo rm /etc/apt/sources.list.d/* && sudo apt-get update |
| sudo apt-get --no-install-recommends install -y ninja-build libreadline-dev libncurses-dev |
| - name: Package |
| run: | |
| script/test package |
| |
| scan-build: |
| runs-on: ubuntu-18.04 |
| steps: |
| - uses: actions/checkout@v2 |
| - name: Bootstrap |
| run: | |
| sudo rm /etc/apt/sources.list.d/* && sudo apt-get update |
| sudo apt-get remove -y clang-6.0 libclang-common-6.0-dev libclang1-6.0 libllvm6.0 |
| sudo apt-get autoremove |
| sudo apt-get --no-install-recommends install -y clang-tools |
| - name: Run |
| run: | |
| script/check-scan-build |
| |
| arm-gcc: |
| name: arm-gcc-${{ matrix.gcc_ver }} |
| runs-on: ubuntu-18.04 |
| strategy: |
| matrix: |
| include: |
| - gcc_ver: 4 |
| gcc_download_url: https://launchpad.net/gcc-arm-embedded/4.9/4.9-2015-q3-update/+download/gcc-arm-none-eabi-4_9-2015q3-20150921-linux.tar.bz2 |
| gcc_extract_dir: gcc-arm-none-eabi-4_9-2015q3 |
| - gcc_ver: 5 |
| gcc_download_url: https://developer.arm.com/-/media/Files/downloads/gnu-rm/5_4-2016q3/gcc-arm-none-eabi-5_4-2016q3-20160926-linux.tar.bz2 |
| gcc_extract_dir: gcc-arm-none-eabi-5_4-2016q3 |
| - gcc_ver: 6 |
| gcc_download_url: https://developer.arm.com/-/media/Files/downloads/gnu-rm/6-2017q2/gcc-arm-none-eabi-6-2017-q2-update-linux.tar.bz2 |
| gcc_extract_dir: gcc-arm-none-eabi-6-2017-q2-update |
| - gcc_ver: 7 |
| gcc_download_url: https://developer.arm.com/-/media/Files/downloads/gnu-rm/7-2018q2/gcc-arm-none-eabi-7-2018-q2-update-linux.tar.bz2 |
| gcc_extract_dir: gcc-arm-none-eabi-7-2018-q2-update |
| - gcc_ver: 9 |
| gcc_download_url: https://developer.arm.com/-/media/Files/downloads/gnu-rm/9-2019q4/RC2.1/gcc-arm-none-eabi-9-2019-q4-major-x86_64-linux.tar.bz2 |
| gcc_extract_dir: gcc-arm-none-eabi-9-2019-q4-major |
| steps: |
| - uses: actions/checkout@v2 |
| - name: Bootstrap |
| run: | |
| cd /tmp |
| sudo rm /etc/apt/sources.list.d/* && sudo apt-get update |
| sudo apt-get --no-install-recommends install -y lib32z1 ninja-build |
| wget ${{ matrix.gcc_download_url }} -O gcc-arm.tar.bz2 |
| tar xjf gcc-arm.tar.bz2 |
| |
| # required for jn5189 and k32w061 |
| pip install pycryptodome |
| - name: Build |
| run: | |
| export PATH=/tmp/${{ matrix.gcc_extract_dir }}/bin:$PATH |
| script/check-arm-build |
| |
| gcc: |
| name: gcc-${{ matrix.gcc_ver }} |
| runs-on: ubuntu-18.04 |
| strategy: |
| matrix: |
| gcc_ver: [5, 6, 7, 8, 9] |
| env: |
| CC: gcc-${{ matrix.gcc_ver }} |
| CXX: g++-${{ matrix.gcc_ver }} |
| steps: |
| - uses: actions/checkout@v2 |
| - name: Bootstrap |
| run: | |
| sudo rm /etc/apt/sources.list.d/* && sudo apt-get update |
| sudo apt-get --no-install-recommends install -y gcc-${{ matrix.gcc_ver }} g++-${{ matrix.gcc_ver }} ninja-build libreadline-dev libncurses-dev |
| - name: Build |
| run: | |
| script/check-simulation-build |
| script/check-posix-build |
| |
| clang: |
| name: clang-${{ matrix.clang_ver }} |
| runs-on: ubuntu-18.04 |
| strategy: |
| matrix: |
| clang_ver: ["6.0", "7", "8", "9"] |
| env: |
| CC: clang-${{ matrix.clang_ver }} |
| CXX: clang++-${{ matrix.clang_ver }} |
| steps: |
| - uses: actions/checkout@v2 |
| - name: Bootstrap |
| run: | |
| sudo rm /etc/apt/sources.list.d/* && sudo apt-get update |
| sudo apt-get --no-install-recommends install -y clang-${{ matrix.clang_ver }} clang++-${{ matrix.clang_ver }} ninja-build libreadline-dev libncurses-dev |
| - name: Build |
| run: | |
| script/check-simulation-build |
| script/check-posix-build |
| |
| clang-m32: |
| name: clang-m32-${{ matrix.clang_ver }} |
| runs-on: ubuntu-18.04 |
| strategy: |
| matrix: |
| clang_ver: ["6.0", "7", "8", "9"] |
| env: |
| CC: clang-${{ matrix.clang_ver }} |
| CXX: clang++-${{ matrix.clang_ver }} |
| CFLAGS: -m32 -Wconversion |
| CXXFLAGS: -m32 -Wconversion |
| LDFLAGS: -m32 |
| steps: |
| - uses: actions/checkout@v2 |
| - name: Bootstrap |
| run: | |
| sudo dpkg --add-architecture i386 |
| sudo rm /etc/apt/sources.list.d/* && sudo apt-get update |
| sudo apt-get --no-install-recommends install -y clang-${{ matrix.clang_ver }} clang++-${{ matrix.clang_ver }} g++-multilib ninja-build |
| sudo apt-get --no-install-recommends install -y libreadline-dev:i386 libncurses-dev:i386 |
| - name: Build |
| run: | |
| script/check-simulation-build |
| script/check-posix-build |
| |
| gn: |
| runs-on: ubuntu-18.04 |
| steps: |
| - uses: actions/checkout@v2 |
| - name: Bootstrap |
| run: | |
| sudo rm /etc/apt/sources.list.d/* && sudo apt-get update |
| sudo apt-get --no-install-recommends install -y ninja-build |
| cd /tmp |
| wget -O gn.zip https://chrome-infra-packages.appspot.com/dl/gn/gn/linux-amd64/+/latest |
| unzip -o gn.zip |
| chmod a+x gn && mkdir -p bin && mv -f gn bin/ |
| - name: Build |
| run: | |
| export PATH=/tmp/bin:$PATH |
| script/check-gn-build |
| |
| macos-clang: |
| runs-on: macos-10.15 |
| env: |
| CC: clang |
| CXX: clang++ |
| steps: |
| - uses: actions/checkout@v2 |
| - name: Bootstrap |
| run: | |
| brew install automake ninja llvm |
| - name: Build |
| run: | |
| script/check-posix-build |
| script/check-simulation-build |
| |
| macos-gcc: |
| runs-on: macos-10.15 |
| env: |
| CC: gcc |
| CXX: g++ |
| steps: |
| - uses: actions/checkout@v2 |
| - name: Bootstrap |
| run: | |
| brew install automake ninja |
| - name: Build |
| run: | |
| script/check-posix-build |
| script/check-simulation-build |
| |
| android: |
| runs-on: ubuntu-18.04 |
| steps: |
| - uses: actions/checkout@v2 |
| - name: Build |
| run: | |
| docker run --rm -v $PWD:/build/openthread openthread/android-trusty /build/openthread/script/check-android-build |