mirror of
https://github.com/python-pillow/Pillow.git
synced 2024-11-10 19:56:47 +03:00
Merge pull request #7228 from radarhere/32bit
Removed support for 32-bit
This commit is contained in:
commit
190c53a1b1
|
@ -10,8 +10,8 @@ environment:
|
|||
TEST_OPTIONS:
|
||||
DEPLOY: YES
|
||||
matrix:
|
||||
- PYTHON: C:/Python311
|
||||
ARCHITECTURE: x86
|
||||
- PYTHON: C:/Python311-x64
|
||||
ARCHITECTURE: x64
|
||||
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2022
|
||||
- PYTHON: C:/Python38-x64
|
||||
ARCHITECTURE: x64
|
||||
|
|
2
.github/mergify.yml
vendored
2
.github/mergify.yml
vendored
|
@ -7,7 +7,7 @@ pull_request_rules:
|
|||
- status-success=Test Successful
|
||||
- status-success=Docker Test Successful
|
||||
- status-success=Windows Test Successful
|
||||
- status-success=MinGW Test Successful
|
||||
- status-success=MinGW
|
||||
- status-success=Cygwin Test Successful
|
||||
- status-success=continuous-integration/appveyor/pr
|
||||
actions:
|
||||
|
|
4
.github/workflows/test-docker.yml
vendored
4
.github/workflows/test-docker.yml
vendored
|
@ -38,8 +38,8 @@ jobs:
|
|||
centos-7-amd64,
|
||||
centos-stream-8-amd64,
|
||||
centos-stream-9-amd64,
|
||||
debian-11-bullseye-x86,
|
||||
debian-12-bookworm-x86,
|
||||
debian-11-bullseye-amd64,
|
||||
debian-12-bookworm-amd64,
|
||||
fedora-37-amd64,
|
||||
fedora-38-amd64,
|
||||
gentoo,
|
||||
|
|
63
.github/workflows/test-mingw.yml
vendored
63
.github/workflows/test-mingw.yml
vendored
|
@ -21,27 +21,16 @@ concurrency:
|
|||
jobs:
|
||||
build:
|
||||
runs-on: windows-latest
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
mingw: ["MINGW32", "MINGW64"]
|
||||
include:
|
||||
- mingw: "MINGW32"
|
||||
name: "MSYS2 MinGW 32-bit"
|
||||
package: "mingw-w64-i686"
|
||||
- mingw: "MINGW64"
|
||||
name: "MSYS2 MinGW 64-bit"
|
||||
package: "mingw-w64-x86_64"
|
||||
|
||||
defaults:
|
||||
run:
|
||||
shell: bash.exe --login -eo pipefail "{0}"
|
||||
env:
|
||||
MSYSTEM: ${{ matrix.mingw }}
|
||||
MSYSTEM: MINGW64
|
||||
CHERE_INVOKING: 1
|
||||
|
||||
timeout-minutes: 30
|
||||
name: ${{ matrix.name }}
|
||||
name: "MinGW"
|
||||
|
||||
steps:
|
||||
- name: Checkout Pillow
|
||||
|
@ -54,26 +43,22 @@ jobs:
|
|||
- name: Install dependencies
|
||||
run: |
|
||||
pacman -S --noconfirm \
|
||||
${{ matrix.package }}-freetype \
|
||||
${{ matrix.package }}-gcc \
|
||||
${{ matrix.package }}-ghostscript \
|
||||
${{ matrix.package }}-lcms2 \
|
||||
${{ matrix.package }}-libimagequant \
|
||||
${{ matrix.package }}-libjpeg-turbo \
|
||||
${{ matrix.package }}-libraqm \
|
||||
${{ matrix.package }}-libtiff \
|
||||
${{ matrix.package }}-libwebp \
|
||||
${{ matrix.package }}-openjpeg2 \
|
||||
${{ matrix.package }}-python3-cffi \
|
||||
${{ matrix.package }}-python3-numpy \
|
||||
${{ matrix.package }}-python3-olefile \
|
||||
${{ matrix.package }}-python3-pip \
|
||||
${{ matrix.package }}-python3-setuptools
|
||||
|
||||
if [ ${{ matrix.package }} == "mingw-w64-x86_64" ]; then
|
||||
pacman -S --noconfirm \
|
||||
${{ matrix.package }}-python-pyqt6
|
||||
fi
|
||||
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-python3-cffi \
|
||||
mingw-w64-x86_64-python3-numpy \
|
||||
mingw-w64-x86_64-python3-olefile \
|
||||
mingw-w64-x86_64-python3-pip \
|
||||
mingw-w64-x86_64-python3-setuptools \
|
||||
mingw-w64-x86_64-python-pyqt6
|
||||
|
||||
python3 -m pip install pyroma pytest pytest-cov pytest-timeout
|
||||
|
||||
|
@ -93,14 +78,4 @@ jobs:
|
|||
with:
|
||||
file: ./coverage.xml
|
||||
flags: GHA_Windows
|
||||
name: ${{ matrix.name }}
|
||||
|
||||
success:
|
||||
permissions:
|
||||
contents: none
|
||||
needs: build
|
||||
runs-on: ubuntu-latest
|
||||
name: MinGW Test Successful
|
||||
steps:
|
||||
- name: Success
|
||||
run: echo MinGW Test Successful
|
||||
name: "MSYS2 MinGW"
|
||||
|
|
18
.github/workflows/test-windows.yml
vendored
18
.github/workflows/test-windows.yml
vendored
|
@ -24,18 +24,11 @@ jobs:
|
|||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
python-version: ["3.8", "3.9", "3.10", "3.11", "3.12-dev"]
|
||||
architecture: ["x86", "x64"]
|
||||
include:
|
||||
# PyPy 7.3.4+ only ships 64-bit binaries for Windows
|
||||
- python-version: "pypy3.9"
|
||||
architecture: "x64"
|
||||
- python-version: "pypy3.10"
|
||||
architecture: "x64"
|
||||
python-version: ["pypy3.10", "pypy3.9", "3.8", "3.9", "3.10", "3.11", "3.12-dev"]
|
||||
|
||||
timeout-minutes: 30
|
||||
|
||||
name: Python ${{ matrix.python-version }} ${{ matrix.architecture }}
|
||||
name: Python ${{ matrix.python-version }}
|
||||
|
||||
steps:
|
||||
- name: Checkout Pillow
|
||||
|
@ -58,7 +51,6 @@ jobs:
|
|||
uses: actions/setup-python@v4
|
||||
with:
|
||||
python-version: ${{ matrix.python-version }}
|
||||
architecture: ${{ matrix.architecture }}
|
||||
cache: pip
|
||||
cache-dependency-path: ".github/workflows/test-windows.yml"
|
||||
|
||||
|
@ -206,14 +198,14 @@ jobs:
|
|||
with:
|
||||
file: ./coverage.xml
|
||||
flags: GHA_Windows
|
||||
name: ${{ runner.os }} Python ${{ matrix.python-version }} ${{ matrix.architecture }}
|
||||
name: ${{ runner.os }} Python ${{ matrix.python-version }}
|
||||
|
||||
- name: Build wheel
|
||||
id: wheel
|
||||
if: "github.event_name != 'pull_request'"
|
||||
run: |
|
||||
mkdir fribidi\${{ matrix.architecture }}
|
||||
copy winbuild\build\bin\fribidi* fribidi\${{ matrix.architecture }}
|
||||
mkdir fribidi
|
||||
copy winbuild\build\bin\fribidi* fribidi
|
||||
setlocal EnableDelayedExpansion
|
||||
for %%f in (winbuild\build\license\*) do (
|
||||
set x=%%~nf
|
||||
|
|
|
@ -1,8 +0,0 @@
|
|||
#!/usr/bin/env python3
|
||||
|
||||
import sys
|
||||
|
||||
from PIL import Image
|
||||
|
||||
if sys.maxsize < 2**32:
|
||||
im = Image.new("L", (999999, 999999), 0)
|
|
@ -1,5 +1,3 @@
|
|||
import sys
|
||||
|
||||
import pytest
|
||||
|
||||
from PIL import Image
|
||||
|
@ -23,9 +21,6 @@ YDIM = 32769
|
|||
XDIM = 48000
|
||||
|
||||
|
||||
pytestmark = pytest.mark.skipif(sys.maxsize <= 2**32, reason="requires 64-bit system")
|
||||
|
||||
|
||||
def _write_png(tmp_path, xdim, ydim):
|
||||
f = str(tmp_path / "temp.png")
|
||||
im = Image.new("L", (xdim, ydim), 0)
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
import sys
|
||||
|
||||
import pytest
|
||||
|
||||
from PIL import Image
|
||||
|
@ -19,9 +17,6 @@ YDIM = 32769
|
|||
XDIM = 48000
|
||||
|
||||
|
||||
pytestmark = pytest.mark.skipif(sys.maxsize <= 2**32, reason="requires 64-bit system")
|
||||
|
||||
|
||||
def _write_png(tmp_path, xdim, ydim):
|
||||
dtype = np.uint8
|
||||
a = np.zeros((xdim, ydim), dtype=dtype)
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
import sys
|
||||
|
||||
import pytest
|
||||
|
||||
from PIL import Image
|
||||
|
@ -110,9 +108,6 @@ class TestCoreMemory:
|
|||
|
||||
with pytest.raises(ValueError):
|
||||
Image.core.set_blocks_max(-1)
|
||||
if sys.maxsize < 2**32:
|
||||
with pytest.raises(ValueError):
|
||||
Image.core.set_blocks_max(2**29)
|
||||
|
||||
@pytest.mark.skipif(is_pypy(), reason="Images not collected")
|
||||
def test_set_blocks_max_stats(self):
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
import io
|
||||
import re
|
||||
import sys
|
||||
import warnings
|
||||
|
||||
import pytest
|
||||
|
@ -145,7 +144,6 @@ class TestFileWebp:
|
|||
|
||||
self._roundtrip(tmp_path, "P", 50.0)
|
||||
|
||||
@pytest.mark.skipif(sys.maxsize <= 2**32, reason="Requires 64-bit system")
|
||||
def test_write_encoding_error_message(self, tmp_path):
|
||||
temp_file = str(tmp_path / "temp.webp")
|
||||
im = Image.new("RGB", (15000, 15000))
|
||||
|
|
|
@ -38,10 +38,7 @@ def test_long_integers():
|
|||
assert put(0xFFFFFFFF) == (255, 255, 255, 255)
|
||||
assert put(-1) == (255, 255, 255, 255)
|
||||
assert put(-1) == (255, 255, 255, 255)
|
||||
if sys.maxsize > 2**32:
|
||||
assert put(sys.maxsize) == (255, 255, 255, 255)
|
||||
else:
|
||||
assert put(sys.maxsize) == (255, 255, 255, 127)
|
||||
assert put(sys.maxsize) == (255, 255, 255, 255)
|
||||
|
||||
|
||||
def test_pypy_performance():
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
import sys
|
||||
|
||||
import pytest
|
||||
|
||||
from PIL import Image
|
||||
|
@ -36,7 +34,6 @@ def test_tobytes():
|
|||
Image.MAX_IMAGE_PIXELS = max_pixels
|
||||
|
||||
|
||||
@pytest.mark.skipif(sys.maxsize <= 2**32, reason="Requires 64-bit system")
|
||||
def test_ysize():
|
||||
numpy = pytest.importorskip("numpy", reason="NumPy not installed")
|
||||
|
||||
|
|
|
@ -285,11 +285,8 @@ 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 target the 64-bit build, for 32-bit
|
||||
replace all occurrences of ``mingw-w64-x86_64-`` with ``mingw-w64-i686-``.
|
||||
To build Pillow using MSYS2, make sure you run the **MSYS2 MinGW 64-bit** console,
|
||||
*not* **MSYS2** directly.
|
||||
|
||||
Make sure you have Python and GCC installed::
|
||||
|
||||
|
@ -339,8 +336,6 @@ Many of Pillow's features require external libraries:
|
|||
pkg install -y python ndk-sysroot clang make \
|
||||
libjpeg-turbo
|
||||
|
||||
This has been tested within the Termux app on ChromeOS, on x86.
|
||||
|
||||
Installing
|
||||
^^^^^^^^^^
|
||||
|
||||
|
@ -451,9 +446,9 @@ These platforms are built and tested for every change.
|
|||
+----------------------------------+----------------------------+---------------------+
|
||||
| CentOS Stream 9 | 3.9 | x86-64 |
|
||||
+----------------------------------+----------------------------+---------------------+
|
||||
| Debian 11 Bullseye | 3.9 | x86 |
|
||||
| Debian 11 Bullseye | 3.9 | x86-64 |
|
||||
+----------------------------------+----------------------------+---------------------+
|
||||
| Debian 12 Bookworm | 3.11 | x86 |
|
||||
| Debian 12 Bookworm | 3.11 | x86-64 |
|
||||
+----------------------------------+----------------------------+---------------------+
|
||||
| Fedora 37 | 3.11 | x86-64 |
|
||||
+----------------------------------+----------------------------+---------------------+
|
||||
|
@ -474,10 +469,10 @@ These platforms are built and tested for every change.
|
|||
+----------------------------------+----------------------------+---------------------+
|
||||
| Windows Server 2016 | 3.8 | x86-64 |
|
||||
+----------------------------------+----------------------------+---------------------+
|
||||
| Windows Server 2022 | 3.8, 3.9, 3.10, 3.11, | x86, x86-64 |
|
||||
| Windows Server 2022 | 3.8, 3.9, 3.10, 3.11, | x86-64 |
|
||||
| | 3.12, PyPy3 | |
|
||||
| +----------------------------+---------------------+
|
||||
| | 3.9 (MinGW) | x86, x86-64 |
|
||||
| | 3.9 (MinGW) | x86-64 |
|
||||
| +----------------------------+---------------------+
|
||||
| | 3.8, 3.9 (Cygwin) | x86-64 |
|
||||
+----------------------------------+----------------------------+---------------------+
|
||||
|
|
|
@ -4,6 +4,11 @@
|
|||
Backwards Incompatible Changes
|
||||
==============================
|
||||
|
||||
32-bit support
|
||||
^^^^^^^^^^^^^^
|
||||
|
||||
32-bit architecture is no longer supported and 32-bit wheels are no longer provided.
|
||||
|
||||
Categories
|
||||
^^^^^^^^^^
|
||||
|
||||
|
|
20
setup.py
20
setup.py
|
@ -153,16 +153,13 @@ def _find_library_dirs_ldconfig():
|
|||
|
||||
ldconfig = "ldconfig" if shutil.which("ldconfig") else "/sbin/ldconfig"
|
||||
if sys.platform.startswith("linux") or sys.platform.startswith("gnu"):
|
||||
if struct.calcsize("l") == 4:
|
||||
machine = os.uname()[4] + "-32"
|
||||
else:
|
||||
machine = os.uname()[4] + "-64"
|
||||
machine = os.uname()[4]
|
||||
mach_map = {
|
||||
"x86_64-64": "libc6,x86-64",
|
||||
"ppc64-64": "libc6,64bit",
|
||||
"sparc64-64": "libc6,64bit",
|
||||
"s390x-64": "libc6,64bit",
|
||||
"ia64-64": "libc6,IA-64",
|
||||
"x86_64": "libc6,x86-64",
|
||||
"ppc64": "libc6,64bit",
|
||||
"sparc64": "libc6,64bit",
|
||||
"s390x": "libc6,64bit",
|
||||
"ia64": "libc6,IA-64",
|
||||
}
|
||||
abi_type = mach_map.get(machine, "libc6")
|
||||
|
||||
|
@ -584,10 +581,7 @@ class pil_build_ext(build_ext):
|
|||
# user libs are at $PREFIX/lib
|
||||
_add_directory(
|
||||
library_dirs,
|
||||
os.path.join(
|
||||
os.environ["ANDROID_ROOT"],
|
||||
"lib" if struct.calcsize("l") == 4 else "lib64",
|
||||
),
|
||||
os.path.join(os.environ["ANDROID_ROOT"], "lib64"),
|
||||
)
|
||||
|
||||
elif sys.platform.startswith("netbsd"):
|
||||
|
|
|
@ -30,7 +30,7 @@
|
|||
/* This is to work around a bug in GCC prior 4.9 in 64 bit mode.
|
||||
GCC generates code with partial dependency which is 3 times slower.
|
||||
See: https://stackoverflow.com/a/26588074/253146 */
|
||||
#if defined(__x86_64__) && defined(__SSE__) && !defined(__NO_INLINE__) && \
|
||||
#if defined(__SSE__) && !defined(__NO_INLINE__) && \
|
||||
!defined(__clang__) && defined(GCC_VERSION) && (GCC_VERSION < 40900)
|
||||
static float __attribute__((always_inline)) inline _i2f(int v) {
|
||||
float x;
|
||||
|
|
|
@ -27,7 +27,7 @@ Download and install:
|
|||
* `Ninja <https://ninja-build.org/>`_
|
||||
(optional, use ``--nmake`` if not available; bundled in Visual Studio CMake component)
|
||||
|
||||
* x86/x64: `Netwide Assembler (NASM) <https://www.nasm.us/pub/nasm/releasebuilds/?C=M;O=D>`_
|
||||
* x64: `Netwide Assembler (NASM) <https://www.nasm.us/pub/nasm/releasebuilds/?C=M;O=D>`_
|
||||
|
||||
Any version of Visual Studio 2017 or newer should be supported,
|
||||
including Visual Studio 2017 Community, or Build Tools for Visual Studio 2019.
|
||||
|
@ -42,7 +42,7 @@ Run ``build_prepare.py`` to configure the build::
|
|||
|
||||
usage: winbuild\build_prepare.py [-h] [-v] [-d PILLOW_BUILD]
|
||||
[--depends PILLOW_DEPS]
|
||||
[--architecture {x86,x64,ARM64}]
|
||||
[--architecture {x64,ARM64}]
|
||||
[--python PYTHON] [--executable EXECUTABLE]
|
||||
[--nmake] [--no-imagequant] [--no-fribidi]
|
||||
|
||||
|
@ -56,7 +56,7 @@ Run ``build_prepare.py`` to configure the build::
|
|||
--depends PILLOW_DEPS
|
||||
directory used to store cached dependencies (default:
|
||||
'winbuild\depends')
|
||||
--architecture {x86,x64,ARM64}
|
||||
--architecture {x64,ARM64}
|
||||
build architecture (default: same as host Python)
|
||||
--python PYTHON Python install directory (default: use host Python)
|
||||
--executable EXECUTABLE
|
||||
|
|
|
@ -3,7 +3,6 @@ import os
|
|||
import platform
|
||||
import re
|
||||
import shutil
|
||||
import struct
|
||||
import subprocess
|
||||
import sys
|
||||
|
||||
|
@ -98,7 +97,6 @@ def cmd_msbuild(
|
|||
SF_PROJECTS = "https://sourceforge.net/projects"
|
||||
|
||||
architectures = {
|
||||
"x86": {"vcvars_arch": "x86", "msbuild_arch": "Win32"},
|
||||
"x64": {"vcvars_arch": "x86_amd64", "msbuild_arch": "x64"},
|
||||
"ARM64": {"vcvars_arch": "x86_arm64", "msbuild_arch": "ARM64"},
|
||||
}
|
||||
|
@ -611,11 +609,7 @@ if __name__ == "__main__":
|
|||
choices=architectures,
|
||||
default=os.environ.get(
|
||||
"ARCHITECTURE",
|
||||
(
|
||||
"ARM64"
|
||||
if platform.machine() == "ARM64"
|
||||
else ("x86" if struct.calcsize("P") == 4 else "x64")
|
||||
),
|
||||
"ARM64" if platform.machine() == "ARM64" else "x64",
|
||||
),
|
||||
help="build architecture (default: same as host Python)",
|
||||
)
|
||||
|
|
Loading…
Reference in New Issue
Block a user