Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/mergify.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
actions:
merge:
method: merge
94 changes: 0 additions & 94 deletions .github/workflows/test-mingw.yml

This file was deleted.

115 changes: 115 additions & 0 deletions .github/workflows/test-msys2.yml
Original file line number Diff line number Diff line change
@@ -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@v6
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 \
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Add --needed

make \
pactoys \
subversion

pacboy -S --noconfirm \
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Add --needed

freetype:p \
gcc:p \
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"gcc" - > "cc"

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
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

pytest, pytest-cov, and pytest-timeout can be (preferably?) installed by pacboy above


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
50 changes: 31 additions & 19 deletions docs/installation/building-from-source.rst
Original file line number Diff line number Diff line change
Expand Up @@ -184,33 +184,45 @@ 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``

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please add CLANGARM64 as well?

Installing in **MSYS2 MSYS** is not supported.

Make sure you have Python and GCC installed::
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"GCC" -> "a C compiler"


pacman -S \
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Might be an idea to add --needed to all pacman commands to avoid reinstallation...

mingw-w64-x86_64-gcc \
mingw-w64-x86_64-python \
mingw-w64-x86_64-python-pip \
mingw-w64-x86_64-python-setuptools
mingw-w64-ucrt-x86_64-gcc \
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In order to cover the CLANG env, this should not be verbatim "gcc". There is a generic "cc" metapackage that will pull in either "gcc" or "clang" as needed.

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-x86_64-libavif
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 \
mingw-w64-ucrt-x86_64-libavif

.. tab:: FreeBSD

Expand Down
2 changes: 1 addition & 1 deletion docs/installation/platform-support.rst
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ These platforms are built and tested for every change.
| | 3.11, 3.12, 3.13, 3.14, | x86-64 |
| | PyPy3 | |
| +----------------------------+---------------------+
| | 3.12 (MinGW) | x86-64 |
| | 3.12 (CLANG64, MINGW64) | x86-64 |
+----------------------------------+----------------------------+---------------------+


Expand Down
Loading