CI #157
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
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-24.04 | |
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 (OpenSSL) | |
run: cmake -G Ninja -S . -B out -DCMAKE_BUILD_TYPE=Release | |
- name: build (OpenSSL) | |
run: cmake --build out | |
- name: install (OpenSSL) | |
run: cmake --install out --prefix install | |
- name: configure (PicoSHA2) | |
run: cmake -G Ninja -S . -B out-picosha -DCMAKE_BUILD_TYPE=Release -DUSE_INTERNAL_SHA256=ON | |
- name: build (PicoSHA2) | |
run: cmake --build out-picosha | |
- name: install (PicoSHA2) | |
run: cmake --install out-picosha --prefix install-picosha | |
- name: test CMake package (OpenSSL) | |
run: > | |
ctest --build-and-test scripts/example-project example-openssl | |
--build-generator Ninja | |
--build-options -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH=$PWD/install | |
--test-command ctest | |
- name: test CMake package (PicoSHA2) | |
run: > | |
ctest --build-and-test scripts/example-project example-picosha | |
--build-generator Ninja | |
--build-options -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH=$PWD/install-picosha | |
--test-command ctest | |
- 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_CC: "clang" | |
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 -DWASM_RT_ALLOW_SEGUE=1 -DWASM_RT_SEGUE_FREE_SEGMENT=1 -mfsgsbase -DWASM_RT_SANITY_CHECKS=1 -Wno-pass-failed" | |
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 |