nightly_run #1265
This file contains hidden or 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 (C) 2023 Intel Corporation. All rights reserved. | |
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception | |
name: nightly_run | |
on: | |
pull_request: | |
types: | |
- opened | |
- synchronize | |
# running nightly pipeline if you're changing it | |
# stress tests are run only in nightly at the moment, so running them in they are changed | |
paths: | |
- ".github/workflows/nightly_run.yml" | |
- "core/iwasm/libraries/lib-wasi-threads/stress-test/**" | |
# midnight UTC | |
schedule: | |
- cron: "0 0 * * *" | |
# allow to be triggered manually | |
workflow_dispatch: | |
# Cancel any in-flight jobs for the same PR/branch so there's only one active | |
# at a time | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
env: | |
# For BUILD | |
AOT_BUILD_OPTIONS: " -DWAMR_BUILD_AOT=1 -DWAMR_BUILD_FAST_INTERP=0 -DWAMR_BUILD_INTERP=0 -DWAMR_BUILD_FAST_JIT=0 -DWAMR_BUILD_JIT=0 -DWAMR_BUILD_LAZY_JIT=0" | |
CLASSIC_INTERP_BUILD_OPTIONS: "-DWAMR_BUILD_AOT=0 -DWAMR_BUILD_FAST_INTERP=0 -DWAMR_BUILD_INTERP=1 -DWAMR_BUILD_FAST_JIT=0 -DWAMR_BUILD_JIT=0 -DWAMR_BUILD_LAZY_JIT=0" | |
FAST_INTERP_BUILD_OPTIONS: " -DWAMR_BUILD_AOT=0 -DWAMR_BUILD_FAST_INTERP=1 -DWAMR_BUILD_INTERP=1 -DWAMR_BUILD_FAST_JIT=0 -DWAMR_BUILD_JIT=0 -DWAMR_BUILD_LAZY_JIT=0" | |
FAST_JIT_BUILD_OPTIONS: " -DWAMR_BUILD_AOT=1 -DWAMR_BUILD_FAST_INTERP=0 -DWAMR_BUILD_INTERP=0 -DWAMR_BUILD_FAST_JIT=1 -DWAMR_BUILD_JIT=0 -DWAMR_BUILD_LAZY_JIT=0" | |
LLVM_LAZY_JIT_BUILD_OPTIONS: " -DWAMR_BUILD_AOT=1 -DWAMR_BUILD_FAST_INTERP=0 -DWAMR_BUILD_INTERP=0 -DWAMR_BUILD_FAST_JIT=0 -DWAMR_BUILD_JIT=1 -DWAMR_BUILD_LAZY_JIT=1" | |
LLVM_EAGER_JIT_BUILD_OPTIONS: "-DWAMR_BUILD_AOT=1 -DWAMR_BUILD_FAST_INTERP=0 -DWAMR_BUILD_INTERP=0 -DWAMR_BUILD_FAST_JIT=0 -DWAMR_BUILD_JIT=1 -DWAMR_BUILD_LAZY_JIT=0" | |
MULTI_TIER_JIT_BUILD_OPTIONS: "-DWAMR_BUILD_AOT=1 -DWAMR_BUILD_FAST_INTERP=0 -DWAMR_BUILD_INTERP=1 -DWAMR_BUILD_FAST_JIT=1 -DWAMR_BUILD_JIT=1 -DWAMR_BUILD_LAZY_JIT=1" | |
# For Spec Test | |
DEFAULT_TEST_OPTIONS: "-s spec -b -P" | |
EXTENDED_CONST_EXPR_TEST_OPTIONS: "-s spec -b -P -N" | |
MULTI_MODULES_TEST_OPTIONS: "-s spec -b -P -M" | |
SIMD_TEST_OPTIONS: "-s spec -b -P -S" | |
THREADS_TEST_OPTIONS: "-s spec -b -P -p" | |
X86_32_TARGET_TEST_OPTIONS: "-m x86_32" | |
WASI_TEST_OPTIONS: "-s wasi_certification -w" | |
permissions: | |
contents: read | |
jobs: | |
build_llvm_libraries_on_ubuntu: | |
permissions: | |
contents: read | |
actions: write | |
uses: ./.github/workflows/build_llvm_libraries.yml | |
with: | |
os: "ubuntu-22.04" | |
arch: "X86" | |
build_wamrc: | |
needs: build_llvm_libraries_on_ubuntu | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
include: | |
- os: ubuntu-22.04 | |
llvm_cache_key: ${{ needs.build_llvm_libraries_on_ubuntu.outputs.cache_key }} | |
steps: | |
- name: checkout | |
uses: actions/checkout@v5 | |
# since jobs.id can't contain the dot character | |
# it is hard to use `format` to assemble the cache key | |
- name: Get LLVM libraries | |
id: retrieve_llvm_libs | |
uses: actions/cache@v4 | |
with: | |
path: | | |
./core/deps/llvm/build/bin | |
./core/deps/llvm/build/include | |
./core/deps/llvm/build/lib | |
./core/deps/llvm/build/libexec | |
./core/deps/llvm/build/share | |
key: ${{ matrix.llvm_cache_key }} | |
- name: Quit if cache miss | |
if: steps.retrieve_llvm_libs.outputs.cache-hit != 'true' | |
run: echo "::error::can not get prebuilt llvm libraries" && exit 1 | |
- name: Build wamrc | |
run: | | |
mkdir build && cd build | |
cmake .. | |
cmake --build . --config Release --parallel 4 | |
working-directory: wamr-compiler | |
build_iwasm: | |
needs: build_llvm_libraries_on_ubuntu | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
make_options_run_mode: [ | |
# Running mode | |
$AOT_BUILD_OPTIONS, | |
$CLASSIC_INTERP_BUILD_OPTIONS, | |
$FAST_INTERP_BUILD_OPTIONS, | |
$FAST_JIT_BUILD_OPTIONS, | |
$LLVM_LAZY_JIT_BUILD_OPTIONS, | |
$LLVM_EAGER_JIT_BUILD_OPTIONS, | |
$MULTI_TIER_JIT_BUILD_OPTIONS, | |
] | |
make_options_feature: [ | |
# Features | |
"-DWAMR_BUILD_CUSTOM_NAME_SECTION=1", | |
"-DWAMR_BUILD_DEBUG_AOT=1", | |
"-DWAMR_BUILD_DEBUG_INTERP=1", | |
"-DWAMR_BUILD_DUMP_CALL_STACK=1", | |
"-DWAMR_BUILD_LIB_PTHREAD=1", | |
"-DWAMR_BUILD_LIB_WASI_THREADS=1", | |
"-DWAMR_BUILD_LOAD_CUSTOM_SECTION=1", | |
"-DWAMR_BUILD_MINI_LOADER=1", | |
"-DWAMR_BUILD_MEMORY_PROFILING=1", | |
"-DWAMR_BUILD_MULTI_MODULE=1", | |
"-DWAMR_BUILD_PERF_PROFILING=1", | |
"-DWAMR_BUILD_REF_TYPES=1", | |
"-DWAMR_BUILD_SIMD=1", | |
"-DWAMR_BUILD_TAIL_CALL=1", | |
"-DWAMR_DISABLE_HW_BOUND_CHECK=1", | |
"-DWAMR_BUILD_MEMORY64=1", | |
"-DWAMR_BUILD_MULTI_MEMORY=1", | |
"-DWAMR_BUILD_SHARED=1", | |
"-DWAMR_BUILD_EXTENDED_CONST_EXPR=1", | |
] | |
os: [ubuntu-22.04] | |
platform: [android, linux] | |
exclude: | |
# incompatible feature and platform | |
# incompatible mode and feature | |
# MULTI_MODULE only on INTERP mode and AOT mode | |
- make_options_run_mode: $FAST_JIT_BUILD_OPTIONS | |
make_options_feature: "-DWAMR_BUILD_MULTI_MODULE=1" | |
- make_options_run_mode: $LLVM_LAZY_JIT_BUILD_OPTIONS | |
make_options_feature: "-DWAMR_BUILD_MULTI_MODULE=1" | |
- make_options_run_mode: $LLVM_EAGER_JIT_BUILD_OPTIONS | |
make_options_feature: "-DWAMR_BUILD_MULTI_MODULE=1" | |
- make_options_run_mode: $MULTI_TIER_JIT_BUILD_OPTIONS | |
make_options_feature: "-DWAMR_BUILD_MULTI_MODULE=1" | |
# SIMD only on JIT/AOT mode | |
- make_options_run_mode: $CLASSIC_INTERP_BUILD_OPTIONS | |
make_options_feature: "-DWAMR_BUILD_SIMD=1" | |
- make_options_run_mode: $FAST_INTERP_BUILD_OPTIONS | |
make_options_feature: "-DWAMR_BUILD_SIMD=1" | |
# DEBUG_INTERP only on CLASSIC INTERP mode | |
- make_options_run_mode: $AOT_BUILD_OPTIONS | |
make_options_feature: "-DWAMR_BUILD_DEBUG_INTERP=1" | |
- make_options_run_mode: $FAST_INTERP_BUILD_OPTIONS | |
make_options_feature: "-DWAMR_BUILD_DEBUG_INTERP=1" | |
- make_options_run_mode: $FAST_JIT_BUILD_OPTIONS | |
make_options_feature: "-DWAMR_BUILD_DEBUG_INTERP=1" | |
- make_options_run_mode: $LLVM_LAZY_JIT_BUILD_OPTIONS | |
make_options_feature: "-DWAMR_BUILD_DEBUG_INTERP=1" | |
- make_options_run_mode: $LLVM_EAGER_JIT_BUILD_OPTIONS | |
make_options_feature: "-DWAMR_BUILD_DEBUG_INTERP=1" | |
- make_options_run_mode: $MULTI_TIER_JIT_BUILD_OPTIONS | |
make_options_feature: "-DWAMR_BUILD_DEBUG_INTERP=1" | |
# DEBUG_AOT only on JIT/AOT mode | |
- make_options_run_mode: $CLASSIC_INTERP_BUILD_OPTIONS | |
make_options_feature: "-DWAMR_BUILD_DEBUG_AOT=1" | |
- make_options_run_mode: $FAST_INTERP_BUILD_OPTIONS | |
make_options_feature: "-DWAMR_BUILD_DEBUG_AOT=1" | |
# TODO: DEBUG_AOT on JIT | |
- make_options_run_mode: $FAST_JIT_BUILD_OPTIONS | |
make_options_feature: "-DWAMR_BUILD_DEBUG_AOT=1" | |
- make_options_run_mode: $LLVM_LAZY_JIT_BUILD_OPTIONS | |
make_options_feature: "-DWAMR_BUILD_DEBUG_AOT=1" | |
- make_options_run_mode: $LLVM_EAGER_JIT_BUILD_OPTIONS | |
make_options_feature: "-DWAMR_BUILD_DEBUG_AOT=1" | |
- make_options_run_mode: $MULTI_TIER_JIT_BUILD_OPTIONS | |
make_options_feature: "-DWAMR_BUILD_DEBUG_AOT=1" | |
# MINI_LOADER only on INTERP mode | |
- make_options_run_mode: $AOT_BUILD_OPTIONS | |
make_options_feature: "-DWAMR_BUILD_MINI_LOADER=1" | |
- make_options_run_mode: $FAST_JIT_BUILD_OPTIONS | |
make_options_feature: "-DWAMR_BUILD_MINI_LOADER=1" | |
- make_options_run_mode: $LLVM_LAZY_JIT_BUILD_OPTIONS | |
make_options_feature: "-DWAMR_BUILD_MINI_LOADER=1" | |
- make_options_run_mode: $LLVM_EAGER_JIT_BUILD_OPTIONS | |
make_options_feature: "-DWAMR_BUILD_MINI_LOADER=1" | |
- make_options_run_mode: $MULTI_TIER_JIT_BUILD_OPTIONS | |
make_options_feature: "-DWAMR_BUILD_MINI_LOADER=1" | |
# Memory64 only on CLASSIC INTERP and AOT mode, and only on 64-bit platform | |
- make_options_feature: "-DWAMR_BUILD_MEMORY64=1" | |
platform: android | |
- make_options_run_mode: $FAST_INTERP_BUILD_OPTIONS | |
make_options_feature: "-DWAMR_BUILD_MEMORY64=1" | |
- make_options_run_mode: $FAST_JIT_BUILD_OPTIONS | |
make_options_feature: "-DWAMR_BUILD_MEMORY64=1" | |
- make_options_run_mode: $LLVM_LAZY_JIT_BUILD_OPTIONS | |
make_options_feature: "-DWAMR_BUILD_MEMORY64=1" | |
- make_options_run_mode: $LLVM_EAGER_JIT_BUILD_OPTIONS | |
make_options_feature: "-DWAMR_BUILD_MEMORY64=1" | |
- make_options_run_mode: $MULTI_TIER_JIT_BUILD_OPTIONS | |
make_options_feature: "-DWAMR_BUILD_MEMORY64=1" | |
# Multi memory only on CLASSIC INTERP mode, and only on 64-bit platform | |
- make_options_feature: "-DWAMR_BUILD_MEMORY64=1" | |
platform: android | |
- make_options_run_mode: $AOT_BUILD_OPTIONS | |
make_options_feature: "-DWAMR_BUILD_MULTI_MEMORY=1" | |
- make_options_run_mode: $FAST_INTERP_BUILD_OPTIONS | |
make_options_feature: "-DWAMR_BUILD_MULTI_MEMORY=1" | |
- make_options_run_mode: $FAST_JIT_BUILD_OPTIONS | |
make_options_feature: "-DWAMR_BUILD_MULTI_MEMORY=1" | |
- make_options_run_mode: $LLVM_LAZY_JIT_BUILD_OPTIONS | |
make_options_feature: "-DWAMR_BUILD_MULTI_MEMORY=1" | |
- make_options_run_mode: $LLVM_EAGER_JIT_BUILD_OPTIONS | |
make_options_feature: "-DWAMR_BUILD_MULTI_MEMORY=1" | |
- make_options_run_mode: $MULTI_TIER_JIT_BUILD_OPTIONS | |
make_options_feature: "-DWAMR_BUILD_MULTI_MEMORY=1" | |
# Fast-JIT and Multi-Tier-JIT mode don't support android | |
- make_options_run_mode: $FAST_JIT_BUILD_OPTIONS | |
platform: android | |
- make_options_run_mode: $MULTI_TIER_JIT_BUILD_OPTIONS | |
platform: android | |
# LLVM JIT pre-built binary wasn't compiled by Android NDK | |
# and isn't available for android | |
- make_options_run_mode: $LLVM_LAZY_JIT_BUILD_OPTIONS | |
platform: android | |
- make_options_run_mode: $LLVM_EAGER_JIT_BUILD_OPTIONS | |
platform: android | |
include: | |
- os: ubuntu-22.04 | |
llvm_cache_key: ${{ needs.build_llvm_libraries_on_ubuntu.outputs.cache_key }} | |
steps: | |
- name: checkout | |
uses: actions/checkout@v5 | |
# only download llvm cache when needed | |
- name: Get LLVM libraries | |
id: retrieve_llvm_libs | |
if: endsWith(matrix.make_options_run_mode, '_JIT_BUILD_OPTIONS') | |
uses: actions/cache@v4 | |
with: | |
path: | | |
./core/deps/llvm/build/bin | |
./core/deps/llvm/build/include | |
./core/deps/llvm/build/lib | |
./core/deps/llvm/build/libexec | |
./core/deps/llvm/build/share | |
key: ${{ matrix.llvm_cache_key }} | |
- name: Quit if cache miss | |
if: endsWith(matrix.make_options_run_mode, '_JIT_BUILD_OPTIONS') && (steps.retrieve_llvm_libs.outputs.cache-hit != 'true') | |
run: echo "::error::can not get prebuilt llvm libraries" && exit 1 | |
- name: Build iwasm for linux | |
if: matrix.platform == 'linux' | |
run: | | |
mkdir build && cd build | |
cmake .. ${{ matrix.make_options_run_mode }} ${{ matrix.make_options_feature }} | |
cmake --build . --config Release --parallel 4 | |
working-directory: product-mini/platforms/${{ matrix.platform }} | |
- name: Build iwasm for android | |
if: matrix.platform == 'android' | |
run: | | |
mkdir build && cd build | |
cmake .. ${{ matrix.make_options_run_mode }} ${{ matrix.make_options_feature }} \ | |
-DWAMR_BUILD_TARGET=X86_64 | |
cmake --build . --config Release --parallel 4 | |
working-directory: product-mini/platforms/${{ matrix.platform }} | |
build_iwasm_linux_gcc4_8: | |
runs-on: ubuntu-latest | |
container: | |
image: ubuntu:14.04 | |
strategy: | |
matrix: | |
make_options_run_mode: [ | |
# Running mode | |
$CLASSIC_INTERP_BUILD_OPTIONS, | |
$FAST_INTERP_BUILD_OPTIONS, | |
$FAST_JIT_BUILD_OPTIONS, | |
] | |
make_options_feature: [ | |
# Features | |
"-DWAMR_BUILD_CUSTOM_NAME_SECTION=1", | |
"-DWAMR_BUILD_DEBUG_AOT=1", | |
"-DWAMR_BUILD_DEBUG_INTERP=1", | |
"-DWAMR_BUILD_DUMP_CALL_STACK=1", | |
"-DWAMR_BUILD_LIB_PTHREAD=1", | |
"-DWAMR_BUILD_LIB_WASI_THREADS=1", | |
"-DWAMR_BUILD_LOAD_CUSTOM_SECTION=1", | |
"-DWAMR_BUILD_MINI_LOADER=1", | |
"-DWAMR_BUILD_MEMORY_PROFILING=1", | |
"-DWAMR_BUILD_MULTI_MODULE=1", | |
"-DWAMR_BUILD_PERF_PROFILING=1", | |
"-DWAMR_BUILD_REF_TYPES=1", | |
"-DWAMR_BUILD_SIMD=1", | |
"-DWAMR_BUILD_TAIL_CALL=1", | |
"-DWAMR_DISABLE_HW_BOUND_CHECK=1", | |
"-DWAMR_BUILD_MEMORY64=1", | |
"-DWAMR_BUILD_MULTI_MEMORY=1", | |
] | |
exclude: | |
# incompatible feature and platform | |
# incompatible mode and feature | |
# MULTI_MODULE only on INTERP mode and AOT mode | |
- make_options_run_mode: $FAST_JIT_BUILD_OPTIONS | |
make_options_feature: "-DWAMR_BUILD_MULTI_MODULE=1" | |
# SIMD only on JIT/AOT mode | |
- make_options_run_mode: $CLASSIC_INTERP_BUILD_OPTIONS | |
make_options_feature: "-DWAMR_BUILD_SIMD=1" | |
- make_options_run_mode: $FAST_INTERP_BUILD_OPTIONS | |
make_options_feature: "-DWAMR_BUILD_SIMD=1" | |
# DEBUG_INTERP only on CLASSIC INTERP mode | |
- make_options_run_mode: $FAST_INTERP_BUILD_OPTIONS | |
make_options_feature: "-DWAMR_BUILD_DEBUG_INTERP=1" | |
- make_options_run_mode: $FAST_JIT_BUILD_OPTIONS | |
make_options_feature: "-DWAMR_BUILD_DEBUG_INTERP=1" | |
# DEBUG_AOT only on JIT/AOT mode | |
- make_options_run_mode: $CLASSIC_INTERP_BUILD_OPTIONS | |
make_options_feature: "-DWAMR_BUILD_DEBUG_AOT=1" | |
- make_options_run_mode: $FAST_INTERP_BUILD_OPTIONS | |
make_options_feature: "-DWAMR_BUILD_DEBUG_AOT=1" | |
# TODO: DEBUG_AOT on JIT | |
- make_options_run_mode: $FAST_JIT_BUILD_OPTIONS | |
make_options_feature: "-DWAMR_BUILD_DEBUG_AOT=1" | |
# MINI_LOADER only on INTERP mode | |
- make_options_run_mode: $FAST_JIT_BUILD_OPTIONS | |
make_options_feature: "-DWAMR_BUILD_MINI_LOADER=1" | |
# Memory64 only on CLASSIC INTERP mode | |
- make_options_run_mode: $FAST_INTERP_BUILD_OPTIONS | |
make_options_feature: "-DWAMR_BUILD_MEMORY64=1" | |
- make_options_run_mode: $FAST_JIT_BUILD_OPTIONS | |
make_options_feature: "-DWAMR_BUILD_MEMORY64=1" | |
# Memory64 only on CLASSIC INTERP mode | |
- make_options_run_mode: $FAST_INTERP_BUILD_OPTIONS | |
make_options_feature: "-DWAMR_BUILD_MULTI_MEMORY=1" | |
- make_options_run_mode: $FAST_JIT_BUILD_OPTIONS | |
make_options_feature: "-DWAMR_BUILD_MULTI_MEMORY=1" | |
steps: | |
- name: Install dependencies | |
run: | | |
apt update && apt install -y make g++-4.8 gcc-4.8 wget git | |
- name: checkout | |
run: | | |
git clone https://github.com/${{ github.repository }} wamr | |
- name: Install cmake | |
run: | | |
wget https://github.com/Kitware/CMake/releases/download/v3.26.1/cmake-3.26.1-linux-x86_64.tar.gz -O cmake.tar.gz | |
tar xzf cmake.tar.gz | |
cp cmake-3.26.1-linux-x86_64/bin/cmake /usr/local/bin | |
cp -r cmake-3.26.1-linux-x86_64/share/cmake-3.26/ /usr/local/share/ | |
- name: Build iwasm | |
run: | | |
mkdir build && cd build | |
cmake .. ${{ matrix.make_options_run_mode }} ${{ matrix.make_options_feature }} -DCMAKE_C_COMPILER=gcc-4.8 -DCMAKE_CXX_COMPILER=g++-4.8 | |
cmake --build . --config Release --parallel 4 | |
working-directory: wamr/product-mini/platforms/linux | |
build_samples_wasm_c_api: | |
needs: [build_iwasm, build_llvm_libraries_on_ubuntu, build_wamrc] | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
sanitizer: ["", "ubsan", "asan"] | |
make_options: [ | |
# Running mode | |
$AOT_BUILD_OPTIONS, | |
$CLASSIC_INTERP_BUILD_OPTIONS, | |
$FAST_INTERP_BUILD_OPTIONS, | |
$FAST_JIT_BUILD_OPTIONS, | |
$LLVM_LAZY_JIT_BUILD_OPTIONS, | |
$LLVM_EAGER_JIT_BUILD_OPTIONS, | |
$MULTI_TIER_JIT_BUILD_OPTIONS, | |
] | |
os: [ubuntu-22.04] | |
include: | |
- os: ubuntu-22.04 | |
llvm_cache_key: ${{ needs.build_llvm_libraries_on_ubuntu.outputs.cache_key }} | |
exclude: | |
- make_options: $MULTI_TIER_JIT_BUILD_OPTIONS | |
sanitizer: asan | |
steps: | |
- name: checkout | |
uses: actions/checkout@v5 | |
- name: Get LLVM libraries | |
id: retrieve_llvm_libs | |
if: (!endsWith(matrix.make_options, '_INTERP_BUILD_OPTIONS')) | |
uses: actions/cache@v4 | |
with: | |
path: | | |
./core/deps/llvm/build/bin | |
./core/deps/llvm/build/include | |
./core/deps/llvm/build/lib | |
./core/deps/llvm/build/libexec | |
./core/deps/llvm/build/share | |
key: ${{ matrix.llvm_cache_key }} | |
- name: Quit if cache miss | |
if: (!endsWith(matrix.make_options, '_INTERP_BUILD_OPTIONS')) && (steps.retrieve_llvm_libs.outputs.cache-hit != 'true') | |
run: echo "::error::can not get prebuilt llvm libraries" && exit 1 | |
- name: install-wasi-sdk-wabt | |
uses: ./.github/actions/install-wasi-sdk-wabt | |
with: | |
os: ${{ matrix.os }} | |
- name: Build wamrc | |
if: (!endsWith(matrix.make_options, '_INTERP_BUILD_OPTIONS')) | |
run: | | |
mkdir build && cd build | |
cmake -D WAMR_BUILD_SANITIZER="${{matrix.sanitizer}}" .. | |
cmake --build . --config Release --parallel 4 | |
working-directory: wamr-compiler | |
- name: Build Sample [wasm-c-api] | |
run: | | |
VERBOSE=1 | |
cmake -S . -B build ${{ matrix.make_options }} \ | |
-D WAMR_BUILD_SANITIZER="${{matrix.sanitizer}}" \ | |
-D WAMR_BUILD_QUICK_AOT_ENTRY=0 | |
cmake --build build --config Release --parallel 4 | |
ctest --test-dir build --output-on-failure | |
working-directory: samples/wasm-c-api | |
build_samples_others: | |
needs: [build_iwasm, build_llvm_libraries_on_ubuntu, build_wamrc] | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
os: [ubuntu-22.04] | |
include: | |
- os: ubuntu-22.04 | |
llvm_cache_key: ${{ needs.build_llvm_libraries_on_ubuntu.outputs.cache_key }} | |
steps: | |
- name: checkout | |
uses: actions/checkout@v5 | |
- name: install-wasi-sdk-wabt | |
uses: ./.github/actions/install-wasi-sdk-wabt | |
with: | |
os: ${{ matrix.os }} | |
- name: Get LLVM libraries | |
id: retrieve_llvm_libs | |
uses: actions/cache@v4 | |
with: | |
path: | | |
./core/deps/llvm/build/bin | |
./core/deps/llvm/build/include | |
./core/deps/llvm/build/lib | |
./core/deps/llvm/build/libexec | |
./core/deps/llvm/build/share | |
key: ${{ matrix.llvm_cache_key }} | |
- name: Build wamrc | |
run: | | |
mkdir build && cd build | |
cmake -D WAMR_BUILD_SANITIZER="${{matrix.sanitizer}}" .. | |
cmake --build . --config Release --parallel 4 | |
working-directory: wamr-compiler | |
- name: Build Sample [basic] | |
run: | | |
cd samples/basic | |
./build.sh | |
./run.sh | |
- name: Build Sample [file] | |
run: | | |
cd samples/file | |
mkdir build && cd build | |
cmake .. | |
cmake --build . --config Release --parallel 4 | |
./src/iwasm -f wasm-app/file.wasm -d . | |
- name: Build Sample [multi-thread] | |
run: | | |
cd samples/multi-thread | |
mkdir build && cd build | |
cmake .. | |
cmake --build . --config Release --parallel 4 | |
./iwasm wasm-apps/test.wasm | |
- name: Build Sample [multi-module] | |
run: | | |
cd samples/multi-module | |
mkdir build && cd build | |
cmake .. -DWAMR_BUILD_AOT=1 | |
cmake --build . --config Release --parallel 4 | |
./multi_module mC.wasm | |
./multi_module mC.aot | |
- name: Build Sample [spawn-thread] | |
run: | | |
cd samples/spawn-thread | |
mkdir build && cd build | |
cmake .. | |
cmake --build . --config Release --parallel 4 | |
./spawn_thread | |
- name: Build Sample [ref-types] | |
run: | | |
cd samples/ref-types | |
mkdir build && cd build | |
cmake .. | |
cmake --build . --config Release --parallel 4 | |
./hello | |
- name: Build Sample [wasi-threads] | |
run: | | |
cd samples/wasi-threads | |
mkdir build && cd build | |
cmake .. | |
cmake --build . --config Release --parallel 4 | |
./iwasm wasm-apps/no_pthread.wasm | |
- name: Build Sample [shared-module] | |
run: | | |
cd samples/shared-module | |
./build.sh | |
./run.sh | |
- name: Build Sample [terminate] | |
run: | | |
cd samples/terminate | |
./build.sh | |
./run.sh | |
- name: Build Sample [native-stack-overflow] | |
run: | | |
cd samples/native-stack-overflow | |
./build.sh | |
./run.sh test1 | |
./run.sh test2 | |
- name: Build Sample [native-lib] | |
run: | | |
mkdir build && cd build | |
cmake .. | |
cmake --build . --config Release --parallel 4 | |
./iwasm --native-lib=./libtest_add.so --native-lib=./libtest_sqrt.so --native-lib=./libtest_hello.so --native-lib=./libtest_hello2.so wasm-app/test.wasm | |
working-directory: ./samples/native-lib | |
# FIXME: un-comment me after fix cmake minimum issue | |
# https://github.com/bytecodealliance/wamr-app-framework/pull/11 | |
# - name: checkout wamr-app-framework | |
# run: git clone https://github.com/bytecodealliance/wamr-app-framework.git | |
# - name: download wamr-app-framework dependencies | |
# run: LVGL=0 LV_DRIVERS=0 ./download.sh | |
# working-directory: ./wamr-app-framework/deps | |
# - name: Build Sample [simple] | |
# run: | | |
# ./build.sh -p host-interp | |
# python3 ./sample_test_run.py $(pwd)/out | |
# exit $? | |
# working-directory: ./wamr-app-framework/samples/simple | |
- name: Build Sample [shared-heap] | |
run: | | |
cd samples/shared-heap | |
mkdir build && cd build | |
cmake .. | |
cmake --build . --config Debug --parallel 4 | |
./shared_heap_test | |
./shared_heap_test --aot | |
test: | |
needs: [build_iwasm, build_llvm_libraries_on_ubuntu, build_wamrc] | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu-22.04] | |
sanitizer: ["", "ubsan", "asan", "tsan"] | |
running_mode: | |
[ | |
"classic-interp", | |
"fast-interp", | |
"jit", | |
"aot", | |
"fast-jit", | |
"multi-tier-jit", | |
] | |
test_option: | |
[ | |
$DEFAULT_TEST_OPTIONS, | |
$MULTI_MODULES_TEST_OPTIONS, | |
$SIMD_TEST_OPTIONS, | |
$EXTENDED_CONST_EXPR_TEST_OPTIONS, | |
$THREADS_TEST_OPTIONS, | |
$WASI_TEST_OPTIONS, | |
] | |
include: | |
- os: ubuntu-22.04 | |
llvm_cache_key: ${{ needs.build_llvm_libraries_on_ubuntu.outputs.cache_key }} | |
ubuntu_version: "22.04" | |
exclude: | |
# asan works only for aot now | |
- running_mode: "classic-interp" | |
sanitizer: asan | |
- running_mode: "fast-interp" | |
sanitizer: asan | |
- running_mode: "jit" | |
sanitizer: asan | |
- running_mode: "fast-jit" | |
sanitizer: asan | |
- running_mode: "multi-tier-jit" | |
sanitizer: asan | |
- running_mode: "classic-interp" | |
sanitizer: tsan | |
- running_mode: "jit" | |
sanitizer: tsan | |
- running_mode: "fast-jit" | |
sanitizer: tsan | |
- running_mode: "multi-tier-jit" | |
sanitizer: tsan | |
# simd128.h brings ubsan errors | |
# like: negation of XXXcannot be represented in type 'long int'; | |
# cast to an unsigned type to negate this value to itself | |
- running_mode: "fast-interp" | |
sanitizer: ubsan | |
steps: | |
- name: checkout | |
uses: actions/checkout@v5 | |
- name: install-wasi-sdk-wabt | |
if: matrix.test_option == '$WASI_TEST_OPTIONS' | |
uses: ./.github/actions/install-wasi-sdk-wabt | |
with: | |
os: ${{ matrix.os }} | |
- name: set env variable(if llvm are used) | |
if: matrix.running_mode == 'aot' || matrix.running_mode == 'jit' || matrix.running_mode == 'multi-tier-jit' | |
run: echo "USE_LLVM=true" >> $GITHUB_ENV | |
- name: set env variable(if x86_32 test needed) | |
if: > | |
(matrix.test_option == '$DEFAULT_TEST_OPTIONS' || matrix.test_option == '$THREADS_TEST_OPTIONS' | |
|| matrix.test_option == '$WASI_TEST_OPTIONS') | |
&& matrix.running_mode != 'fast-jit' && matrix.running_mode != 'jit' && matrix.running_mode != 'multi-tier-jit' | |
run: echo "TEST_ON_X86_32=true" >> $GITHUB_ENV | |
- name: set additional tsan options | |
run: | | |
echo "TSAN_OPTIONS=suppressions=$PWD/tsan_suppressions.txt" >> $GITHUB_ENV | |
sudo sysctl vm.mmap_rnd_bits=28 | |
working-directory: tests/wamr-test-suites | |
#only download llvm libraries in jit and aot mode | |
- name: Get LLVM libraries | |
if: env.USE_LLVM == 'true' | |
id: retrieve_llvm_libs | |
uses: actions/cache@v4 | |
with: | |
path: | | |
./core/deps/llvm/build/bin | |
./core/deps/llvm/build/include | |
./core/deps/llvm/build/lib | |
./core/deps/llvm/build/libexec | |
./core/deps/llvm/build/share | |
key: ${{ matrix.llvm_cache_key }} | |
- name: Quit if cache miss | |
if: env.USE_LLVM == 'true' && steps.retrieve_llvm_libs.outputs.cache-hit != 'true' | |
run: echo "::error::can not get prebuilt llvm libraries" && exit 1 | |
- name: install jq JSON processor | |
if: matrix.running_mode == 'aot' && matrix.test_option == '$WASI_TEST_OPTIONS' | |
run: sudo apt-get update && sudo apt install -y jq | |
- name: install for wabt compilation | |
run: sudo apt update && sudo apt install -y ninja-build | |
- name: Build WASI thread tests | |
if: matrix.test_option == '$WASI_TEST_OPTIONS' | |
run: bash build.sh | |
working-directory: ./core/iwasm/libraries/lib-wasi-threads/test/ | |
- name: Build WASI thread stress tests | |
if: matrix.test_option == '$WASI_TEST_OPTIONS' | |
run: bash build.sh | |
working-directory: ./core/iwasm/libraries/lib-wasi-threads/stress-test/ | |
- name: build socket api tests | |
if: matrix.test_option == '$WASI_TEST_OPTIONS' | |
run: bash build.sh | |
working-directory: ./core/iwasm/libraries/lib-socket/test/ | |
- name: run tests | |
timeout-minutes: 40 | |
run: ./test_wamr.sh ${{ matrix.test_option }} -t ${{ matrix.running_mode }} -T "${{ matrix.sanitizer }}" | |
working-directory: ./tests/wamr-test-suites | |
#only install x32 support libraries when to run x86_32 cases | |
- name: install x32 support libraries | |
if: env.TEST_ON_X86_32 == 'true' | |
run: | |
# Add another apt repository as some packages cannot | |
# be downloaded with the github default repository | |
sudo curl -sSL https://packages.microsoft.com/keys/microsoft.asc | sudo tee /etc/apt/trusted.gpg.d/microsoft.asc && | |
sudo apt-add-repository https://packages.microsoft.com/ubuntu/${{ matrix.ubuntu_version }}/prod && | |
sudo apt-get update && | |
sudo apt install -y g++-multilib lib32gcc-9-dev | |
- name: run tests x86_32 | |
timeout-minutes: 40 | |
if: env.TEST_ON_X86_32 == 'true' | |
run: ./test_wamr.sh ${{ env.X86_32_TARGET_TEST_OPTIONS }} ${{ matrix.test_option }} -t ${{ matrix.running_mode }} | |
working-directory: ./tests/wamr-test-suites |