Run spec test for classic/fast-interp in NuttX CI #4780
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 (C) 2019 Intel Corporation. All rights reserved. | |
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception | |
name: compilation on android, ubuntu-22.04 | |
on: | |
# will be triggered on PR events | |
pull_request: | |
types: | |
- opened | |
- synchronize | |
paths: | |
- ".github/workflows/build_llvm_libraries.yml" | |
- ".github/workflows/compilation_on_android_ubuntu.yml" | |
- "build-scripts/**" | |
- "core/**" | |
- "!core/deps/**" | |
- "product-mini/**" | |
- "samples/**" | |
- "!samples/workload/**" | |
- "tests/wamr-test-suites/**" | |
- "wamr-compiler/**" | |
- "wamr-sdk/**" | |
- "test-tools/wamr-ide/**" | |
# will be triggered on push events | |
push: | |
branches: | |
- main | |
- "dev/**" | |
paths: | |
- ".github/workflows/build_llvm_libraries.yml" | |
- ".github/workflows/compilation_on_android_ubuntu.yml" | |
- "build-scripts/**" | |
- "core/**" | |
- "!core/deps/**" | |
- "product-mini/**" | |
- "samples/**" | |
- "!samples/workload/**" | |
- "tests/wamr-test-suites/**" | |
- "wamr-compiler/**" | |
- "wamr-sdk/**" | |
- "test-tools/wamr-ide/**" | |
# 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" | |
MULTI_MODULES_TEST_OPTIONS: "-s spec -b -M -P" | |
SIMD_TEST_OPTIONS: "-s spec -b -S -P" | |
THREADS_TEST_OPTIONS: "-s spec -b -p -P" | |
X86_32_TARGET_TEST_OPTIONS: "-m x86_32 -P" | |
WASI_TEST_OPTIONS: "-s wasi_certification -w" | |
WAMR_COMPILER_TEST_OPTIONS: "-s wamr_compiler -b -P" | |
jobs: | |
build_llvm_libraries_on_ubuntu_2204: | |
uses: ./.github/workflows/build_llvm_libraries.yml | |
with: | |
os: "ubuntu-22.04" | |
arch: "X86" | |
build_wamrc: | |
needs: | |
[build_llvm_libraries_on_ubuntu_2204] | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
include: | |
- os: ubuntu-22.04 | |
llvm_cache_key: ${{ needs.build_llvm_libraries_on_ubuntu_2204.outputs.cache_key }} | |
steps: | |
- name: checkout | |
uses: actions/checkout@v3 | |
# 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@v3 | |
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_2204] | |
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", | |
] | |
os: [ubuntu-22.04] | |
platform: [android, linux] | |
exclude: | |
# uncompatiable feature and platform | |
# uncompatiable 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" | |
# Fast-JIT and Multi-Tier-JIT mode don't support android(X86-32) | |
- make_options_run_mode: $FAST_JIT_BUILD_OPTIONS | |
platform: android | |
- make_options_run_mode: $MULTI_TIER_JIT_BUILD_OPTIONS | |
platform: android | |
include: | |
- os: ubuntu-22.04 | |
llvm_cache_key: ${{ needs.build_llvm_libraries_on_ubuntu_2204.outputs.cache_key }} | |
steps: | |
- name: checkout | |
uses: actions/checkout@v3 | |
# 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@v3 | |
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 | |
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 and run unit tests | |
run: | | |
mkdir build-unittests && cd build-unittests | |
cmake .. ${{ matrix.make_options_run_mode }} ${{ matrix.make_options_feature }} | |
cmake --build . --config Release --parallel 4 | |
ctest | |
working-directory: tests/unit | |
build_samples_wasm_c_api: | |
needs: | |
[ | |
build_iwasm, | |
build_llvm_libraries_on_ubuntu_2204, | |
build_wamrc, | |
] | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
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] | |
wasi_sdk_release: | |
[ | |
"https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-20/wasi-sdk-20.0-linux.tar.gz", | |
] | |
wabt_release: | |
[ | |
"https://github.com/WebAssembly/wabt/releases/download/1.0.31/wabt-1.0.31-ubuntu.tar.gz", | |
] | |
include: | |
- os: ubuntu-22.04 | |
llvm_cache_key: ${{ needs.build_llvm_libraries_on_ubuntu_2204.outputs.cache_key }} | |
steps: | |
- name: checkout | |
uses: actions/checkout@v3 | |
- name: Get LLVM libraries | |
id: retrieve_llvm_libs | |
if: (!endsWith(matrix.make_options, '_INTERP_BUILD_OPTIONS')) | |
uses: actions/cache@v3 | |
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: download and install wabt | |
run: | | |
cd /opt | |
sudo wget ${{ matrix.wabt_release }} | |
sudo tar -xzf wabt-1.0.31-*.tar.gz | |
sudo mv wabt-1.0.31 wabt | |
- name: Build wamrc | |
if: (!endsWith(matrix.make_options, '_INTERP_BUILD_OPTIONS')) | |
run: | | |
mkdir build && cd build | |
cmake .. | |
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 }} | |
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_2204, | |
build_wamrc, | |
] | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
os: [ubuntu-22.04] | |
wasi_sdk_release: | |
[ | |
"https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-20/wasi-sdk-20.0-linux.tar.gz", | |
] | |
wabt_release: | |
[ | |
"https://github.com/WebAssembly/wabt/releases/download/1.0.31/wabt-1.0.31-ubuntu.tar.gz", | |
] | |
include: | |
- os: ubuntu-22.04 | |
llvm_cache_key: ${{ needs.build_llvm_libraries_on_ubuntu_2204.outputs.cache_key }} | |
steps: | |
- name: checkout | |
uses: actions/checkout@v3 | |
- name: download and install wasi-sdk | |
run: | | |
cd /opt | |
sudo wget ${{ matrix.wasi_sdk_release }} | |
sudo tar -xzf wasi-sdk-*.tar.gz | |
sudo mv wasi-sdk-20.0 wasi-sdk | |
- name: download and install wabt | |
run: | | |
cd /opt | |
sudo wget ${{ matrix.wabt_release }} | |
sudo tar -xzf wabt-1.0.31-*.tar.gz | |
sudo mv wabt-1.0.31 wabt | |
- name: Get LLVM libraries | |
id: retrieve_llvm_libs | |
uses: actions/cache@v3 | |
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 .. | |
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 [simple] | |
run: | | |
./build.sh -p host-interp | |
python3 ./sample_test_run.py $(pwd)/out | |
exit $? | |
working-directory: ./samples/simple | |
- 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 | |
test: | |
needs: | |
[ | |
build_iwasm, | |
build_llvm_libraries_on_ubuntu_2204, | |
build_wamrc, | |
] | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu-22.04] | |
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, | |
$THREADS_TEST_OPTIONS, | |
$WASI_TEST_OPTIONS, | |
] | |
wasi_sdk_release: | |
[ | |
"https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-20/wasi-sdk-20.0-linux.tar.gz", | |
] | |
include: | |
- os: ubuntu-22.04 | |
llvm_cache_key: ${{ needs.build_llvm_libraries_on_ubuntu_2204.outputs.cache_key }} | |
ubuntu_version: "22.04" | |
- os: ubuntu-22.04 | |
llvm_cache_key: ${{ needs.build_llvm_libraries_on_ubuntu_2204.outputs.cache_key }} | |
running_mode: aot | |
test_option: $WAMR_COMPILER_TEST_OPTIONS | |
exclude: | |
# uncompatiable modes and features | |
# classic-interp and fast-interp don't support simd | |
- running_mode: "classic-interp" | |
test_option: $SIMD_TEST_OPTIONS | |
- running_mode: "fast-interp" | |
test_option: $SIMD_TEST_OPTIONS | |
# llvm jit doesn't support multi module | |
- running_mode: "jit" | |
test_option: $MULTI_MODULES_TEST_OPTIONS | |
# fast-jit doesn't support multi module, simd | |
- running_mode: "fast-jit" | |
test_option: $MULTI_MODULES_TEST_OPTIONS | |
- running_mode: "fast-jit" | |
test_option: $SIMD_TEST_OPTIONS | |
# multi-tier-jit doesn't support multi module, simd | |
- running_mode: "multi-tier-jit" | |
test_option: $MULTI_MODULES_TEST_OPTIONS | |
- running_mode: "multi-tier-jit" | |
test_option: $SIMD_TEST_OPTIONS | |
steps: | |
- name: checkout | |
uses: actions/checkout@v3 | |
- name: download and install wasi-sdk | |
if: matrix.test_option == '$WASI_TEST_OPTIONS' | |
run: | | |
cd /opt | |
sudo wget ${{ matrix.wasi_sdk_release }} | |
sudo tar -xzf wasi-sdk-*.tar.gz | |
sudo mv wasi-sdk-20.0 wasi-sdk | |
# It is a temporary solution until new wasi-sdk that includes bug fixes is released | |
- name: build wasi-libc from source | |
if: matrix.test_option == '$WASI_TEST_OPTIONS' | |
run: | | |
git clone https://github.com/WebAssembly/wasi-libc | |
cd wasi-libc | |
make -j AR=/opt/wasi-sdk/bin/llvm-ar NM=/opt/wasi-sdk/bin/llvm-nm CC=/opt/wasi-sdk/bin/clang THREAD_MODEL=posix | |
echo "SYSROOT_PATH=$PWD/sysroot" >> $GITHUB_ENV | |
- 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 | |
#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@v3 | |
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: Build WASI thread tests | |
if: matrix.test_option == '$WASI_TEST_OPTIONS' | |
run: bash build.sh --sysroot "$SYSROOT_PATH" | |
working-directory: ./core/iwasm/libraries/lib-wasi-threads/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: 30 | |
run: ./test_wamr.sh ${{ matrix.test_option }} -t ${{ matrix.running_mode }} | |
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: 30 | |
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 | |
test-wamr-ide: | |
needs: | |
[ | |
build_iwasm | |
] | |
runs-on: ubuntu-22.04 | |
env: | |
PYTHON_VERSION: '3.10' | |
PYTHON_UBUNTU_STANDALONE_BUILD: https://github.com/indygreg/python-build-standalone/releases/download/20230507/cpython-3.10.11+20230507-x86_64-unknown-linux-gnu-install_only.tar.gz | |
steps: | |
- name: checkout | |
uses: actions/checkout@v3 | |
- name: install dependencies | |
run: | | |
rustup target add wasm32-wasi | |
sudo apt update && sudo apt-get install -y lld ninja-build | |
npm install | |
working-directory: test-tools/wamr-ide/VSCode-Extension | |
- name: build iwasm with source debugging feature | |
run: | | |
mkdir build | |
cd build | |
cmake .. -DWAMR_BUILD_DEBUG_INTERP=1 | |
make | |
working-directory: product-mini/platforms/linux | |
- name: Cache LLDB | |
id: cache-lldb | |
uses: actions/cache@v3 | |
env: | |
cache-name: cache-lldb-vscode | |
with: | |
path: test-tools/wamr-ide/VSCode-Extension/resource/debug/linux | |
key: ${{ env.cache-name }}-${{ hashFiles('build-scripts/lldb_wasm.patch') }}-${{ env.PYTHON_UBUNTU_STANDALONE_BUILD }} | |
- if: ${{ steps.cache-lldb.outputs.cache-hit != 'true' }} | |
name: get stand-alone python ubuntu | |
run: | | |
wget ${{ env.PYTHON_UBUNTU_STANDALONE_BUILD }} -O python.tar.gz | |
tar -xvf python.tar.gz | |
working-directory: core/deps | |
- if: ${{ steps.cache-lldb.outputs.cache-hit != 'true' }} | |
name: download llvm | |
run: | | |
wget https://github.com/llvm/llvm-project/archive/1f27fe6128769f00197925c3b8f6abb9d0e5cd2e.zip | |
unzip -q 1f27fe6128769f00197925c3b8f6abb9d0e5cd2e.zip | |
mv llvm-project-1f27fe6128769f00197925c3b8f6abb9d0e5cd2e llvm-project | |
working-directory: core/deps | |
- if: ${{ steps.cache-lldb.outputs.cache-hit != 'true' }} | |
name: apply wamr patch | |
run: | | |
git init | |
git config user.email "[email protected]" | |
git config user.name "github action" | |
git apply ../../../build-scripts/lldb_wasm.patch | |
working-directory: core/deps/llvm-project | |
- if: ${{ steps.cache-lldb.outputs.cache-hit != 'true' }} | |
name: build lldb ubuntu | |
run: | | |
echo "start to build lldb..." | |
mkdir -p wamr-lldb | |
cmake -S ./llvm -B build \ | |
-G Ninja \ | |
-DCMAKE_INSTALL_PREFIX=../wamr-lldb \ | |
-DCMAKE_BUILD_TYPE:STRING="Release" \ | |
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON \ | |
-DLLVM_ENABLE_PROJECTS="clang;lldb" \ | |
-DLLVM_TARGETS_TO_BUILD:STRING="X86;WebAssembly" \ | |
-DLLVM_BUILD_BENCHMARKS:BOOL=OFF \ | |
-DLLVM_BUILD_DOCS:BOOL=OFF \ | |
-DLLVM_BUILD_EXAMPLES:BOOL=OFF \ | |
-DLLVM_BUILD_LLVM_DYLIB:BOOL=OFF \ | |
-DLLVM_BUILD_TESTS:BOOL=OFF \ | |
-DLLVM_INCLUDE_BENCHMARKS:BOOL=OFF \ | |
-DLLVM_INCLUDE_DOCS:BOOL=OFF \ | |
-DLLVM_INCLUDE_EXAMPLES:BOOL=OFF \ | |
-DLLVM_INCLUDE_TESTS:BOOL=OFF \ | |
-DLLVM_ENABLE_BINDINGS:BOOL=OFF \ | |
-DLLVM_ENABLE_LIBXML2:BOOL=ON \ | |
-DLLVM_ENABLE_LLD:BOOL=ON \ | |
-DLLDB_ENABLE_PYTHON:BOOL=ON \ | |
-DLLDB_EMBED_PYTHON_HOME=ON \ | |
-DLLDB_PYTHON_HOME=.. \ | |
-DLLDB_PYTHON_RELATIVE_PATH=lib/lldb-python \ | |
-DPython3_EXECUTABLE="$(pwd)/../python/bin/python${{ env.PYTHON_VERSION }}" | |
cmake --build build --target lldb install --parallel $(nproc) | |
working-directory: core/deps/llvm-project | |
- if: ${{ steps.cache-lldb.outputs.cache-hit != 'true' }} | |
name: copy lldb to extension folder | |
run: | | |
mkdir -p bin | |
mkdir -p lib | |
cp ../../../../../../core/deps/llvm-project/lldb/tools/lldb-vscode/package.json ./ | |
cp -r ../../../../../../core/deps/llvm-project/lldb/tools/lldb-vscode/syntaxes/ ./ | |
cp ../../../../../../core/deps/llvm-project/build/bin/lldb* bin | |
cp ../../../../../../core/deps/llvm-project/build/lib/liblldb*.so lib | |
cp ../../../../../../core/deps/llvm-project/build/lib/liblldb*.so.* lib | |
cp -R ../../../../../../core/deps/llvm-project/build/lib/lldb-python lib | |
cp -R ../../../../../../core/deps/python/lib/python* lib | |
cp ../../../../../../core/deps/python/lib/libpython${{ env.PYTHON_VERSION }}.so.1.0 lib | |
working-directory: test-tools/wamr-ide/VSCode-Extension/resource/debug/linux | |
- name: run tests | |
timeout-minutes: 5 | |
run: xvfb-run npm run test | |
working-directory: test-tools/wamr-ide/VSCode-Extension |