name: msys2 concurrency: group: msys2-${{ github.head_ref }} cancel-in-progress: true on: push: paths: - "mesonbuild/**" - "test cases/**" - "unittests/**" - ".github/workflows/msys2.yml" - "run_unittests.py" pull_request: paths: - "mesonbuild/**" - "test cases/**" - "unittests/**" - ".github/workflows/msys2.yml" - "run_unittests.py" jobs: test: runs-on: windows-2019 name: ${{ matrix.NAME }} strategy: fail-fast: false matrix: include: - NAME: gccx86ninja MSYSTEM: MINGW32 MSYS2_ARCH: i686 MSYS2_CURSES: ncurses COMPILER: gcc TOOLCHAIN: toolchain - NAME: gccx64ninja MSYSTEM: MINGW64 MSYS2_ARCH: x86_64 MSYS2_CURSES: pdcurses COMPILER: gcc TOOLCHAIN: toolchain - NAME: clangx64ninja MSYSTEM: MINGW64 MSYS2_ARCH: x86_64 MSYS2_CURSES: COMPILER: clang TOOLCHAIN: clang env: MESON_CI_JOBNAME: msys2-${{ matrix.NAME }} defaults: run: shell: msys2 {0} steps: - uses: actions/checkout@v2 - uses: msys2/setup-msys2@v2 with: msystem: ${{ matrix.MSYSTEM }} update: true install: >- base-devel git mercurial lcov wget unzip mingw-w64-${{ matrix.MSYS2_ARCH }}-cmake mingw-w64-${{ matrix.MSYS2_ARCH }}-glib2 mingw-w64-${{ matrix.MSYS2_ARCH }}-libxml2 mingw-w64-${{ matrix.MSYS2_ARCH }}-ninja mingw-w64-${{ matrix.MSYS2_ARCH }}-pkg-config mingw-w64-${{ matrix.MSYS2_ARCH }}-python2 mingw-w64-${{ matrix.MSYS2_ARCH }}-python mingw-w64-${{ matrix.MSYS2_ARCH }}-python-lxml mingw-w64-${{ matrix.MSYS2_ARCH }}-python-setuptools mingw-w64-${{ matrix.MSYS2_ARCH }}-python-pip mingw-w64-${{ matrix.MSYS2_ARCH }}-${{ matrix.TOOLCHAIN }} - name: Install dependencies run: | python3 -m pip --disable-pip-version-check install gcovr jsonschema pefile pytest pytest-subtests pytest-xdist coverage codecov - name: Install pypy3 on x86_64 run: | mkdir pypy3local pushd pypy3local wget -nv https://downloads.python.org/pypy/pypy3.8-v7.3.9-win64.zip unzip pypy3.8-v7.3.9-win64.zip mv pypy3.8-v7.3.9-win64/* ./ popd if: ${{ matrix.MSYS2_ARCH == 'x86_64' }} - name: Run Tests run: | if [[ "${{ matrix.MSYS2_ARCH }}" == "x86_64" ]]; then # There apparently is no clean way to add to the PATH in the # previous step? # See for instance https://github.com/msys2/setup-msys2/issues/171 export PATH=$PATH:$PWD/pypy3local # Make sure it is on the PATH pypy3 -c "import sys; print(sys.version)" fi export BOOST_ROOT= export PATHEXT="$PATHEXT;.py" if [[ '${{ matrix.COMPILER }}' == 'clang' ]]; then export CC=clang export CXX=clang++ export OBJC=clang export OBJCXX=clang++ fi if [[ "${{ matrix.MSYS2_CURSES }}" != "" ]]; then pacman --noconfirm --needed -S mingw-w64-${{ matrix.MSYS2_ARCH }}-${{ matrix.MSYS2_CURSES }} fi MSYSTEM= python3 ./tools/run_with_cov.py run_tests.py --backend=ninja - uses: actions/upload-artifact@v2 with: name: ${{ matrix.NAME }} path: meson-test-run.* - name: Upload coverage report run: ./ci/upload_cov.sh "${{ matrix.NAME }}"