This commit is contained in:
Ondrej Baranovič 2025-03-31 13:32:17 +03:00 committed by GitHub
commit 5624a87038
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 147 additions and 113 deletions

2
.github/mergify.yml vendored
View File

@ -7,7 +7,7 @@ pull_request_rules:
- status-success=Test Successful
- status-success=Docker Test Successful
- status-success=Windows Test Successful
- status-success=MinGW
- status-success=MSYS2 Test Successful
- status-success=Cygwin Test Successful
actions:
merge:

View File

@ -1,93 +0,0 @@
name: Test MinGW
on:
push:
branches:
- "**"
paths-ignore:
- ".github/workflows/docs.yml"
- ".github/workflows/wheels*"
- ".gitmodules"
- "docs/**"
- "wheels/**"
pull_request:
paths-ignore:
- ".github/workflows/docs.yml"
- ".github/workflows/wheels*"
- ".gitmodules"
- "docs/**"
- "wheels/**"
workflow_dispatch:
permissions:
contents: read
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
env:
COVERAGE_CORE: sysmon
jobs:
build:
runs-on: windows-latest
defaults:
run:
shell: bash.exe --login -eo pipefail "{0}"
env:
MSYSTEM: MINGW64
CHERE_INVOKING: 1
timeout-minutes: 30
name: "MinGW"
steps:
- name: Checkout Pillow
uses: actions/checkout@v4
with:
persist-credentials: false
- name: Set up shell
run: echo "C:\msys64\usr\bin\" >> $env:GITHUB_PATH
shell: pwsh
- name: Install dependencies
run: |
pacman -S --noconfirm \
mingw-w64-x86_64-freetype \
mingw-w64-x86_64-gcc \
mingw-w64-x86_64-ghostscript \
mingw-w64-x86_64-lcms2 \
mingw-w64-x86_64-libimagequant \
mingw-w64-x86_64-libjpeg-turbo \
mingw-w64-x86_64-libraqm \
mingw-w64-x86_64-libtiff \
mingw-w64-x86_64-libwebp \
mingw-w64-x86_64-openjpeg2 \
mingw-w64-x86_64-python-numpy \
mingw-w64-x86_64-python-olefile \
mingw-w64-x86_64-python-pip \
mingw-w64-x86_64-python-pytest \
mingw-w64-x86_64-python-pytest-cov \
mingw-w64-x86_64-python-pytest-timeout \
mingw-w64-x86_64-python-pyqt6
pushd depends && ./install_extra_test_images.sh && popd
- name: Build Pillow
run: CFLAGS="-coverage" python3 -m pip install .
- name: Test Pillow
run: |
python3 selftest.py --installed
.ci/test.sh
- name: Upload coverage
uses: codecov/codecov-action@v5
with:
files: ./coverage.xml
flags: GHA_Windows
name: "MSYS2 MinGW"
token: ${{ secrets.CODECOV_ORG_TOKEN }}

115
.github/workflows/test-msys2.yml vendored Normal file
View File

@ -0,0 +1,115 @@
name: Test MSYS2
on:
push:
branches:
- "**"
paths-ignore:
- ".github/workflows/docs.yml"
- ".github/workflows/wheels*"
- ".gitmodules"
- "docs/**"
- "wheels/**"
pull_request:
paths-ignore:
- ".github/workflows/docs.yml"
- ".github/workflows/wheels*"
- ".gitmodules"
- "docs/**"
- "wheels/**"
workflow_dispatch:
permissions:
contents: read
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
env:
COVERAGE_CORE: sysmon
jobs:
build:
runs-on: windows-latest
strategy:
fail-fast: false
matrix:
include:
# skip to save CI time:
# see https://github.com/python-pillow/Pillow/pull/6888#issuecomment-1400392821
# - msystem: "UCRT64"
- msystem: "CLANG64"
- msystem: "MINGW64"
defaults:
run:
shell: bash.exe --login -eo pipefail "{0}"
env:
MSYSTEM: ${{ matrix.msystem }}
CHERE_INVOKING: 1
timeout-minutes: 30
name: MSYS2 ${{ matrix.msystem }}
steps:
- name: Checkout Pillow
uses: actions/checkout@v4
with:
persist-credentials: false
- name: Set up shell
run: echo "C:\msys64\usr\bin\" >> $env:GITHUB_PATH
shell: pwsh
- name: Install dependencies
run: |
pacman -S --noconfirm \
make \
pactoys \
subversion
pacboy -S --noconfirm \
freetype:p \
gcc:p \
ghostscript:p \
lcms2:p \
libimagequant:p \
libjpeg-turbo:p \
libraqm:p \
libtiff:p \
libwebp:p \
openjpeg2:p \
python-numpy:p \
python-olefile:p \
python-pip:p \
python-pyqt6:p
python3 -m pip install pyroma pytest pytest-cov pytest-timeout
pushd depends && ./install_extra_test_images.sh && popd
- name: Build Pillow
run: .ci/build.sh
- name: Test Pillow
run: .ci/test.sh
- name: After success
run: .ci/after_success.sh
- name: Upload coverage
uses: codecov/codecov-action@v5
with:
files: ./coverage.xml
flags: GHA_Windows
name: MSYS2 ${{ matrix.msystem }}
success:
permissions:
contents: none
needs: build
runs-on: ubuntu-latest
name: MSYS2 Test Successful
steps:
- name: Success
run: echo MSYS2 Test Successful

