feat(wasi-threads): Add CI for WASI threads (#1819)

Update wasi-sdk from 12.0 to 16.0 in CI
Build wasi-libc and build wai-threads sample in CI
This commit is contained in:
Enrico Loparco 2022-12-22 10:02:23 +00:00 committed by GitHub
parent e8ce4c542e
commit 7d19b229eb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 70 additions and 11 deletions

View File

@ -232,7 +232,7 @@ jobs:
os: [ubuntu-20.04, ubuntu-22.04] os: [ubuntu-20.04, ubuntu-22.04]
wasi_sdk_release: wasi_sdk_release:
[ [
"https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-12/wasi-sdk-12.0-linux.tar.gz", "https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-16/wasi-sdk-16.0-linux.tar.gz",
] ]
wabt_release: wabt_release:
[ [
@ -299,7 +299,7 @@ jobs:
os: [ubuntu-20.04, ubuntu-22.04] os: [ubuntu-20.04, ubuntu-22.04]
wasi_sdk_release: wasi_sdk_release:
[ [
"https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-12/wasi-sdk-12.0-linux.tar.gz", "https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-16/wasi-sdk-16.0-linux.tar.gz",
] ]
wabt_release: wabt_release:
[ [
@ -313,8 +313,8 @@ jobs:
run: | run: |
cd /opt cd /opt
sudo wget ${{ matrix.wasi_sdk_release }} sudo wget ${{ matrix.wasi_sdk_release }}
sudo tar -xzf wasi-sdk-12.0-*.tar.gz sudo tar -xzf wasi-sdk-16.0-*.tar.gz
sudo mv wasi-sdk-12.0 wasi-sdk sudo mv wasi-sdk-16.0 wasi-sdk
- name: download and install wabt - name: download and install wabt
run: | run: |
@ -323,6 +323,17 @@ jobs:
sudo tar -xzf wabt-1.0.24-*.tar.gz sudo tar -xzf wabt-1.0.24-*.tar.gz
sudo mv wabt-1.0.24 wabt sudo mv wabt-1.0.24 wabt
- name: build wasi-libc (needed for wasi-threads)
run: |
git clone --branch wasi-sdk-17 https://github.com/WebAssembly/wasi-libc
cd wasi-libc
make \
AR=/opt/wasi-sdk/bin/llvm-ar \
NM=/opt/wasi-sdk/bin/llvm-nm \
CC=/opt/wasi-sdk/bin/clang \
THREAD_MODEL=posix
working-directory: core/deps
- name: Build Sample [basic] - name: Build Sample [basic]
run: | run: |
cd samples/basic cd samples/basic
@ -376,6 +387,14 @@ jobs:
exit $? exit $?
working-directory: ./samples/simple working-directory: ./samples/simple
- name: Build Sample [wasi-threads]
run: |
cd samples/wasi-threads
mkdir build && cd build
cmake -DWASI_SYSROOT=`pwd`/../../../core/deps/wasi-libc/sysroot ..
cmake --build . --config Release --parallel 4
./iwasm wasm-apps/no_pthread.wasm
spec_test: spec_test:
needs: [build_iwasm, build_llvm_libraries, build_wamrc] needs: [build_iwasm, build_llvm_libraries, build_wamrc]
runs-on: ubuntu-20.04 runs-on: ubuntu-20.04

View File

@ -210,7 +210,7 @@ jobs:
#$AOT_BUILD_OPTIONS, #$AOT_BUILD_OPTIONS,
] ]
os: [macos-latest] os: [macos-latest]
wasi_sdk_release: ["https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-12/wasi-sdk-12.0-macos.tar.gz"] wasi_sdk_release: ["https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-16/wasi-sdk-16.0-macos.tar.gz"]
wabt_release: ["https://github.com/WebAssembly/wabt/releases/download/1.0.24/wabt-1.0.24-macos.tar.gz"] wabt_release: ["https://github.com/WebAssembly/wabt/releases/download/1.0.24/wabt-1.0.24-macos.tar.gz"]
steps: steps:
- name: checkout - name: checkout
@ -246,7 +246,7 @@ jobs:
strategy: strategy:
matrix: matrix:
os: [macos-latest] os: [macos-latest]
wasi_sdk_release: ["https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-12/wasi-sdk-12.0-macos.tar.gz"] wasi_sdk_release: ["https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-16/wasi-sdk-16.0-macos.tar.gz"]
wabt_release: ["https://github.com/WebAssembly/wabt/releases/download/1.0.24/wabt-1.0.24-macos.tar.gz"] wabt_release: ["https://github.com/WebAssembly/wabt/releases/download/1.0.24/wabt-1.0.24-macos.tar.gz"]
steps: steps:
- name: checkout - name: checkout
@ -256,8 +256,8 @@ jobs:
run: | run: |
cd /opt cd /opt
sudo wget ${{ matrix.wasi_sdk_release }} sudo wget ${{ matrix.wasi_sdk_release }}
sudo tar -xzf wasi-sdk-12.0-*.tar.gz sudo tar -xzf wasi-sdk-16.0-*.tar.gz
sudo mv wasi-sdk-12.0 wasi-sdk sudo mv wasi-sdk-16.0 wasi-sdk
- name: download and install wabt - name: download and install wabt
run: | run: |
@ -266,6 +266,17 @@ jobs:
sudo tar -xzf wabt-1.0.24-*.tar.gz sudo tar -xzf wabt-1.0.24-*.tar.gz
sudo mv wabt-1.0.24 wabt sudo mv wabt-1.0.24 wabt
- name: build wasi-libc (needed for wasi-threads)
run: |
git clone --branch wasi-sdk-17 https://github.com/WebAssembly/wasi-libc
cd wasi-libc
make \
AR=/opt/wasi-sdk/bin/llvm-ar \
NM=/opt/wasi-sdk/bin/llvm-nm \
CC=/opt/wasi-sdk/bin/clang \
THREAD_MODEL=posix
working-directory: core/deps
- name: Build Sample [basic] - name: Build Sample [basic]
run: | run: |
cd samples/basic cd samples/basic
@ -311,3 +322,11 @@ jobs:
cmake .. cmake ..
cmake --build . --config Release --parallel 4 cmake --build . --config Release --parallel 4
./hello ./hello
- name: Build Sample [wasi-threads]
run: |
cd samples/wasi-threads
mkdir build && cd build
cmake -DWASI_SYSROOT=`pwd`/../../../core/deps/wasi-libc/sysroot ..
cmake --build . --config Release --parallel 4
./iwasm wasm-apps/no_pthread.wasm

View File

@ -244,7 +244,7 @@ jobs:
os: [ubuntu-20.04] os: [ubuntu-20.04]
wasi_sdk_release: wasi_sdk_release:
[ [
"https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-12/wasi-sdk-12.0-linux.tar.gz", "https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-16/wasi-sdk-16.0-linux.tar.gz",
] ]
wabt_release: wabt_release:
[ [
@ -258,8 +258,8 @@ jobs:
run: | run: |
cd /opt cd /opt
sudo wget ${{ matrix.wasi_sdk_release }} sudo wget ${{ matrix.wasi_sdk_release }}
sudo tar -xzf wasi-sdk-12.0-*.tar.gz sudo tar -xzf wasi-sdk-16.0-*.tar.gz
sudo mv wasi-sdk-12.0 wasi-sdk sudo mv wasi-sdk-16.0 wasi-sdk
- name: download and install wabt - name: download and install wabt
run: | run: |
@ -268,6 +268,17 @@ jobs:
sudo tar -xzf wabt-1.0.24-*.tar.gz sudo tar -xzf wabt-1.0.24-*.tar.gz
sudo mv wabt-1.0.24 wabt sudo mv wabt-1.0.24 wabt
- name: build wasi-libc (needed for wasi-threads)
run: |
git clone --branch wasi-sdk-17 https://github.com/WebAssembly/wasi-libc
cd wasi-libc
make \
AR=/opt/wasi-sdk/bin/llvm-ar \
NM=/opt/wasi-sdk/bin/llvm-nm \
CC=/opt/wasi-sdk/bin/clang \
THREAD_MODEL=posix
working-directory: core/deps
- name: install SGX SDK and necessary libraries - name: install SGX SDK and necessary libraries
run: | run: |
mkdir -p /opt/intel mkdir -p /opt/intel
@ -327,6 +338,14 @@ jobs:
cmake --build . --config Release --parallel 4 cmake --build . --config Release --parallel 4
./hello ./hello
- name: Build Sample [wasi-threads]
run: |
cd samples/wasi-threads
mkdir build && cd build
cmake -DWASI_SYSROOT=`pwd`/../../../core/deps/wasi-libc/sysroot ..
cmake --build . --config Release --parallel 4
./iwasm wasm-apps/no_pthread.wasm
spec_test_default: spec_test_default:
needs: [build_iwasm, build_llvm_libraries, build_wamrc] needs: [build_iwasm, build_llvm_libraries, build_wamrc]
runs-on: ubuntu-20.04 runs-on: ubuntu-20.04

View File

@ -29,6 +29,8 @@ function (compile_sample SOURCE_FILE)
LINKER:--export=__data_end LINKER:--export=__data_end
LINKER:--shared-memory,--max-memory=1966080 LINKER:--shared-memory,--max-memory=1966080
LINKER:--export=wasi_thread_start LINKER:--export=wasi_thread_start
LINKER:--export=malloc
LINKER:--export=free
) )
endfunction () endfunction ()