Enhanced connection management for esp32 network driver #1755
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# | |
# Copyright 2022 Paul Guyot <[email protected]> | |
# | |
# SPDX-License-Identifier: Apache-2.0 OR LGPL-2.1-or-later | |
# | |
name: Pico Build | |
on: | |
push: | |
paths: | |
- '.github/workflows/pico-build.yaml' | |
- 'CMakeLists.txt' | |
- 'libs/**' | |
- 'src/platforms/rp2/**' | |
- 'src/platforms/esp32/test/main/test_erl_sources/test_crypto.erl' | |
- 'src/libAtomVM/**' | |
pull_request: | |
paths: | |
- '.github/workflows/pico-build.yaml' | |
- 'CMakeLists.txt' | |
- 'libs/**' | |
- 'src/platforms/rp2/**' | |
- 'src/platforms/esp32/test/main/test_erl_sources/test_crypto.erl' | |
- 'src/libAtomVM/**' | |
permissions: | |
contents: write | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref != 'refs/heads/main' && github.ref || github.run_id }} | |
cancel-in-progress: true | |
jobs: | |
pico: | |
runs-on: ubuntu-22.04 | |
strategy: | |
matrix: | |
board: ["pico", "pico_w", "pico2"] | |
steps: | |
- name: Checkout repo | |
uses: actions/checkout@v4 | |
- name: "apt update" | |
run: sudo apt update | |
- name: "Install deps" | |
run: | | |
sudo apt install -y \ | |
cmake gperf ninja-build gcc-arm-none-eabi \ | |
libnewlib-arm-none-eabi libstdc++-arm-none-eabi-newlib \ | |
erlang-base erlang-dev erlang-dialyzer erlang-eunit rebar3 | |
- name: Build | |
shell: bash | |
working-directory: ./src/platforms/rp2/ | |
run: | | |
set -euo pipefail | |
mkdir build | |
cd build | |
cmake .. -G Ninja -DPICO_BOARD=${{ matrix.board }} | |
ninja | |
- name: Install nvm and nodejs 20 | |
if: matrix.board != 'pico2' | |
run: | | |
set -euo pipefail | |
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash | |
source $HOME/.nvm/nvm.sh | |
nvm install 20 | |
- name: Build tests (without SMP) | |
if: matrix.board != 'pico2' | |
shell: bash | |
working-directory: ./src/platforms/rp2/ | |
run: | | |
set -euo pipefail | |
mkdir build.nosmp | |
cd build.nosmp | |
# TODO: fix all warnings and enable -DAVM_WARNINGS_ARE_ERRORS=ON | |
cmake .. -G Ninja -DPICO_BOARD=${{ matrix.board }} -DAVM_DISABLE_SMP=1 | |
cmake --build . --target=rp2_tests | |
- name: Run tests with rp2040js | |
if: matrix.board != 'pico2' | |
shell: bash | |
working-directory: ./src/platforms/rp2/tests | |
run: | | |
set -euo pipefail | |
source $HOME/.nvm/nvm.sh | |
nvm use node | |
npm install | |
npx tsx run-tests.ts ../build.nosmp/tests/rp2_tests.uf2 ../build.nosmp/tests/test_erl_sources/rp2_test_modules.uf2 | |
- name: Build atomvmlib.uf2 | |
if: startsWith(github.ref, 'refs/tags/') && matrix.board != 'pico_w' | |
shell: bash | |
run: | | |
set -euo pipefail | |
mkdir build | |
cd build | |
cmake .. | |
make atomvmlib-${{ matrix.board }}.uf2 | |
- name: Rename AtomVM and write sha256sum | |
if: startsWith(github.ref, 'refs/tags/') | |
shell: bash | |
run: | | |
pushd src/platforms/rp2/build | |
ATOMVM_UF2=AtomVM-${{ matrix.board }}-${{ github.ref_name }}.uf2 | |
mv src/AtomVM.uf2 "src/${ATOMVM_UF2}" | |
sha256sum "src/${ATOMVM_UF2}" > "src/${ATOMVM_UF2}.sha256" | |
popd | |
pushd build/libs | |
ATOMVMLIB_FILE=atomvmlib-${{ matrix.board }}-${{ github.ref_name }}.uf2 | |
mv atomvmlib.uf2 "${ATOMVMLIB_FILE}" | |
sha256sum "${ATOMVMLIB_FILE}" > "${ATOMVMLIB_FILE}.sha256" | |
popd | |
- name: Rename atomvmlib and write sha256sum | |
if: startsWith(github.ref, 'refs/tags/') && matrix.board != 'pico_w' | |
shell: bash | |
run: | | |
pushd build/libs | |
ATOMVMLIB_FILE=atomvmlib-${{ matrix.board }}-${{ github.ref_name }}.uf2 | |
mv atomvmlib-${{ matrix.board }}.uf2 "${ATOMVMLIB_FILE}" | |
sha256sum "${ATOMVMLIB_FILE}" > "${ATOMVMLIB_FILE}.sha256" | |
popd | |
- name: Release (Pico & Pico2) | |
uses: softprops/action-gh-release@v1 | |
if: startsWith(github.ref, 'refs/tags/') && matrix.board != 'pico_w' | |
with: | |
draft: true | |
fail_on_unmatched_files: true | |
files: | | |
src/platforms/rp2/build/src/AtomVM-${{ matrix.board }}-${{ github.ref_name }}.uf2 | |
src/platforms/rp2/build/src/AtomVM-${{ matrix.board }}-${{ github.ref_name }}.uf2.sha256 | |
build/libs/atomvmlib-${{ matrix.board }}-${{ github.ref_name }}.uf2 | |
build/libs/atomvmlib-${{ matrix.board }}-${{ github.ref_name }}.uf2.sha256 | |
- name: Release (PicoW) | |
uses: softprops/action-gh-release@v1 | |
if: startsWith(github.ref, 'refs/tags/') && matrix.board == 'pico_w' | |
with: | |
draft: true | |
fail_on_unmatched_files: true | |
files: | | |
src/platforms/rp2/build/src/AtomVM-${{ matrix.board }}-${{ github.ref_name }}.uf2 | |
src/platforms/rp2/build/src/AtomVM-${{ matrix.board }}-${{ github.ref_name }}.uf2.sha256 |