Skip to content

fix: stabilize kundither ci checks #3352

fix: stabilize kundither ci checks

fix: stabilize kundither ci checks #3352

Workflow file for this run

name: libsixel CI (build & test)
on:
push:
branches-ignore:
- 'ci/triage/**'
pull_request:
branches: ['**']
schedule:
- cron: '17 3 * * *'
workflow_dispatch:
permissions:
contents: read
concurrency:
group: ci-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: false
env:
# Pin vcpkg to a stable release to avoid fetching future tool builds that
# depend on unavailable CMake versions during bootstrap.
VCPKG_REF: 2024.12.16
# Enforce Node.js 24 for JavaScript actions before the hosted-runner switch.
# Node.js 24 becomes default on 2026-06-02 and Node.js 20 is removed on
# 2026-09-16.
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true"
jobs:
smoke:
name: ${{ matrix.label }}
runs-on: ${{ matrix.runner }}
strategy:
matrix:
include:
- label: Autotools-ubuntu-x86_64-gcc
buildtool: autotools
runner: ubuntu-latest
extra_packages: >-
clang
exec_type: bash
- label: Meson-ubuntu-x86_64-gcc
buildtool: meson
runner: ubuntu-latest
extra_packages: >-
meson
exec_type: bash
- label: Autotools-macos-aarch64-gcc
buildtool: autotools
runner: macos-latest
exec_type: bash
- label: Meson-macos-aarch64-gcc
buildtool: meson
runner: macos-latest
extra_packages: >-
meson
exec_type: bash
- label: Meson-cmd-x86_64-msvc-x86_64
buildtool: meson
runner: windows-latest
exec_type: cmd
steps:
- name: Set Windows Defender ExclusionPath (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: |
try {
Add-MpPreference -ExclusionPath "C:\a" -ErrorAction Stop
} catch {
Write-Warning "Windows Defender exclusion setup failed; continuing: $($_.Exception.Message)"
}
- name: Disable Windows Search Indexer (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: |
Stop-Service WSearch
- name: Disable Spotlight (macOS)
if: runner.os == 'macOS'
shell: bash
run: |
sudo mdutil -i off / || true
sudo mdutil -i off /System/Volumes/Data || true
- name: Configure git EOL
if: ${{ runner.os == 'Windows' }}
shell: bash
run: git config --global core.autocrlf false
- uses: actions/checkout@v6
with:
fetch-depth: 1
- name: Run CI steps
uses: ./.github/actions/ci-steps
with:
matrix_json: ${{ toJSON(matrix) }}
github_token: ${{ secrets.GITHUB_TOKEN }}
codecov_token: ${{ secrets.CODECOV_TOKEN }}
tcc:
name: ${{ matrix.label }}
runs-on: ${{ matrix.runner }}
strategy:
matrix:
include:
- label: Autotools-ubuntu-x86_64-tcc-shared
buildtool: autotools
runner: ubuntu-latest
extra_packages: >-
clang
tcc
libc6-dev
binutils
setup_prefix: >-
CC=tcc
exec_type: bash
- label: Autotools-ubuntu-x86_64-tcc-static
buildtool: autotools
runner: ubuntu-latest
setup_prefix: >-
CC=tcc
setup_options: >-
--disable-shared
extra_packages: >-
clang
tcc
libc6-dev
binutils
exec_type: bash
- label: Autotools-ubuntu-x86_64-tcc-shared-png-jpeg-tiff-webp
buildtool: autotools
runner: ubuntu-latest
setup_prefix: >-
CC=tcc
setup_options: >-
--with-png
--with-jpeg
--with-tiff
--with-webp
extra_packages: >-
clang
tcc
libc6-dev
binutils
libpng-dev
libjpeg-dev
libtiff-dev
libwebp-dev
exec_type: bash
- label: Autotools-ubuntu-x86_64-tcc-shared-gd
buildtool: autotools
runner: ubuntu-latest
setup_prefix: >-
CC=tcc
setup_options: >-
--with-gd
extra_packages: >-
clang
tcc
libc6-dev
binutils
libgd-dev
exec_type: bash
- label: Autotools-ubuntu-x86_64-tcc-no-threads
buildtool: autotools
runner: ubuntu-latest
setup_prefix: >-
CC=tcc
setup_options: >-
--disable-threads
extra_packages: >-
clang
tcc
libc6-dev
binutils
exec_type: bash
- label: Autotools-ubuntu-x86_64-tcc-amalgamated_lib
buildtool: autotools
runner: ubuntu-latest
setup_prefix: >-
CC=tcc
setup_options: >-
--enable-amalgamated-lib
extra_packages: >-
clang
tcc
libc6-dev
binutils
exec_type: bash
- label: Autotools-ubuntu-x86_64-tcc-amalgamated_tools
buildtool: autotools
runner: ubuntu-latest
setup_prefix: >-
CC=tcc
setup_options: >-
--enable-amalgamated-tools
extra_packages: >-
clang
tcc
libc6-dev
binutils
exec_type: bash
steps:
- uses: actions/checkout@v6
with:
fetch-depth: 1
- name: Run CI steps
uses: ./.github/actions/ci-steps
with:
matrix_json: ${{ toJSON(matrix) }}
github_token: ${{ secrets.GITHUB_TOKEN }}
codecov_token: ${{ secrets.CODECOV_TOKEN }}
staticcheck:
name: ${{ matrix.label }}
runs-on: ${{ matrix.runner }}
strategy:
matrix:
include:
- label: Autotools-ubuntu-x86_64-gcc-staticcheck
buildtool: autotools
runner: ubuntu-latest
setup_prefix: >-
mkdir -p "$HOME/.local/bin";
command -v actionlint >/dev/null 2>&1 ||
{ curl -sSfL https://raw.githubusercontent.com/rhysd/actionlint/main/scripts/download-actionlint.bash |
bash -s -- latest "$HOME/.local/bin"; };
PATH="$HOME/.local/bin:$PATH"
check_target: staticcheck
extra_packages: >-
shellcheck
codespell
curl
exec_type: bash
- label: Meson-ubuntu-x86_64-gcc-staticcheck
buildtool: meson
runner: ubuntu-latest
setup_prefix: >-
mkdir -p "$HOME/.local/bin";
command -v actionlint >/dev/null 2>&1 ||
{ curl -sSfL https://raw.githubusercontent.com/rhysd/actionlint/main/scripts/download-actionlint.bash |
bash -s -- latest "$HOME/.local/bin"; };
PATH="$HOME/.local/bin:$PATH"
check_target: compile staticcheck
extra_packages: >-
meson
shellcheck
codespell
curl
exec_type: bash
steps:
- name: Set Windows Defender ExclusionPath (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: |
try {
Add-MpPreference -ExclusionPath "C:\a" -ErrorAction Stop
} catch {
Write-Warning "Windows Defender exclusion setup failed; continuing: $($_.Exception.Message)"
}
- name: Disable Windows Search Indexer (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: |
Stop-Service WSearch
- name: Disable Spotlight (macOS)
if: runner.os == 'macOS'
shell: bash
run: |
sudo mdutil -i off / || true
sudo mdutil -i off /System/Volumes/Data || true
- name: Configure git EOL
if: ${{ runner.os == 'Windows' }}
shell: bash
run: git config --global core.autocrlf false
- uses: actions/checkout@v6
with:
fetch-depth: 1
- name: Run CI steps
uses: ./.github/actions/ci-steps
with:
matrix_json: ${{ toJSON(matrix) }}
github_token: ${{ secrets.GITHUB_TOKEN }}
codecov_token: ${{ secrets.CODECOV_TOKEN }}
static-analyze:
name: ${{ matrix.label }}
runs-on: ${{ matrix.runner }}
strategy:
fail-fast: false
matrix:
include:
- label: Meson-cmd-x86_64-msvc-static-analyze
runner: windows-latest
analyzer: msvc
- label: Autotools-ubuntu-x86_64-clang-static-analyze
runner: ubuntu-latest
analyzer: clang
- label: Autotools-ubuntu-x86_64-gcc-static-analyze
runner: ubuntu-latest
analyzer: gcc
steps:
- uses: actions/checkout@v6
with:
fetch-depth: 1
- name: Setup MSVC developer env
if: ${{ matrix.analyzer == 'msvc' }}
shell: pwsh
run: |
& "${{ github.workspace }}\.github\scripts\setup-msvc-env.ps1" -Arch x64
- name: Build with MSVC /W4 /analyze
if: ${{ matrix.analyzer == 'msvc' }}
shell: cmd
run: |
setlocal ENABLEDELAYEDEXPANSION
python -m pip install --upgrade pip
if errorlevel 1 exit /b !errorlevel!
python -m pip install meson
if errorlevel 1 exit /b !errorlevel!
python -m mesonbuild.mesonmain setup builddir -Danalyzer=true
if errorlevel 1 exit /b !errorlevel!
python -m mesonbuild.mesonmain compile -C builddir --ninja-args=-k0
if errorlevel 1 exit /b !errorlevel!
endlocal
- name: Install Clang Static Analyzer
if: ${{ matrix.analyzer == 'clang' }}
shell: bash
run: |
set -eux
sudo apt-get update
sudo apt-get install -y clang clang-tools
- name: Build with Clang Static Analyzer
if: ${{ matrix.analyzer == 'clang' }}
shell: bash
run: |
set -eux
CC=clang ./configure --enable-analyzer
SCAN_BUILD="$(command -v scan-build || command -v scan-build-18 || command -v scan-build-17 || command -v scan-build-16)"
ROOT_DIR="$(pwd)"
"$SCAN_BUILD" \
--use-cc=clang \
--use-c++=clang++ \
-disable-checker deadcode.DeadStores \
--exclude "$ROOT_DIR/assessment" \
--exclude "$ROOT_DIR/tests" \
--exclude "$ROOT_DIR/examples" \
--exclude "$ROOT_DIR/drawing" \
--exclude "$ROOT_DIR/python" \
--exclude "$ROOT_DIR/ruby" \
--exclude "$ROOT_DIR/windows" \
--exclude "$ROOT_DIR/quicklook-extension" \
--status-bugs \
--keep-going \
make -j"$(nproc)" V=1
- name: Build with GCC Static Analyzer
if: ${{ matrix.analyzer == 'gcc' }}
shell: bash
run: |
set -eux
CC=gcc ./configure --enable-analyzer
make -j"$(nproc)" V=1
pgo:
name: ${{ matrix.label }}
runs-on: ${{ matrix.runner }}
strategy:
matrix:
include:
- label: Autotools-ubuntu-x86_64-clang-pgo
buildtool: autotools
runner: ubuntu-latest
setup_prefix: >-
export LLVM_PROFILE_FILE="${GITHUB_WORKSPACE}/pgo/default-%p-%m.profraw";
mkdir build;
cd build;
rel=..;
CC=clang
setup_options: >-
--enable-pgo=generate --with-pgo-data=${GITHUB_WORKSPACE}/pgo
pgo_use_options: >-
--enable-pgo=use --with-pgo-profdata=${GITHUB_WORKSPACE}/pgo/default.profdata
extra_packages: >-
clang
exec_type: bash
- label: Meson-ubuntu-x86_64-clang-pgo
buildtool: meson
runner: ubuntu-latest
setup_prefix: >-
export LLVM_PROFILE_FILE="$PWD/pgo/default-%p-%m.profraw";
CC=clang
setup_options: >-
-Db_pgo=generate
pgo_use_options: >-
-Db_pgo=use
extra_packages: >-
meson
clang
exec_type: bash
- label: Autotools-ubuntu-x86_64-gcc-pgo
buildtool: autotools
runner: ubuntu-latest
setup_options: >-
--enable-pgo=generate --with-pgo-data=${GITHUB_WORKSPACE}/pgo
pgo_use_options: >-
--enable-pgo=use --with-pgo-data=${GITHUB_WORKSPACE}/pgo
extra_packages: >-
clang
exec_type: bash
- label: Meson-ubuntu-x86_64-gcc-pgo
buildtool: meson
runner: ubuntu-latest
setup_options: >-
-Db_pgo=generate
pgo_use_options: >-
-Db_pgo=use
extra_packages: >-
meson
exec_type: bash
- label: Meson-cmd-x86_64-msvc-pgo
buildtool: meson
runner: windows-latest
setup_options: >-
-Dmsvc_pgo=generate
pgo_use_options: >-
-Dmsvc_pgo=use
exec_type: cmd
steps:
- name: Set Windows Defender ExclusionPath (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: |
try {
Add-MpPreference -ExclusionPath "C:\a" -ErrorAction Stop
} catch {
Write-Warning "Windows Defender exclusion setup failed; continuing: $($_.Exception.Message)"
}
- name: Disable Windows Search Indexer (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: |
Stop-Service WSearch
- name: Disable Spotlight (macOS)
if: runner.os == 'macOS'
shell: bash
run: |
sudo mdutil -i off / || true
sudo mdutil -i off /System/Volumes/Data || true
- name: Configure git EOL
if: ${{ runner.os == 'Windows' }}
shell: bash
run: git config --global core.autocrlf false
- uses: actions/checkout@v6
with:
fetch-depth: 1
- name: Run CI steps
uses: ./.github/actions/ci-steps
with:
matrix_json: ${{ toJSON(matrix) }}
github_token: ${{ secrets.GITHUB_TOKEN }}
codecov_token: ${{ secrets.CODECOV_TOKEN }}
python:
name: ${{ matrix.label }}
runs-on: ${{ matrix.runner }}
strategy:
matrix:
include:
- label: Autotools-ubuntu-x86_64-gcc-python
buildtool: autotools
runner: ubuntu-latest
setup_options: >-
--enable-python
extra_packages: >-
clang
pip_packages: >-
build
exec_type: bash
- label: Autotools-ubuntu-x86_64-gcc-python-vpath_build
buildtool: autotools
runner: ubuntu-latest
setup_prefix: >-
mkdir build;
cd build;
rel=..;
setup_options: >-
--enable-python
extra_packages: >-
clang
pip_packages: >-
build
exec_type: bash
- label: Meson-ubuntu-x86_64-gcc-python
buildtool: meson
runner: ubuntu-latest
setup_options: >-
-Dpython=enabled
extra_packages: >-
meson
pip_packages: >-
build
exec_type: bash
- label: Autotools-macos-aarch64-gcc-python
buildtool: autotools
runner: macos-latest
setup_options: >-
--enable-python
pip_packages: >-
build
exec_type: bash
- label: Meson-macos-aarch64-gcc-python
buildtool: meson
runner: macos-latest
setup_options: >-
-Dpython=enabled
extra_packages: >-
meson
pip_packages: >-
build
exec_type: bash
- label: Meson-cmd-x86_64-msvc-x86_64-python
buildtool: meson
runner: windows-latest
setup_options: >-
-Dpython=enabled
pip_packages: >-
build
exec_type: cmd
steps:
- name: Set Windows Defender ExclusionPath (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: |
try {
Add-MpPreference -ExclusionPath "C:\a" -ErrorAction Stop
} catch {
Write-Warning "Windows Defender exclusion setup failed; continuing: $($_.Exception.Message)"
}
- name: Disable Windows Search Indexer (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: |
Stop-Service WSearch
- name: Disable Spotlight (macOS)
if: runner.os == 'macOS'
shell: bash
run: |
sudo mdutil -i off / || true
sudo mdutil -i off /System/Volumes/Data || true
- name: Configure git EOL
if: ${{ runner.os == 'Windows' }}
shell: bash
run: git config --global core.autocrlf false
- uses: actions/checkout@v6
with:
fetch-depth: 1
- name: Run CI steps
uses: ./.github/actions/ci-steps
with:
matrix_json: ${{ toJSON(matrix) }}
github_token: ${{ secrets.GITHUB_TOKEN }}
codecov_token: ${{ secrets.CODECOV_TOKEN }}
python-coverage:
needs: [python]
name: ${{ matrix.label }}
runs-on: ${{ matrix.runner }}
strategy:
matrix:
include:
- label: Autotools-ubuntu-x86_64-gcc-python-coverage
buildtool: autotools
runner: ubuntu-latest
setup_options: >-
--enable-python
extra_packages: >-
clang
pip_packages: >-
build
pytest
coverage
check_target: check-python
exec_type: bash
- label: Meson-ubuntu-x86_64-gcc-python-coverage
buildtool: meson
runner: ubuntu-latest
setup_options: >-
-Dpython=enabled
extra_packages: >-
meson
pip_packages: >-
build
pytest
coverage
check_target: compile test-python
exec_type: bash
- label: Autotools-macos-aarch64-gcc-python-coverage
buildtool: autotools
runner: macos-latest
setup_options: >-
--enable-python
pip_packages: >-
build
pytest
coverage
check_target: check-python
exec_type: bash
- label: Meson-macos-aarch64-gcc-python-coverage
buildtool: meson
runner: macos-latest
setup_options: >-
-Dpython=enabled
extra_packages: >-
meson
pip_packages: >-
build
pytest
coverage
check_target: compile test-python
exec_type: bash
steps:
- name: Set Windows Defender ExclusionPath (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: |
try {
Add-MpPreference -ExclusionPath "C:\a" -ErrorAction Stop
} catch {
Write-Warning "Windows Defender exclusion setup failed; continuing: $($_.Exception.Message)"
}
- name: Disable Windows Search Indexer (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: |
Stop-Service WSearch
- name: Disable Spotlight (macOS)
if: runner.os == 'macOS'
shell: bash
run: |
sudo mdutil -i off / || true
sudo mdutil -i off /System/Volumes/Data || true
- name: Configure git EOL
if: ${{ runner.os == 'Windows' }}
shell: bash
run: git config --global core.autocrlf false
- uses: actions/checkout@v6
with:
fetch-depth: 1
- name: Run CI steps
uses: ./.github/actions/ci-steps
with:
matrix_json: ${{ toJSON(matrix) }}
github_token: ${{ secrets.GITHUB_TOKEN }}
codecov_token: ${{ secrets.CODECOV_TOKEN }}
ruby:
name: ${{ matrix.label }}
runs-on: ${{ matrix.runner }}
strategy:
matrix:
include:
- label: Autotools-ubuntu-x86_64-gcc-ruby
buildtool: autotools
runner: ubuntu-latest
setup_options: >-
--enable-ruby
extra_packages: >-
clang
exec_type: bash
- label: Autotools-ubuntu-x86_64-gcc-ruby-vpath_build
buildtool: autotools
runner: ubuntu-latest
setup_prefix: >-
mkdir build;
cd build;
rel=..;
setup_options: >-
--enable-ruby
extra_packages: >-
clang
exec_type: bash
- label: Meson-ubuntu-x86_64-gcc-ruby
buildtool: meson
runner: ubuntu-latest
setup_options: >-
-Druby=enabled
extra_packages: >-
meson
exec_type: bash
- label: Autotools-macos-aarch64-gcc-ruby
buildtool: autotools
runner: macos-latest
setup_options: >-
--enable-ruby
exec_type: bash
- label: Meson-macos-aarch64-gcc-ruby
buildtool: meson
runner: macos-latest
setup_options: >-
-Druby=enabled
extra_packages: >-
meson
exec_type: bash
- label: Meson-cmd-x86_64-msvc-x86_64-ruby
buildtool: meson
runner: windows-latest
setup_options: >-
-Druby=enabled
exec_type: cmd
steps:
- name: Set Windows Defender ExclusionPath (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: |
try {
Add-MpPreference -ExclusionPath "C:\a" -ErrorAction Stop
} catch {
Write-Warning "Windows Defender exclusion setup failed; continuing: $($_.Exception.Message)"
}
- name: Disable Windows Search Indexer (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: |
Stop-Service WSearch
- name: Disable Spotlight (macOS)
if: runner.os == 'macOS'
shell: bash
run: |
sudo mdutil -i off / || true
sudo mdutil -i off /System/Volumes/Data || true
- name: Configure git EOL
if: ${{ runner.os == 'Windows' }}
shell: bash
run: git config --global core.autocrlf false
- uses: actions/checkout@v6
with:
fetch-depth: 1
- name: Run CI steps
uses: ./.github/actions/ci-steps
with:
matrix_json: ${{ toJSON(matrix) }}
github_token: ${{ secrets.GITHUB_TOKEN }}
codecov_token: ${{ secrets.CODECOV_TOKEN }}
ruby-coverage:
needs: [ruby]
name: ${{ matrix.label }}
runs-on: ${{ matrix.runner }}
strategy:
matrix:
include:
- label: Autotools-ubuntu-x86_64-gcc-ruby-coverage
buildtool: autotools
runner: ubuntu-latest
setup_options: >-
--enable-ruby
extra_packages: >-
clang
check_target: check-ruby
exec_type: bash
- label: Meson-ubuntu-x86_64-gcc-ruby-coverage
buildtool: meson
runner: ubuntu-latest
setup_options: >-
-Druby=enabled
extra_packages: >-
meson
check_target: compile test-ruby
exec_type: bash
- label: Autotools-macos-aarch64-gcc-ruby-coverage
buildtool: autotools
runner: macos-latest
setup_options: >-
--enable-ruby
check_target: check-ruby
exec_type: bash
- label: Meson-macos-aarch64-gcc-ruby-coverage
buildtool: meson
runner: macos-latest
setup_options: >-
-Druby=enabled
extra_packages: >-
meson
check_target: compile test-ruby
exec_type: bash
steps:
- name: Set Windows Defender ExclusionPath (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: |
try {
Add-MpPreference -ExclusionPath "C:\a" -ErrorAction Stop
} catch {
Write-Warning "Windows Defender exclusion setup failed; continuing: $($_.Exception.Message)"
}
- name: Disable Windows Search Indexer (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: |
Stop-Service WSearch
- name: Disable Spotlight (macOS)
if: runner.os == 'macOS'
shell: bash
run: |
sudo mdutil -i off / || true
sudo mdutil -i off /System/Volumes/Data || true
- name: Configure git EOL
if: ${{ runner.os == 'Windows' }}
shell: bash
run: git config --global core.autocrlf false
- uses: actions/checkout@v6
with:
fetch-depth: 1
- name: Run CI steps
uses: ./.github/actions/ci-steps
with:
matrix_json: ${{ toJSON(matrix) }}
github_token: ${{ secrets.GITHUB_TOKEN }}
codecov_token: ${{ secrets.CODECOV_TOKEN }}
perl:
name: ${{ matrix.label }}
runs-on: ${{ matrix.runner }}
strategy:
matrix:
include:
- label: Autotools-ubuntu-x86_64-gcc-perl
buildtool: autotools
runner: ubuntu-latest
setup_options: >-
--enable-perl
extra_packages: >-
clang
cpanminus
exec_type: bash
- label: Autotools-ubuntu-x86_64-gcc-perl-vpath_build
buildtool: autotools
runner: ubuntu-latest
setup_prefix: >-
mkdir build;
cd build;
rel=..;
setup_options: >-
--enable-perl
extra_packages: >-
clang
cpanminus
exec_type: bash
- label: Meson-ubuntu-x86_64-gcc-perl
buildtool: meson
runner: ubuntu-latest
setup_options: >-
-Dperl=enabled
extra_packages: >-
meson
cpanminus
exec_type: bash
- label: Autotools-macos-aarch64-gcc-perl
buildtool: autotools
runner: macos-latest
setup_options: >-
--enable-perl
extra_packages: >-
cpanminus
exec_type: bash
- label: Meson-macos-aarch64-gcc-perl
buildtool: meson
runner: macos-latest
setup_options: >-
-Dperl=enabled
extra_packages: >-
meson
cpanminus
exec_type: bash
- label: Meson-cmd-x86_64-msvc-x86_64-perl
buildtool: meson
runner: windows-latest
setup_options: >-
-Dperl=enabled
exec_type: cmd
steps:
- name: Set Windows Defender ExclusionPath (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: |
try {
Add-MpPreference -ExclusionPath "C:\a" -ErrorAction Stop
} catch {
Write-Warning "Windows Defender exclusion setup failed; continuing: $($_.Exception.Message)"
}
- name: Disable Windows Search Indexer (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: |
Stop-Service WSearch
- name: Disable Spotlight (macOS)
if: runner.os == 'macOS'
shell: bash
run: |
sudo mdutil -i off / || true
sudo mdutil -i off /System/Volumes/Data || true
- name: Configure git EOL
if: ${{ runner.os == 'Windows' }}
shell: bash
run: git config --global core.autocrlf false
- uses: actions/checkout@v6
with:
fetch-depth: 1
- name: Run CI steps
uses: ./.github/actions/ci-steps
with:
matrix_json: ${{ toJSON(matrix) }}
github_token: ${{ secrets.GITHUB_TOKEN }}
codecov_token: ${{ secrets.CODECOV_TOKEN }}
perl-coverage:
needs: [perl]
name: ${{ matrix.label }}
runs-on: ${{ matrix.runner }}
strategy:
matrix:
include:
- label: Autotools-ubuntu-x86_64-gcc-perl-coverage
buildtool: autotools
runner: ubuntu-latest
setup_options: >-
--enable-perl
extra_packages: >-
clang
cpanminus
check_target: check-perl
exec_type: bash
- label: Meson-ubuntu-x86_64-gcc-perl-coverage
buildtool: meson
runner: ubuntu-latest
setup_options: >-
-Dperl=enabled
extra_packages: >-
meson
cpanminus
check_target: compile test-perl
exec_type: bash
- label: Autotools-macos-aarch64-gcc-perl-coverage
buildtool: autotools
runner: macos-latest
setup_options: >-
--enable-perl
extra_packages: >-
cpanminus
check_target: check-perl
exec_type: bash
- label: Meson-macos-aarch64-gcc-perl-coverage
buildtool: meson
runner: macos-latest
setup_options: >-
-Dperl=enabled
extra_packages: >-
meson
cpanminus
check_target: compile test-perl
exec_type: bash
steps:
- name: Set Windows Defender ExclusionPath (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: |
try {
Add-MpPreference -ExclusionPath "C:\a" -ErrorAction Stop
} catch {
Write-Warning "Windows Defender exclusion setup failed; continuing: $($_.Exception.Message)"
}
- name: Disable Windows Search Indexer (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: |
Stop-Service WSearch
- name: Disable Spotlight (macOS)
if: runner.os == 'macOS'
shell: bash
run: |
sudo mdutil -i off / || true
sudo mdutil -i off /System/Volumes/Data || true
- name: Configure git EOL
if: ${{ runner.os == 'Windows' }}
shell: bash
run: git config --global core.autocrlf false
- uses: actions/checkout@v6
with:
fetch-depth: 1
- name: Run CI steps
uses: ./.github/actions/ci-steps
with:
matrix_json: ${{ toJSON(matrix) }}
github_token: ${{ secrets.GITHUB_TOKEN }}
codecov_token: ${{ secrets.CODECOV_TOKEN }}
php:
name: ${{ matrix.label }}
runs-on: ${{ matrix.runner }}
strategy:
matrix:
include:
- label: Autotools-ubuntu-x86_64-gcc-php
buildtool: autotools
runner: ubuntu-latest
setup_options: >-
--enable-php
extra_packages: >-
clang
exec_type: bash
- label: Autotools-ubuntu-x86_64-gcc-php-vpath_build
buildtool: autotools
runner: ubuntu-latest
setup_prefix: >-
mkdir build;
cd build;
rel=..;
setup_options: >-
--enable-php
extra_packages: >-
clang
exec_type: bash
- label: Meson-ubuntu-x86_64-gcc-php
buildtool: meson
runner: ubuntu-latest
setup_options: >-
-Dphp=enabled
extra_packages: >-
meson
exec_type: bash
- label: Autotools-macos-aarch64-gcc-php
buildtool: autotools
runner: macos-latest
setup_options: >-
--enable-php
extra_packages: >-
php
exec_type: bash
- label: Meson-macos-aarch64-gcc-php
buildtool: meson
runner: macos-latest
setup_options: >-
-Dphp=enabled
extra_packages: >-
meson
php
exec_type: bash
- label: Meson-cmd-x86_64-msvc-x86_64-php
buildtool: meson
runner: windows-latest
setup_options: >-
-Dphp=enabled
exec_type: cmd
steps:
- name: Set Windows Defender ExclusionPath (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: |
try {
Add-MpPreference -ExclusionPath "C:\a" -ErrorAction Stop
} catch {
Write-Warning "Windows Defender exclusion setup failed; continuing: $($_.Exception.Message)"
}
- name: Disable Windows Search Indexer (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: |
Stop-Service WSearch
- name: Disable Spotlight (macOS)
if: runner.os == 'macOS'
shell: bash
run: |
sudo mdutil -i off / || true
sudo mdutil -i off /System/Volumes/Data || true
- name: Configure git EOL
if: ${{ runner.os == 'Windows' }}
shell: bash
run: git config --global core.autocrlf false
- uses: actions/checkout@v6
with:
fetch-depth: 1
- name: Run CI steps
uses: ./.github/actions/ci-steps
with:
matrix_json: ${{ toJSON(matrix) }}
github_token: ${{ secrets.GITHUB_TOKEN }}
codecov_token: ${{ secrets.CODECOV_TOKEN }}
php-coverage:
needs: [php]
name: ${{ matrix.label }}
runs-on: ${{ matrix.runner }}
strategy:
matrix:
include:
- label: Autotools-ubuntu-x86_64-gcc-php-coverage
buildtool: autotools
runner: ubuntu-latest
setup_options: >-
--enable-php
extra_packages: >-
clang
check_target: check-php
exec_type: bash
- label: Meson-ubuntu-x86_64-gcc-php-coverage
buildtool: meson
runner: ubuntu-latest
setup_options: >-
-Dphp=enabled
extra_packages: >-
meson
check_target: compile test-php
exec_type: bash
- label: Autotools-macos-aarch64-gcc-php-coverage
buildtool: autotools
runner: macos-latest
setup_options: >-
--enable-php
extra_packages: >-
php
check_target: check-php
exec_type: bash
- label: Meson-macos-aarch64-gcc-php-coverage
buildtool: meson
runner: macos-latest
setup_options: >-
-Dphp=enabled
extra_packages: >-
meson
php
check_target: compile test-php
exec_type: bash
steps:
- name: Set Windows Defender ExclusionPath (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: |
try {
Add-MpPreference -ExclusionPath "C:\a" -ErrorAction Stop
} catch {
Write-Warning "Windows Defender exclusion setup failed; continuing: $($_.Exception.Message)"
}
- name: Disable Windows Search Indexer (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: |
Stop-Service WSearch
- name: Disable Spotlight (macOS)
if: runner.os == 'macOS'
shell: bash
run: |
sudo mdutil -i off / || true
sudo mdutil -i off /System/Volumes/Data || true
- name: Configure git EOL
if: ${{ runner.os == 'Windows' }}
shell: bash
run: git config --global core.autocrlf false
- uses: actions/checkout@v6
with:
fetch-depth: 1
- name: Run CI steps
uses: ./.github/actions/ci-steps
with:
matrix_json: ${{ toJSON(matrix) }}
github_token: ${{ secrets.GITHUB_TOKEN }}
codecov_token: ${{ secrets.CODECOV_TOKEN }}
autotools-out_of_tree:
needs: [smoke]
name: ${{ matrix.label }}
runs-on: ${{ matrix.runner }}
strategy:
matrix:
include:
- label: Autotools-ubuntu-x86_64-gcc-vpath_build
buildtool: autotools
runner: ubuntu-latest
setup_prefix: >-
mkdir build;
cd build;
rel=..;
extra_packages: >-
clang
exec_type: bash
steps:
- name: Set Windows Defender ExclusionPath (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: |
try {
Add-MpPreference -ExclusionPath "C:\a" -ErrorAction Stop
} catch {
Write-Warning "Windows Defender exclusion setup failed; continuing: $($_.Exception.Message)"
}
- name: Disable Windows Search Indexer (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: |
Stop-Service WSearch
- name: Disable Spotlight (macOS)
if: runner.os == 'macOS'
shell: bash
run: |
sudo mdutil -i off / || true
sudo mdutil -i off /System/Volumes/Data || true
- name: Configure git EOL
if: ${{ runner.os == 'Windows' }}
shell: bash
run: git config --global core.autocrlf false
- uses: actions/checkout@v6
with:
fetch-depth: 1
- name: Run CI steps
uses: ./.github/actions/ci-steps
with:
matrix_json: ${{ toJSON(matrix) }}
github_token: ${{ secrets.GITHUB_TOKEN }}
codecov_token: ${{ secrets.CODECOV_TOKEN }}
lto:
needs: [smoke]
name: ${{ matrix.label }}
runs-on: ${{ matrix.runner }}
strategy:
matrix:
include:
- label: Autotools-ubuntu-x86_64-clang-lto-no
buildtool: autotools
runner: ubuntu-latest
setup_prefix: >-
CC=clang
setup_options: >-
--enable-lto=no
extra_packages: >-
clang
exec_type: bash
- label: Autotools-ubuntu-x86_64-clang-lto-full
buildtool: autotools
runner: ubuntu-latest
setup_prefix: >-
CC=clang
setup_options: >-
--enable-lto=full
extra_packages: >-
clang
exec_type: bash
- label: Autotools-ubuntu-x86_64-clang-lto-thin
buildtool: autotools
runner: ubuntu-latest
setup_prefix: >-
CC=clang
setup_options: >-
--enable-lto=thin
extra_packages: >-
clang
exec_type: bash
- label: Autotools-msys2-msys-msvc-lto-full
buildtool: autotools
runner: windows-latest
msystem: MSYS
setup_prefix: >-
CC=cl
LD=link
AR="sh ar-lib lib"
ARFLAGS=cr
NM="dumpbin -symbols"
STRIP=:
RANLIB=:
setup_options: >-
--host=x86_64-pc-windows-msvc
--enable-lto=full
extra_packages: >-
make
exec_type: msys2
- label: Meson-ubuntu-x86_64-gcc-lto-full
buildtool: meson
runner: ubuntu-latest
setup_options: >-
-Db_lto=true
-Db_lto_mode=default
extra_packages: >-
meson
exec_type: bash
- label: Meson-ubuntu-x86_64-clang-lto-thin
buildtool: meson
runner: ubuntu-latest
setup_prefix: >-
CC=clang
LDFLAGS='-fuse-ld=lld'
setup_options: >-
-Db_lto=true
-Db_lto_mode=thin
extra_packages: >-
meson
clang
lld
exec_type: bash
- label: Meson-cmd-x86_64-msvc-x86_64-lto-full
buildtool: meson
runner: windows-latest
setup_options: >-
-Db_lto=true
-Db_lto_mode=default
exec_type: cmd
steps:
- name: Configure git EOL
if: ${{ runner.os == 'Windows' }}
shell: bash
run: git config --global core.autocrlf false
- uses: actions/checkout@v6
with:
fetch-depth: 1
- name: Run CI steps
uses: ./.github/actions/ci-steps
with:
matrix_json: ${{ toJSON(matrix) }}
github_token: ${{ secrets.GITHUB_TOKEN }}
codecov_token: ${{ secrets.CODECOV_TOKEN }}
coverage-autotools:
needs: [smoke]
name: ${{ matrix.label }}
runs-on: ${{ matrix.runner }}
strategy:
matrix:
include:
- label: Autotools-ubuntu-x86_64-static-coverage
buildtool: autotools
runner: ubuntu-latest
setup_prefix: >-
CC=gcc-14
setup_options: >-
--enable-gcov
--disable-shared
--enable-static
extra_packages: >-
gcc-14
gcovr
exec_type: bash
- label: Autotools-ubuntu-x86_64-no-simd-coverage
buildtool: autotools
runner: ubuntu-latest
setup_prefix: >-
CC=gcc-14
setup_options: >-
--enable-gcov
--disable-simd
extra_packages: >-
gcc-14
pip_packages: >-
gcovr
exec_type: bash
- label: Autotools-ubuntu-x86_64-no-threads-coverage
buildtool: autotools
runner: ubuntu-latest
setup_prefix: >-
CC=gcc-14
setup_options: >-
--enable-gcov
--disable-threads
extra_packages: >-
gcc-14
pip_packages: >-
gcovr
exec_type: bash
- label: Autotools-ubuntu-x86_64-lcms2-coverage
buildtool: autotools
runner: ubuntu-latest
setup_prefix: >-
CC=clang
setup_options: >-
--enable-gcov
--without-png
--without-jpeg
--without-tiff
--without-webp
--without-librsvg
--with-lcms2
extra_packages: >-
meson
clang
liblcms2-dev
pip_packages: >-
gcovr
exec_type: bash
- label: Autotools-ubuntu-x86_64-clang-png-jpeg-tiff-webp-svg-coverage
buildtool: autotools
runner: ubuntu-latest
setup_prefix: >-
CC=clang
setup_options: >-
--enable-gcov
--with-png
--with-jpeg
--with-tiff
--with-webp
--with-librsvg
--without-lcms2
extra_packages: >-
meson
clang
libpng-dev
libjpeg-dev
libtiff-dev
libwebp-dev
librsvg2-dev
pip_packages: >-
gcovr
exec_type: bash
- label: Autotools-ubuntu-x86_64-clang-png-jpeg-tiff-webp-svg-lcms2-coverage
buildtool: autotools
runner: ubuntu-latest
setup_prefix: >-
CC=clang
setup_options: >-
--enable-gcov
--with-png
--with-jpeg
--with-tiff
--with-webp
--with-librsvg
--with-lcms2
extra_packages: >-
meson
clang
libpng-dev
libjpeg-dev
libtiff-dev
libwebp-dev
librsvg2-dev
liblcms2-dev
pip_packages: >-
gcovr
exec_type: bash
- label: Autotools-ubuntu-x86_64-gdk-pixbuf2-coverage
buildtool: autotools
runner: ubuntu-latest
setup_prefix: >-
CC=clang
setup_options: >-
--enable-gcov
--without-png
--without-jpeg
--without-tiff
--with-gdk-pixbuf2
extra_packages: >-
clang
libgdk-pixbuf2.0-dev
pip_packages: >-
gcovr
exec_type: bash
- label: Autotools-ubuntu-x86_64-GD-no-aborttrace-coverage
buildtool: autotools
runner: ubuntu-latest
setup_prefix: >-
CC=clang
setup_options: >-
--enable-gcov
--without-png
--without-jpeg
--without-tiff
--with-gd
--disable-abort-trace
extra_packages: >-
clang
libgd-dev
pip_packages: >-
gcovr
exec_type: bash
- label: Autotools-macos-x86_64-coverage
buildtool: autotools
runner: macos-15-intel
setup_options: >-
--enable-gcov
extra_packages: >-
lcov
exec_type: bash
- label: Autotools-macos-aarch64-lcms2-coverage
buildtool: autotools
runner: macos-latest
setup_options: >-
--enable-gcov
--without-png
--without-jpeg
--without-tiff
--without-webp
--without-librsvg
--with-lcms2
extra_packages: >-
lcms2
lcov
exec_type: bash
- label: Autotools-macos-aarch64-png-jpegturbo-tiff-webp-svg-coverage
buildtool: autotools
runner: macos-latest
setup_options: >-
--enable-gcov
--with-png
--with-jpeg
--with-tiff
--with-webp
--with-librsvg
--without-lcms2
extra_packages: >-
libpng
jpeg-turbo
libtiff
webp
librsvg
lcov
exec_type: bash
- label: Autotools-macos-aarch64-png-jpegturbo-tiff-webp-svg-lcms2-coverage
buildtool: autotools
runner: macos-latest
setup_options: >-
--enable-gcov
--with-png
--with-jpeg
--with-tiff
--with-webp
--with-librsvg
--with-lcms2
extra_packages: >-
libpng
jpeg-turbo
libtiff
webp
librsvg
lcms2
lcov
exec_type: bash
- label: Autotools-macos-aarch64-gdk-pixbuf2-coverage
buildtool: autotools
runner: macos-latest
setup_prefix: >-
CC=clang
setup_options: >-
--enable-gcov
--without-png
--without-jpeg
--without-tiff
--with-gdk-pixbuf2
extra_packages: >-
gdk-pixbuf
lcov
exec_type: bash
- label: Autotools-macos-aarch64-GD-coverage
buildtool: autotools
runner: macos-latest
setup_prefix: >-
CC=clang
setup_options: >-
--enable-gcov
--without-png
--without-jpeg
--without-tiff
--with-gd
extra_packages: >-
gd
lcov
exec_type: bash
- label: Autotools-msys2-mingw64-static-coverage
buildtool: autotools
runner: windows-latest
msystem: MINGW64
setup_options: >-
--disable-shared
--enable-static
--enable-gcov
extra_packages: >-
make
mingw-w64-x86_64-toolchain
mingw-w64-x86_64-lcov
exec_type: msys2
- label: Autotools-msys2-mingw64-no-simd-coverage
buildtool: autotools
runner: windows-latest
msystem: MINGW64
setup_options: >-
--enable-gcov
--disable-simd
extra_packages: >-
make
mingw-w64-x86_64-toolchain
mingw-w64-x86_64-lcov
exec_type: msys2
- label: Autotools-msys2-mingw64-no-threads-coverage
buildtool: autotools
runner: windows-latest
msystem: MINGW64
setup_options: >-
--disable-threads
--enable-gcov
extra_packages: >-
make
mingw-w64-x86_64-toolchain
mingw-w64-x86_64-lcov
exec_type: msys2
- label: Autotools-msys2-ucrt64-coverage
buildtool: autotools
runner: windows-latest
msystem: UCRT64
setup_options: >-
--enable-gcov
extra_packages: >-
make
mingw-w64-ucrt-x86_64-toolchain
mingw-w64-ucrt-x86_64-lcov
exec_type: msys2
- label: Autotools-msys2-clang64-coverage
buildtool: autotools
runner: windows-latest
msystem: CLANG64
setup_prefix: >-
CC=clang
setup_options: >-
--enable-gcov
extra_packages: >-
make
mingw-w64-clang-x86_64-toolchain
mingw-w64-clang-x86_64-lcov
exec_type: msys2
- label: Autotools-msys2-msys-gcc-coverage
buildtool: autotools
runner: windows-latest
msystem: MSYS
setup_options: >-
--enable-gcov
extra_packages: >-
make
gcc
lcov
exec_type: msys2
- label: Autotools-cygwin64-clangcl-msvc_abi-coverage
buildtool: autotools
runner: windows-latest
setup_prefix: >-
CC=clang-cl
LD=link
AR="sh ar-lib lib"
ARFLAGS=cr
NM="dumpbin -symbols"
STRIP=:
RANLIB=:
setup_options: >-
--host=x86_64-pc-windows-msvc
--enable-threads
--enable-gcov
extra_packages: >-
make
exec_type: cygwin
steps:
- name: Set Windows Defender ExclusionPath (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: |
try {
Add-MpPreference -ExclusionPath "C:\a" -ErrorAction Stop
} catch {
Write-Warning "Windows Defender exclusion setup failed; continuing: $($_.Exception.Message)"
}
- name: Disable Windows Search Indexer (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: |
Stop-Service WSearch
- name: Disable Spotlight (macOS)
if: runner.os == 'macOS'
shell: bash
run: |
sudo mdutil -i off / || true
sudo mdutil -i off /System/Volumes/Data || true
- name: Configure git EOL
if: ${{ runner.os == 'Windows' }}
shell: bash
run: git config --global core.autocrlf false
- uses: actions/checkout@v6
with:
fetch-depth: 1
- name: Run CI steps
uses: ./.github/actions/ci-steps
with:
matrix_json: ${{ toJSON(matrix) }}
github_token: ${{ secrets.GITHUB_TOKEN }}
codecov_token: ${{ secrets.CODECOV_TOKEN }}
coverage-meson:
needs: [smoke]
name: ${{ matrix.label }}
runs-on: ${{ matrix.runner }}
strategy:
matrix:
include:
- label: Meson-ubuntu-x86_64-static-coverage
buildtool: meson
runner: ubuntu-latest
setup_prefix: >-
CC=gcc-14
setup_options: >-
-Db_coverage=true
-Db_staticpic=true
-Ddefault_library=static
extra_packages: >-
meson
gcc-14
pip_packages: >-
gcovr
exec_type: bash
- label: Meson-ubuntu-x86_64-no-simd-coverage
buildtool: meson
runner: ubuntu-latest
setup_prefix: >-
CC=gcc-14
setup_options: >-
-Db_coverage=true
-Dsimd=disabled
extra_packages: >-
meson
gcc-14
pip_packages: >-
gcovr
exec_type: bash
- label: Meson-ubuntu-x86_64-no-threads-coverage
buildtool: meson
runner: ubuntu-latest
setup_prefix: >-
CC=gcc-14
setup_options: >-
-Db_coverage=true
-Dthreads=disabled
extra_packages: >-
gcc-14
pip_packages: >-
meson
gcovr
exec_type: bash
- label: Meson-ubuntu-x86_64-clang-lcms2-coverage
buildtool: meson
runner: ubuntu-latest
setup_prefix: >-
CC=clang
setup_options: >-
-Db_coverage=true
-Dpng=disabled
-Djpeg=disabled
-Dtiff=disabled
-Dwebp=disabled
-Dlibrsvg=disabled
-Dlcms2=enabled
extra_packages: >-
meson
clang
liblcms2-dev
pip_packages: >-
gcovr
exec_type: bash
- label: Meson-ubuntu-x86_64-clang-png-jpeg-tiff-webp-svg-coverage
buildtool: meson
runner: ubuntu-latest
setup_prefix: >-
CC=clang
setup_options: >-
-Db_coverage=true
-Dpng=enabled
-Djpeg=enabled
-Dtiff=enabled
-Dwebp=enabled
-Dlibrsvg=enabled
-Dlcms2=disabled
extra_packages: >-
meson
clang
libpng-dev
libjpeg-dev
libtiff-dev
libwebp-dev
librsvg2-dev
pip_packages: >-
gcovr
exec_type: bash
- label: Meson-ubuntu-x86_64-clang-png-jpeg-tiff-webp-svg-lcms2-coverage
buildtool: meson
runner: ubuntu-latest
setup_prefix: >-
CC=clang
setup_options: >-
-Db_coverage=true
-Dpng=enabled
-Djpeg=enabled
-Dtiff=enabled
-Dwebp=enabled
-Dlibrsvg=enabled
-Dlcms2=enabled
extra_packages: >-
meson
clang
libpng-dev
libjpeg-dev
libtiff-dev
libwebp-dev
librsvg2-dev
liblcms2-dev
pip_packages: >-
gcovr
exec_type: bash
- label: Meson-ubuntu-x86_64-gdk-pixbuf2-coverage
buildtool: meson
runner: ubuntu-latest
setup_prefix: >-
CC=clang
setup_options: >-
-Db_coverage=true
-Dpng=disabled
-Djpeg=disabled
-Dtiff=disabled
-Dgdk_pixbuf2=enabled
extra_packages: >-
meson
clang
libgdk-pixbuf2.0-dev
pip_packages: >-
gcovr
exec_type: bash
- label: Meson-ubuntu-x86_64-GD-no-aborttrace-coverage
buildtool: meson
runner: ubuntu-latest
setup_prefix: >-
CC=clang
setup_options: >-
-Db_coverage=true
-Dpng=disabled
-Djpeg=disabled
-Dtiff=disabled
-Dgd=enabled
-Dabort_trace=disabled
extra_packages: >-
meson
clang
libgd-dev
pip_packages: >-
gcovr
exec_type: bash
- label: Meson-macos-x86_64-unity-coverage
buildtool: meson
runner: macos-15-intel
setup_options: >-
-Db_coverage=true
-Dunity=on
extra_packages: >-
meson
lcov
exec_type: bash
- label: Meson-macos-aarch64-gdk-pixbuf2-coverage
buildtool: meson
runner: macos-latest
setup_prefix: >-
CC=clang
setup_options: >-
-Db_coverage=true
-Dpng=disabled
-Djpeg=disabled
-Dtiff=disabled
-Dgdk_pixbuf2=enabled
extra_packages: >-
meson
gdk-pixbuf
lcov
exec_type: bash
- label: Meson-macos-aarch64-GD-coverage
buildtool: meson
runner: macos-latest
setup_prefix: >-
CC=clang
setup_options: >-
-Db_coverage=true
-Dpng=disabled
-Djpeg=disabled
-Dtiff=disabled
-Dgd=enabled
extra_packages: >-
meson
gd
lcov
exec_type: bash
- label: Meson-macos-aarch64-amalgamated-lib-disable-appkit-coverage
buildtool: meson
runner: macos-latest
setup_options: >-
-Db_coverage=true
-Damalgamated_lib=true
-Dappkit=disabled
extra_packages: >-
meson
lcov
exec_type: bash
- label: Meson-msys2-mingw64-no-simd-coverage
buildtool: meson
runner: windows-latest
msystem: MINGW64
setup_options: >-
-Db_coverage=true
-Dsimd=disabled
setup_prefix: >-
CC=gcc
extra_packages: >-
mingw-w64-x86_64-meson
mingw-w64-x86_64-toolchain
mingw-w64-x86_64-lcov
exec_type: msys2
- label: Meson-msys2-mingw64-no-threads-coverage
buildtool: meson
runner: windows-latest
msystem: MINGW64
setup_prefix: >-
CC=gcc
setup_options: >-
-Dthreads=disabled
-Db_coverage=true
extra_packages: >-
mingw-w64-x86_64-meson
mingw-w64-x86_64-toolchain
mingw-w64-x86_64-lcov
exec_type: msys2
- label: Meson-msys2-ucrt64-unity-coverage
buildtool: meson
runner: windows-latest
msystem: UCRT64
setup_prefix: >-
CC=gcc
setup_options: >-
-Db_coverage=true
-Dunity=on
extra_packages: >-
mingw-w64-ucrt-x86_64-meson
mingw-w64-ucrt-x86_64-toolchain
mingw-w64-ucrt-x86_64-lcov
exec_type: msys2
- label: Meson-msys2-ucrt64-amalgamated-lib-coverage
buildtool: meson
runner: windows-latest
msystem: UCRT64
setup_prefix: >-
CC=gcc
setup_options: >-
-Db_coverage=true
-Damalgamated_lib=true
extra_packages: >-
mingw-w64-ucrt-x86_64-meson
mingw-w64-ucrt-x86_64-toolchain
mingw-w64-ucrt-x86_64-lcov
exec_type: msys2
- label: Meson-msys2-clang64-coverage
buildtool: meson
runner: windows-latest
msystem: CLANG64
setup_prefix: >-
CC=clang
setup_options: >-
-Db_coverage=true
extra_packages: >-
mingw-w64-clang-x86_64-meson
mingw-w64-clang-x86_64-toolchain
mingw-w64-clang-x86_64-lcov
exec_type: msys2
- label: Meson-msys2-msys-gcc-coverage
buildtool: meson
runner: windows-latest
msystem: MSYS
setup_prefix: >-
CC=gcc
setup_options: >-
-Db_coverage=true
extra_packages: >-
meson
gcc
lcov
exec_type: msys2
steps:
- name: Set Windows Defender ExclusionPath (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: |
try {
Add-MpPreference -ExclusionPath "C:\a" -ErrorAction Stop
} catch {
Write-Warning "Windows Defender exclusion setup failed; continuing: $($_.Exception.Message)"
}
- name: Disable Windows Search Indexer (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: |
Stop-Service WSearch
- name: Disable Spotlight (macOS)
if: runner.os == 'macOS'
shell: bash
run: |
sudo mdutil -i off / || true
sudo mdutil -i off /System/Volumes/Data || true
- name: Configure git EOL
if: ${{ runner.os == 'Windows' }}
shell: bash
run: git config --global core.autocrlf false
- uses: actions/checkout@v6
with:
fetch-depth: 1
- name: Run CI steps
uses: ./.github/actions/ci-steps
with:
matrix_json: ${{ toJSON(matrix) }}
github_token: ${{ secrets.GITHUB_TOKEN }}
codecov_token: ${{ secrets.CODECOV_TOKEN }}
coverage-autotools-cygwin64-msvc:
needs: [smoke]
name: ${{ matrix.label }}
runs-on: ${{ matrix.runner }}
strategy:
fail-fast: false
matrix:
include:
- label: Autotools-cygwin64-msvc-coverage
buildtool: autotools
runner: windows-latest
setup_prefix: >-
CC=cl
LD=link
AR="sh ar-lib lib"
ARFLAGS=cr
NM="dumpbin -symbols"
STRIP=:
RANLIB=:
setup_options: >-
--host=x86_64-pc-windows-msvc
extra_packages: >-
make
exec_type: cygwin-msvc-codecoverage
steps:
- name: Set Windows Defender ExclusionPath (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: |
try {
Add-MpPreference -ExclusionPath "C:\a" -ErrorAction Stop
} catch {
Write-Warning "Windows Defender exclusion setup failed; continuing: $($_.Exception.Message)"
}
- name: Disable Windows Search Indexer (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: |
Stop-Service WSearch
- name: Disable Spotlight (macOS)
if: runner.os == 'macOS'
shell: bash
run: |
sudo mdutil -i off / || true
sudo mdutil -i off /System/Volumes/Data || true
- name: Configure git EOL
if: ${{ runner.os == 'Windows' }}
shell: bash
run: git config --global core.autocrlf false
- uses: actions/checkout@v6
with:
fetch-depth: 1
- name: Run CI steps
uses: ./.github/actions/ci-steps
with:
matrix_json: ${{ toJSON(matrix) }}
github_token: ${{ secrets.GITHUB_TOKEN }}
codecov_token: ${{ secrets.CODECOV_TOKEN }}
core-autotools-ubuntu:
needs: [coverage-autotools]
name: ${{ matrix.label }}
runs-on: ${{ matrix.runner }}
strategy:
fail-fast: false
matrix:
include:
- label: Autotools-ubuntu-x86_64-clang
buildtool: autotools
runner: ubuntu-latest
setup_prefix: >-
CC=clang
setup_options: >-
--without-png
--without-jpeg
--without-tiff
extra_packages: >-
clang
exec_type: bash
- label: Autotools-ubuntu-x86_64-no-tools
buildtool: autotools
runner: ubuntu-latest
setup_options: >-
--disable-img2sixel
--disable-sixel2png
exec_type: bash
- label: Autotools-ubuntu-x86_64-musl
buildtool: autotools
runner: ubuntu-latest
setup_prefix: >-
CC=musl-gcc
extra_packages: >-
musl-tools
exec_type: bash
- label: Autotools-ubuntu-24.04-aarch64-amalgamated_lib
buildtool: autotools
runner: ubuntu-24.04-arm
setup_prefix: >-
CC=gcc-14
setup_options: >-
--enable-amalgamated-lib
extra_packages: >-
gcc-14
exec_type: bash
- label: Autotools-ubuntu-24.04-aarch64-amalgamated_tools
buildtool: autotools
runner: ubuntu-24.04-arm
setup_prefix: >-
CC=gcc-14
setup_options: >-
--enable-amalgamated-tools
extra_packages: >-
gcc-14
exec_type: bash
- label: Autotools-ubuntu-i686
buildtool: autotools
runner: ubuntu-latest
setup_prefix: >-
CC=gcc
CFLAGS="-m32"
LDFLAGS="-m32"
PKG_CONFIG_LIBDIR=/usr/lib/i386-linux-gnu/pkgconfig
PKG_CONFIG_PATH=/usr/lib/i386-linux-gnu/pkgconfig
extra_packages: >-
gcc-multilib
exec_type: bash
steps:
- name: Set Windows Defender ExclusionPath (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: |
try {
Add-MpPreference -ExclusionPath "C:\a" -ErrorAction Stop
} catch {
Write-Warning "Windows Defender exclusion setup failed; continuing: $($_.Exception.Message)"
}
- name: Disable Windows Search Indexer (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: |
Stop-Service WSearch
- name: Disable Spotlight (macOS)
if: runner.os == 'macOS'
shell: bash
run: |
sudo mdutil -i off / || true
sudo mdutil -i off /System/Volumes/Data || true
- name: Configure git EOL
if: ${{ runner.os == 'Windows' }}
shell: bash
run: git config --global core.autocrlf false
- uses: actions/checkout@v6
with:
fetch-depth: 1
- name: Run CI steps
uses: ./.github/actions/ci-steps
with:
matrix_json: ${{ toJSON(matrix) }}
github_token: ${{ secrets.GITHUB_TOKEN }}
codecov_token: ${{ secrets.CODECOV_TOKEN }}
core-autotools-macos:
needs: [core-autotools-ubuntu]
name: ${{ matrix.label }}
runs-on: ${{ matrix.runner }}
strategy:
fail-fast: false
matrix:
include:
- label: Autotools-macos-aarch64-amalgamated-lib-disable-appkit
buildtool: autotools
runner: macos-latest
setup_options: >-
--enable-amalgamated-lib
--disable-appkit
exec_type: bash
- label: Autotools-macos-x86_64-amalgamated_lib-amalgamated_tools
buildtool: autotools
runner: macos-15-intel
setup_options: >-
--enable-amalgamated-lib
--enable-amalgamated-tools
exec_type: bash
steps:
- name: Set Windows Defender ExclusionPath (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: |
try {
Add-MpPreference -ExclusionPath "C:\a" -ErrorAction Stop
} catch {
Write-Warning "Windows Defender exclusion setup failed; continuing: $($_.Exception.Message)"
}
- name: Disable Windows Search Indexer (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: |
Stop-Service WSearch
- name: Disable Spotlight (macOS)
if: runner.os == 'macOS'
shell: bash
run: |
sudo mdutil -i off / || true
sudo mdutil -i off /System/Volumes/Data || true
- name: Configure git EOL
if: ${{ runner.os == 'Windows' }}
shell: bash
run: git config --global core.autocrlf false
- uses: actions/checkout@v6
with:
fetch-depth: 1
- name: Run CI steps
uses: ./.github/actions/ci-steps
with:
matrix_json: ${{ toJSON(matrix) }}
github_token: ${{ secrets.GITHUB_TOKEN }}
codecov_token: ${{ secrets.CODECOV_TOKEN }}
core-autotools-msys2-variants:
needs: [smoke]
name: ${{ matrix.label }}
runs-on: ${{ matrix.runner }}
strategy:
fail-fast: false
max-parallel: 2
matrix:
include:
- label: Autotools-msys2-mingw64-no-tools
buildtool: autotools
runner: windows-latest
msystem: MINGW64
setup_options: >-
--disable-img2sixel
--disable-sixel2png
extra_packages: >-
make
mingw-w64-x86_64-toolchain
exec_type: msys2
- label: Autotools-msys2-ucrt64-amalgamated_lib
buildtool: autotools
runner: windows-latest
msystem: UCRT64
setup_options: >-
--enable-amalgamated-lib
extra_packages: >-
make
mingw-w64-ucrt-x86_64-toolchain
mingw-w64-ucrt-x86_64-lcov
exec_type: msys2
- label: Autotools-msys2-clang64
buildtool: autotools
runner: windows-latest
msystem: CLANG64
setup_prefix: >-
CC=clang
extra_packages: >-
make
mingw-w64-clang-x86_64-toolchain
exec_type: msys2
- label: Autotools-msys2-mingw32
buildtool: autotools
runner: windows-latest
msystem: MINGW32
extra_packages: >-
make
mingw-w64-i686-toolchain
exec_type: msys2
steps:
- name: Set Windows Defender ExclusionPath (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: |
try {
Add-MpPreference -ExclusionPath "C:\a" -ErrorAction Stop
} catch {
Write-Warning "Windows Defender exclusion setup failed; continuing: $($_.Exception.Message)"
}
- name: Disable Windows Search Indexer (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: |
Stop-Service WSearch
- name: Disable Spotlight (macOS)
if: runner.os == 'macOS'
shell: bash
run: |
sudo mdutil -i off / || true
sudo mdutil -i off /System/Volumes/Data || true
- name: Configure git EOL
if: ${{ runner.os == 'Windows' }}
shell: bash
run: git config --global core.autocrlf false
- uses: actions/checkout@v6
with:
fetch-depth: 1
- name: Run CI steps
uses: ./.github/actions/ci-steps
with:
matrix_json: ${{ toJSON(matrix) }}
github_token: ${{ secrets.GITHUB_TOKEN }}
codecov_token: ${{ secrets.CODECOV_TOKEN }}
core-autotools-cygwin:
needs: [coverage-autotools]
name: ${{ matrix.label }}
runs-on: ${{ matrix.runner }}
strategy:
fail-fast: false
max-parallel: 2
matrix:
include:
- label: Autotools-cygwin64-gcc
buildtool: autotools
runner: windows-latest
extra_packages: >-
make
gcc-core
exec_type: cygwin
- label: Autotools-cygwin64-gcc-amalgamated_lib
buildtool: autotools
runner: windows-latest
setup_options: >-
--enable-amalgamated-lib
extra_packages: >-
gcc-core
make
exec_type: cygwin
steps:
- name: Set Windows Defender ExclusionPath (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: |
try {
Add-MpPreference -ExclusionPath "C:\a" -ErrorAction Stop
} catch {
Write-Warning "Windows Defender exclusion setup failed; continuing: $($_.Exception.Message)"
}
- name: Disable Windows Search Indexer (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: |
Stop-Service WSearch
- name: Disable Spotlight (macOS)
if: runner.os == 'macOS'
shell: bash
run: |
sudo mdutil -i off / || true
sudo mdutil -i off /System/Volumes/Data || true
- name: Configure git EOL
if: ${{ runner.os == 'Windows' }}
shell: bash
run: git config --global core.autocrlf false
- uses: actions/checkout@v6
with:
fetch-depth: 1
- name: Run CI steps
uses: ./.github/actions/ci-steps
with:
matrix_json: ${{ toJSON(matrix) }}
github_token: ${{ secrets.GITHUB_TOKEN }}
codecov_token: ${{ secrets.CODECOV_TOKEN }}
core-autotools-msvc_abi-cygwin:
needs: [core-autotools-msys2-variants]
name: ${{ matrix.label }}
runs-on: ${{ matrix.runner }}
strategy:
fail-fast: false
max-parallel: 2
matrix:
include:
- label: Autotools-cygwin64-msvc
buildtool: autotools
runner: windows-latest
setup_prefix: >-
CC=cl
LD=link
AR="sh ar-lib lib"
ARFLAGS=cr
NM="dumpbin -symbols"
STRIP=:
RANLIB=:
setup_options: >-
--host=x86_64-pc-windows-msvc
extra_packages: >-
make
exec_type: cygwin
- label: Autotools-cygwin64-clangcl
buildtool: autotools
runner: windows-latest
setup_prefix: >-
CC=clang-cl
LD=link
AR="sh ar-lib lib"
ARFLAGS=cr
NM="dumpbin -symbols"
STRIP=:
RANLIB=:
setup_options: >-
--host=x86_64-pc-windows-msvc
extra_packages: >-
make
exec_type: cygwin
- label: Autotools-cygwin64-clang_msvc_abi
buildtool: autotools
runner: windows-latest
setup_prefix: >-
CC="clang --driver-mode=cl"
LD=link
AR="sh ar-lib lib"
ARFLAGS=cr
NM="dumpbin -symbols"
STRIP=:
RANLIB=:
setup_options: >-
--host=x86_64-pc-windows-msvc
extra_packages: >-
make
exec_type: cygwin
debug_temp: "1"
steps:
- name: Set Windows Defender ExclusionPath (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: |
try {
Add-MpPreference -ExclusionPath "C:\a" -ErrorAction Stop
} catch {
Write-Warning "Windows Defender exclusion setup failed; continuing: $($_.Exception.Message)"
}
- name: Disable Windows Search Indexer (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: |
Stop-Service WSearch
- name: Disable Spotlight (macOS)
if: runner.os == 'macOS'
shell: bash
run: |
sudo mdutil -i off / || true
sudo mdutil -i off /System/Volumes/Data || true
- name: Configure git EOL
if: ${{ runner.os == 'Windows' }}
shell: bash
run: git config --global core.autocrlf false
- uses: actions/checkout@v6
with:
fetch-depth: 1
- name: Run CI steps
uses: ./.github/actions/ci-steps
with:
matrix_json: ${{ toJSON(matrix) }}
github_token: ${{ secrets.GITHUB_TOKEN }}
codecov_token: ${{ secrets.CODECOV_TOKEN }}
core-autotools-msvc_abi-msys2:
needs: [core-autotools-msys2-variants]
name: ${{ matrix.label }}
runs-on: ${{ matrix.runner }}
strategy:
fail-fast: false
matrix:
include:
- label: Autotools-msys2-msys-vs_clangcl
buildtool: autotools
runner: windows-latest
msystem: MSYS
setup_prefix: >-
CC=clang-cl
LD=link
AR="sh ar-lib lib"
ARFLAGS=cr
NM="dumpbin -symbols"
STRIP=:
RANLIB=:
setup_options: >-
--host=x86_64-pc-windows-msvc
extra_packages: >-
make
exec_type: msys2
- label: Autotools-msys2-msys-msvc
buildtool: autotools
runner: windows-latest
msystem: MSYS
setup_prefix: >-
CC=cl
LD=link
AR="sh ar-lib lib"
ARFLAGS=cr
NM="dumpbin -symbols"
STRIP=:
RANLIB=:
setup_options: >-
--host=x86_64-pc-windows-msvc
extra_packages: >-
make
exec_type: msys2
- label: Autotools-msys2-x86_64-msvc-x86_64-amalgamated_lib
buildtool: autotools
runner: windows-latest
msystem: MSYS
setup_prefix: >-
CC=cl
LD=link
AR="sh ar-lib lib"
ARFLAGS=cr
NM="dumpbin -symbols"
STRIP=:
RANLIB=:
setup_options: >-
--host=x86_64-pc-windows-msvc
--enable-amalgamated-lib
extra_packages: make
exec_type: msys2
- label: Autotools-msys2-aarch64-msvc-aarch64-amalgamated_tools-static
buildtool: autotools
runner: windows-11-arm
msystem: MSYS
setup_prefix: >-
CC=cl
LD=link
AR="sh ar-lib lib"
ARFLAGS=cr
NM="dumpbin -symbols"
STRIP=:
RANLIB=:
setup_options: >-
--host=aarch64-pc-windows-msvc
--enable-amalgamated-tools
--disable-shared
extra_packages: make
exec_type: msys2
- label: Autotools-msys2-msvc-vcpkg-libpng-libjpeg
buildtool: autotools
runner: windows-latest
msystem: MSYS
setup_prefix: >-
CC=cl
LD=link
AR="sh ar-lib lib"
ARFLAGS=cr
NM="dumpbin -symbols"
STRIP=:
RANLIB=:
setup_options: >-
--host=x86_64-pc-windows-msvc
extra_packages: make
vcpkg_packages: >-
libpng
libjpeg-turbo
exec_type: msys2
steps:
- name: Set Windows Defender ExclusionPath (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: |
try {
Add-MpPreference -ExclusionPath "C:\a" -ErrorAction Stop
} catch {
Write-Warning "Windows Defender exclusion setup failed; continuing: $($_.Exception.Message)"
}
- name: Disable Windows Search Indexer (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: |
Stop-Service WSearch
- name: Disable Spotlight (macOS)
if: runner.os == 'macOS'
shell: bash
run: |
sudo mdutil -i off / || true
sudo mdutil -i off /System/Volumes/Data || true
- name: Configure git EOL
if: ${{ runner.os == 'Windows' }}
shell: bash
run: git config --global core.autocrlf false
- uses: actions/checkout@v6
with:
fetch-depth: 1
- name: Run CI steps
uses: ./.github/actions/ci-steps
with:
matrix_json: ${{ toJSON(matrix) }}
github_token: ${{ secrets.GITHUB_TOKEN }}
codecov_token: ${{ secrets.CODECOV_TOKEN }}
core-meson-ubuntu:
needs: [coverage-meson]
name: ${{ matrix.label }}
runs-on: ${{ matrix.runner }}
timeout-minutes: 90
strategy:
fail-fast: false
max-parallel: 4
matrix:
include:
- label: Meson-ubuntu-x86_64-clang
buildtool: meson
runner: ubuntu-latest
setup_prefix: >-
CC=clang
setup_options: >-
-Dpng=disabled
-Djpeg=disabled
-Dtiff=disabled
extra_packages: >-
meson
clang
exec_type: bash
- label: Meson-ubuntu-x86_64-no-tools
buildtool: meson
runner: ubuntu-latest
setup_options: >-
-Dimg2sixel=disabled
-Dsixel2png=disabled
extra_packages: >-
meson
exec_type: bash
- label: Meson-ubuntu-x86_64-musl
buildtool: meson
runner: ubuntu-latest
setup_prefix: >-
CC=musl-gcc
extra_packages: >-
meson
musl-tools
exec_type: bash
- label: Meson-ubuntu-24.04-aarch64-amalgamated_lib
buildtool: meson
runner: ubuntu-24.04-arm
setup_prefix: >-
CC=gcc-14
setup_options: >-
-Damalgamated_lib=true
extra_packages: >-
meson
gcc-14
exec_type: bash
- label: Meson-ubuntu-24.04-aarch64-amalgamated_tools
buildtool: meson
runner: ubuntu-24.04-arm
setup_prefix: >-
CC=gcc-14
setup_options: >-
-Damalgamated_tools=true
extra_packages: >-
meson
gcc-14
exec_type: bash
- label: Meson-ubuntu-i686-unity
buildtool: meson
runner: ubuntu-latest
setup_prefix: >-
CC=gcc
CFLAGS="-m32"
LDFLAGS="-m32"
PKG_CONFIG_LIBDIR=/usr/lib/i386-linux-gnu/pkgconfig
PKG_CONFIG_PATH=/usr/lib/i386-linux-gnu/pkgconfig
setup_options: >-
-Dunity=on
extra_packages: >-
meson
gcc-multilib
exec_type: bash
steps:
- name: Set Windows Defender ExclusionPath (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: |
try {
Add-MpPreference -ExclusionPath "C:\a" -ErrorAction Stop
} catch {
Write-Warning "Windows Defender exclusion setup failed; continuing: $($_.Exception.Message)"
}
- name: Disable Windows Search Indexer (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: |
Stop-Service WSearch
- name: Disable Spotlight (macOS)
if: runner.os == 'macOS'
shell: bash
run: |
sudo mdutil -i off / || true
sudo mdutil -i off /System/Volumes/Data || true
- name: Configure git EOL
if: ${{ runner.os == 'Windows' }}
shell: bash
run: git config --global core.autocrlf false
- uses: actions/checkout@v6
with:
fetch-depth: 1
- name: Run CI steps
uses: ./.github/actions/ci-steps
with:
matrix_json: ${{ toJSON(matrix) }}
github_token: ${{ secrets.GITHUB_TOKEN }}
codecov_token: ${{ secrets.CODECOV_TOKEN }}
core-meson-macos:
needs: [core-meson-ubuntu]
name: ${{ matrix.label }}
runs-on: ${{ matrix.runner }}
timeout-minutes: 90
strategy:
fail-fast: false
matrix:
include:
- label: Meson-macos-x86_64-amalgamated_lib-amalgamated_tools
buildtool: meson
runner: macos-15-intel
setup_options: >-
-Damalgamated_lib=true
-Damalgamated_tools=true
extra_packages: >-
meson
exec_type: bash
steps:
- name: Set Windows Defender ExclusionPath (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: |
try {
Add-MpPreference -ExclusionPath "C:\a" -ErrorAction Stop
} catch {
Write-Warning "Windows Defender exclusion setup failed; continuing: $($_.Exception.Message)"
}
- name: Disable Windows Search Indexer (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: |
Stop-Service WSearch
- name: Disable Spotlight (macOS)
if: runner.os == 'macOS'
shell: bash
run: |
sudo mdutil -i off / || true
sudo mdutil -i off /System/Volumes/Data || true
- name: Configure git EOL
if: ${{ runner.os == 'Windows' }}
shell: bash
run: git config --global core.autocrlf false
- uses: actions/checkout@v6
with:
fetch-depth: 1
- name: Run CI steps
uses: ./.github/actions/ci-steps
with:
matrix_json: ${{ toJSON(matrix) }}
github_token: ${{ secrets.GITHUB_TOKEN }}
codecov_token: ${{ secrets.CODECOV_TOKEN }}
core-meson-msys2-variants:
needs: [core-meson-ubuntu]
name: ${{ matrix.label }}
runs-on: ${{ matrix.runner }}
timeout-minutes: 90
strategy:
fail-fast: false
max-parallel: 1
matrix:
include:
- label: Meson-msys2-mingw64-no-tools
buildtool: meson
runner: windows-latest
msystem: MINGW64
setup_prefix: >-
CC=gcc
setup_options: >-
-Dimg2sixel=disabled
-Dsixel2png=disabled
extra_packages: >-
mingw-w64-x86_64-meson
mingw-w64-x86_64-toolchain
exec_type: msys2
- label: Meson-msys2-clang64
buildtool: meson
runner: windows-latest
msystem: CLANG64
setup_prefix: >-
CC=clang
extra_packages: >-
mingw-w64-clang-x86_64-meson
mingw-w64-clang-x86_64-toolchain
exec_type: msys2
- label: Meson-msys2-mingw32-unity
buildtool: meson
runner: windows-latest
msystem: MINGW32
setup_prefix: >-
CC=gcc
setup_options: >-
-Dunity=on
exec_type: msys2
extra_packages: >-
mingw-w64-i686-meson
mingw-w64-i686-toolchain
steps:
- name: Set Windows Defender ExclusionPath (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: |
try {
Add-MpPreference -ExclusionPath "C:\a" -ErrorAction Stop
} catch {
Write-Warning "Windows Defender exclusion setup failed; continuing: $($_.Exception.Message)"
}
- name: Disable Windows Search Indexer (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: |
Stop-Service WSearch
- name: Disable Spotlight (macOS)
if: runner.os == 'macOS'
shell: bash
run: |
sudo mdutil -i off / || true
sudo mdutil -i off /System/Volumes/Data || true
- name: Configure git EOL
if: ${{ runner.os == 'Windows' }}
shell: bash
run: git config --global core.autocrlf false
- uses: actions/checkout@v6
with:
fetch-depth: 1
- name: Run CI steps
uses: ./.github/actions/ci-steps
with:
matrix_json: ${{ toJSON(matrix) }}
github_token: ${{ secrets.GITHUB_TOKEN }}
codecov_token: ${{ secrets.CODECOV_TOKEN }}
core-meson-cygwin:
needs: [coverage-meson]
name: ${{ matrix.label }}
runs-on: ${{ matrix.runner }}
timeout-minutes: 90
strategy:
fail-fast: false
max-parallel: 1
matrix:
include:
- label: Meson-cygwin64-gcc-unity
buildtool: meson
runner: windows-latest
setup_prefix: >-
CC=gcc
setup_options: >-
-Dunity=on
extra_packages: >-
meson
gcc-core
exec_type: cygwin
- label: Meson-cygwin64-gcc-amalgamated_lib
buildtool: meson
runner: windows-latest
setup_prefix: >-
CC=gcc
setup_options: >-
-Damalgamated_lib=true
extra_packages: >-
meson
gcc-core
exec_type: cygwin
steps:
- name: Set Windows Defender ExclusionPath (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: |
try {
Add-MpPreference -ExclusionPath "C:\a" -ErrorAction Stop
} catch {
Write-Warning "Windows Defender exclusion setup failed; continuing: $($_.Exception.Message)"
}
- name: Disable Windows Search Indexer (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: |
Stop-Service WSearch
- name: Disable Spotlight (macOS)
if: runner.os == 'macOS'
shell: bash
run: |
sudo mdutil -i off / || true
sudo mdutil -i off /System/Volumes/Data || true
- name: Configure git EOL
if: ${{ runner.os == 'Windows' }}
shell: bash
run: git config --global core.autocrlf false
- uses: actions/checkout@v6
with:
fetch-depth: 1
- name: Run CI steps
uses: ./.github/actions/ci-steps
with:
matrix_json: ${{ toJSON(matrix) }}
github_token: ${{ secrets.GITHUB_TOKEN }}
codecov_token: ${{ secrets.CODECOV_TOKEN }}
core-meson-msvc_abi:
needs: [coverage-meson]
name: ${{ matrix.label }}
runs-on: ${{ matrix.runner }}
timeout-minutes: 90
strategy:
fail-fast: false
max-parallel: 4
matrix:
include:
- label: Meson-cmd-x86_64-msvc-x86_64-unity
buildtool: meson
runner: windows-latest
timeout_minutes: 90
setup_options: >-
-Dunity=on
exec_type: cmd
- label: Meson-cmd-aarch64-msvc-aarch64-unity
buildtool: meson
runner: windows-11-arm
setup_options: >-
-Dunity=on
exec_type: cmd
steps:
- name: Set Windows Defender ExclusionPath (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: |
try {
Add-MpPreference -ExclusionPath "C:\a" -ErrorAction Stop
} catch {
Write-Warning "Windows Defender exclusion setup failed; continuing: $($_.Exception.Message)"
}
- name: Disable Windows Search Indexer (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: |
Stop-Service WSearch
- name: Disable Spotlight (macOS)
if: runner.os == 'macOS'
shell: bash
run: |
sudo mdutil -i off / || true
sudo mdutil -i off /System/Volumes/Data || true
- name: Configure git EOL
if: ${{ runner.os == 'Windows' }}
shell: bash
run: git config --global core.autocrlf false
- uses: actions/checkout@v6
with:
fetch-depth: 1
- name: Run CI steps
uses: ./.github/actions/ci-steps
with:
matrix_json: ${{ toJSON(matrix) }}
github_token: ${{ secrets.GITHUB_TOKEN }}
codecov_token: ${{ secrets.CODECOV_TOKEN }}
distcheck:
name: ${{ matrix.label }}
runs-on: ${{ matrix.runner }}
strategy:
matrix:
include:
- label: Autotools-ubuntu-24.04-aarch64-distcheck
buildtool: autotools
runner: ubuntu-24.04-arm
check_target: distcheck
exec_type: bash
- label: Meson-ubuntu-24.04-aarch64-distcheck
buildtool: meson
runner: ubuntu-24.04-arm
check_target: dist
extra_packages: >-
meson
ninja-build
exec_type: bash
- label: Autotools-macos-aarch64-distcheck
buildtool: autotools
runner: macos-latest
check_target: distcheck
exec_type: bash
- label: Meson-macos-aarch64-distcheck
buildtool: meson
runner: macos-latest
check_target: dist
extra_packages: >-
meson
exec_type: bash
- label: Autotools-msys2-clang64-distcheck
buildtool: autotools
runner: windows-latest
msystem: CLANG64
setup_prefix: >-
CC=clang
extra_packages: >-
make
mingw-w64-clang-x86_64-toolchain
check_target: distcheck
exec_type: msys2
- label: Meson-cmd-x86_64-msvc-x86_64-distcheck
buildtool: meson
runner: windows-latest
check_target: dist
exec_type: cmd
steps:
- name: Set Windows Defender ExclusionPath (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: |
try {
Add-MpPreference -ExclusionPath "C:\a" -ErrorAction Stop
} catch {
Write-Warning "Windows Defender exclusion setup failed; continuing: $($_.Exception.Message)"
}
- name: Disable Windows Search Indexer (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: |
Stop-Service WSearch
- name: Disable Spotlight (macOS)
if: runner.os == 'macOS'
shell: bash
run: |
sudo mdutil -i off / || true
sudo mdutil -i off /System/Volumes/Data || true
- name: Configure git EOL
if: ${{ runner.os == 'Windows' }}
shell: bash
run: git config --global core.autocrlf false
- uses: actions/checkout@v6
with:
fetch-depth: 1
- name: Run CI steps
uses: ./.github/actions/ci-steps
with:
matrix_json: ${{ toJSON(matrix) }}
github_token: ${{ secrets.GITHUB_TOKEN }}
codecov_token: ${{ secrets.CODECOV_TOKEN }}
coveralls:
needs: [coverage-autotools, coverage-meson, coverage-autotools-cygwin64-msvc, emscripten-coverage, python-coverage, ruby-coverage, perl-coverage, php-coverage]
runs-on: ubuntu-latest
steps:
- name: Finalize Coveralls
id: coveralls_finalize
continue-on-error: true
uses: coverallsapp/github-action@v2
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
parallel-finished: true
- name: Wait before Coveralls retry (finalize)
if: ${{ steps.coveralls_finalize.outcome == 'failure' }}
run: sleep 5
- name: Finalize Coveralls (retry)
if: ${{ steps.coveralls_finalize.outcome == 'failure' }}
uses: coverallsapp/github-action@v2
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
parallel-finished: true
asan-ubsan-lsan-ubuntu:
name: ${{ matrix.label }}
runs-on: ${{ matrix.runner }}
env:
UBSAN_OPTIONS: print_stacktrace=1:halt_on_error=1:report_error_type=1
strategy:
matrix:
include:
- label: Autotools-ubuntu-x86_64-clang-ASan-UBSan-use-after-scope
buildtool: autotools
runner: ubuntu-latest
setup_prefix: >-
CC=clang
setup_options: >-
--enable-sanitizer=address,undefined
--without-png
--without-jpeg
--without-tiff
extra_packages: >-
clang
exec_type: bash
- label: Meson-ubuntu-x86_64-clang-ASan-UBSan-use-after-scope
buildtool: meson
runner: ubuntu-latest
setup_prefix: >-
CC=clang
setup_options: >-
--buildtype=debugoptimized
-Db_sanitize=address,undefined
-Db_lundef=false
-Db_ndebug=false
-Dpng=disabled
-Djpeg=disabled
-Dtiff=disabled
extra_packages: >-
meson
clang
exec_type: bash
- label: Autotools-ubuntu-x86_64-clang-ASan-UBSan-use-after-scope-lcms2
buildtool: autotools
runner: ubuntu-latest
setup_prefix: >-
CC=clang
setup_options: >-
--enable-sanitizer=address,undefined
--without-png
--without-jpeg
--without-tiff
--without-webp
--without-librsvg
--with-lcms2
extra_packages: >-
meson
clang
liblcms2-dev
exec_type: bash
- label: Meson-ubuntu-x86_64-clang-ASan-UBSan-use-after-scope-lcms2
buildtool: meson
runner: ubuntu-latest
setup_prefix: >-
CC=clang
setup_options: >-
--buildtype=debugoptimized
-Db_sanitize=address,undefined
-Db_lundef=false
-Db_ndebug=false
-Dpng=disabled
-Djpeg=disabled
-Dtiff=disabled
-Dwebp=disabled
-Dlibrsvg=disabled
-Dlcms2=enabled
extra_packages: >-
meson
clang
liblcms2-dev
exec_type: bash
- label: Autotools-ubuntu-x86_64-clang-ASan-UBSan-use-after-scope-png-jpeg-tiff-webp-svg
buildtool: autotools
runner: ubuntu-latest
setup_prefix: >-
CC=clang
setup_options: >-
--enable-sanitizer=address,undefined
--with-png
--with-jpeg
--with-tiff
--with-webp
--with-librsvg
--without-lcms2
extra_packages: >-
meson
clang
libpng-dev
libjpeg-dev
libtiff-dev
libwebp-dev
librsvg2-dev
exec_type: bash
- label: Meson-ubuntu-x86_64-clang-ASan-UBSan-use-after-scope-png-jpeg-tiff-webp-svg
buildtool: meson
runner: ubuntu-latest
setup_prefix: >-
CC=clang
setup_options: >-
--buildtype=debugoptimized
-Db_sanitize=address,undefined
-Db_lundef=false
-Db_ndebug=false
-Dpng=enabled
-Djpeg=enabled
-Dtiff=enabled
-Dwebp=enabled
-Dlibrsvg=enabled
-Dlcms2=disabled
extra_packages: >-
meson
clang
libpng-dev
libjpeg-dev
libtiff-dev
libwebp-dev
librsvg2-dev
exec_type: bash
- label: Autotools-ubuntu-x86_64-clang-ASan-UBSan-use-after-scope-png-jpeg-tiff-webp-svg-lcms2
buildtool: autotools
runner: ubuntu-latest
setup_prefix: >-
CC=clang
setup_options: >-
--enable-sanitizer=address,undefined
--with-png
--with-jpeg
--with-tiff
--with-webp
--with-librsvg
--with-lcms2
extra_packages: >-
meson
clang
libpng-dev
libjpeg-dev
libtiff-dev
libwebp-dev
librsvg2-dev
liblcms2-dev
exec_type: bash
- label: Meson-ubuntu-x86_64-clang-ASan-UBSan-use-after-scope-png-jpeg-tiff-webp-svg-lcms2
buildtool: meson
runner: ubuntu-latest
setup_prefix: >-
CC=clang
setup_options: >-
--buildtype=debugoptimized
-Db_sanitize=address,undefined
-Db_lundef=false
-Db_ndebug=false
-Dpng=enabled
-Djpeg=enabled
-Dtiff=enabled
-Dwebp=enabled
-Dlibrsvg=enabled
-Dlcms2=enabled
extra_packages: >-
meson
clang
libpng-dev
libjpeg-dev
libtiff-dev
libwebp-dev
librsvg2-dev
liblcms2-dev
exec_type: bash
- label: Autotools-ubuntu-x86_64-ASan-UBSan-use-after-scope-gdk-pixbuf2
buildtool: autotools
runner: ubuntu-latest
setup_prefix: >-
CC=clang
setup_options: >-
--enable-sanitizer=address,undefined
--without-png
--without-jpeg
--without-tiff
--with-gdk-pixbuf2
extra_packages: >-
clang
libgdk-pixbuf2.0-dev
exec_type: bash
- label: Meson-ubuntu-x86_64-ASan-UBSan-use-after-scope-gdk-pixbuf2
buildtool: meson
runner: ubuntu-latest
setup_prefix: >-
CC=clang
setup_options: >-
--buildtype=debugoptimized
-Db_sanitize=address,undefined
-Db_lundef=false
-Db_ndebug=false
-Dpng=disabled
-Djpeg=disabled
-Dtiff=disabled
-Dgdk_pixbuf2=enabled
extra_packages: >-
meson
clang
libgdk-pixbuf2.0-dev
exec_type: bash
- label: Autotools-ubuntu-x86_64-ASan-UBSan-use-after-scope-GD-no-aborttrace
buildtool: autotools
runner: ubuntu-latest
setup_prefix: >-
CC=clang
setup_options: >-
--enable-sanitizer=address,undefined
--without-png
--without-jpeg
--without-tiff
--with-gd
--disable-abort-trace
extra_packages: >-
clang
libgd-dev
exec_type: bash
- label: Meson-ubuntu-x86_64-ASan-UBSan-use-after-scope-GD-no-aborttrace
buildtool: meson
runner: ubuntu-latest
setup_prefix: >-
CC=clang
setup_options: >-
--buildtype=debugoptimized
-Db_sanitize=address,undefined
-Db_lundef=false
-Db_ndebug=false
-Dpng=disabled
-Djpeg=disabled
-Dtiff=disabled
-Dgd=enabled
-Dabort_trace=disabled
extra_packages: >-
meson
clang
libgd-dev
exec_type: bash
steps:
- name: Set Windows Defender ExclusionPath (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: |
try {
Add-MpPreference -ExclusionPath "C:\a" -ErrorAction Stop
} catch {
Write-Warning "Windows Defender exclusion setup failed; continuing: $($_.Exception.Message)"
}
- name: Disable Windows Search Indexer (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: |
Stop-Service WSearch
- name: Disable Spotlight (macOS)
if: runner.os == 'macOS'
shell: bash
run: |
sudo mdutil -i off / || true
sudo mdutil -i off /System/Volumes/Data || true
- name: Configure git EOL
if: ${{ runner.os == 'Windows' }}
shell: bash
run: git config --global core.autocrlf false
- uses: actions/checkout@v6
with:
fetch-depth: 1
- name: Run CI steps
uses: ./.github/actions/ci-steps
with:
matrix_json: ${{ toJSON(matrix) }}
github_token: ${{ secrets.GITHUB_TOKEN }}
codecov_token: ${{ secrets.CODECOV_TOKEN }}
asan-ubsan-lsan-macos:
name: ${{ matrix.label }}
runs-on: ${{ matrix.runner }}
env:
UBSAN_OPTIONS: print_stacktrace=1:halt_on_error=1:report_error_type=1
strategy:
matrix:
include:
- label: Autotools-macos-aarch64-ASan-UBSan-use-after-scope-gdk-pixbuf2
buildtool: autotools
runner: macos-latest
setup_prefix: >-
CC=clang
setup_options: >-
--enable-sanitizer=address,undefined
--without-png
--without-jpeg
--without-tiff
--with-gdk-pixbuf2
extra_packages: >-
gdk-pixbuf
exec_type: bash
- label: Meson-macos-aarch64-ASan-UBSan-use-after-scope-gdk-pixbuf2
buildtool: meson
runner: macos-latest
setup_prefix: >-
CC=clang
setup_options: >-
--buildtype=debugoptimized
-Db_sanitize=address,undefined
-Db_lundef=false
-Db_ndebug=false
-Dpng=disabled
-Djpeg=disabled
-Dtiff=disabled
-Dgdk_pixbuf2=enabled
extra_packages: >-
meson
gdk-pixbuf
exec_type: bash
- label: Autotools-macos-aarch64-ASan-UBSan-use-after-scope-GD
buildtool: autotools
runner: macos-latest
setup_prefix: >-
CC=clang
setup_options: >-
--enable-sanitizer=address,undefined
--without-png
--without-jpeg
--without-tiff
--with-gd
extra_packages: >-
gd
exec_type: bash
- label: Meson-macos-aarch64-ASan-UBSan-use-after-scope-GD
buildtool: meson
runner: macos-latest
setup_prefix: >-
CC=clang
setup_options: >-
--buildtype=debugoptimized
-Db_sanitize=address,undefined
-Db_lundef=false
-Db_ndebug=false
-Dpng=disabled
-Djpeg=disabled
-Dtiff=disabled
-Dgd=enabled
extra_packages: >-
meson
gd
exec_type: bash
steps:
- name: Set Windows Defender ExclusionPath (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: |
try {
Add-MpPreference -ExclusionPath "C:\a" -ErrorAction Stop
} catch {
Write-Warning "Windows Defender exclusion setup failed; continuing: $($_.Exception.Message)"
}
- name: Disable Windows Search Indexer (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: |
Stop-Service WSearch
- name: Disable Spotlight (macOS)
if: runner.os == 'macOS'
shell: bash
run: |
sudo mdutil -i off / || true
sudo mdutil -i off /System/Volumes/Data || true
- name: Configure git EOL
if: ${{ runner.os == 'Windows' }}
shell: bash
run: git config --global core.autocrlf false
- uses: actions/checkout@v6
with:
fetch-depth: 1
- name: Run CI steps
uses: ./.github/actions/ci-steps
with:
matrix_json: ${{ toJSON(matrix) }}
github_token: ${{ secrets.GITHUB_TOKEN }}
codecov_token: ${{ secrets.CODECOV_TOKEN }}
asan-ubsan-lsan-msys2-clang64:
name: ${{ matrix.label }}
runs-on: ${{ matrix.runner }}
env:
UBSAN_OPTIONS: print_stacktrace=1:halt_on_error=1:report_error_type=1
strategy:
matrix:
include:
- label: Autotools-msys2-clang64-ASan-UBSan-use-after-scope
buildtool: autotools
runner: windows-latest
msystem: CLANG64
setup_prefix: >-
CC=clang
setup_options: >-
--enable-sanitizer=address,undefined
extra_packages: >-
make
mingw-w64-clang-x86_64-toolchain
exec_type: msys2
- label: Meson-msys2-clang64-ASan-UBSan-use-after-scope
buildtool: meson
runner: windows-latest
msystem: CLANG64
setup_prefix: >-
CC=clang
setup_options: >-
--buildtype=debugoptimized
-Db_sanitize=address,undefined
-Db_lundef=false
-Db_ndebug=false
extra_packages: >-
mingw-w64-clang-x86_64-meson
mingw-w64-clang-x86_64-toolchain
exec_type: msys2
steps:
- name: Set Windows Defender ExclusionPath (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: |
try {
Add-MpPreference -ExclusionPath "C:\a" -ErrorAction Stop
} catch {
Write-Warning "Windows Defender exclusion setup failed; continuing: $($_.Exception.Message)"
}
- name: Disable Windows Search Indexer (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: |
Stop-Service WSearch
- name: Disable Spotlight (macOS)
if: runner.os == 'macOS'
shell: bash
run: |
sudo mdutil -i off / || true
sudo mdutil -i off /System/Volumes/Data || true
- name: Configure git EOL
if: ${{ runner.os == 'Windows' }}
shell: bash
run: git config --global core.autocrlf false
- uses: actions/checkout@v6
with:
fetch-depth: 1
- name: Run CI steps
uses: ./.github/actions/ci-steps
with:
matrix_json: ${{ toJSON(matrix) }}
github_token: ${{ secrets.GITHUB_TOKEN }}
codecov_token: ${{ secrets.CODECOV_TOKEN }}
msan:
needs: [asan-ubsan-lsan-ubuntu, asan-ubsan-lsan-macos, asan-ubsan-lsan-msys2-clang64]
name: ${{ matrix.label }}
runs-on: ${{ matrix.runner }}
strategy:
matrix:
include:
- label: Autotools-ubuntu-x86_64-clang-MSan
buildtool: autotools
runner: ubuntu-latest
setup_options: >-
CC=clang
--enable-sanitizer=memory
extra_packages: >-
clang
exec_type: bash
- label: Meson-ubuntu-x86_64-clang-MSan
buildtool: meson
runner: ubuntu-latest
setup_prefix: >-
CC=clang
setup_options: >-
--buildtype=debugoptimized
-Db_sanitize=memory
-Db_lundef=false
-Db_ndebug=false
-Dpng=disabled
-Djpeg=disabled
-Dtiff=disabled
extra_packages: >-
meson
clang
exec_type: bash
steps:
- name: Set Windows Defender ExclusionPath (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: |
try {
Add-MpPreference -ExclusionPath "C:\a" -ErrorAction Stop
} catch {
Write-Warning "Windows Defender exclusion setup failed; continuing: $($_.Exception.Message)"
}
- name: Disable Windows Search Indexer (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: |
Stop-Service WSearch
- name: Disable Spotlight (macOS)
if: runner.os == 'macOS'
shell: bash
run: |
sudo mdutil -i off / || true
sudo mdutil -i off /System/Volumes/Data || true
- name: Configure git EOL
if: ${{ runner.os == 'Windows' }}
shell: bash
run: git config --global core.autocrlf false
- uses: actions/checkout@v6
with:
fetch-depth: 1
- name: Run CI steps
uses: ./.github/actions/ci-steps
with:
matrix_json: ${{ toJSON(matrix) }}
github_token: ${{ secrets.GITHUB_TOKEN }}
codecov_token: ${{ secrets.CODECOV_TOKEN }}
tsan:
needs: [asan-ubsan-lsan-ubuntu, asan-ubsan-lsan-macos, asan-ubsan-lsan-msys2-clang64]
name: ${{ matrix.label }}
runs-on: ${{ matrix.runner }}
strategy:
matrix:
include:
- label: Autotools-ubuntu-x86_64-clang-TSan
buildtool: autotools
runner: ubuntu-latest
setup_prefix: >-
CC=clang
setup_options: >-
--enable-sanitizer=thread
--without-png
--without-jpeg
--without-tiff
extra_packages: >-
clang
exec_type: bash
- label: Meson-ubuntu-x86_64-clang-TSan
buildtool: meson
runner: ubuntu-latest
setup_prefix: >-
CC=clang
setup_options: >-
--buildtype=debugoptimized
-Db_sanitize=thread
-Db_lundef=false
-Db_ndebug=false
-Dpng=disabled
-Djpeg=disabled
-Dtiff=disabled
extra_packages: >-
meson
clang
exec_type: bash
- label: Autotools-macos-aarch64-TSan
buildtool: autotools
runner: macos-latest
setup_prefix: >-
CC=clang
setup_options: >-
--enable-sanitizer=thread
--without-png
--without-jpeg
--without-tiff
exec_type: bash
- label: Meson-macos-aarch64-TSan
buildtool: meson
runner: macos-latest
setup_prefix: >-
CC=clang
setup_options: >-
--buildtype=debugoptimized
-Db_sanitize=thread
-Db_lundef=false
-Db_ndebug=false
-Dpng=disabled
-Djpeg=disabled
-Dtiff=disabled
extra_packages: >-
meson
gd
exec_type: bash
steps:
- name: Set Windows Defender ExclusionPath (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: |
try {
Add-MpPreference -ExclusionPath "C:\a" -ErrorAction Stop
} catch {
Write-Warning "Windows Defender exclusion setup failed; continuing: $($_.Exception.Message)"
}
- name: Disable Windows Search Indexer (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: |
Stop-Service WSearch
- name: Disable Spotlight (macOS)
if: runner.os == 'macOS'
shell: bash
run: |
sudo mdutil -i off / || true
sudo mdutil -i off /System/Volumes/Data || true
- name: Configure git EOL
if: ${{ runner.os == 'Windows' }}
shell: bash
run: git config --global core.autocrlf false
- uses: actions/checkout@v6
with:
fetch-depth: 1
- name: Run CI steps
uses: ./.github/actions/ci-steps
with:
matrix_json: ${{ toJSON(matrix) }}
github_token: ${{ secrets.GITHUB_TOKEN }}
codecov_token: ${{ secrets.CODECOV_TOKEN }}
emscripten:
name: ${{ matrix.label }}
runs-on: ${{ matrix.runner }}
strategy:
fail-fast: false
matrix:
include:
- label: Autotools-ubuntu-aarch64-emscripten-static
buildtool: autotools
runner: ubuntu-24.04-arm
setup_prefix: >-
CFLAGS="-O1 -g"
setup_options: >-
--host=wasm32-unknown-emscripten
--with-shebang-file="$PWD/build-aux/shebang/node"
--disable-shared
--without-libfetch
extra_packages: >-
nodejs
exec_type: bash
- label: Meson-ubuntu-aarch64-emscripten-static
buildtool: meson
runner: ubuntu-24.04-arm
setup_options: >-
--cross-file build-aux/meson-cross/emscripten
-Ddefault_library=static
-Dfetch=disabled
extra_packages: >-
meson
nodejs
exec_type: bash
- label: Autotools-macos-aarch64-emscripten-static
buildtool: autotools
runner: macos-latest
setup_prefix: >-
CFLAGS="-O1 -g"
setup_options: >-
--host=wasm32-unknown-emscripten
--with-shebang-file="$PWD/build-aux/shebang/node"
--disable-shared
--without-libfetch
extra_packages: >-
node
# This job runs many short Emscripten TAP scripts on macOS, where
# the hosted runner can hit the per-user process limit even at
# -j2 before the jobserver finishes draining skipped tests.
make: make MAKEFLAGS=-j1
exec_type: bash
- label: Meson-macos-aarch64-emscripten-static
buildtool: meson
runner: macos-latest
setup_options: >-
--cross-file build-aux/meson-cross/emscripten
-Ddefault_library=static
-Dfetch=disabled
extra_packages: >-
meson
node
exec_type: bash
steps:
- name: Set Windows Defender ExclusionPath (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: |
try {
Add-MpPreference -ExclusionPath "C:\a" -ErrorAction Stop
} catch {
Write-Warning "Windows Defender exclusion setup failed; continuing: $($_.Exception.Message)"
}
- name: Disable Windows Search Indexer (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: |
Stop-Service WSearch
- name: Disable Spotlight (macOS)
if: runner.os == 'macOS'
shell: bash
run: |
sudo mdutil -i off / || true
sudo mdutil -i off /System/Volumes/Data || true
- name: Configure git EOL
if: ${{ runner.os == 'Windows' }}
shell: bash
run: git config --global core.autocrlf false
- uses: actions/checkout@v6
with:
fetch-depth: 1
- name: Run CI steps
uses: ./.github/actions/ci-steps
with:
matrix_json: ${{ toJSON(matrix) }}
github_token: ${{ secrets.GITHUB_TOKEN }}
codecov_token: ${{ secrets.CODECOV_TOKEN }}
emscripten-ubsan:
needs: [emscripten]
name: ${{ matrix.label }}
runs-on: ${{ matrix.runner }}
strategy:
fail-fast: false
matrix:
include:
- label: Autotools-ubuntu-aarch64-emscripten-ubsan-static
buildtool: autotools
runner: ubuntu-24.04-arm
setup_prefix: >-
CC=emcc
setup_options: >-
--host=wasm32-unknown-emscripten
--with-shebang-file="$PWD/build-aux/shebang/node"
--enable-sanitizer=undefined
--disable-shared
--without-libfetch
extra_packages: >-
nodejs
exec_type: bash
- label: Meson-ubuntu-aarch64-emscripten-ubsan-static
buildtool: meson
runner: ubuntu-24.04-arm
setup_options: >-
--cross-file build-aux/meson-cross/emscripten-no-threads
-Ddefault_library=static
-Dfetch=disabled
-Doptimization=1
-Db_sanitize=undefined
-Db_ndebug=false
extra_packages: >-
meson
nodejs
exec_type: bash
- label: Autotools-macos-aarch64-emscripten-ubsan-static
buildtool: autotools
runner: macos-latest
setup_options: >-
--host=wasm32-unknown-emscripten
--with-shebang-file="$PWD/build-aux/shebang/node"
--enable-sanitizer=undefined
--disable-shared
--without-libfetch
extra_packages: >-
node
exec_type: bash
# On macOS Emscripten tests spawn node through the shebang, and
# the hosted runner can hit the per-user process limit even at
# modest parallelism.
make: make MAKEFLAGS=-j1
- label: Meson-macos-aarch64-emscripten-ubsan-static
buildtool: meson
runner: macos-latest
setup_options: >-
--cross-file build-aux/meson-cross/emscripten-no-threads
-Ddefault_library=static
-Dfetch=disabled
-Doptimization=1
-Db_sanitize=undefined
-Db_ndebug=false
extra_packages: >-
meson
node
exec_type: bash
steps:
- name: Set Windows Defender ExclusionPath (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: |
try {
Add-MpPreference -ExclusionPath "C:\a" -ErrorAction Stop
} catch {
Write-Warning "Windows Defender exclusion setup failed; continuing: $($_.Exception.Message)"
}
- name: Disable Windows Search Indexer (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: |
Stop-Service WSearch
- name: Disable Spotlight (macOS)
if: runner.os == 'macOS'
shell: bash
run: |
sudo mdutil -i off / || true
sudo mdutil -i off /System/Volumes/Data || true
- name: Configure git EOL
if: ${{ runner.os == 'Windows' }}
shell: bash
run: git config --global core.autocrlf false
- uses: actions/checkout@v6
with:
fetch-depth: 1
- name: Run CI steps
uses: ./.github/actions/ci-steps
with:
matrix_json: ${{ toJSON(matrix) }}
github_token: ${{ secrets.GITHUB_TOKEN }}
codecov_token: ${{ secrets.CODECOV_TOKEN }}
emscripten-coverage:
needs: [emscripten]
name: ${{ matrix.label }}
runs-on: ${{ matrix.runner }}
strategy:
fail-fast: false
matrix:
include:
- label: Autotools-ubuntu-aarch64-emscripten-coverage
buildtool: autotools
runner: ubuntu-24.04-arm
setup_prefix: >-
export LLVM_PROFILE_FILE="$PWD/pgo/default-%p.profraw";
CC=emcc CFLAGS="-O0 -g -fprofile-instr-generate -fcoverage-mapping" LDFLAGS="-fprofile-instr-generate -g"
setup_options: >-
--host=wasm32-unknown-emscripten
--with-shebang-file="$PWD/build-aux/shebang/node"
--disable-shared
--enable-gcov
--without-libfetch
extra_packages: >-
nodejs
lcov
llvm
exec_type: bash
- label: Meson-ubuntu-aarch64-emscripten-coverage
buildtool: meson
runner: ubuntu-24.04-arm
setup_prefix: >-
export LLVM_PROFILE_FILE="$PWD/pgo/default-%p.profraw";
CFLAGS="-O0 -g -fprofile-instr-generate -fcoverage-mapping" LDFLAGS="-fprofile-instr-generate -g"
setup_options: >-
--cross-file build-aux/meson-cross/emscripten
-Ddefault_library=static
-Db_coverage=true
-Dfetch=disabled
extra_packages: >-
meson
nodejs
lcov
llvm
exec_type: bash
- label: Autotools-ubuntu-aarch64-emscripten-coverage-png-jpeg
buildtool: autotools
runner: ubuntu-24.04-arm
setup_prefix: >-
export LLVM_PROFILE_FILE="$PWD/pgo/default-%p.profraw";
CC=emcc CFLAGS="-O0 -g -fprofile-instr-generate -fcoverage-mapping" LDFLAGS="-fprofile-instr-generate -g"
setup_options: >-
--host=wasm32-unknown-emscripten
--with-shebang-file="$PWD/build-aux/shebang/node"
--disable-shared
--enable-gcov
--with-png
--with-jpeg
--without-libfetch
extra_packages: >-
nodejs
lcov
llvm
exec_type: bash
- label: Meson-ubuntu-aarch64-emscripten-coverage-png-jpeg
buildtool: meson
runner: ubuntu-24.04-arm
setup_prefix: >-
export LLVM_PROFILE_FILE="$PWD/pgo/default-%p.profraw";
CFLAGS="-O0 -g -fprofile-instr-generate -fcoverage-mapping" LDFLAGS="-fprofile-instr-generate -g"
setup_options: >-
--cross-file build-aux/meson-cross/emscripten
-Ddefault_library=static
-Db_coverage=true
-Dfetch=disabled
-Dpng=enabled
-Djpeg=enabled
extra_packages: >-
meson
nodejs
lcov
llvm
exec_type: bash
- label: Autotools-ubuntu-aarch64-emscripten-coverage-libfetch
buildtool: autotools
runner: ubuntu-24.04-arm
setup_prefix: >-
export LLVM_PROFILE_FILE="$PWD/pgo/default-%p.profraw";
CC=emcc CFLAGS="-O0 -g -fprofile-instr-generate -fcoverage-mapping" LDFLAGS="-fprofile-instr-generate -g"
setup_options: >-
--host=wasm32-unknown-emscripten
--with-shebang-file="$PWD/build-aux/shebang/node"
--disable-shared
--enable-gcov
--without-libcurl
--with-libfetch
extra_packages: >-
nodejs
lcov
llvm
exec_type: bash
- label: Meson-ubuntu-aarch64-emscripten-coverage-libfetch
buildtool: meson
runner: ubuntu-24.04-arm
setup_prefix: >-
export LLVM_PROFILE_FILE="$PWD/pgo/default-%p.profraw";
CFLAGS="-O0 -g -fprofile-instr-generate -fcoverage-mapping" LDFLAGS="-fprofile-instr-generate -g"
setup_options: >-
--cross-file build-aux/meson-cross/emscripten
-Ddefault_library=static
-Db_coverage=true
-Dcurl=disabled
-Dfetch=enabled
extra_packages: >-
meson
nodejs
lcov
llvm
exec_type: bash
- label: Autotools-macos-aarch64-emscripten-coverage
buildtool: autotools
runner: macos-latest
setup_prefix: >-
export LLVM_PROFILE_FILE="$PWD/pgo/default-%p.profraw";
CFLAGS="-O0 -g -fprofile-instr-generate -fcoverage-mapping" LDFLAGS="-fprofile-instr-generate -g"
setup_options: >-
--host=wasm32-unknown-emscripten
--with-shebang-file="$PWD/build-aux/shebang/node"
--disable-shared
--enable-gcov
--without-libfetch
extra_packages: >-
node
gcovr
exec_type: bash
# On macOS Emscripten tests spawn node through the shebang, and
# coverage instrumentation keeps each process alive longer.
make: make MAKEFLAGS=-j1
- label: Meson-macos-aarch64-emscripten-coverage
buildtool: meson
runner: macos-latest
setup_prefix: >-
export LLVM_PROFILE_FILE="$PWD/pgo/default-%p.profraw";
CFLAGS="-O0 -g -fprofile-instr-generate -fcoverage-mapping" LDFLAGS="-fprofile-instr-generate -g"
setup_options: >-
--cross-file build-aux/meson-cross/emscripten
-Ddefault_library=static
-Db_coverage=true
-Dfetch=disabled
extra_packages: >-
meson
node
gcovr
exec_type: bash
steps:
- name: Set Windows Defender ExclusionPath (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: |
try {
Add-MpPreference -ExclusionPath "C:\a" -ErrorAction Stop
} catch {
Write-Warning "Windows Defender exclusion setup failed; continuing: $($_.Exception.Message)"
}
- name: Disable Windows Search Indexer (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: |
Stop-Service WSearch
- name: Disable Spotlight (macOS)
if: runner.os == 'macOS'
shell: bash
run: |
sudo mdutil -i off / || true
sudo mdutil -i off /System/Volumes/Data || true
- name: Configure git EOL
if: ${{ runner.os == 'Windows' }}
shell: bash
run: git config --global core.autocrlf false
- uses: actions/checkout@v6
with:
fetch-depth: 1
- name: Run CI steps
uses: ./.github/actions/ci-steps
with:
matrix_json: ${{ toJSON(matrix) }}
github_token: ${{ secrets.GITHUB_TOKEN }}
codecov_token: ${{ secrets.CODECOV_TOKEN }}
cosmopolitan:
name: ${{ matrix.label }}
runs-on: ${{ matrix.runner }}
strategy:
matrix:
include:
- label: Autotools-ubuntu-aarch64-cosmopolitan-static
buildtool: autotools
runner: ubuntu-24.04-arm
setup_prefix: >-
CC=cosmocc
LD=cosmocc
AR=cosmoar
RANLIB=cosmoranlib
INSTALL=cosmoinstall
setup_options: >-
--disable-shared
--without-png
--without-jpeg
--without-tiff
--without-webp
--without-librsvg
--without-lcms2
--without-libcurl
exec_type: bash
- label: Meson-ubuntu-aarch64-cosmopolitan-static
buildtool: meson
runner: ubuntu-24.04-arm
setup_prefix: >-
CC=cosmocc-meson
LD=cosmocc-meson
AR=cosmoar
RANLIB=cosmoranlib
INSTALL=cosmoinstall
setup_options: >-
-Ddefault_library=static
-Dpng=disabled
-Djpeg=disabled
-Dtiff=disabled
-Dwebp=disabled
-Dlibrsvg=disabled
-Dlcms2=disabled
-Dcurl=disabled
check_target:
test --wrapper "$PWD"/build-aux/ape-wrapper
extra_packages: >-
meson
exec_type: bash
- label: Autotools-ubuntu-x86_64-cosmopolitan-static
buildtool: autotools
runner: ubuntu-24.04
setup_prefix: >-
CC=cosmocc
LD=cosmocc
AR=cosmoar
RANLIB=cosmoranlib
INSTALL=cosmoinstall
setup_options: >-
--disable-shared
--without-png
--without-jpeg
--without-tiff
--without-webp
--without-librsvg
--without-lcms2
--without-libcurl
exec_type: bash
- label: Meson-ubuntu-x86_64-cosmopolitan-static
buildtool: meson
runner: ubuntu-24.04
setup_prefix: >-
CC=cosmocc-meson
LD=cosmocc-meson
AR=cosmoar
RANLIB=cosmoranlib
INSTALL=cosmoinstall
setup_options: >-
-Ddefault_library=static
-Dpng=disabled
-Djpeg=disabled
-Dtiff=disabled
-Dwebp=disabled
-Dlibrsvg=disabled
-Dlcms2=disabled
-Dcurl=disabled
check_target:
test --wrapper "$PWD"/build-aux/ape-wrapper
extra_packages: >-
meson
exec_type: bash
- label: Autotools-macos-aarch64-cosmopolitan-static
buildtool: autotools
runner: macos-latest
setup_prefix: >-
CC=cosmocc
LD=cosmocc
AR=cosmoar
RANLIB=cosmoranlib
INSTALL=cosmoinstall
setup_options: >-
--disable-shared
--without-png
--without-jpeg
--without-tiff
--without-webp
--without-librsvg
--without-lcms2
--without-libcurl
--without-coregraphics
--disable-quicklook-extension
--disable-quicklook-preview
--disable-appkit
exec_type: bash
- label: Meson-macos-aarch64-cosmopolitan-static
buildtool: meson
runner: macos-latest
setup_prefix: >-
CC=cosmocc-meson
LD=cosmocc-meson
AR=cosmoar
RANLIB=cosmoranlib
INSTALL=cosmoinstall
setup_options: >-
-Ddefault_library=static
-Dpng=disabled
-Djpeg=disabled
-Dtiff=disabled
-Dwebp=disabled
-Dlibrsvg=disabled
-Dlcms2=disabled
-Dcurl=disabled
-Dcoregraphics=disabled
-Dquicklook_extension=disabled
-Dquicklook_preview=disabled
-Dappkit=disabled
check_target:
test --wrapper "$PWD"/build-aux/ape-wrapper
extra_packages: >-
meson
exec_type: bash
- label: Autotools-macos-x86_64-cosmopolitan-static
buildtool: autotools
runner: macos-15-intel
setup_prefix: >-
CC=cosmocc
LD=cosmocc
AR=cosmoar
RANLIB=cosmoranlib
INSTALL=cosmoinstall
setup_options: >-
--disable-shared
--without-png
--without-jpeg
--without-tiff
--without-webp
--without-librsvg
--without-lcms2
--without-libcurl
--without-coregraphics
--disable-quicklook-extension
--disable-quicklook-preview
--disable-appkit
exec_type: bash
- label: Meson-macos-x86_64-cosmopolitan-static
buildtool: meson
runner: macos-15-intel
setup_prefix: >-
CC=cosmocc-meson
LD=cosmocc-meson
AR=cosmoar
RANLIB=cosmoranlib
INSTALL=cosmoinstall
setup_options: >-
-Ddefault_library=static
-Dpng=disabled
-Djpeg=disabled
-Dtiff=disabled
-Dwebp=disabled
-Dlibrsvg=disabled
-Dlcms2=disabled
-Dcurl=disabled
-Dcoregraphics=disabled
-Dquicklook_extension=disabled
-Dquicklook_preview=disabled
-Dappkit=disabled
check_target:
test --wrapper "$PWD"/build-aux/ape-wrapper
extra_packages: >-
meson
exec_type: bash
- label: Autotools-msys2-msys-cosmopolitan-static
buildtool: autotools
runner: windows-latest
msystem: MSYS
setup_prefix: >-
CC=cosmocc
LD=cosmocc
AR=cosmoar
RANLIB=cosmoranlib
INSTALL=cosmoinstall
setup_options: >-
--disable-shared
--without-png
--without-jpeg
--without-tiff
--without-webp
--without-librsvg
--without-lcms2
--without-libcurl
--disable-wiccodec
extra_packages: >-
unzip
make
exec_type: msys2
steps:
- name: Set Windows Defender ExclusionPath (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: |
try {
Add-MpPreference -ExclusionPath "C:\a" -ErrorAction Stop
} catch {
Write-Warning "Windows Defender exclusion setup failed; continuing: $($_.Exception.Message)"
}
- name: Disable Windows Search Indexer (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: |
Stop-Service WSearch
- name: Disable Spotlight (macOS)
if: runner.os == 'macOS'
shell: bash
run: |
sudo mdutil -i off / || true
sudo mdutil -i off /System/Volumes/Data || true
- name: Configure git EOL
if: ${{ runner.os == 'Windows' }}
shell: bash
run: git config --global core.autocrlf false
- uses: actions/checkout@v6
with:
fetch-depth: 1
- name: Run CI steps
uses: ./.github/actions/ci-steps
with:
matrix_json: ${{ toJSON(matrix) }}
github_token: ${{ secrets.GITHUB_TOKEN }}
codecov_token: ${{ secrets.CODECOV_TOKEN }}
- name: Verify Cosmopolitan fat binaries (bash)
if: ${{ matrix.exec_type == 'bash' }}
shell: bash
run: |
set -euxo pipefail
if [ "${{ matrix.buildtool }}" = "meson" ]; then
img2sixel_bin="$PWD/builddir/converters/img2sixel"
sixel2png_bin="$PWD/builddir/converters/sixel2png"
lsqa_bin="$PWD/builddir/assessment/lsqa"
else
img2sixel_bin="$PWD/converters/img2sixel"
sixel2png_bin="$PWD/converters/sixel2png"
lsqa_bin="$PWD/assessment/lsqa"
fi
verify_fat_binary() {
bin_path="$1"
dbg_path="${bin_path}.com.dbg"
arm_path="${bin_path}.aarch64.elf"
test -f "$bin_path"
test -f "$dbg_path"
test -f "$arm_path"
test "$(head -n1 "$bin_path")" = "MZqFpD='"
bin_desc="$(file "$bin_path")"
dbg_desc="$(file "$dbg_path")"
arm_desc="$(file "$arm_path")"
case "$bin_desc" in
*DOS/MBR*|*COM*|*MZ*)
;;
*)
echo "::error::unexpected APE description: $bin_desc"
exit 1
;;
esac
case "$dbg_desc" in
*ELF*64-bit*LSB*executable*x86-64*)
;;
*)
echo "::error::unexpected x86_64 sidecar description: $dbg_desc"
exit 1
;;
esac
case "$arm_desc" in
*ELF*64-bit*LSB*executable*ARM*aarch64*)
;;
*)
echo "::error::unexpected aarch64 sidecar description: $arm_desc"
exit 1
;;
esac
}
verify_fat_binary "$img2sixel_bin"
verify_fat_binary "$sixel2png_bin"
verify_fat_binary "$lsqa_bin"
sh "$img2sixel_bin" --version >/dev/null
sh "$sixel2png_bin" --version >/dev/null
sh "$lsqa_bin" --help >/dev/null
pcc:
name: ${{ matrix.label }}
runs-on: ${{ matrix.runner }}
strategy:
matrix:
include:
- label: Autotools-ubuntu-x86_64-pcc-static
buildtool: autotools
runner: ubuntu-24.04
setup_prefix: >-
CC=pcc
setup_options: >-
--disable-shared
extra_packages: >-
pcc
exec_type: bash
- label: Autotools-ubuntu-x86_64-pcc-shared
buildtool: autotools
runner: ubuntu-24.04
setup_prefix: >-
CC=pcc
extra_packages: >-
pcc
exec_type: bash
- label: Autotools-ubuntu-x86_64-pcc-shared-png-jpeg-tiff-webp
buildtool: autotools
runner: ubuntu-24.04
setup_prefix: >-
CC=pcc
setup_options: >-
--with-png
--with-jpeg
--with-tiff
--with-webp
extra_packages: >-
pcc
libpng-dev
libjpeg-dev
libtiff-dev
libwebp-dev
exec_type: bash
- label: Autotools-ubuntu-x86_64-pcc-shared-gd
buildtool: autotools
runner: ubuntu-24.04
setup_prefix: >-
CC=pcc
setup_options: >-
--with-gd
extra_packages: >-
pcc
libgd-dev
exec_type: bash
- label: Autotools-ubuntu-x86_64-pcc-shared-python
buildtool: autotools
runner: ubuntu-24.04
setup_prefix: >-
CC=pcc
setup_options: >-
--enable-python
extra_packages: >-
pcc
python3
python3-dev
python3-pip
python3-venv
pip_packages: >-
build
pytest
check_target: check-python
exec_type: bash
- label: Autotools-ubuntu-x86_64-pcc-shared-ruby
buildtool: autotools
runner: ubuntu-24.04
setup_prefix: >-
CC=pcc
setup_options: >-
--enable-ruby
extra_packages: >-
pcc
ruby
ruby-dev
check_target: check-ruby
exec_type: bash
- label: Autotools-ubuntu-x86_64-pcc-shared-perl
buildtool: autotools
runner: ubuntu-24.04
setup_prefix: >-
CC=pcc
setup_options: >-
--enable-perl
extra_packages: >-
pcc
perl
cpanminus
check_target: check-perl
exec_type: bash
- label: Autotools-ubuntu-x86_64-pcc-shared-php
buildtool: autotools
runner: ubuntu-24.04
setup_prefix: >-
CC=pcc
setup_options: >-
--enable-php
extra_packages: >-
pcc
php-cli
php-ffi
php8.3-phpdbg
check_target: check-php
exec_type: bash
- label: Meson-ubuntu-x86_64-pcc-static
buildtool: meson
runner: ubuntu-24.04
setup_prefix: >-
CC=pcc-meson
setup_options: >-
-Ddefault_library=static
extra_packages: >-
pcc
meson
exec_type: bash
- label: Meson-ubuntu-x86_64-pcc-shared
buildtool: meson
runner: ubuntu-24.04
setup_prefix: >-
CC=pcc-meson
extra_packages: >-
pcc
meson
exec_type: bash
steps:
- name: Set Windows Defender ExclusionPath (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: |
try {
Add-MpPreference -ExclusionPath "C:\a" -ErrorAction Stop
} catch {
Write-Warning "Windows Defender exclusion setup failed; continuing: $($_.Exception.Message)"
}
- name: Disable Windows Search Indexer (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: |
Stop-Service WSearch
- name: Disable Spotlight (macOS)
if: runner.os == 'macOS'
shell: bash
run: |
sudo mdutil -i off / || true
sudo mdutil -i off /System/Volumes/Data || true
- name: Configure git EOL
if: ${{ runner.os == 'Windows' }}
shell: bash
run: git config --global core.autocrlf false
- uses: actions/checkout@v6
with:
fetch-depth: 1
- name: Run CI steps
uses: ./.github/actions/ci-steps
with:
matrix_json: ${{ toJSON(matrix) }}
github_token: ${{ secrets.GITHUB_TOKEN }}
codecov_token: ${{ secrets.CODECOV_TOKEN }}
winecheck:
needs: [smoke]
name: ${{ matrix.label }}
runs-on: ${{ matrix.runner }}
strategy:
matrix:
include:
- label: Autotools-ubuntu-x86_64-mingw-w64-x86_64-win32-wine64-static
buildtool: autotools
runner: ubuntu-latest
setup_prefix: >-
wineboot -u || :;
CC=x86_64-w64-mingw32-gcc-win32
setup_options: >-
--host=x86_64-w64-mingw32
--disable-shared
extra_packages: >-
wine
gcc-mingw-w64-x86-64-win32
make
make: MVK_CONFIG_LOG_LEVEL=0 WINEDEBUG=-all SIXEL_RUNTIME=wine make
exec_type: bash
- label: Autotools-ubuntu-x86_64-mingw-w64-x86_64-posix-wine64-static
buildtool: autotools
runner: ubuntu-latest
setup_prefix: >-
wineboot -u || :;
cp /usr/x86_64-w64-mingw32/lib/libwinpthread-1.dll ~/.wine/drive_c/windows/system32/;
CC=x86_64-w64-mingw32-gcc-posix
setup_options: >-
--host=x86_64-w64-mingw32
--disable-shared
extra_packages: >-
wine
gcc-mingw-w64-x86-64-posix
make
make: MVK_CONFIG_LOG_LEVEL=0 WINEDEBUG=-all SIXEL_RUNTIME=wine make
exec_type: bash
# - label: Autotools-macos-aarch64-mingw-w64-x86_64-wine64_on_rosetta-static
# buildtool: autotools
# runner: macos-latest
# setup_prefix: >-
# command -v wine >/dev/null 2>&1 ||
# brew install --cask --skip-cask-deps wine@staging;
# wineboot -u || :;
# cp "$(find /opt/homebrew/Cellar/mingw-w64 -name toolchain-x86_64)"/x86_64-w64-mingw32/bin/libwinpthread-1.dll ~/.wine/drive_c/windows/system32/;
# CC=x86_64-w64-mingw32-gcc
# setup_options: >-
# --host=x86_64-w64-mingw32
# --disable-shared
# extra_packages: >-
# mingw-w64
# make: MVK_CONFIG_LOG_LEVEL=0 WINEDEBUG=-all SIXEL_RUNTIME=wine make
# exec_type: bash
steps:
- name: Set Windows Defender ExclusionPath (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: |
try {
Add-MpPreference -ExclusionPath "C:\a" -ErrorAction Stop
} catch {
Write-Warning "Windows Defender exclusion setup failed; continuing: $($_.Exception.Message)"
}
- name: Disable Windows Search Indexer (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: |
Stop-Service WSearch
- name: Disable Spotlight (macOS)
if: runner.os == 'macOS'
shell: bash
run: |
sudo mdutil -i off / || true
sudo mdutil -i off /System/Volumes/Data || true
- name: Configure git EOL
if: ${{ runner.os == 'Windows' }}
shell: bash
run: git config --global core.autocrlf false
- uses: actions/checkout@v6
with:
fetch-depth: 1
- name: Run CI steps
uses: ./.github/actions/ci-steps
with:
matrix_json: ${{ toJSON(matrix) }}
github_token: ${{ secrets.GITHUB_TOKEN }}
codecov_token: ${{ secrets.CODECOV_TOKEN }}
solaris:
# needs: [openbsd]
name: ${{ matrix.label }}
runs-on: ${{ matrix.runner }}
strategy:
fail-fast: false
max-parallel: 1
matrix:
include:
- label: Autotools-solaris-11.4-x86_64
buildtool: autotools
runner: ubuntu-latest
version: '11.4'
setup_options: >-
--disable-dependency-tracking
extra_packages: >-
gnu-make
gcc
make: gmake
exec_type: solaris-vm
- label: Meson-solaris-11.4-x86_64
buildtool: meson
runner: ubuntu-latest
version: '11.4'
extra_packages: >-
gcc
meson
exec_type: solaris-vm
steps:
- name: Set Windows Defender ExclusionPath (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: |
try {
Add-MpPreference -ExclusionPath "C:\a" -ErrorAction Stop
} catch {
Write-Warning "Windows Defender exclusion setup failed; continuing: $($_.Exception.Message)"
}
- name: Disable Windows Search Indexer (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: |
Stop-Service WSearch
- name: Disable Spotlight (macOS)
if: runner.os == 'macOS'
shell: bash
run: |
sudo mdutil -i off / || true
sudo mdutil -i off /System/Volumes/Data || true
- name: Configure git EOL
if: ${{ runner.os == 'Windows' }}
shell: bash
run: git config --global core.autocrlf false
- uses: actions/checkout@v6
with:
fetch-depth: 1
- name: Run CI steps
uses: ./.github/actions/ci-steps
with:
matrix_json: ${{ toJSON(matrix) }}
github_token: ${{ secrets.GITHUB_TOKEN }}
codecov_token: ${{ secrets.CODECOV_TOKEN }}
omnios:
needs: [freebsd]
name: ${{ matrix.label }}
runs-on: ${{ matrix.runner }}
strategy:
fail-fast: false
max-parallel: 1
matrix:
include:
- label: Autotools-omnios-r151056-x86_64
buildtool: autotools
runner: ubuntu-latest
version: r151056
setup_options: >-
--disable-dependency-tracking
extra_packages: >-
developer/gcc13
developer/build/gnu-make
make: gmake
exec_type: omnios-vm
# - label: Meson-omnios-r151056-x86_64
# buildtool: meson
# runner: ubuntu-latest
# version: r151056
# extra_packages: >-
# developer/gcc13
# runtime/python-313
# library/python-3/pip-313
# exec_type: omnios-vm
steps:
- name: Set Windows Defender ExclusionPath (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: |
try {
Add-MpPreference -ExclusionPath "C:\a" -ErrorAction Stop
} catch {
Write-Warning "Windows Defender exclusion setup failed; continuing: $($_.Exception.Message)"
}
- name: Disable Windows Search Indexer (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: |
Stop-Service WSearch
- name: Disable Spotlight (macOS)
if: runner.os == 'macOS'
shell: bash
run: |
sudo mdutil -i off / || true
sudo mdutil -i off /System/Volumes/Data || true
- name: Configure git EOL
if: ${{ runner.os == 'Windows' }}
shell: bash
run: git config --global core.autocrlf false
- uses: actions/checkout@v6
with:
fetch-depth: 1
- name: Run CI steps
uses: ./.github/actions/ci-steps
with:
matrix_json: ${{ toJSON(matrix) }}
github_token: ${{ secrets.GITHUB_TOKEN }}
codecov_token: ${{ secrets.CODECOV_TOKEN }}
# openindiana:
# needs: [dragonflybsd]
# name: ${{ matrix.label }}
# runs-on: ${{ matrix.runner }}
# strategy:
# fail-fast: false
# max-parallel: 1
# matrix:
# include:
# - label: Autotools-openindiana-202510-x86_64
# buildtool: autotools
# runner: ubuntu-latest
# version: '202510'
# setup_options: >-
# --disable-dependency-tracking
# extra_packages: >-
# developer/build/gnu-make
# developer/gcc-13
# make: gmake
# exec_type: openindiana-vm
#
# - label: Meson-openindiana-202510-x86_64
# buildtool: meson
# runner: ubuntu-latest
# version: '202510'
# extra_packages: >-
# developer/gcc-13
# developer/build/meson
# developer/build/ninja
# exec_type: openindiana-vm
#
# steps:
# - name: Set Windows Defender ExclusionPath (Windows)
# if: runner.os == 'Windows'
# shell: pwsh
# run: |
# Add-MpPreference -ExclusionPath "C:\a"
#
# - name: Disable Windows Search Indexer (Windows)
# if: runner.os == 'Windows'
# shell: pwsh
# run: |
# Stop-Service WSearch
#
# - name: Disable Spotlight (macOS)
# if: runner.os == 'macOS'
# shell: bash
# run: |
# sudo mdutil -i off / || true
# sudo mdutil -i off /System/Volumes/Data || true
#
# - name: Configure git EOL
# if: ${{ runner.os == 'Windows' }}
# shell: bash
# run: git config --global core.autocrlf false
#
# - uses: actions/checkout@v6
# with:
# fetch-depth: 1
#
# - name: Run CI steps
# uses: ./.github/actions/ci-steps
# with:
# matrix_json: ${{ toJSON(matrix) }}
# github_token: ${{ secrets.GITHUB_TOKEN }}
# codecov_token: ${{ secrets.CODECOV_TOKEN }}
docker:
needs: [coveralls]
name: ${{ matrix.label }}
runs-on: ${{ matrix.runner }}
strategy:
matrix:
include:
- label: Autotools-alpine-3.20-x86_64
buildtool: autotools
runner: ubuntu-latest
guest_packages: >-
build-base
coreutils
findutils
exec_type: alpine
- label: Meson-alpine-3.20-x86_64
buildtool: meson
runner: ubuntu-latest
guest_packages: >-
build-base
meson
exec_type: alpine
steps:
- name: Set Windows Defender ExclusionPath (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: |
try {
Add-MpPreference -ExclusionPath "C:\a" -ErrorAction Stop
} catch {
Write-Warning "Windows Defender exclusion setup failed; continuing: $($_.Exception.Message)"
}
- name: Disable Windows Search Indexer (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: |
Stop-Service WSearch
- name: Disable Spotlight (macOS)
if: runner.os == 'macOS'
shell: bash
run: |
sudo mdutil -i off / || true
sudo mdutil -i off /System/Volumes/Data || true
- uses: actions/checkout@v6
with:
fetch-depth: 1
- name: Run CI steps
uses: ./.github/actions/ci-steps
with:
matrix_json: ${{ toJSON(matrix) }}
github_token: ${{ secrets.GITHUB_TOKEN }}
codecov_token: ${{ secrets.CODECOV_TOKEN }}
haiku:
needs: [netbsd]
name: ${{ matrix.label }}
runs-on: ${{ matrix.runner }}
env:
SIXEL_TEST_SKIP_HAIKU_PSD_TYSH_TRACE: 1
strategy:
fail-fast: false
max-parallel: 1
matrix:
include:
- label: Autotools-haiku-r1beta5-x86-64
buildtool: autotools
runner: ubuntu-latest
cp_os: haiku
cp_arch: x86-64
cp_version: r1beta5
extra_packages: >-
make
make: make
exec_type: cross-platform-vms
- label: Meson-haiku-r1beta5-x86-64
buildtool: meson
runner: ubuntu-latest
cp_os: haiku
cp_arch: x86-64
cp_version: r1beta5
check_target: test --num-processes 1
extra_packages: >-
meson
exec_type: cross-platform-vms
steps:
- name: Set Windows Defender ExclusionPath (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: |
try {
Add-MpPreference -ExclusionPath "C:\a" -ErrorAction Stop
} catch {
Write-Warning "Windows Defender exclusion setup failed; continuing: $($_.Exception.Message)"
}
- name: Disable Windows Search Indexer (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: |
Stop-Service WSearch
- name: Disable Spotlight (macOS)
if: runner.os == 'macOS'
shell: bash
run: |
sudo mdutil -i off / || true
sudo mdutil -i off /System/Volumes/Data || true
- uses: actions/checkout@v6
with:
fetch-depth: 1
- name: Run CI steps
uses: ./.github/actions/ci-steps
with:
matrix_json: ${{ toJSON(matrix) }}
github_token: ${{ secrets.GITHUB_TOKEN }}
codecov_token: ${{ secrets.CODECOV_TOKEN }}
openbsd:
needs: [freebsd]
name: ${{ matrix.label }}
runs-on: ${{ matrix.runner }}
strategy:
fail-fast: false
max-parallel: 1
matrix:
include:
- label: Autotools-openbsd-7.8-x86-64
buildtool: autotools
runner: ubuntu-latest
cp_os: openbsd
cp_arch: x86-64
cp_version: '7.8'
extra_packages: >-
gmake
make: gmake
exec_type: cross-platform-vms
- label: Meson-openbsd-7.8-x86-64
buildtool: meson
runner: ubuntu-latest
cp_os: openbsd
cp_arch: x86-64
cp_version: '7.8'
extra_packages: >-
meson
check_target: test --num-processes 1 --print-errorlogs
exec_type: cross-platform-vms
steps:
- name: Set Windows Defender ExclusionPath (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: |
try {
Add-MpPreference -ExclusionPath "C:\a" -ErrorAction Stop
} catch {
Write-Warning "Windows Defender exclusion setup failed; continuing: $($_.Exception.Message)"
}
- name: Disable Windows Search Indexer (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: |
Stop-Service WSearch
- name: Disable Spotlight (macOS)
if: runner.os == 'macOS'
shell: bash
run: |
sudo mdutil -i off / || true
sudo mdutil -i off /System/Volumes/Data || true
- uses: actions/checkout@v6
with:
fetch-depth: 1
- name: Run CI steps
uses: ./.github/actions/ci-steps
with:
matrix_json: ${{ toJSON(matrix) }}
github_token: ${{ secrets.GITHUB_TOKEN }}
codecov_token: ${{ secrets.CODECOV_TOKEN }}
freebsd:
needs: [netbsd]
name: ${{ matrix.label }}
runs-on: ${{ matrix.runner }}
strategy:
fail-fast: false
max-parallel: 2
matrix:
include:
- label: Autotools-freebsd-14.3-x86_64
buildtool: autotools
runner: ubuntu-latest
cp_os: freebsd
cp_arch: x86-64
cp_version: '14.3'
extra_packages: >-
gmake
make: gmake
exec_type: cross-platform-vms
- label: Meson-freebsd-14.3-x86_64-unity
buildtool: meson
runner: ubuntu-latest
cp_os: freebsd
cp_arch: x86-64
cp_version: '14.3'
setup_options: >-
-Dunity=on
extra_packages: >-
meson
exec_type: cross-platform-vms
- label: Autotools-freebsd-14.3-x86_64-amalgamated_lib
buildtool: autotools
runner: ubuntu-latest
cp_os: freebsd
cp_arch: x86-64
cp_version: '14.3'
setup_options: >-
--enable-amalgamated-lib
extra_packages: >-
gmake
make: gmake
exec_type: cross-platform-vms
- label: Meson-freebsd-14.3-x86_64-amalgamated_lib
buildtool: meson
runner: ubuntu-latest
cp_os: freebsd
cp_arch: x86-64
cp_version: '14.3'
setup_options: >-
-Damalgamated_lib=true
extra_packages: >-
meson
exec_type: cross-platform-vms
# - label: Autotools-freebsd-14.3-aarch64
# buildtool: autotools
# runner: ubuntu-latest
# cp_os: freebsd
# cp_arch: arm64
# cp_version: '14.3'
# extra_packages: >-
# gmake
# make: gmake
# exec_type: cross-platform-vms
#
# - label: Meson-freebsd-14.3-aarch64
# buildtool: meson
# runner: ubuntu-latest
# cp_os: freebsd
# cp_arch: arm64
# cp_version: '14.3'
# extra_packages: >-
# meson
# exec_type: cross-platform-vms
steps:
- name: Set Windows Defender ExclusionPath (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: |
try {
Add-MpPreference -ExclusionPath "C:\a" -ErrorAction Stop
} catch {
Write-Warning "Windows Defender exclusion setup failed; continuing: $($_.Exception.Message)"
}
- name: Disable Windows Search Indexer (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: |
Stop-Service WSearch
- name: Disable Spotlight (macOS)
if: runner.os == 'macOS'
shell: bash
run: |
sudo mdutil -i off / || true
sudo mdutil -i off /System/Volumes/Data || true
- uses: actions/checkout@v6
with:
fetch-depth: 1
- name: Run CI steps
uses: ./.github/actions/ci-steps
with:
matrix_json: ${{ toJSON(matrix) }}
github_token: ${{ secrets.GITHUB_TOKEN }}
codecov_token: ${{ secrets.CODECOV_TOKEN }}
netbsd:
needs: [dragonflybsd]
name: ${{ matrix.label }}
runs-on: ${{ matrix.runner }}
strategy:
fail-fast: false
max-parallel: 1
matrix:
include:
- label: Autotools-netbsd-10.1-x86_64
buildtool: autotools
runner: ubuntu-latest
cp_os: netbsd
cp_arch: x86-64
cp_version: '10.1'
extra_packages: >-
gmake
make: gmake
exec_type: cross-platform-vms
- label: Meson-netbsd-10.1-x86_64
buildtool: meson
runner: ubuntu-latest
cp_os: netbsd
cp_arch: x86-64
cp_version: '10.1'
extra_packages: >-
meson
exec_type: cross-platform-vms
steps:
- name: Set Windows Defender ExclusionPath (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: |
try {
Add-MpPreference -ExclusionPath "C:\a" -ErrorAction Stop
} catch {
Write-Warning "Windows Defender exclusion setup failed; continuing: $($_.Exception.Message)"
}
- name: Disable Windows Search Indexer (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: |
Stop-Service WSearch
- name: Disable Spotlight (macOS)
if: runner.os == 'macOS'
shell: bash
run: |
sudo mdutil -i off / || true
sudo mdutil -i off /System/Volumes/Data || true
- uses: actions/checkout@v6
with:
fetch-depth: 1
- name: Run CI steps
uses: ./.github/actions/ci-steps
with:
matrix_json: ${{ toJSON(matrix) }}
github_token: ${{ secrets.GITHUB_TOKEN }}
codecov_token: ${{ secrets.CODECOV_TOKEN }}
dragonflybsd:
name: ${{ matrix.label }}
runs-on: ${{ matrix.runner }}
timeout-minutes: 90
strategy:
fail-fast: false
max-parallel: 1
matrix:
include:
- label: Autotools-dragonflybsd-6.4.2-x86-64
buildtool: autotools
runner: ubuntu-latest
version: '6.4.2'
extra_packages: >-
gmake
make: gmake
exec_type: dragonflybsd-vm
- label: Meson-dragonflybsd-6.4.2-x86-64
buildtool: meson
runner: ubuntu-latest
version: '6.4.2'
extra_packages: >-
meson
exec_type: dragonflybsd-vm
steps:
- name: Set Windows Defender ExclusionPath (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: |
try {
Add-MpPreference -ExclusionPath "C:\a" -ErrorAction Stop
} catch {
Write-Warning "Windows Defender exclusion setup failed; continuing: $($_.Exception.Message)"
}
- name: Disable Windows Search Indexer (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: |
Stop-Service WSearch
- name: Disable Spotlight (macOS)
if: runner.os == 'macOS'
shell: bash
run: |
sudo mdutil -i off / || true
sudo mdutil -i off /System/Volumes/Data || true
- uses: actions/checkout@v6
with:
fetch-depth: 1
- name: Run CI steps
uses: ./.github/actions/ci-steps
with:
matrix_json: ${{ toJSON(matrix) }}
github_token: ${{ secrets.GITHUB_TOKEN }}
codecov_token: ${{ secrets.CODECOV_TOKEN }}
# emacs Local Variables:
# emacs mode: c
# emacs tab-width: 2
# emacs indent-tabs-mode: nil
# emacs End:
# vim: set ft=yml et ts=4 sw=0 sts=-1 fdm=indent fdl=1: