%global py3_incdir %(python3 -c 'import distutils.sysconfig; print(distutils.sysconfig.get_python_inc())')
%global py3_libbuilddir %(python3 -c 'import sys; import sysconfig; print("lib.{p}-{v[0]}.{v[1]}".format(p=sysconfig.get_platform(), v=sys.version_info))')
 
%global with_docs 0
 
Name:           python-pillow
Version:        9.0.1
Release:        5
Summary:        Python image processing library 
License:        MIT
URL:            http://python-pillow.github.io/
Source0:        https://github.com/python-pillow/Pillow/archive/%{version}/Pillow-%{version}.tar.gz
Source1:        oom-225817ca0f8c663be7ab4b9e717b02c661e66834.tif
# https://github.com/python-pillow/Pillow/blob/c9f1b35/Tests/images/decompression_bomb_extents.gif
Source2:        decompression_bomb_extents.gif

Patch0000:      python-pillow_spinxwarn.patch
Patch0001:      python-pillow_sphinx-issues.patch
Patch0002:      backport-Corrected-memory-allocation.patch
Patch0003:      CVE-2022-45199.patch
Patch0004:      CVE-2023-44271.patch
Patch0005:      CVE-2022-45198.patch

BuildRequires:  freetype-devel ghostscript lcms2-devel libimagequant-devel libjpeg-devel libtiff-devel
BuildRequires:  libwebp-devel openjpeg2-devel tk-devel zlib-devel python3-cffi python3-devel python3-numpy python3-olefile
BuildRequires:  python3-qt5 python3-setuptools python3-tkinter gcc
BuildRequires:  python3-pytest
%if %{?openEuler:1}0
BuildRequires:  libraqm-devel
%endif
%if 0%{?with_docs}
BuildRequires:  make
BuildRequires:  python3-sphinx
BuildRequires:  python3-sphinx_rtd_theme
BuildRequires:  python3-sphinx-removed-in
%endif
Requires:       ghostscript
 
%global __provides_exclude_from ^%{python3_sitearch}/PIL/.*\\.so$

%description
Pillow is the friendly PIL fork by Alex Clark and Contributors. PIL is the Python Imaging \
Library by Fredrik Lundh and Contributors. As of 2019, Pillow development is supported by Tidelift.
 
%package -n python3-pillow
Summary:        Python 3 image processing library
%{?python_provide:%python_provide python3-pillow}
Provides:       python3-imaging = %{version}-%{release}

Requires:       python3-olefile
 
%description -n python3-pillow
Pillow is the friendly PIL fork by Alex Clark and Contributors. PIL is the Python Imaging \
Library by Fredrik Lundh and Contributors. As of 2019, Pillow development is supported by Tidelift.
 
%package -n python3-pillow-devel
Summary:        Development files for pillow
Requires:       python3-devel libjpeg-devel zlib-devel python3-pillow = %{version}-%{release}

%{?python_provide:%python_provide python3-pillow-devel}

Provides:       python3-imaging-devel = %{version}-%{release}
 
%description -n python3-pillow-devel
Development files for pillow.
 
%package -n python3-pillow-help
Summary:        Documentation for pillow
BuildArch:      noarch
Requires:       python3-pillow = %{version}-%{release}
%{?python_provide:%python_provide python3-pillow-doc}
Provides:       python3-imaging-doc = %{version}-%{release} python3-pillow-doc = %{version}-%{release}

Obsoletes:	    python3-pillow-doc < %{version}-%{release}

%description -n     python3-pillow-help
Documentation for pillow.
 
 
%package -n python3-pillow-tk
Summary:        Tk interface for pillow
Requires:       python3-tkinter
Requires:       python3-pillow = %{version}-%{release}
%{?python_provide:%python_provide python3-pillow-tk}
Provides:       python3-imaging-tk = %{version}-%{release}
 
%description -n python3-pillow-tk
Tk interface for %{name}.
 
 
%package -n python3-pillow-qt
Summary:        Qt pillow image wrapper
Requires:       python3-qt5
Requires:       python3-pillow = %{version}-%{release}
%{?python_provide:%python_provide python3-pillow-qt}
Provides:       python3-imaging-qt = %{version}-%{release}
 
%description -n python3-pillow-qt
Qt pillow image wrapper.
%prep
%autosetup -p1 -n Pillow-%{version} 
 
%build
cp %{SOURCE1} Tests/images/
cp %{SOURCE2} Tests/images/

%py3_build

%if 0%{?with_docs}
PYTHONPATH=$PWD/build/%py3_libbuilddir make -C docs html BUILDDIR=_build_py3 SPHINXBUILD=sphinx-build-%python3_version
rm -f docs/_build_py3/html/.buildinfo
%endif

