Skip to content

CI

CI #142

Workflow file for this run

name: CI
on:
create:
tags:
push:
branches:
- main
pull_request:
jobs:
lint:
name: lint
runs-on: ubuntu-latest
steps:
- uses: actions/setup-python@v1
with:
python-version: '3.x'
- uses: actions/checkout@v1
- name: install tools
run: |
pip3 install flake8==3.7.8
sudo apt-get install clang-format
- run: flake8
- run: ./scripts/clang-format-diff.sh
env:
GITHUB_EVENT_BEFORE: ${{ github.event.before }}
build:
name: build
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, macos-12, macos-14, windows-latest]
steps:
- uses: actions/setup-python@v5
with:
python-version: '3.x'
- uses: actions/checkout@v1
with:
submodules: true
- name: install ninja (linux)
run: sudo apt-get install ninja-build
if: matrix.os == 'ubuntu-latest'
- name: install ninja (osx)
run: brew install ninja
if: matrix.os == 'macos-12' || matrix.os == 'macos-14'
- name: install ninja (win)
run: choco install ninja
if: matrix.os == 'windows-latest'
- name: mkdir
run: mkdir -p out
- name: cmake
run: cmake .. -G Ninja -DWITH_WASI=ON -DWERROR=ON -Werror=dev -Wno-deprecated
working-directory: out
if: matrix.os != 'windows-latest'
- name: cmake (windows)
run: cmake .. -DWERROR=ON -Werror=dev
working-directory: out
if: matrix.os == 'windows-latest'
- name: build
run: cmake --build out
- name: check if generated files are up-to-date
run: python ./scripts/check_clean.py
- name: unittests
run: cmake --build out --target run-unittests
- name: c-api-tests
run: cmake --build out --target run-c-api-tests
- name: tests
run: cmake --build out --target run-tests
emscripten:
name: emscripten
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
with:
submodules: true
- name: build
run: |
docker run -di --name emscripten -v $(pwd):/src emscripten/emsdk:latest bash
docker exec emscripten emcc -v
docker exec emscripten emcmake cmake -B emscripten -DWERROR=ON
docker exec -w /src/emscripten emscripten make -j $(nproc)
wasi:
name: wasi
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
submodules: true
- name: build-tools
run: |
docker run -di --name wasi-sdk -v $(pwd):/src --workdir /src ghcr.io/webassembly/wasi-sdk:wasi-sdk-20 bash
docker exec wasi-sdk cmake -S . -B out -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=install -DBUILD_TESTS=0 -DBUILD_LIBWASM=0
docker exec wasi-sdk cmake --build out --config Release --target install
- uses: ./.github/actions/release-archive
with:
os: wasi
sanitize:
name: sanitize
runs-on: ubuntu-latest
env:
USE_NINJA: "1"
CC: "clang"
WASM2C_CFLAGS: "-march=x86-64-v2" # currently required for SIMDe to pass some tests on x86-64
strategy:
matrix:
sanitizer: [asan, ubsan, fuzz]
type: [debug, release]
steps:
- uses: actions/setup-python@v1
with:
python-version: '3.x'
- uses: actions/checkout@v1
with:
submodules: true
- run: sudo apt-get install ninja-build
- name: workaround for ASLR+ASAN compatibility # See https://github.com/actions/runner/issues/3207
run: sudo sysctl -w vm.mmap_rnd_bits=28
- run: make clang-${{ matrix.type }}-${{ matrix.sanitizer }}
- if: ${{ matrix.sanitizer }} != fuzz
run: make test-clang-${{ matrix.type }}-${{ matrix.sanitizer }}
build-wasm2c-memchecked:
name: wasm2c-memchecked
runs-on: ubuntu-latest
env:
USE_NINJA: "1"
CC: "clang" # used by the wasm2c tests
WASM2C_CFLAGS: "-march=x86-64-v2 -fsanitize=address -DWASM_RT_USE_MMAP=0"
steps:
- uses: actions/setup-python@v1
with:
python-version: '3.x'
- uses: actions/checkout@v1
with:
submodules: true
- run: sudo apt-get install ninja-build
- name: workaround for ASLR+ASAN compatibility # See https://github.com/actions/runner/issues/3207
run: sudo sysctl -w vm.mmap_rnd_bits=28
- run: make clang-debug-asan
- run: make test-clang-debug-asan
build-min-cmake:
name: min-cmake
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
with:
submodules: true
- uses: actions/setup-python@v1
with:
python-version: '3.x'
- name: Install Ninja
run: sudo apt-get install ninja-build
- name: Detect minimum CMake version
run: >
awk 'match($0, /cmake_minimum_required\(VERSION *([0-9]+\.[0-9]+)\)/, a)
{ print "WABT_CMAKE_VER=" a[1]; exit; }' CMakeLists.txt | tee $GITHUB_ENV
- name: Install minimum CMake
run: |
python -m pip install -U setuptools wheel pip
python -m pip install "cmake==${WABT_CMAKE_VER}.*"
cmake --version
- name: Configure WABT
run: cmake -G Ninja -S . -B out -DCMAKE_BUILD_TYPE=Release
- name: build
run: cmake --build out
- name: unittests
run: cmake --build out --target run-unittests
- name: c-api-tests
run: cmake --build out --target run-c-api-tests
- name: tests
run: cmake --build out --target run-tests
build-rlbox:
name: rlbox
runs-on: ubuntu-latest
env:
USE_NINJA: "1"
WASM2C_CFLAGS: "-DWASM_RT_USE_MMAP=1 -DWASM_RT_SKIP_SIGNAL_RECOVERY=1 -DWASM_RT_NONCONFORMING_UNCHECKED_STACK_EXHAUSTION=1 -DWASM2C_TEST_EMBEDDER_SIGNAL_HANDLING"
steps:
- uses: actions/setup-python@v1
with:
python-version: '3.x'
- uses: actions/checkout@v1
with:
submodules: true
- run: sudo apt-get install ninja-build
- run: make clang-debug
- name: tests (wasm2c tests excluding memory64)
run: ./test/run-tests.py wasm2c --exclude-dir memory64
build-cross:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
arch: [s390x]
services: # still faster on debian...
distcc:
image: debian:latest
options: --health-cmd distccmon-text --health-interval 5s --health-start-period 5m debian:latest bash -c "apt-get update && apt-get install -y g++-s390x-linux-gnu distcc && distccd --daemon --no-detach"
ports:
- 3632:3632
env:
QEMU_LD_PREFIX: /usr/${{matrix.arch}}-linux-gnu/
steps:
- uses: actions/setup-python@v1
with:
python-version: '3.x'
- uses: actions/checkout@v1
with:
submodules: true
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
with:
platforms: ${{matrix.arch}}
image: "tonistiigi/binfmt:master"
- name: install ninja
run: sudo apt-get install ninja-build
- name: install the toolchain
run: sudo apt-get install g++-${{matrix.arch}}-linux-gnu
- name: install distcc
run: sudo apt-get install distcc
- name: mkdir distcc symlinks
run: sudo mkdir -p /opt/bin/distcc_symlinks
- name: distcc symlink
run: sudo ln -s /usr/bin/distcc /opt/bin/distcc_symlinks/${{matrix.arch}}-linux-gnu-gcc # only CC is needed
- name: cmake
run: cmake -S . -B out -G Ninja -DCMAKE_TOOLCHAIN_FILE=../scripts/TC-${{matrix.arch}}.cmake -DWITH_WASI=ON -DWERROR=OFF -Werror=dev -Wno-deprecated
- name: build
run: cmake --build out
- name: check if generated files are up-to-date
run: python ./scripts/check_clean.py
- name: unittests
run: cmake --build out --target run-unittests
- name: tests
run: cmake --build out --target run-tests