name: CI emscripten # Controls when the action will run. on: # Triggers the workflow on push or pull request events but only for the master branch push: branches: [ master ] pull_request: branches: [ master ] # Allows you to run this workflow manually from the Actions tab workflow_dispatch: env: PYODIDE_VERSION: 0.52.1 # PYTHON_VERSION and EMSCRIPTEN_VERSION are determined by PYODIDE_VERSION. # The appropriate versions can be found in the Pyodide repodata.json # "info" field, or in Makefile.envs: # https://github.com/pyodide/pyodide/blob/main/Makefile.envs#L2 PYTHON_VERSION: 3.10.7 EMSCRIPTEN_VERSION: 3.1.27 EM_CACHE_FOLDER: emsdk-cache jobs: setup-emsdk-cache: runs-on: ubuntu-22.04 steps: - name: Setup cache id: cache-system-libraries uses: actions/cache@v3 with: path: ${{env.EM_CACHE_FOLDER}} key: ${{env.EMSCRIPTEN_VERSION}} - uses: mymindstorm/setup-emsdk@v12 with: version: ${{ env.EMSCRIPTEN_VERSION }} actions-cache-folder: ${{env.EM_CACHE_FOLDER}} test-dejagnu: strategy: matrix: bigint: ["--wasm-bigint", ""] runs-on: ubuntu-22.04 needs: [setup-emsdk-cache] steps: - name: Checkout uses: actions/checkout@v3 - name: set up python id: setup-python uses: actions/setup-python@v4 with: python-version: ${{ env.PYTHON_VERSION }} - name: Setup cache id: cache-system-libraries uses: actions/cache@v3 with: path: ${{env.EM_CACHE_FOLDER}} key: ${{env.EMSCRIPTEN_VERSION}} - uses: mymindstorm/setup-emsdk@v12 with: version: ${{ env.EMSCRIPTEN_VERSION }} actions-cache-folder: ${{env.EM_CACHE_FOLDER}} - name: Install dejagnu shell: bash -l {0} run: | sudo apt install -y dejagnu - name: run tests run: | testsuite/emscripten/node-tests.sh ${{ matrix.bigint }} - name: Install rlgl and run run: | wget -qO - https://rl.gl/cli/rlgl-linux-amd64.tgz | \ tar --strip-components=2 -xvzf - ./rlgl/rlgl; ./rlgl l --key=0LIBFFI-0LIBFFI-0LIBFFI-0LIBFFI https://rl.gl ./rlgl e -l project=libffi -l sha=${GITHUB_SHA:0:7} -l CC='emcc' -l host=wasm32-unknown-linux --policy=https://github.com/libffi/rlgl-policy.git testsuite/libffi.log exit $? build: strategy: matrix: bigint: ["--wasm-bigint", ""] env: WASM_BIGINT: ${{ matrix.bigint }} runs-on: ubuntu-22.04 needs: [setup-emsdk-cache] steps: - name: Checkout uses: actions/checkout@v3 - name: Setup cache id: cache-system-libraries uses: actions/cache@v3 with: path: ${{env.EM_CACHE_FOLDER}} key: ${{env.EMSCRIPTEN_VERSION}} - uses: mymindstorm/setup-emsdk@v12 with: version: ${{ env.EMSCRIPTEN_VERSION }} actions-cache-folder: ${{env.EM_CACHE_FOLDER}} - name: build run: | ./testsuite/emscripten/build.sh ${{ matrix.bigint }} - name: build tests run: | cp -r testsuite/libffi.call testsuite/libffi.call.test cp -r testsuite/libffi.closures testsuite/libffi.closures.test ./testsuite/emscripten/build-tests.sh testsuite/libffi.call.test ${{ matrix.bigint }} ./testsuite/emscripten/build-tests.sh testsuite/libffi.closures.test ${{ matrix.bigint }} - name: Store artifacts uses: actions/upload-artifact@v3 with: name: built-tests path: | ./testsuite/libffi.c*/ test: strategy: matrix: bigint: ["--wasm-bigint", ""] browser: ["firefox", "chrome"] runs-on: ubuntu-22.04 needs: [build] steps: - name: Checkout uses: actions/checkout@v3 - name: Download build artifact uses: actions/download-artifact@v3 with: name: built-tests path: ./testsuite/ - uses: conda-incubator/setup-miniconda@v2 with: activate-environment: pyodide-env python-version: ${{ env.PYTHON_VERSION }} channels: conda-forge - name: Install test dependencies run: | pip install pytest-pyodide==${{ env.PYODIDE_VERSION }} - name: run: | cd testsuite/emscripten/ mkdir test-results pytest \ --junitxml=test-results/junit.xml \ test_libffi.py \ -k ${{ matrix.browser }} \ -s - name: Install rlgl and run if: success() || failure() run: | wget -qO - https://rl.gl/cli/rlgl-linux-amd64.tgz | \ tar --strip-components=2 -xvzf - ./rlgl/rlgl; ./rlgl l --key=0LIBFFI-0LIBFFI-0LIBFFI-0LIBFFI https://rl.gl ./rlgl e -l project=libffi -l sha=${GITHUB_SHA:0:7} -l CC='emcc' -l host=${{ matrix.browser }} --policy=https://github.com/libffi/rlgl-policy.git testsuite/emscripten/test-results/junit.xml exit $?