Skip to content
37 changes: 35 additions & 2 deletions .github/workflows/ci.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ jobs:
runs-on: ${{ matrix.os }}-latest
strategy:
matrix:
os: [ubuntu, macos]
os: [ubuntu, macos, windows]
python-version: ['3.8', '3.9', '3.10', '3.11', '3.12', '3.13', '3.14']
exclude:
# Avoid spurious "upgrade pip" error annotation
Expand All @@ -19,7 +19,8 @@ jobs:
uses: actions/checkout@v5

- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v6
uses: actions/setup-python@v5
id: setup-python
with:
python-version: ${{ matrix.python-version }}

Expand All @@ -37,9 +38,41 @@ jobs:
run: |
brew unlink xz || true # Remove brewed liblzma as it is not multiarch

- name: Install MSYS2 build prerequisites
id: msys2
if: runner.os == 'Windows'
uses: msys2/setup-msys2@v2
with:
msystem: ucrt64
update: true
install: >-
base-devel
mingw-w64-ucrt-x86_64-binutils
mingw-w64-ucrt-x86_64-headers-git
mingw-w64-ucrt-x86_64-gcc
mingw-w64-ucrt-x86_64-libmangle-git
mingw-w64-ucrt-x86_64-winpthreads-git
mingw-w64-ucrt-x86_64-make
mingw-w64-ucrt-x86_64-pkgconf
mingw-w64-ucrt-x86_64-tools-git
mingw-w64-ucrt-x86_64-curl
mingw-w64-ucrt-x86_64-libdeflate
mingw-w64-ucrt-x86_64-bzip2
mingw-w64-ucrt-x86_64-zlib
mingw-w64-ucrt-x86_64-xz
mingw-w64-ucrt-x86_64-openssl
mingw-w64-ucrt-x86_64-libsystre
mingw-w64-ucrt-x86_64-libiconv

- name: Build (directly from checkout)
if: runner.os != 'Windows'
run: python setup.py build

- name: Build (directly from checkout)
if: runner.os == 'Windows'
shell: msys2 {0}
run: sh -c '$(cygpath "${{ steps.setup-python.outputs.python-path }}") setup.py build'

- name: Install test prerequisites
run: |
case $RUNNER_OS in
Expand Down
3 changes: 3 additions & 0 deletions setup.cfg
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
[bdist_wheel]
universal = 0

[build_ext]
compiler = mingw32

[tool:pytest]
# -s: do not capture stdout, conflicts with pysam.dispatch
# -v: verbose output
Expand Down
Loading