620 lines
19 KiB
YAML
620 lines
19 KiB
YAML
|
name: tests
|
|||
|
|
|||
|
on:
|
|||
|
push:
|
|||
|
paths-ignore: ['**.md', '**.svg', '**.png']
|
|||
|
pull_request:
|
|||
|
paths-ignore: ['**.md', '**.svg', '**.png']
|
|||
|
|
|||
|
jobs:
|
|||
|
linux:
|
|||
|
runs-on: ubuntu-latest
|
|||
|
name: linux-${{ matrix.config.target }}
|
|||
|
timeout-minutes: 10
|
|||
|
|
|||
|
strategy:
|
|||
|
fail-fast: false
|
|||
|
matrix:
|
|||
|
config:
|
|||
|
- {target: clang, cc: clang, }
|
|||
|
- {target: clang-x86, cc: clang, flags: -DCMAKE_C_FLAGS="-m32", install: "gcc-multilib" }
|
|||
|
- {target: gcc, cc: gcc, }
|
|||
|
# Builds without uvwasi
|
|||
|
- {target: gcc-no-uvwasi, cc: gcc, flags: -DBUILD_WASI=simple }
|
|||
|
- {target: clang-no-uvwasi, cc: clang, flags: -DBUILD_WASI=simple }
|
|||
|
# Debug builds
|
|||
|
- {target: gcc-debug, cc: gcc, flags: -DCMAKE_BUILD_TYPE=Debug }
|
|||
|
- {target: clang-no-uvwasi-debug, cc: clang, flags: -DCMAKE_BUILD_TYPE=Debug -DBUILD_WASI=simple }
|
|||
|
|
|||
|
# TODO: fails on numeric operations
|
|||
|
#- {target: gcc-x86, cc: gcc, flags: "-m32", install: "gcc-multilib" }
|
|||
|
|
|||
|
steps:
|
|||
|
- uses: actions/checkout@v2
|
|||
|
- name: Install ${{ matrix.config.install }}
|
|||
|
if: ${{ matrix.config.install }}
|
|||
|
run: |
|
|||
|
sudo apt update
|
|||
|
sudo apt install ${{ matrix.config.install }}
|
|||
|
- name: Configure
|
|||
|
env:
|
|||
|
CC: ${{ matrix.config.cc }}
|
|||
|
CFLAGS: ${{ matrix.config.cflags }}
|
|||
|
run: |
|
|||
|
mkdir build
|
|||
|
cd build
|
|||
|
cmake ${{ matrix.config.flags }} ..
|
|||
|
- name: Build
|
|||
|
run: |
|
|||
|
cmake --build build
|
|||
|
- name: Test WebAssembly spec
|
|||
|
run: cd test && python3 run-spec-test.py
|
|||
|
- name: Test previous WebAssembly specs
|
|||
|
run: |
|
|||
|
cd test
|
|||
|
python3 run-spec-test.py --spec=v1.1
|
|||
|
- name: Test WASI apps
|
|||
|
run: cd test && python3 run-wasi-test.py
|
|||
|
|
|||
|
linux-alpine:
|
|||
|
runs-on: ubuntu-latest
|
|||
|
container: alpine:3.10
|
|||
|
|
|||
|
steps:
|
|||
|
- uses: actions/checkout@v2
|
|||
|
- name: Prepare
|
|||
|
run: apk add build-base cmake python3 git --update-cache
|
|||
|
- name: Configure
|
|||
|
run: |
|
|||
|
mkdir build
|
|||
|
cd build
|
|||
|
cmake ..
|
|||
|
- name: Build
|
|||
|
run: cmake --build build
|
|||
|
- name: Test WebAssembly spec
|
|||
|
run: cd test && python3 run-spec-test.py
|
|||
|
- name: Test WASI apps
|
|||
|
run: cd test && python3 run-wasi-test.py
|
|||
|
|
|||
|
macos:
|
|||
|
runs-on: macos-latest
|
|||
|
name: macos-${{ matrix.config.target }}
|
|||
|
timeout-minutes: 10
|
|||
|
|
|||
|
strategy:
|
|||
|
fail-fast: false
|
|||
|
matrix:
|
|||
|
config:
|
|||
|
- {target: uvwasi, }
|
|||
|
- {target: no-uvwasi, flags: -DBUILD_WASI=simple }
|
|||
|
|
|||
|
steps:
|
|||
|
- uses: actions/checkout@v2
|
|||
|
- name: Configure
|
|||
|
run: |
|
|||
|
mkdir build
|
|||
|
cd build
|
|||
|
cmake ${{ matrix.config.flags }} ..
|
|||
|
- name: Build
|
|||
|
run: |
|
|||
|
cmake --build build
|
|||
|
- name: Test WebAssembly spec
|
|||
|
run: cd test && python3 run-spec-test.py
|
|||
|
- name: Test previous WebAssembly specs
|
|||
|
run: |
|
|||
|
cd test
|
|||
|
python3 run-spec-test.py --spec=v1.1
|
|||
|
- name: Test WASI apps
|
|||
|
run: cd test && python3 run-wasi-test.py
|
|||
|
|
|||
|
windows:
|
|||
|
runs-on: windows-latest
|
|||
|
name: windows-${{ matrix.config.target }}
|
|||
|
timeout-minutes: 10
|
|||
|
|
|||
|
strategy:
|
|||
|
fail-fast: false
|
|||
|
matrix:
|
|||
|
config:
|
|||
|
- {target: clang-x64, platform: "-A x64", toolset: "-T ClangCL" }
|
|||
|
- {target: msvc-x64, platform: "-A x64", toolset: "" }
|
|||
|
- {target: clang-x86, platform: "-A Win32", toolset: "-T ClangCL" }
|
|||
|
- {target: msvc-x86, platform: "-A Win32", toolset: "" }
|
|||
|
# Builds without uvwasi
|
|||
|
- {target: clang-x64-no-uvwasi, platform: "-A x64", toolset: "-T ClangCL", flags: "-DBUILD_WASI=simple" }
|
|||
|
- {target: msvc-x64-no-uvwasi, platform: "-A x64", toolset: "", flags: "-DBUILD_WASI=simple" }
|
|||
|
- {target: clang-x86-no-uvwasi, platform: "-A Win32", toolset: "-T ClangCL", flags: "-DBUILD_WASI=simple" }
|
|||
|
- {target: msvc-x86-no-uvwasi, platform: "-A Win32", toolset: "", flags: "-DBUILD_WASI=simple" }
|
|||
|
|
|||
|
defaults:
|
|||
|
run:
|
|||
|
shell: cmd
|
|||
|
|
|||
|
steps:
|
|||
|
- uses: actions/checkout@v2
|
|||
|
- name: Configure
|
|||
|
run: |
|
|||
|
mkdir build
|
|||
|
cd build
|
|||
|
cmake ${{ matrix.config.platform }} ${{ matrix.config.toolset }} ${{ matrix.config.flags }} ..
|
|||
|
- name: Build
|
|||
|
run: |
|
|||
|
cmake --build build --config Release
|
|||
|
cp ./build/Release/wasm3.exe ./build/
|
|||
|
- name: Test WebAssembly spec
|
|||
|
run: |
|
|||
|
cd test
|
|||
|
python run-spec-test.py
|
|||
|
- name: Test previous WebAssembly specs
|
|||
|
run: |
|
|||
|
cd test
|
|||
|
python run-spec-test.py --spec=v1.1
|
|||
|
- name: Test WASI apps
|
|||
|
run: |
|
|||
|
cd test
|
|||
|
python run-wasi-test.py
|
|||
|
|
|||
|
cygwin-build:
|
|||
|
runs-on: windows-latest
|
|||
|
|
|||
|
steps:
|
|||
|
- uses: actions/checkout@main
|
|||
|
- name: Set up Cygwin
|
|||
|
uses: egor-tensin/setup-cygwin@master
|
|||
|
with:
|
|||
|
platform: x64
|
|||
|
packages: make gcc-g++ cmake
|
|||
|
- run: cd $GITHUB_WORKSPACE && cmake -DBUILD_WASI=simple . && make
|
|||
|
shell: C:\tools\cygwin\bin\bash.exe --login --norc -eo pipefail -o igncr '{0}'
|
|||
|
|
|||
|
wasi:
|
|||
|
runs-on: ubuntu-latest
|
|||
|
timeout-minutes: 10
|
|||
|
|
|||
|
steps:
|
|||
|
- uses: actions/checkout@v2
|
|||
|
- name: Install Python dependencies
|
|||
|
run: |
|
|||
|
python3 -m pip install pip==20.1.1
|
|||
|
python3 -m pip install --upgrade setuptools wheel
|
|||
|
pip3 --version
|
|||
|
- name: Install Wasienv
|
|||
|
env:
|
|||
|
WASMER_RELEASE_TAG: "1.0.2"
|
|||
|
run: curl https://raw.githubusercontent.com/wasienv/wasienv/master/install.sh | sh
|
|||
|
- name: Configure
|
|||
|
run: |
|
|||
|
source $HOME/.wasienv/wasienv.sh
|
|||
|
mkdir build-wasi
|
|||
|
cd build-wasi
|
|||
|
wasimake cmake ..
|
|||
|
- name: Build
|
|||
|
run: |
|
|||
|
source $HOME/.wasienv/wasienv.sh
|
|||
|
cmake --build build-wasi
|
|||
|
- name: Test WebAssembly spec (in Wasmer)
|
|||
|
run: |
|
|||
|
source $HOME/.wasmer/wasmer.sh
|
|||
|
cd test
|
|||
|
python3 run-spec-test.py --exec "wasmer run --mapdir=/:. ../build-wasi/wasm3.wasm -- --repl"
|
|||
|
|
|||
|
- name: Test WASI apps (in Wasmer)
|
|||
|
run: |
|
|||
|
source $HOME/.wasmer/wasmer.sh
|
|||
|
cd test
|
|||
|
python3 run-wasi-test.py --exec "wasmer run --mapdir=/:. ../build-wasi/wasm3.wasm --" --fast
|
|||
|
|
|||
|
- name: Configure (native)
|
|||
|
run: |
|
|||
|
mkdir build
|
|||
|
cd build
|
|||
|
cmake ..
|
|||
|
- name: Build (native)
|
|||
|
run: |
|
|||
|
cmake --build build
|
|||
|
- name: Test WebAssembly spec (in Wasm3, self-hosting)
|
|||
|
run: |
|
|||
|
cd test
|
|||
|
cp ../build-wasi/wasm3.wasm ./
|
|||
|
python3 run-spec-test.py --exec "../build/wasm3 --stack-size 2097152 ../build-wasi/wasm3.wasm --repl"
|
|||
|
- name: Test WASI apps (in Wasm3, self-hosting)
|
|||
|
run: |
|
|||
|
cd test
|
|||
|
python3 run-wasi-test.py --fast --exec "../build/wasm3 --stack-size 2097152 ../build-wasi/wasm3.wasm"
|
|||
|
|
|||
|
ios:
|
|||
|
runs-on: macos-latest
|
|||
|
timeout-minutes: 10
|
|||
|
|
|||
|
steps:
|
|||
|
- uses: actions/checkout@v2
|
|||
|
- name: List Xcode versions
|
|||
|
run: ls /Applications | grep Xcode
|
|||
|
- name: Select Xcode 12
|
|||
|
run: sudo xcode-select -switch /Applications/Xcode_12.4.app
|
|||
|
- name: Build (iPhone 11)
|
|||
|
run: |
|
|||
|
cd platforms/ios
|
|||
|
xcodebuild build -scheme wasm3 -project wasm3.xcodeproj -configuration Release -destination 'platform=iOS Simulator,name=iPhone 11,OS=14.4'
|
|||
|
|
|||
|
android:
|
|||
|
runs-on: ubuntu-latest
|
|||
|
timeout-minutes: 10
|
|||
|
|
|||
|
steps:
|
|||
|
- uses: actions/checkout@v2
|
|||
|
- uses: seanmiddleditch/gha-setup-ninja@master
|
|||
|
- name: Set up JDK 1.8
|
|||
|
uses: actions/setup-java@v1
|
|||
|
with:
|
|||
|
java-version: 1.8
|
|||
|
- name: Install NDK
|
|||
|
run: |
|
|||
|
sudo ${ANDROID_HOME}/tools/bin/sdkmanager --install "ndk;22.1.7171670"
|
|||
|
sudo ${ANDROID_HOME}/tools/bin/sdkmanager --uninstall "cmake;3.18.1"
|
|||
|
sudo ${ANDROID_HOME}/tools/bin/sdkmanager --install "cmake;3.10.2.4988404"
|
|||
|
- name: Build
|
|||
|
run: |
|
|||
|
cd platforms/android
|
|||
|
./gradlew build
|
|||
|
|
|||
|
python:
|
|||
|
runs-on: ubuntu-latest
|
|||
|
timeout-minutes: 10
|
|||
|
|
|||
|
steps:
|
|||
|
- name: Checkout
|
|||
|
uses: actions/checkout@v2
|
|||
|
with:
|
|||
|
path: wasm3
|
|||
|
- name: Checkout pywasm3
|
|||
|
uses: actions/checkout@v2
|
|||
|
with:
|
|||
|
repository: wasm3/pywasm3
|
|||
|
path: pywasm3
|
|||
|
- name: Set up Python
|
|||
|
uses: actions/setup-python@v2
|
|||
|
- name: Update and Build Python module
|
|||
|
run: |
|
|||
|
rm -rf ./pywasm3/wasm3
|
|||
|
cp -r wasm3/source ./pywasm3/wasm3
|
|||
|
pip install ./pywasm3
|
|||
|
- name: Install WABT
|
|||
|
run: |
|
|||
|
sudo apt update
|
|||
|
sudo apt install wabt
|
|||
|
- name: Test
|
|||
|
run: |
|
|||
|
pip install pytest
|
|||
|
cd ./pywasm3
|
|||
|
pytest
|
|||
|
|
|||
|
cosmopolitan:
|
|||
|
runs-on: ubuntu-20.04
|
|||
|
timeout-minutes: 10
|
|||
|
|
|||
|
steps:
|
|||
|
- uses: actions/checkout@v2
|
|||
|
- name: Build αcτµαlly pδrταblε εxεcµταblε
|
|||
|
run: |
|
|||
|
cd platforms/cosmopolitan
|
|||
|
gcc -v
|
|||
|
./build.sh
|
|||
|
- name: Prepare tests
|
|||
|
run: |
|
|||
|
cd test
|
|||
|
cp ../platforms/cosmopolitan/wasm3.com ./wasm3-lin.com
|
|||
|
cp ../platforms/cosmopolitan/wasm3.com ./wasm3-win.com
|
|||
|
sudo sh -c "echo ':APE:M::MZqFpD::/bin/sh:' >/proc/sys/fs/binfmt_misc/register"
|
|||
|
- name: Test WebAssembly spec
|
|||
|
run: |
|
|||
|
cd test
|
|||
|
python3 run-spec-test.py --exec "./wasm3-lin.com --repl"
|
|||
|
- name: Test WASI apps
|
|||
|
run: |
|
|||
|
cd test
|
|||
|
python3 run-wasi-test.py --fast --exec "./wasm3-lin.com"
|
|||
|
- name: Install Wine64
|
|||
|
run: |
|
|||
|
sudo apt update
|
|||
|
sudo apt install wine64
|
|||
|
wine --version
|
|||
|
- name: Test WebAssembly spec (in Wine)
|
|||
|
run: |
|
|||
|
cd test
|
|||
|
python3 run-spec-test.py --exec "wine ./wasm3-win.com --repl"
|
|||
|
- name: Test WASI apps (in Wine)
|
|||
|
run: |
|
|||
|
cd test
|
|||
|
python3 run-wasi-test.py --fast --exec "wine ./wasm3-win.com"
|
|||
|
|
|||
|
cross-qemu:
|
|||
|
runs-on: ubuntu-20.04
|
|||
|
name: cross-qemu-${{ matrix.config.target }}
|
|||
|
timeout-minutes: 10
|
|||
|
|
|||
|
strategy:
|
|||
|
fail-fast: false
|
|||
|
matrix:
|
|||
|
config:
|
|||
|
#- {target: i386, toolchain: gcc-multilib, cc: clang -m32, qemu: qemu-i386-static }
|
|||
|
- {target: arm, toolchain: gcc-arm-linux-gnueabi, cc: arm-linux-gnueabi-gcc, qemu: qemu-arm-static }
|
|||
|
- {target: armhf, toolchain: gcc-arm-linux-gnueabihf, cc: arm-linux-gnueabihf-gcc, qemu: qemu-arm-static }
|
|||
|
- {target: aarch64, toolchain: gcc-aarch64-linux-gnu, cc: aarch64-linux-gnu-gcc, qemu: qemu-aarch64-static }
|
|||
|
- {target: riscv64, toolchain: gcc-riscv64-linux-gnu, cc: riscv64-linux-gnu-gcc, qemu: qemu-riscv64-static }
|
|||
|
- {target: ppc, toolchain: gcc-powerpc-linux-gnu, cc: powerpc-linux-gnu-gcc, qemu: qemu-ppc-static }
|
|||
|
- {target: ppc64, toolchain: gcc-powerpc64-linux-gnu, cc: powerpc64-linux-gnu-gcc, qemu: qemu-ppc64-static }
|
|||
|
#- {target: ppc64le, toolchain: gcc-powerpc64le-linux-gnu, cc: powerpc64le-linux-gnu-gcc, qemu: qemu-ppc64le-static }
|
|||
|
- {target: s390x, toolchain: gcc-s390x-linux-gnu, cc: s390x-linux-gnu-gcc, qemu: qemu-s390x-static }
|
|||
|
- {target: mips, toolchain: gcc-mips-linux-gnu, cc: mips-linux-gnu-gcc, qemu: qemu-mips-static }
|
|||
|
- {target: mips64, toolchain: gcc-mips64-linux-gnuabi64, cc: mips64-linux-gnuabi64-gcc, qemu: qemu-mips64-static }
|
|||
|
- {target: mipsel, toolchain: gcc-mipsel-linux-gnu, cc: mipsel-linux-gnu-gcc, qemu: qemu-mipsel-static }
|
|||
|
- {target: mips64el,toolchain: gcc-mips64el-linux-gnuabi64, cc: mips64el-linux-gnuabi64-gcc,qemu: qemu-mips64el-static }
|
|||
|
- {target: alpha, toolchain: gcc-alpha-linux-gnu, cc: alpha-linux-gnu-gcc, qemu: qemu-alpha-static }
|
|||
|
- {target: sparc64, toolchain: gcc-sparc64-linux-gnu, cc: sparc64-linux-gnu-gcc, qemu: qemu-sparc64-static, skip_wasi: true }
|
|||
|
|
|||
|
#- {target: i386 (u64 slots), toolchain: gcc-multilib, cc: clang -m32, qemu: qemu-i386-static, cflags: -Dd_m3Use32BitSlots=0 }
|
|||
|
- {target: arm (u64 slots), toolchain: gcc-arm-linux-gnueabi, cc: arm-linux-gnueabi-gcc, qemu: qemu-arm-static, cflags: -Dd_m3Use32BitSlots=0 }
|
|||
|
- {target: aarch64 (u64 slots), toolchain: gcc-aarch64-linux-gnu, cc: aarch64-linux-gnu-gcc, qemu: qemu-aarch64-static, cflags: -Dd_m3Use32BitSlots=0 }
|
|||
|
- {target: ppc (u64 slots), toolchain: gcc-powerpc-linux-gnu, cc: powerpc-linux-gnu-gcc, qemu: qemu-ppc-static, cflags: -Dd_m3Use32BitSlots=0 }
|
|||
|
- {target: ppc64 (u64 slots), toolchain: gcc-powerpc64-linux-gnu, cc: powerpc64-linux-gnu-gcc, qemu: qemu-ppc64-static, cflags: -Dd_m3Use32BitSlots=0 }
|
|||
|
|
|||
|
steps:
|
|||
|
- uses: actions/checkout@v2
|
|||
|
- name: Install QEMU
|
|||
|
run: |
|
|||
|
sudo apt update
|
|||
|
sudo apt install qemu-user-static
|
|||
|
- name: Install ${{ matrix.config.toolchain }}
|
|||
|
run: |
|
|||
|
sudo apt install ${{ matrix.config.toolchain }}
|
|||
|
- name: Build
|
|||
|
run: |
|
|||
|
mkdir build
|
|||
|
cd build
|
|||
|
${{ matrix.config.cc }} -DASSERTS -Dd_m3HasWASI ${{ matrix.config.cflags }} \
|
|||
|
-I../source ../source/*.c ../platforms/app/main.c \
|
|||
|
-O3 -g0 -flto -lm -static \
|
|||
|
-o wasm3
|
|||
|
- name: Test WebAssembly spec
|
|||
|
run: |
|
|||
|
cd test
|
|||
|
python3 run-spec-test.py --exec "${{ matrix.config.qemu }} ../build/wasm3 --repl"
|
|||
|
- name: Test WASI apps
|
|||
|
if: ${{ !matrix.config.skip_wasi }}
|
|||
|
run: |
|
|||
|
cd test
|
|||
|
python3 run-wasi-test.py --fast --exec "${{ matrix.config.qemu }} ../build/wasm3"
|
|||
|
|
|||
|
platformio:
|
|||
|
runs-on: ubuntu-latest
|
|||
|
timeout-minutes: 10
|
|||
|
|
|||
|
steps:
|
|||
|
- uses: actions/checkout@v2
|
|||
|
- name: Set up Python
|
|||
|
uses: actions/setup-python@v2
|
|||
|
with:
|
|||
|
python-version: '3.x'
|
|||
|
- name: Install PlatformIO
|
|||
|
run: |
|
|||
|
python -m pip install --upgrade pip
|
|||
|
pip install -U platformio
|
|||
|
- name: Build AVR ATmega1284
|
|||
|
run: |
|
|||
|
cd platforms/embedded/arduino
|
|||
|
pio run -e mega1284
|
|||
|
! nm .pio/build/mega1284/firmware.elf | grep printf
|
|||
|
- name: Build ESP8266
|
|||
|
run: |
|
|||
|
cd platforms/embedded/esp8266
|
|||
|
pio run
|
|||
|
# TODO:
|
|||
|
#- name: Build ESP32
|
|||
|
# run: |
|
|||
|
# cd platforms/embedded/esp32-pio
|
|||
|
# pio run
|
|||
|
|
|||
|
platformio-arm:
|
|||
|
runs-on: ubuntu-latest
|
|||
|
timeout-minutes: 10
|
|||
|
|
|||
|
steps:
|
|||
|
- uses: actions/checkout@v2
|
|||
|
- name: Set up Python
|
|||
|
uses: actions/setup-python@v2
|
|||
|
with:
|
|||
|
python-version: '3.x'
|
|||
|
- name: Install PlatformIO
|
|||
|
run: |
|
|||
|
python -m pip install --upgrade pip
|
|||
|
pip install -U platformio
|
|||
|
- name: Build Arduino MKR1000
|
|||
|
run: |
|
|||
|
cd platforms/embedded/arduino
|
|||
|
pio run -e mkr1000
|
|||
|
- name: Build Blue Pill (JeeH)
|
|||
|
run: |
|
|||
|
cd platforms/embedded/bluepill
|
|||
|
pio run
|
|||
|
- name: Build TinyBLE
|
|||
|
run: |
|
|||
|
cd platforms/embedded/arduino
|
|||
|
pio run -e tinyBLE
|
|||
|
- name: Build MXChip AZ3166
|
|||
|
run: |
|
|||
|
cd platforms/embedded/arduino
|
|||
|
pio run -e az3166
|
|||
|
|
|||
|
platformio-riscv:
|
|||
|
runs-on: ubuntu-latest
|
|||
|
timeout-minutes: 10
|
|||
|
|
|||
|
steps:
|
|||
|
- uses: actions/checkout@v2
|
|||
|
- name: Set up Python
|
|||
|
uses: actions/setup-python@v2
|
|||
|
with:
|
|||
|
python-version: '3.x'
|
|||
|
- name: Install PlatformIO
|
|||
|
run: |
|
|||
|
python -m pip install --upgrade pip
|
|||
|
pip install -U platformio
|
|||
|
- name: Build HiFive1
|
|||
|
run: |
|
|||
|
cd platforms/embedded/hifive1
|
|||
|
pio run
|
|||
|
- name: Build Sipeed MAIX
|
|||
|
run: |
|
|||
|
cd platforms/embedded/arduino
|
|||
|
pio run -e maix
|
|||
|
|
|||
|
particle:
|
|||
|
runs-on: ubuntu-latest
|
|||
|
timeout-minutes: 10
|
|||
|
if: "github.event_name == 'push'"
|
|||
|
|
|||
|
steps:
|
|||
|
- uses: actions/checkout@v2
|
|||
|
- name: Set up Particle CLI
|
|||
|
run: sudo npm install -g particle-cli
|
|||
|
- name: Log in
|
|||
|
env:
|
|||
|
PARTICLE_TOKEN: ${{ secrets.PARTICLE_TOKEN }}
|
|||
|
run: particle login --token $PARTICLE_TOKEN
|
|||
|
- name: Build Photon
|
|||
|
run: |
|
|||
|
cd platforms/embedded/particle
|
|||
|
particle compile --followSymlinks photon
|
|||
|
particle compile --followSymlinks argon
|
|||
|
|
|||
|
esp32-idf:
|
|||
|
runs-on: ubuntu-latest
|
|||
|
container: igrr/idf-qemu:release-v4.0-esp-develop-20191228
|
|||
|
timeout-minutes: 10
|
|||
|
|
|||
|
steps:
|
|||
|
- uses: actions/checkout@v2
|
|||
|
- name: Build for ESP32 (IDF v4.0)
|
|||
|
run: |
|
|||
|
. $IDF_PATH/export.sh
|
|||
|
cd platforms/embedded/esp32-idf
|
|||
|
export EXTRA_CFLAGS="-Werror"
|
|||
|
idf.py build
|
|||
|
shell: bash
|
|||
|
- name: Test for ESP32 in QEMU
|
|||
|
run: |
|
|||
|
cd platforms/embedded/esp32-idf
|
|||
|
make-flash-img.sh wasm3 flash_img.bin
|
|||
|
qemu-system-xtensa -machine esp32 -nographic -drive file=flash_img.bin,if=mtd,format=raw -no-reboot | tee out.txt
|
|||
|
grep "Result: 46368" out.txt
|
|||
|
grep "Elapsed: " out.txt
|
|||
|
grep "Restarting..." out.txt
|
|||
|
test $(($(grep "ets Jun 8 2016" out.txt | wc -l))) -eq 1
|
|||
|
- name: Check that IDF and PIO examples are in sync
|
|||
|
run: |
|
|||
|
diff -q platforms/embedded/esp32-idf/main/main.cpp platforms/embedded/esp32-pio/src/main.cpp
|
|||
|
# TODO: also check that the build flags are in sync
|
|||
|
|
|||
|
cpp:
|
|||
|
runs-on: ubuntu-latest
|
|||
|
timeout-minutes: 10
|
|||
|
|
|||
|
steps:
|
|||
|
- uses: actions/checkout@v2
|
|||
|
- name: Configure
|
|||
|
run: |
|
|||
|
cd platforms/cpp
|
|||
|
mkdir build
|
|||
|
cd build
|
|||
|
cmake ..
|
|||
|
- name: Build
|
|||
|
run: |
|
|||
|
cd platforms/cpp
|
|||
|
cmake --build build
|
|||
|
- name: Run
|
|||
|
run: |
|
|||
|
cd platforms/cpp/build
|
|||
|
./wasm3_cpp_example
|
|||
|
|
|||
|
as-cpp:
|
|||
|
name: maintenance (build as C++)
|
|||
|
runs-on: ubuntu-latest
|
|||
|
timeout-minutes: 10
|
|||
|
|
|||
|
steps:
|
|||
|
- uses: actions/checkout@v2
|
|||
|
- name: Build
|
|||
|
run: |
|
|||
|
mkdir build
|
|||
|
cd build
|
|||
|
clang -xc++ -Dd_m3HasWASI \
|
|||
|
-I../source ../source/*.c ../platforms/app/main.c \
|
|||
|
-O3 -g0 -lm \
|
|||
|
-o wasm3
|
|||
|
- name: Test
|
|||
|
run: ./build/wasm3 ./test/wasi/simple/test.wasm
|
|||
|
|
|||
|
with-logs:
|
|||
|
name: maintenance (debug logs)
|
|||
|
runs-on: ubuntu-latest
|
|||
|
timeout-minutes: 10
|
|||
|
|
|||
|
steps:
|
|||
|
- uses: actions/checkout@v2
|
|||
|
- name: Build
|
|||
|
run: |
|
|||
|
mkdir build
|
|||
|
cd build
|
|||
|
clang -xc++ -Dd_m3HasWASI -DDEBUG \
|
|||
|
-Dd_m3EnableOpTracing=1 \
|
|||
|
-Dd_m3EnableStrace=1 \
|
|||
|
-Dd_m3LogParse=1 \
|
|||
|
-Dd_m3LogModule=1 \
|
|||
|
-Dd_m3LogCompile=1 \
|
|||
|
-Dd_m3LogWasmStack=1 \
|
|||
|
-Dd_m3LogEmit=1 \
|
|||
|
-Dd_m3LogCodePages=1 \
|
|||
|
-Dd_m3LogRuntime=1 \
|
|||
|
-Dd_m3LogNativeStack=1 \
|
|||
|
-I../source ../source/*.c ../platforms/app/main.c \
|
|||
|
-O3 -g0 -lm \
|
|||
|
-o wasm3
|
|||
|
- name: Test
|
|||
|
run: ./build/wasm3 ./test/wasi/simple/test.wasm > /dev/null
|
|||
|
|
|||
|
preprocessed-ops:
|
|||
|
name: maintenance (preprocess ops)
|
|||
|
runs-on: ubuntu-latest
|
|||
|
timeout-minutes: 10
|
|||
|
|
|||
|
steps:
|
|||
|
- uses: actions/checkout@v2
|
|||
|
- name: Install sponge
|
|||
|
run: |
|
|||
|
sudo apt update
|
|||
|
sudo apt install moreutils
|
|||
|
- name: Build
|
|||
|
run: |
|
|||
|
make -f extra/utils.mk preprocess
|
|||
|
mkdir build
|
|||
|
cd build
|
|||
|
gcc -Dd_m3HasWASI \
|
|||
|
-I../source ../source/*.c ../platforms/app/main.c \
|
|||
|
-O3 -g0 -lm \
|
|||
|
-o wasm3
|
|||
|
- name: Test
|
|||
|
run: ./build/wasm3 ./test/wasi/simple/test.wasm
|
|||
|
|
|||
|
spellcheck:
|
|||
|
runs-on: ubuntu-latest
|
|||
|
steps:
|
|||
|
- name: Set up Python
|
|||
|
uses: actions/setup-python@v2
|
|||
|
- name: Install codespell
|
|||
|
run: |
|
|||
|
pip install codespell
|
|||
|
- name: Spellcheck
|
|||
|
run: |
|
|||
|
codespell
|