# Copyright (C) 2019 Intel Corporation. All rights reserved. # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception name: Spec tests on non-windows on: # will be triggered on PR events pull_request: paths: - "core/config.h" - "core/iwasm/**" - "core/shared/**" - "wamr-compiler/**" - "product-mini/**" - "tests/wamr-test-suites/spec-test-script/**" - "tests/wamr-test-suites/test_wamr.sh" # will be triggered on push events push: paths: - "core/config.h" - "core/iwasm/**" - "core/shared/**" - "wamr-compiler/**" - "product-mini/**" - "tests/wamr-test-suites/spec-test-script/**" - "tests/wamr-test-suites/test_wamr.sh" # 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: DEFAULT_TEST_OPTIONS: "-s spec" LLVM_CACHE_SUFFIX: "build-llvm_libraries" MULTI_MODULES_TEST_OPTIONS: "-s spec -M" SIMD_TEST_OPTIONS: "-s spec -S" THREADS_TEST_OPTIONS: "-s spec -p" X86_32_TARGET_TEST_OPTIONS: "-m x86_32" jobs: cancel_previous: runs-on: ubuntu-20.04 steps: - name: Cancel Workflow Action uses: styfle/cancel-workflow-action@0.6.0 with: access_token: ${{ github.token }} build_llvm_libraries: needs: cancel_previous runs-on: ubuntu-20.04 steps: - name: checkout uses: actions/checkout@v2 - name: Cache LLVM libraries id: cache_llvm uses: actions/cache@v2 with: path: ./core/deps/llvm/build/LLVM-13.0.0.tar.gz key: ubuntu-20.04-${{ env.LLVM_CACHE_SUFFIX }} restore-keys: ubuntu-20.04-${{ env.LLVM_CACHE_SUFFIX }} - name: Build llvm and clang from source id: build_llvm if: ${{ steps.cache_llvm.outputs.cache-hit != 'true' }} run: /usr/bin/env python3 ./build_llvm.py --arch X86 WebAssembly working-directory: build-scripts - name: package LLVM if: ${{ steps.build_llvm.conclusion == 'success' }} run: mv LLVM-13.0.0-*.tar.gz LLVM-13.0.0.tar.gz working-directory: core/deps/llvm/build/ spec_test_default: needs: build_llvm_libraries runs-on: ubuntu-20.04 strategy: matrix: test_option: [ $DEFAULT_TEST_OPTIONS, $SIMD_TEST_OPTIONS ] steps: - name: checkout uses: actions/checkout@v2 - name: Get LLVM libraries id: cache_llvm uses: actions/cache@v2 with: path: ./core/deps/llvm/build/LLVM-13.0.0.tar.gz key: ubuntu-20.04-${{ env.LLVM_CACHE_SUFFIX }} restore-keys: ubuntu-20.04-${{ env.LLVM_CACHE_SUFFIX }} - name: Quit if cache miss if: steps.cache_llvm.outputs.cache-hit != 'true' run: echo "::error::can not get prebuilt llvm libraries" && exit 1 - name: Extract the LLVM package run: tar xf LLVM-13.0.0.tar.gz --strip-components=1 working-directory: ./core/deps/llvm/build - name: install Ninja run: sudo apt install -y ninja-build - name: run spec tests run: ./test_wamr.sh ${{ matrix.test_option }} working-directory: ./tests/wamr-test-suites spec_test_extra: needs: build_llvm_libraries if: ${{ endsWith(github.repository, 'wasm-micro-runtime') }} runs-on: ubuntu-20.04 strategy: matrix: test_option: [ $MULTI_MODULES_TEST_OPTIONS, $THREADS_TEST_OPTIONS ] steps: - name: checkout uses: actions/checkout@v2 - name: Get LLVM libraries id: cache_llvm uses: actions/cache@v2 with: path: ./core/deps/llvm/build/LLVM-13.0.0.tar.gz key: ubuntu-20.04-${{ env.LLVM_CACHE_SUFFIX }} restore-keys: ubuntu-20.04-${{ env.LLVM_CACHE_SUFFIX }} - name: Quit if cache miss if: steps.cache_llvm.outputs.cache-hit != 'true' run: echo "::error::can not get prebuilt llvm libraries" && exit 1 - name: Extract the LLVM package run: tar xf LLVM-13.0.0.tar.gz --strip-components=1 working-directory: ./core/deps/llvm/build - name: install Ninja run: sudo apt install -y ninja-build - name: run spec tests run: ./test_wamr.sh ${{ matrix.test_option }} working-directory: ./tests/wamr-test-suites spec_test_x86_32: if: ${{ endsWith(github.repository, 'wasm-micro-runtime') }} needs: build_llvm_libraries runs-on: ubuntu-20.04 strategy: matrix: test_option: [ $DEFAULT_TEST_OPTIONS, $THREADS_TEST_OPTIONS ] steps: - name: checkout uses: actions/checkout@v2 - name: Get LLVM libraries id: cache_llvm uses: actions/cache@v2 with: path: ./core/deps/llvm/build/LLVM-13.0.0.tar.gz key: ubuntu-20.04-${{ env.LLVM_CACHE_SUFFIX }} restore-keys: ubuntu-20.04-${{ env.LLVM_CACHE_SUFFIX }} - name: Quit if cache miss if: steps.cache_llvm.outputs.cache-hit != 'true' run: echo "::error::can not get prebuilt llvm libraries" && exit 1 - name: Extract the LLVM package run: tar xf LLVM-13.0.0.tar.gz --strip-components=1 working-directory: ./core/deps/llvm/build - name: install Ninja and x32 support libraries run: sudo apt install -y g++-multilib libgcc-9-dev lib32gcc-9-dev ninja-build - name: run spec tests run: ./test_wamr.sh ${{ env.X86_32_TARGET_TEST_OPTIONS }} ${{ matrix.test_option }} working-directory: ./tests/wamr-test-suites