%install
mkdir -p %{buildroot}/%{py3_incdir}/Imaging
install -m 644 src/libImaging/*.h %{buildroot}/%{py3_incdir}/Imaging
%py3_install
 
%check
ln -s $PWD/Images $PWD/build/%py3_libbuilddir/Images
cp -R $PWD/Tests $PWD/build/%py3_libbuilddir/Tests
cp -a $PWD/selftest.py $PWD/build/%py3_libbuilddir/selftest.py
pushd build/%py3_libbuilddir
PYTHONPATH=$PWD %{__python3} selftest.py
popd
export PYTHONPATH=%{buildroot}%{python3_sitearch}
pytest --ignore=_build.python2 --ignore=_build.python3 --ignore=_build.pypy3 -v -k 'not (test_qt_image_qapplication)'
 
%files -n python3-pillow
%doc README.md CHANGES.rst
%license docs/COPYING
%{python3_sitearch}/PIL/
%{python3_sitearch}/Pillow-%{version}-py%{python3_version}.egg-info
%exclude %{python3_sitearch}/PIL/_imagingtk*
%exclude %{python3_sitearch}/PIL/ImageTk*
%exclude %{python3_sitearch}/PIL/SpiderImagePlugin*
%exclude %{python3_sitearch}/PIL/ImageQt*
%exclude %{python3_sitearch}/PIL/__pycache__/ImageTk*
%exclude %{python3_sitearch}/PIL/__pycache__/SpiderImagePlugin*
%exclude %{python3_sitearch}/PIL/__pycache__/ImageQt*
 
%files -n python3-pillow-devel
%{py3_incdir}/Imaging/
 
%files -n python3-pillow-help
%if 0%{?with_docs}
%doc docs/_build_py3/html
%endif

%files -n python3-pillow-tk
%{python3_sitearch}/PIL/_imagingtk*
%{python3_sitearch}/PIL/ImageTk*
%{python3_sitearch}/PIL/SpiderImagePlugin*
%{python3_sitearch}/PIL/__pycache__/ImageTk*
%{python3_sitearch}/PIL/__pycache__/SpiderImagePlugin*
 
%files -n python3-pillow-qt
%{python3_sitearch}/PIL/ImageQt*
%{python3_sitearch}/PIL/__pycache__/ImageQt*

%changelog
* Thu Dec 07 2023 wangkai <13474090681@163.com> - 9.0.1-5
- Fix CVE-2022-45198

* Tue Nov 14 2023 hanhuihui <hanhuihui5@huawei.com> - 9.0.1-4
- Type:CVE
- ID:NA
- SUG:NA
- DESC: fix CVE-2023-44271

* Thu Nov 17 2022 qz_cx <wangqingzheng@kylinos.cn> - 9.0.1-3
- Type:CVE
- ID:NA
- SUG:NA
- DESC: fix CVE-2022-45199

* Wed Apr 20 2022 dongyuzhen <dongyuzhen@h-partners.com> - 9.0.1-2
- correct memory allocation in alloc_array (this is the rear patch of CVE-2022-22815,CVE-2022-22816)

* Thu Mar 3 2022 hanhui <hanhui15@h-partners.com> - 9.0.1-1
- DESC:update to Pillow-9.0.1

* Thu Feb 17 2022 dongyuzhen <dongyuzhen@h-partners.com> - 8.1.2-5
- fix CVE-2022-24303

* Wed Feb 9 2022 yangcheng <yangcheng1203@163.com> - 8.1.2-4
- Type:CVE
- CVE:CVE-2022-22815,CVE-2022-22816,CVE-2022-22817
- SUG:NA
- DESC:fix CVE-2022-22815,CVE-2022-22816,CVE-2022-22817

* Mon Sep 27 2021 luoyang <luoyang42@huawei.com> - 8.1.2-3
- fix CVE-2021-23437

* Thu Aug 19 2021 hanhui <hanhui15@huawei.com> - 8.1.2-2
- DESC: enable test case from setup.py

* Wed Jul 14 2021 OpenStack_SIG <openstack@openeuler.org> - 8.1.2-1
- Update to 8.1.2

* Thu Jul 15 2021 liuyumeng <liuyumeng5@huawei.com> - 8.1.1-6
- Type:bugfix
- CVE:CVE-2021-34552
- SUG:NA
- DESC: incorporate community patch

* Tue Jul 6 2021 hanhui <hanhui15@huawei.com> - 8.1.1-5
- Type:bugfix
- CVE:CVE-2021-28675 CVE-2021-28676 CVE-2021-28677 CVE-2021-28678 CVE-2021-25287 CVE-2021-25288
- SUG:NA
- DESC: incorporate community patch

* Mon Jun 21 2021 hanhui <hanhui15@huawei.com> - 8.1.1-4
- DESC: in the check section,using the cp -a instead of install

* Tue Jun 15 2021 hanhui <hanhui15@huawei.com> - 8.1.1-3
- DESC: add buildrequire gcc

* Sat Mar 13 2021 wangye <wangye70@huawei.com> - 8.1.1-2
- Type:CVE
- CVE:CVE-2021-27921 CVE-2021-27922 CVE-2021-27923
- SUG:NA
- DESC: fix CVE-2021-27921CVE-2021-27922CVE-2021-27923

* Mon Mar 08 2021 wangye <wangye70@huawei.com> - 8.1.1-1
- Update to 8.1.1
