Skip to content

Update README.md

Update README.md #47

Workflow file for this run

name: Meson CI
on:
schedule:
- cron: '15 21 * * *'
push:
branches:
- main
pull_request:
branches:
- main
jobs:
build_msvc:
name: Building on MSVC ${{ matrix.msvc_version }}
runs-on: windows-latest
strategy:
matrix:
msvc_version: [2019, 2022, 2025]
steps:
- name: Checkout code
uses: actions/checkout@v5
with:
fetch-depth: 0
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.12'
- name: Install Meson and Ninja
shell: pwsh
run: |
python -m pip install --upgrade pip
python -m pip install meson ninja
if ($env:msvc_version -eq "2019") {
choco install visualstudio2019buildtools --package-parameters "--add Microsoft.VisualStudio.Workload.VCTools --includeRecommended --includeOptional --passive"
} elseif ($env:msvc_version -eq "2022") {
choco install visualstudio2022buildtools --package-parameters "--add Microsoft.VisualStudio.Workload.VCTools --includeRecommended --includeOptional --passive"
} elseif ($env:msvc_version -eq "2025") {
choco install visualstudio2025buildtools --package-parameters "--add Microsoft.VisualStudio.Workload.VCTools --includeRecommended --includeOptional --passive"
}
$env:CC="cl.exe"
$env:CXX="cl.exe"
- name: Configure
run: meson setup builddir_msvc_${{ matrix.msvc_version }} --fatal-meson-warnings -Dwerror=true -Dwith_test=enabled -Dwarning_level=3
- name: Run Tests
run: meson test -C builddir_msvc_${{ matrix.msvc_version }} -v --test-args='show --mode tree --verbose ci --result fail'
build_macosx:
name: Building on MacOSX
runs-on: macos-latest
steps:
- name: Checkout code
uses: actions/checkout@v5
with:
fetch-depth: 0
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.12'
- name: Install Xcode Command Line Tools
run: |
if ! xcode-select -p &>/dev/null; then
sudo xcode-select --install
until xcode-select -p &>/dev/null; do sleep 5; done
fi
- name: Install Xcode
run: sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer
- name: Install Meson, Ninja
run: |
python -m pip install meson ninja
- name: Configure
run: OBJC=clang OBJCXX=clang++ meson setup builddir --fatal-meson-warnings -Dwerror=true -Dwith_test=enabled -Dwarning_level=3
- name: Compile
run: meson compile -C builddir
- name: Run Tests
run: meson test -C builddir -v
- name: Upload Test Log
if: failure()
uses: actions/upload-artifact@v4
with:
name: macos_xcode_${{ matrix.xcode_version }}_meson_testlog
path: builddir/meson-logs/testlog.txt
build_msys:
name: Building on MSYS ${{ matrix.architecture }}
runs-on: windows-latest
strategy:
matrix:
architecture: [x86, x64]
steps:
- name: Checkout code
uses: actions/checkout@v5
with:
fetch-depth: 0
- name: Set up MSYS2
uses: msys2/setup-msys2@v2
with:
update: true
- name: Set environment variables
run: |
echo "CC=/mingw${{ matrix.architecture }}/bin/gcc.exe" >> $GITHUB_ENV
echo "CXX=/mingw${{ matrix.architecture }}/bin/g++.exe" >> $GITHUB_ENV
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.12'
- name: Install Meson and Ninja
run: |
python -m pip install meson ninja
- name: Configure
run: meson setup builddir --fatal-meson-warnings -Dwerror=true -Dwith_test=enabled -Dwarning_level=3
- name: Run Tests
run: meson test -C builddir -v --test-args='show --mode tree --verbose ci --result fail'
build_mingw:
name: Building on MinGW ${{ matrix.architecture }}
runs-on: windows-latest
strategy:
matrix:
architecture: [x86, x64]
steps:
- name: Checkout code
uses: actions/checkout@v5
with:
fetch-depth: 0
- name: Install MinGW
run: |
choco install mingw
- name: Set environment variables
run: |
if ($env:matrix_architecture -eq "x86") {
$env:CC="C:/tools/mingw32/bin/gcc.exe"
$env:CXX="C:/tools/mingw32/bin/g++.exe"
} else {
$env:CC="C:/tools/mingw64/bin/gcc.exe"
$env:CXX="C:/tools/mingw64/bin/g++.exe"
}
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.12'
- name: Install Meson and Ninja
run: |
python -m pip install meson ninja
- name: Configure
run: meson setup builddir --fatal-meson-warnings -Dwerror=true -Dwith_test=enabled -Dwarning_level=3
- name: Run Tests
run: meson test -C builddir -v --test-args='show --mode tree --verbose ci --result fail'
build_posix:
name: Build on Linux ${{ matrix.distro }}
runs-on: ubuntu-latest
strategy:
matrix:
distro: [ubuntu, fedora, archlinux, debian] # in a new experiment add alpine and opensuse
steps:
- name: Checkout code
uses: actions/checkout@v5
with:
fetch-depth: 0
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Cache Docker layers
uses: actions/cache@v4
with:
path: /tmp/.buildx-cache
key: ${{ runner.os }}-buildx-${{ matrix.distro }}
restore-keys: |
${{ runner.os }}-buildx
- name: Build Docker Image
run: |
docker build \
--file .github/ciimage/Dockerfile.${{ matrix.distro }} \
--tag ${GITHUB_REPOSITORY}:${{ matrix.distro }} .
- name: Run Meson Build in Docker Container
run: |
docker run --rm \
-v ${{ github.workspace }}:/workspace \
-w /workspace \
${GITHUB_REPOSITORY}:${{ matrix.distro }} \
/bin/bash -c "
sudo apt update
meson setup builddir --fatal-meson-warnings -Dwerror=true -Dwith_test=enabled -Dwarning_level=3
meson test -C builddir -v --test-args='show --mode tree --verbose ci --result fail'"