diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index e11ccc80..4dbd488d 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -35,6 +35,7 @@ jobs: - "gentoo" - "ubuntu-24.04-noble-amd64" - "ubuntu-26.04-resolute-amd64" + - "cpython_sanity-3.14tsan" # has a dependency on the test image - "manylinux_2_28-wheel-build" include: diff --git a/Makefile b/Makefile index e332b400..6ddb02dc 100644 --- a/Makefile +++ b/Makefile @@ -4,6 +4,7 @@ TARGETS = \ arch \ centos-stream-9-amd64 \ centos-stream-10-amd64 \ + cpython_sanity-3.14tsan \ debian-13-trixie-x86 \ debian-13-trixie-amd64 \ fedora-43-amd64 \ diff --git a/Pillow b/Pillow index bb1d8e8a..e62e2e96 160000 --- a/Pillow +++ b/Pillow @@ -1 +1 @@ -Subproject commit bb1d8e8ab8d29048624d96e3ee53cecf7c13d13d +Subproject commit e62e2e96984d0e239ea8ef10c25010a0acfe5d9a diff --git a/cpython_sanity-3.14tsan/Dockerfile b/cpython_sanity-3.14tsan/Dockerfile new file mode 100644 index 00000000..ccf27cc0 --- /dev/null +++ b/cpython_sanity-3.14tsan/Dockerfile @@ -0,0 +1,64 @@ +FROM ghcr.io/nascheme/cpython-tsan:3.14t + +RUN apt-get -qq update \ + && DEBIAN_FRONTEND=noninteractive apt-get -y --no-install-recommends install \ + cmake \ + ghostscript \ + libavif-dev \ + libegl-dev \ + libfreetype6-dev \ + libfribidi-dev \ + libharfbuzz-dev \ + libimagequant-dev \ + libjpeg-turbo8-dev \ + liblcms2-dev \ + libopengl-dev \ + libopenjp2-7-dev \ + libssl-dev \ + libtiff5-dev \ + libwebp-dev \ + libxcb-cursor0 \ + libxcb-icccm4 \ + libxcb-image0 \ + libxcb-keysyms1 \ + libxcb-randr0 \ + libxcb-render-util0 \ + libxcb-shape0 \ + libxkbcommon-x11-0 \ + meson \ + python3-dev \ + python3-numpy \ + python3-setuptools \ + python3-tk \ + sudo \ + tcl8.6-dev \ + tk8.6-dev \ + virtualenv \ + wget \ + xvfb \ + zlib1g-dev \ + && rm -rf /var/lib/apt/lists/* + +RUN useradd pillow \ + && mkdir /home/pillow \ + && chown pillow:pillow /home/pillow + +ARG PIP_DISABLE_PIP_VERSION_CHECK=1 +ARG PIP_NO_CACHE_DIR=1 + +RUN /work/.pyenv/shims/python3 -m venv /vpy3 \ + && /vpy3/bin/pip install --upgrade pip \ + && /vpy3/bin/pip install olefile pytest pytest-cov pytest-timeout \ + && chown -R pillow:pillow /vpy3 + +COPY depends /depends +RUN cd /depends \ + && ./install_raqm.sh + +ENV FORCE_COLOR=1 +ENV PILLOW_TSAN_TEST=1 + +USER pillow +CMD ["/depends/test.sh"] + +#docker run -v $GITHUB_WORKSPACE:/Pillow pythonpillow/cpython_sanity-3.14tsan diff --git a/cpython_sanity-3.14tsan/Makefile b/cpython_sanity-3.14tsan/Makefile new file mode 120000 index 00000000..5e7b0e26 --- /dev/null +++ b/cpython_sanity-3.14tsan/Makefile @@ -0,0 +1 @@ +../Makefile.sub \ No newline at end of file diff --git a/cpython_sanity-3.14tsan/test.sh b/cpython_sanity-3.14tsan/test.sh new file mode 100755 index 00000000..9ad8252d --- /dev/null +++ b/cpython_sanity-3.14tsan/test.sh @@ -0,0 +1,6 @@ +#!/bin/bash +source /vpy3/bin/activate +cd /Pillow +make clean +make install-tsan +/usr/bin/xvfb-run -a .ci/test.sh diff --git a/cpython_sanity-3.14tsan/update.sh b/cpython_sanity-3.14tsan/update.sh new file mode 100755 index 00000000..c2fde976 --- /dev/null +++ b/cpython_sanity-3.14tsan/update.sh @@ -0,0 +1,2 @@ +#!/bin/sh +docker pull ghcr.io/nascheme/cpython-tsan:3.14t