diff --git a/pillow_mingw.patch b/pillow_mingw.patch new file mode 100644 index 0000000..bf99c6f --- /dev/null +++ b/pillow_mingw.patch @@ -0,0 +1,78 @@ +diff -rupN --no-dereference Pillow-9.0.1/setup.py Pillow-9.0.1-new/setup.py +--- Pillow-9.0.1/setup.py 2022-02-03 00:45:27.000000000 +0100 ++++ Pillow-9.0.1-new/setup.py 2022-02-23 09:06:33.272472288 +0100 +@@ -135,7 +135,7 @@ class RequiredDependencyException(Except + pass + + +-PLATFORM_MINGW = os.name == "nt" and "GCC" in sys.version ++PLATFORM_MINGW = "mingw32" in os.getenv("CC") + PLATFORM_PYPY = hasattr(sys, "pypy_version_info") + + +@@ -497,7 +497,7 @@ class pil_build_ext(build_ext): + # + # add platform directories + +- if self.disable_platform_guessing: ++ if self.disable_platform_guessing or PLATFORM_MINGW: + pass + + elif sys.platform == "cygwin": +@@ -589,7 +589,7 @@ class pil_build_ext(build_ext): + # FIXME: check /opt/stuff directories here? + + # standard locations +- if not self.disable_platform_guessing: ++ if not self.disable_platform_guessing and not PLATFORM_MINGW: + _add_directory(library_dirs, "/usr/local/lib") + _add_directory(include_dirs, "/usr/local/include") + +@@ -835,7 +835,7 @@ class pil_build_ext(build_ext): + if feature.xcb: + libs.append(feature.xcb) + defs.append(("HAVE_XCB", None)) +- if sys.platform == "win32": ++ if sys.platform == "win32" or PLATFORM_MINGW: + libs.extend(["kernel32", "user32", "gdi32"]) + if struct.unpack("h", b"\0\1")[0] == 1: + defs.append(("WORDS_BIGENDIAN", None)) +@@ -857,6 +857,8 @@ class pil_build_ext(build_ext): + if feature.freetype: + srcs = [] + libs = ["freetype"] ++ if sys.platform == "win32" or PLATFORM_MINGW: ++ libs.extend(["dl"]) + defs = [] + if feature.raqm: + if not feature.want_vendor("raqm"): # using system Raqm +@@ -879,7 +881,7 @@ class pil_build_ext(build_ext): + + if feature.lcms: + extra = [] +- if sys.platform == "win32": ++ if sys.platform == "win32" or PLATFORM_MINGW: + extra.extend(["user32", "gdi32"]) + self._update_extension("PIL._imagingcms", [feature.lcms] + extra) + else: +@@ -898,7 +900,7 @@ class pil_build_ext(build_ext): + else: + self._remove_extension("PIL._webp") + +- tk_libs = ["psapi"] if sys.platform in ("win32", "cygwin") else [] ++ tk_libs = ["psapi"] if sys.platform in ("win32", "cygwin") or PLATFORM_MINGW else [] + self._update_extension("PIL._imagingtk", tk_libs) + + build_ext.build_extensions(self) +diff -rupN --no-dereference Pillow-9.0.1/src/libImaging/ImPlatform.h Pillow-9.0.1-new/src/libImaging/ImPlatform.h +--- Pillow-9.0.1/src/libImaging/ImPlatform.h 2022-02-03 00:45:27.000000000 +0100 ++++ Pillow-9.0.1-new/src/libImaging/ImPlatform.h 2022-02-23 09:06:33.272472288 +0100 +@@ -28,7 +28,7 @@ + #if defined(_WIN32) || defined(__CYGWIN__) + + #define WIN32_LEAN_AND_MEAN +-#include ++#include + + #ifdef __CYGWIN__ + #undef _WIN64 diff --git a/python-pillow.spec b/python-pillow.spec index 3a99fb2..70264e7 100644 --- a/python-pillow.spec +++ b/python-pillow.spec @@ -5,13 +5,15 @@ # EPEL9 is missing some dependencies to build the documentation %if 0%{?el9} %bcond_with doc +%bcond_with mingw %else %bcond_without doc +%bcond_without mingw %endif Name: python-%{srcname} Version: 9.0.1 -Release: 1%{?dist} +Release: 4%{?dist} Summary: Python image processing library # License: see http://www.pythonware.com/products/pil/license.htm @@ -23,6 +25,8 @@ Source0: https://github.com/python-pillow/Pillow/archive/%{version}/Pillo Patch0: python-pillow_spinxwarn.patch # Drop sphinx plugin requirements which are not packaged for Fedora Patch1: python-pillow_sphinx.patch +# MinGW build fixes +Patch2: pillow_mingw.patch BuildRequires: freetype-devel BuildRequires: gcc @@ -53,6 +57,38 @@ BuildRequires: python%{python3_pkgversion}-sphinx-removed-in %endif BuildRequires: python%{python3_pkgversion}-tkinter +%if %{with mingw} +BuildRequires: mingw32-filesystem >= 95 +BuildRequires: mingw32-gcc +BuildRequires: mingw32-python3 +BuildRequires: mingw32-python3-setuptools +BuildRequires: mingw32-dlfcn +BuildRequires: mingw32-freetype +BuildRequires: mingw32-lcms2 +BuildRequires: mingw32-libimagequant +BuildRequires: mingw32-libjpeg +BuildRequires: mingw32-libtiff +BuildRequires: mingw32-libwebp +BuildRequires: mingw32-openjpeg2 +BuildRequires: mingw32-tk +BuildRequires: mingw32-zlib + +BuildRequires: mingw64-filesystem >= 95 +BuildRequires: mingw64-gcc +BuildRequires: mingw64-python3 +BuildRequires: mingw64-python3-setuptools +BuildRequires: mingw64-dlfcn +BuildRequires: mingw64-freetype +BuildRequires: mingw64-lcms2 +BuildRequires: mingw64-libimagequant +BuildRequires: mingw64-libjpeg +BuildRequires: mingw64-libtiff +BuildRequires: mingw64-libwebp +BuildRequires: mingw64-openjpeg2 +BuildRequires: mingw64-tk +BuildRequires: mingw64-zlib +%endif + # For EpsImagePlugin.py Requires: ghostscript @@ -129,14 +165,40 @@ Provides: python%{python3_pkgversion}-imaging-qt = %{version}-%{release} Qt %{srcname} image wrapper. +%if %{with mingw} +%package -n mingw32-python3-%{name} +Summary: MinGW Windows Python2 %{name} library + +%description -n mingw32-python3-%{name} +MinGW Windows Python2 %{name} library. + + +%package -n mingw64-python3-%{name} +Summary: MinGW Windows Python2 %{name} library + +%description -n mingw64-python3-%{name} +MinGW Windows Python2 %{name} library. + + +%{?mingw_debug_package} +%endif + + %prep %autosetup -p1 -n Pillow-%{version} %build -# Build Python 3 modules +# Native build %py3_build +# MinGW build +%if %{with mingw} +PKG_CONFIG=mingw32-pkg-config %{mingw32_py3_build} +PKG_CONFIG=mingw64-pkg-config %{mingw64_py3_build} +%endif + +# Doc build %if %{with doc} PYTHONPATH=$PWD/build/%py3_libbuilddir make -C docs html BUILDDIR=_build_py3 SPHINXBUILD=sphinx-build-%python3_version rm -f docs/_build_py3/html/.buildinfo @@ -144,11 +206,32 @@ rm -f docs/_build_py3/html/.buildinfo %install -# Install Python 3 modules +# Native build install -d %{buildroot}/%{py3_incdir}/Imaging install -m 644 src/libImaging/*.h %{buildroot}/%{py3_incdir}/Imaging %py3_install +# MinGW build +%if %{with mingw} +install -d %{buildroot}/%{mingw32_py3_incdir}/Imaging +install -m 644 src/libImaging/*.h %{buildroot}/%{mingw32_py3_incdir}/Imaging + +install -d %{buildroot}/%{mingw64_py3_incdir}/Imaging +install -m 644 src/libImaging/*.h %{buildroot}/%{mingw64_py3_incdir}/Imaging + +%{mingw32_py3_install} +%{mingw64_py3_install} + +# Remove sample scripts +rm -rf %{buildroot}%{mingw32_bindir} +rm -rf %{buildroot}%{mingw64_bindir} +%endif + + +%if %{with mingw} +%mingw_debug_install_post +%endif + %check # Check Python 3 modules @@ -198,8 +281,25 @@ popd %{python3_sitearch}/PIL/ImageQt* %{python3_sitearch}/PIL/__pycache__/ImageQt* +%if %{with mingw} +%files -n mingw32-python3-%{name} +%license docs/COPYING +%{mingw32_python3_sitearch}/PIL/ +%{mingw32_python3_sitearch}/Pillow-%{version}-py%{mingw32_python3_version}.egg-info/ +%{mingw32_py3_incdir}/Imaging/ + +%files -n mingw64-python3-%{name} +%license docs/COPYING +%{mingw64_python3_sitearch}/PIL/ +%{mingw64_python3_sitearch}/Pillow-%{version}-py%{mingw64_python3_version}.egg-info/ +%{mingw64_py3_incdir}/Imaging/ +%endif + %changelog +* Thu Feb 24 2022 Sandro Mani - 9.0.1-4 +- Add mingw subpackages + * Thu Feb 03 2022 Sandro Mani - 9.0.1-1 - Update to 9.0.1 diff --git a/python-pillow_sphinx.patch b/python-pillow_sphinx.patch index ed32b6c..1db7a6c 100644 --- a/python-pillow_sphinx.patch +++ b/python-pillow_sphinx.patch @@ -1,6 +1,6 @@ diff -rupN --no-dereference Pillow-9.0.1/docs/conf.py Pillow-9.0.1-new/docs/conf.py --- Pillow-9.0.1/docs/conf.py 2022-02-03 00:45:27.000000000 +0100 -+++ Pillow-9.0.1-new/docs/conf.py 2022-02-03 08:56:43.525506916 +0100 ++++ Pillow-9.0.1-new/docs/conf.py 2022-02-23 09:06:33.169472252 +0100 @@ -30,12 +30,10 @@ needs_sphinx = "2.4" # ones. extensions = [ diff --git a/python-pillow_spinxwarn.patch b/python-pillow_spinxwarn.patch index 85a841c..a9698f7 100644 --- a/python-pillow_spinxwarn.patch +++ b/python-pillow_spinxwarn.patch @@ -1,6 +1,6 @@ diff -rupN --no-dereference Pillow-9.0.1/docs/Makefile Pillow-9.0.1-new/docs/Makefile --- Pillow-9.0.1/docs/Makefile 2022-02-03 00:45:27.000000000 +0100 -+++ Pillow-9.0.1-new/docs/Makefile 2022-02-03 08:56:43.436506725 +0100 ++++ Pillow-9.0.1-new/docs/Makefile 2022-02-23 09:06:33.060472214 +0100 @@ -42,7 +42,7 @@ clean: -rm -rf $(BUILDDIR)/*