Edit

kc3-lang/libffi/.github/workflows/emscripten.yml

Branch :

  • Show log

    Commit

  • Author : Kleis Auke Wolthuizen
    Date : 2025-01-31 21:41:56
    Hash : adfe4489
    Message : Emscripten: remove support for `-sWASM_BIGINT=0` (#874) * Emscripten: cleanup * Emscripten: remove support for `-sWASM_BIGINT=0` * Emscripten: remove redundant CircleCI config * Emscripten: modernize CI * Ensure test helper methods are static Similar to #644. * Fix test failures in `cls_multi_{s,u}shortchar`

  • .github/workflows/emscripten.yml
  • 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.58.4
      # 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.12.7
      EMSCRIPTEN_VERSION: 3.1.58
      EM_CACHE_FOLDER: emsdk-cache
    
    jobs:
      setup-emsdk-cache:
        runs-on: ubuntu-22.04
        steps:
          - name: Setup cache
            uses: actions/cache@v4
            with:
              path: ${{ env.EM_CACHE_FOLDER }}
              key: ${{ env.EMSCRIPTEN_VERSION }}
    
          - name: Setup emsdk
            uses: mymindstorm/setup-emsdk@v14
            with:
              version: ${{ env.EMSCRIPTEN_VERSION }}
              actions-cache-folder: ${{ env.EM_CACHE_FOLDER }}
    
      test-dejagnu:
        runs-on: ubuntu-24.04
        needs: [setup-emsdk-cache]
        steps:
          - name: Checkout
            uses: actions/checkout@v4
    
          - name: Setup Python
            uses: actions/setup-python@v5
            with:
              python-version: ${{ env.PYTHON_VERSION }}
    
          - name: Setup cache
            uses: actions/cache@v4
            with:
              path: ${{ env.EM_CACHE_FOLDER }}
              key: ${{ env.EMSCRIPTEN_VERSION }}
    
          - name: Setup emsdk
            uses: mymindstorm/setup-emsdk@v14
            with:
              version: ${{ env.EMSCRIPTEN_VERSION }}
              actions-cache-folder: ${{ env.EM_CACHE_FOLDER }}
    
          - name: Install dependencies
            run: sudo apt-get install dejagnu libltdl-dev
    
          - name: Run tests
            run: testsuite/emscripten/node-tests.sh
    
          - 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:
        runs-on: ubuntu-24.04
        needs: [setup-emsdk-cache]
        steps:
          - name: Checkout
            uses: actions/checkout@v4
    
          - name: Setup cache
            uses: actions/cache@v4
            with:
              path: ${{ env.EM_CACHE_FOLDER }}
              key: ${{ env.EMSCRIPTEN_VERSION }}
    
          - name: Setup emsdk
            uses: mymindstorm/setup-emsdk@v12
            with:
              version: ${{ env.EMSCRIPTEN_VERSION }}
              actions-cache-folder: ${{ env.EM_CACHE_FOLDER }}
    
          - name: Install dependencies
            run: sudo apt-get install libltdl-dev
    
          - name: Build
            run: ./testsuite/emscripten/build.sh
    
          - 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
              ./testsuite/emscripten/build-tests.sh testsuite/libffi.closures.test
    
          - name: Store artifacts
            uses: actions/upload-artifact@v4
            with:
              name: built-tests
              path: ./testsuite/libffi.c*/
    
      test:
        strategy:
          matrix:
            browser: ["chrome"]
            # FIXME: selenium can't find gecko driver for "firefox"
        runs-on: ubuntu-24.04
        needs: [build]
        steps:
          - name: Checkout
            uses: actions/checkout@v4
    
          - name: Download build artifact
            uses: actions/download-artifact@v4
            with:
              name: built-tests
              path: ./testsuite/
    
          - uses: conda-incubator/setup-miniconda@v3
            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 tests
            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 $?