# # 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-20.04 steps: - uses: rokroskar/workflow-run-cleanup-action@master env: GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}" if: "github.ref != 'refs/heads/main'" pretty: runs-on: ubuntu-20.04 steps: - uses: actions/checkout@v2 with: submodules: true - name: Bootstrap run: | sudo rm /etc/apt/sources.list.d/* && sudo apt-get update sudo apt-get --no-install-recommends install -y clang-format-9 clang-tidy-9 shellcheck python3 -m pip install yapf==0.31.0 sudo snap install shfmt - name: Check run: | script/make-pretty check markdown-lint-check: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - uses: gaurav-nelson/github-action-markdown-link-check@v1 with: use-verbose-mode: 'yes' max-depth: 3 cmake-version: runs-on: ubuntu-18.04 steps: - uses: actions/checkout@v2 with: submodules: true - 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: | OT_NODE_TYPE=rcp ./script/test build package: name: package-${{ matrix.compiler }} runs-on: ubuntu-20.04 strategy: fail-fast: false 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 with: submodules: true - 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-20.04 steps: - uses: actions/checkout@v2 with: submodules: true - name: Bootstrap run: | sudo rm /etc/apt/sources.list.d/* && sudo apt-get update sudo apt-get --no-install-recommends install -y clang-tools-9 ninja-build - name: Run run: | script/check-scan-build mbedtls3-build: runs-on: ubuntu-18.04 steps: - uses: actions/checkout@v2 with: submodules: true - name: Bootstrap run: | sudo apt-get --no-install-recommends install -y ninja-build libreadline-dev libncurses-dev rm -rf third_party/mbedtls/repo - uses: actions/checkout@v2 with: repository: ARMmbed/mbedtls ref: v3.1.0 path: third_party/mbedtls/repo - name: Build run: | ./script/test build arm-gcc: name: arm-gcc-${{ matrix.gcc_ver }} runs-on: ubuntu-18.04 strategy: fail-fast: false 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 with: submodules: true - 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 gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf wget --tries 4 --no-check-certificate --quiet ${{ matrix.gcc_download_url }} -O gcc-arm.tar.bz2 tar xjf gcc-arm.tar.bz2 # use the minimal required cmake version sudo pip3 install --system -U cmake==3.10.3 cmake --version | grep 3.10.3 - 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: fail-fast: false matrix: gcc_ver: [5, 6, 7, 8, 9, 10, 11] env: CC: gcc-${{ matrix.gcc_ver }} CXX: g++-${{ matrix.gcc_ver }} steps: - uses: actions/checkout@v2 with: submodules: true - name: Bootstrap run: | sudo rm /etc/apt/sources.list.d/* && sudo apt-get update case ${{ matrix.gcc_ver }} in 11) sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test ;; esac 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-20.04 strategy: fail-fast: false matrix: clang_ver: ["6.0", "7", "8", "9", "10", "11", "12", "13"] env: CC: clang-${{ matrix.clang_ver }} CXX: clang++-${{ matrix.clang_ver }} steps: - uses: actions/checkout@v2 with: submodules: true - name: Bootstrap run: | sudo rm /etc/apt/sources.list.d/* wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add - echo 'deb http://apt.llvm.org/focal/ llvm-toolchain-focal main deb-src http://apt.llvm.org/focal/ llvm-toolchain-focal main # 13 deb http://apt.llvm.org/focal/ llvm-toolchain-focal-13 main deb-src http://apt.llvm.org/focal/ llvm-toolchain-focal-13 main' | sudo tee -a /etc/apt/sources.list 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-20.04 strategy: fail-fast: false matrix: clang_ver: ["6.0", "7", "8", "9", "10", "11", "12", "13"] env: CC: clang-${{ matrix.clang_ver }} CXX: clang++-${{ matrix.clang_ver }} CFLAGS: -m32 -Wconversion CXXFLAGS: -m32 -Wconversion LDFLAGS: -m32 steps: - uses: actions/checkout@v2 with: submodules: true - name: Bootstrap run: | sudo dpkg --add-architecture i386 wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add - echo 'deb http://apt.llvm.org/focal/ llvm-toolchain-focal main deb-src http://apt.llvm.org/focal/ llvm-toolchain-focal main # 13 deb http://apt.llvm.org/focal/ llvm-toolchain-focal-13 main deb-src http://apt.llvm.org/focal/ llvm-toolchain-focal-13 main' | sudo tee -a /etc/apt/sources.list sudo apt-get update sudo apt-get --no-install-recommends install -y clang-${{ matrix.clang_ver }} clang++-${{ matrix.clang_ver }} ninja-build sudo apt-get --no-install-recommends install -y g++-multilib libreadline-dev:i386 libncurses-dev:i386 - name: Build run: | script/check-simulation-build script/check-posix-build gn: runs-on: ubuntu-20.04 steps: - uses: actions/checkout@v2 with: submodules: true - 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: name: macos-${{ matrix.CC }} strategy: fail-fast: false matrix: include: - CC: clang CXX: clang++ - CC: gcc CXX: g++ runs-on: macos-12 env: CC: ${{ matrix.CC }} CXX: ${{ matrix.CXX }} steps: - uses: actions/checkout@v2 with: submodules: true - name: Bootstrap run: | rm -f '/usr/local/bin/2to3' brew update brew install automake m4 ninja [ ${{ matrix.CC }} != clang ] || brew install llvm - name: Build run: | export PATH=$(brew --prefix m4)/bin:$PATH script/check-posix-build script/check-simulation-build android: runs-on: ubuntu-20.04 steps: - uses: actions/checkout@v2 with: submodules: true - name: Build run: | docker run --rm -v $PWD:/build/openthread openthread/android-trusty /build/openthread/script/check-android-build