View File

@ -162,32 +162,44 @@ Many of Pillow's features require external libraries:
.. tab:: Windows using MSYS2/MinGW
To build Pillow using MSYS2, make sure you run the **MSYS2 MinGW 32-bit** or
**MSYS2 MinGW 64-bit** console, *not* **MSYS2** directly.
The following instructions are for the **MSYS2 UCRT64** system.
To build Pillow on one of the other MSYS2 systems, replace all occurences of
``mingw-w64-ucrt-x86_64`` with the corresponding prefix:
The following instructions target the 64-bit build, for 32-bit
replace all occurrences of ``mingw-w64-x86_64-`` with ``mingw-w64-i686-``.
.. list-table::
:header-rows: 1
* - MSYS2 system
- Package prefix
* - **UCRT64**
- ``mingw-w64-ucrt-x86_64``
* - **CLANG64**
- ``mingw-w64-clang-x86_64``
* - **MINGW64**
- ``mingw-w64-x86_64``
Installing in **MSYS2 MSYS** is not supported.
Make sure you have Python and GCC installed::
pacman -S \
mingw-w64-x86_64-gcc \
mingw-w64-x86_64-python3 \
mingw-w64-x86_64-python3-pip \
mingw-w64-x86_64-python3-setuptools
mingw-w64-ucrt-x86_64-gcc \
mingw-w64-ucrt-x86_64-python3 \
mingw-w64-ucrt-x86_64-python3-pip \
mingw-w64-ucrt-x86_64-python3-setuptools
Prerequisites are installed on **MSYS2 MinGW 64-bit** with::
Prerequisites are installed on **MSYS2 UCRT64** with::
pacman -S \
mingw-w64-x86_64-libjpeg-turbo \
mingw-w64-x86_64-zlib \
mingw-w64-x86_64-libtiff \
mingw-w64-x86_64-freetype \
mingw-w64-x86_64-lcms2 \
mingw-w64-x86_64-libwebp \
mingw-w64-x86_64-openjpeg2 \
mingw-w64-x86_64-libimagequant \
mingw-w64-x86_64-libraqm
mingw-w64-ucrt-x86_64-libjpeg-turbo \
mingw-w64-ucrt-x86_64-zlib \
mingw-w64-ucrt-x86_64-libtiff \
mingw-w64-ucrt-x86_64-freetype \
mingw-w64-ucrt-x86_64-lcms2 \
mingw-w64-ucrt-x86_64-libwebp \
mingw-w64-ucrt-x86_64-openjpeg2 \
mingw-w64-ucrt-x86_64-libimagequant \
mingw-w64-ucrt-x86_64-libraqm
.. tab:: FreeBSD

View File

@ -53,7 +53,7 @@ These platforms are built and tested for every change.
| Windows Server 2022 | 3.10, 3.11, 3.12, 3.13, | x86-64 |
| | PyPy3 | |
| +----------------------------+---------------------+
| | 3.12 (MinGW) | x86-64 |
| | 3.12 (CLANG64, MINGW64) | x86-64 |
| +----------------------------+---------------------+
| | 3.9 (Cygwin) | x86-64 |
+----------------------------------+----------------------------+---------------------+