From 45a1663881d0b02c63b498ee1c655983a5077a8e Mon Sep 17 00:00:00 2001 From: CentOS Sources Date: May 07 2019 13:35:36 +0000 Subject: import python-pillow-5.1.1-7.el8 --- diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..acca1fe --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +SOURCES/Pillow-5.1.1.tar.gz diff --git a/.python-pillow.metadata b/.python-pillow.metadata new file mode 100644 index 0000000..34d63e5 --- /dev/null +++ b/.python-pillow.metadata @@ -0,0 +1 @@ +2120f1bbf8d39cb0f1a5a50fb79b993e8b75851c SOURCES/Pillow-5.1.1.tar.gz diff --git a/SOURCES/0001-Fix-potential-un-terminated-buffer-problem-CWE-120.patch b/SOURCES/0001-Fix-potential-un-terminated-buffer-problem-CWE-120.patch new file mode 100644 index 0000000..a8ecc0c --- /dev/null +++ b/SOURCES/0001-Fix-potential-un-terminated-buffer-problem-CWE-120.patch @@ -0,0 +1,42 @@ +From b78ede45a294b567d27d7198ff3354df86a5b7f1 Mon Sep 17 00:00:00 2001 +From: Lumir Balhar +Date: Tue, 11 Sep 2018 15:58:31 +0200 +Subject: [PATCH 1/2] Fix potential un-terminated buffer problem (CWE-120) + +--- + src/libImaging/Histo.c | 4 +++- + src/libImaging/Palette.c | 3 ++- + 2 files changed, 5 insertions(+), 2 deletions(-) + +diff --git a/src/libImaging/Histo.c b/src/libImaging/Histo.c +index 0bfc8dfe..2b35873e 100644 +--- a/src/libImaging/Histo.c ++++ b/src/libImaging/Histo.c +@@ -41,7 +41,9 @@ ImagingHistogramNew(Imaging im) + + /* Create histogram descriptor */ + h = calloc(1, sizeof(struct ImagingHistogramInstance)); +- strncpy(h->mode, im->mode, IMAGING_MODE_LENGTH); ++ strncpy(h->mode, im->mode, IMAGING_MODE_LENGTH-1); ++ h->mode[IMAGING_MODE_LENGTH-1] = 0; ++ + h->bands = im->bands; + h->histogram = calloc(im->pixelsize, 256 * sizeof(long)); + +diff --git a/src/libImaging/Palette.c b/src/libImaging/Palette.c +index 31c2c024..7aee6e8e 100644 +--- a/src/libImaging/Palette.c ++++ b/src/libImaging/Palette.c +@@ -37,7 +37,8 @@ ImagingPaletteNew(const char* mode) + if (!palette) + return (ImagingPalette) ImagingError_MemoryError(); + +- strncpy(palette->mode, mode, IMAGING_MODE_LENGTH); ++ strncpy(palette->mode, mode, IMAGING_MODE_LENGTH-1); ++ palette->mode[IMAGING_MODE_LENGTH-1] = 0; + + /* Initialize to ramp */ + for (i = 0; i < 256; i++) { +-- +2.17.1 + diff --git a/SOURCES/0002-Fix-potential-leaked-storage-issues-CWE-772.patch b/SOURCES/0002-Fix-potential-leaked-storage-issues-CWE-772.patch new file mode 100644 index 0000000..25b071c --- /dev/null +++ b/SOURCES/0002-Fix-potential-leaked-storage-issues-CWE-772.patch @@ -0,0 +1,258 @@ +From 6adac809e96c8bfeb50a3bd14570a8118bcd5d65 Mon Sep 17 00:00:00 2001 +From: Lumir Balhar +Date: Thu, 13 Sep 2018 12:22:11 +0200 +Subject: [PATCH 2/2] Fix potential leaked storage issues (CWE-772) + +--- + src/Tk/tkImaging.c | 2 ++ + src/_imaging.c | 15 +++++++++++++-- + src/encode.c | 12 +++++++++--- + src/libImaging/Histo.c | 12 +++++++++--- + src/libImaging/Quant.c | 2 ++ + src/libImaging/QuantOctree.c | 1 + + src/libImaging/Resample.c | 2 ++ + src/path.c | 8 ++++++-- + 8 files changed, 44 insertions(+), 10 deletions(-) + +diff --git a/src/Tk/tkImaging.c b/src/Tk/tkImaging.c +index f448be16..10090b0e 100644 +--- a/src/Tk/tkImaging.c ++++ b/src/Tk/tkImaging.c +@@ -442,6 +442,7 @@ int load_tkinter_funcs(void) + /* Try loading from the main program namespace first */ + main_program = dlopen(NULL, RTLD_LAZY); + if (_func_loader(main_program) == 0) { ++ dlclose(main_program); + return 0; + } + /* Clear exception triggered when we didn't find symbols above */ +@@ -470,6 +471,7 @@ int load_tkinter_funcs(void) + /* dlclose probably safe because tkinter has been imported. */ + dlclose(tkinter_lib); + exit: ++ dlclose(main_program); + Py_XDECREF(pModule); + Py_XDECREF(pString); + return ret; +diff --git a/src/_imaging.c b/src/_imaging.c +index 11f5f6ea..445470bf 100644 +--- a/src/_imaging.c ++++ b/src/_imaging.c +@@ -856,8 +856,10 @@ _gaussian_blur(ImagingObject* self, PyObject* args) + if (!imOut) + return NULL; + +- if (!ImagingGaussianBlur(imOut, imIn, radius, passes)) ++ if (!ImagingGaussianBlur(imOut, imIn, radius, passes)) { ++ ImagingDelete(imOut); + return NULL; ++ } + + return PyImagingNew(imOut); + } +@@ -1745,8 +1747,10 @@ _box_blur(ImagingObject* self, PyObject* args) + if (!imOut) + return NULL; + +- if (!ImagingBoxBlur(imOut, imIn, radius, n)) ++ if (!ImagingBoxBlur(imOut, imIn, radius, n)) { ++ ImagingDelete(imOut); + return NULL; ++ } + + return PyImagingNew(imOut); + } +@@ -2386,6 +2390,7 @@ _draw_arc(ImagingDrawObject* self, PyObject* args) + return NULL; + if (n != 2) { + PyErr_SetString(PyExc_TypeError, must_be_two_coordinates); ++ free(xy); + return NULL; + } + +@@ -2423,6 +2428,7 @@ _draw_bitmap(ImagingDrawObject* self, PyObject* args) + PyErr_SetString(PyExc_TypeError, + "coordinate list must contain exactly 1 coordinate" + ); ++ free(xy); + return NULL; + } + +@@ -2458,6 +2464,7 @@ _draw_chord(ImagingDrawObject* self, PyObject* args) + return NULL; + if (n != 2) { + PyErr_SetString(PyExc_TypeError, must_be_two_coordinates); ++ free(xy); + return NULL; + } + +@@ -2493,6 +2500,7 @@ _draw_ellipse(ImagingDrawObject* self, PyObject* args) + return NULL; + if (n != 2) { + PyErr_SetString(PyExc_TypeError, must_be_two_coordinates); ++ free(xy); + return NULL; + } + +@@ -2674,6 +2682,7 @@ _draw_pieslice(ImagingDrawObject* self, PyObject* args) + return NULL; + if (n != 2) { + PyErr_SetString(PyExc_TypeError, must_be_two_coordinates); ++ free(xy); + return NULL; + } + +@@ -2712,6 +2721,7 @@ _draw_polygon(ImagingDrawObject* self, PyObject* args) + PyErr_SetString(PyExc_TypeError, + "coordinate list must contain at least 2 coordinates" + ); ++ free(xy); + return NULL; + } + +@@ -2754,6 +2764,7 @@ _draw_rectangle(ImagingDrawObject* self, PyObject* args) + return NULL; + if (n != 2) { + PyErr_SetString(PyExc_TypeError, must_be_two_coordinates); ++ free(xy); + return NULL; + } + +diff --git a/src/encode.c b/src/encode.c +index ae4277c0..9f7c6592 100644 +--- a/src/encode.c ++++ b/src/encode.c +@@ -552,11 +552,15 @@ PyImaging_ZipEncoderNew(PyObject* self, PyObject* args) + dictionary = NULL; + + encoder = PyImaging_EncoderNew(sizeof(ZIPSTATE)); +- if (encoder == NULL) ++ if (encoder == NULL) { ++ free(dictionary); + return NULL; ++ } + +- if (get_packer(encoder, mode, rawmode) < 0) ++ if (get_packer(encoder, mode, rawmode) < 0) { ++ free(dictionary); + return NULL; ++ } + + encoder->encode = ImagingZipEncode; + encoder->cleanup = ImagingZipEncodeCleanup; +@@ -717,8 +721,10 @@ PyImaging_JpegEncoderNew(PyObject* self, PyObject* args) + if (rawExif && rawExifLen > 0) { + /* malloc check ok, length is from python parsearg */ + char* pp = malloc(rawExifLen); // Freed in JpegEncode, Case 5 +- if (!pp) ++ if (!pp) { ++ if (extra) free(extra); + return PyErr_NoMemory(); ++ } + memcpy(pp, rawExif, rawExifLen); + rawExif = pp; + } else +diff --git a/src/libImaging/Histo.c b/src/libImaging/Histo.c +index 2b35873e..b7c1a983 100644 +--- a/src/libImaging/Histo.c ++++ b/src/libImaging/Histo.c +@@ -82,8 +82,10 @@ ImagingGetHistogram(Imaging im, Imaging imMask, void* minmax) + h->histogram[im->image8[y][x]]++; + ImagingSectionLeave(&cookie); + } else { /* yes, we need the braces. C isn't Python! */ +- if (im->type != IMAGING_TYPE_UINT8) ++ if (im->type != IMAGING_TYPE_UINT8) { ++ ImagingHistogramDelete(h); + return ImagingError_ModeError(); ++ } + ImagingSectionEnter(&cookie); + for (y = 0; y < im->ysize; y++) { + UINT8* in = (UINT8*) im->image32[y]; +@@ -122,8 +124,10 @@ ImagingGetHistogram(Imaging im, Imaging imMask, void* minmax) + ImagingSectionLeave(&cookie); + break; + case IMAGING_TYPE_INT32: +- if (!minmax) ++ if (!minmax) { ++ ImagingHistogramDelete(h); + return ImagingError_ValueError("min/max not given"); ++ } + if (!im->xsize || !im->ysize) + break; + imin = ((INT32*) minmax)[0]; +@@ -143,8 +147,10 @@ ImagingGetHistogram(Imaging im, Imaging imMask, void* minmax) + ImagingSectionLeave(&cookie); + break; + case IMAGING_TYPE_FLOAT32: +- if (!minmax) ++ if (!minmax) { ++ ImagingHistogramDelete(h); + return ImagingError_ValueError("min/max not given"); ++ } + if (!im->xsize || !im->ysize) + break; + fmin = ((FLOAT32*) minmax)[0]; +diff --git a/src/libImaging/Quant.c b/src/libImaging/Quant.c +index df313816..b94dc6e1 100644 +--- a/src/libImaging/Quant.c ++++ b/src/libImaging/Quant.c +@@ -568,6 +568,8 @@ split(BoxNode *node) + left=malloc(sizeof(BoxNode)); + right=malloc(sizeof(BoxNode)); + if (!left||!right) { ++ free(left); ++ free(right); + return 0; + } + for(i=0;i<3;i++) { +diff --git a/src/libImaging/QuantOctree.c b/src/libImaging/QuantOctree.c +index e18ab3c6..d778c942 100644 +--- a/src/libImaging/QuantOctree.c ++++ b/src/libImaging/QuantOctree.c +@@ -470,6 +470,7 @@ error: + free(qp); + free_color_cube(lookupCube); + free_color_cube(coarseLookupCube); ++ free(paletteBuckets); + free(paletteBucketsCoarse); + free(paletteBucketsFine); + free_color_cube(coarseCube); +diff --git a/src/libImaging/Resample.c b/src/libImaging/Resample.c +index cda005d9..b90395e8 100644 +--- a/src/libImaging/Resample.c ++++ b/src/libImaging/Resample.c +@@ -538,6 +538,8 @@ ImagingResampleInner(Imaging imIn, int xsize, int ysize, + if ( ! ksize_vert) { + free(bounds_horiz); + free(kk_horiz); ++ free(bounds_vert); ++ free(kk_vert); + return NULL; + } + +diff --git a/src/path.c b/src/path.c +index b56ea838..5984a3d1 100644 +--- a/src/path.c ++++ b/src/path.c +@@ -82,12 +82,16 @@ path_new(Py_ssize_t count, double* xy, int duplicate) + xy = p; + } + +- if (PyType_Ready(&PyPathType) < 0) ++ if (PyType_Ready(&PyPathType) < 0) { ++ free(xy); + return NULL; ++ } + + path = PyObject_New(PyPathObject, &PyPathType); +- if (path == NULL) ++ if (path == NULL) { ++ free(xy); + return NULL; ++ } + + path->count = count; + path->xy = xy; +-- +2.17.1 + diff --git a/SOURCES/0003-Fix-dereferencing-type-punned-pointer.patch b/SOURCES/0003-Fix-dereferencing-type-punned-pointer.patch new file mode 100644 index 0000000..21c21ba --- /dev/null +++ b/SOURCES/0003-Fix-dereferencing-type-punned-pointer.patch @@ -0,0 +1,50 @@ +From e705cd1476f04a918aae34f638b502116cb12eba Mon Sep 17 00:00:00 2001 +From: Jon Dufresne +Date: Tue, 3 Apr 2018 20:36:09 -0700 +Subject: [PATCH] Fix dereferencing type-punned pointer will break + strict-aliasing + +Compiler warning appeared as: + +src/path.c:574:22: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] + Py_TYPE(&item)->tp_name); + ^~~~~~~ + +As item is already of type PyObject*, and the Py_TYPE macro is +equivalent to (((PyObject*)(o))->ob_type), no need for the dereference. + +https://docs.python.org/3/c-api/structures.html#c.Py_TYPE +--- + Tests/test_imagepath.py | 5 +++++ + src/path.c | 2 +- + 2 files changed, 6 insertions(+), 1 deletion(-) + +diff --git a/Tests/test_imagepath.py b/Tests/test_imagepath.py +index 14cc4d14b..98a6d3416 100644 +--- a/Tests/test_imagepath.py ++++ b/Tests/test_imagepath.py +@@ -17,6 +17,11 @@ def test_path(self): + self.assertEqual(p[0], (0.0, 1.0)) + self.assertEqual(p[-1], (8.0, 9.0)) + self.assertEqual(list(p[:1]), [(0.0, 1.0)]) ++ with self.assertRaises(TypeError) as cm: ++ p['foo'] ++ self.assertEqual( ++ str(cm.exception), ++ "Path indices must be integers, not str") + self.assertEqual( + list(p), + [(0.0, 1.0), (2.0, 3.0), (4.0, 5.0), (6.0, 7.0), (8.0, 9.0)]) +diff --git a/src/path.c b/src/path.c +index b56ea838e..d1c18c8ed 100644 +--- a/src/path.c ++++ b/src/path.c +@@ -571,7 +571,7 @@ path_subscript(PyPathObject* self, PyObject* item) { + else { + PyErr_Format(PyExc_TypeError, + "Path indices must be integers, not %.200s", +- Py_TYPE(&item)->tp_name); ++ Py_TYPE(item)->tp_name); + return NULL; + } + } diff --git a/SPECS/python-pillow.spec b/SPECS/python-pillow.spec new file mode 100644 index 0000000..804f5b3 --- /dev/null +++ b/SPECS/python-pillow.spec @@ -0,0 +1,500 @@ +%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 srcname pillow +# bootstrap building docs (pillow is required by docutils, docutils are +# required by sphinx; pillow build-requires sphinx) +%global with_docs 1 + +Name: python-%{srcname} +Version: 5.1.1 +Release: 7%{?dist} +Summary: Python image processing library + +# License: see http://www.pythonware.com/products/pil/license.htm +License: MIT +URL: http://python-pillow.github.io/ +Source0: https://github.com/python-pillow/Pillow/archive/%{version}/Pillow-%{version}.tar.gz +Patch0: 0001-Fix-potential-un-terminated-buffer-problem-CWE-120.patch +Patch1: 0002-Fix-potential-leaked-storage-issues-CWE-772.patch +Patch2: 0003-Fix-dereferencing-type-punned-pointer.patch + +BuildRequires: freetype-devel +BuildRequires: gcc +BuildRequires: ghostscript +BuildRequires: lcms2-devel +BuildRequires: libjpeg-devel +BuildRequires: libtiff-devel +BuildRequires: libwebp-devel +BuildRequires: openjpeg2-devel +BuildRequires: tk-devel +BuildRequires: zlib-devel + +BuildRequires: python3-cffi +BuildRequires: python3-devel +BuildRequires: python3-numpy +BuildRequires: python3-setuptools +%if 0%{?with_docs} +BuildRequires: python3-sphinx +BuildRequires: python3-sphinx_rtd_theme +%endif # with_docs +BuildRequires: python3-tkinter + +# For EpsImagePlugin.py +Requires: ghostscript + +%global __provides_exclude_from ^%{python3_sitearch}/PIL/.*\\.so$ + +%description +Python image processing library, fork of the Python Imaging Library (PIL) + +This library provides extensive file format support, an efficient +internal representation, and powerful image processing capabilities. + +There are these subpackages: tk (tk interface), +devel (development) and doc (documentation). + + +%package -n python3-%{srcname} +Summary: Python 3 image processing library +%{?python_provide:%python_provide python3-%{srcname}} +Provides: python3-imaging = %{version}-%{release} +# For MicImagePlugin.py, FpxImagePlugin.py + +%description -n python3-%{srcname} +Python image processing library, fork of the Python Imaging Library (PIL) + +This library provides extensive file format support, an efficient +internal representation, and powerful image processing capabilities. + +There are these subpackages: tk (tk interface), +devel (development) and doc (documentation). + + +%package -n python3-%{srcname}-devel +Summary: Development files for %{srcname} +Requires: python3-devel, libjpeg-devel, zlib-devel +Requires: python3-%{srcname}%{?_isa} = %{version}-%{release} +%{?python_provide:%python_provide python3-%{srcname}-devel} +Provides: python3-imaging-devel = %{version}-%{release} + +%description -n python3-%{srcname}-devel +Development files for %{srcname}. + + +%package -n python3-%{srcname}-doc +Summary: Documentation for %{srcname} +BuildArch: noarch +Requires: python3-%{srcname} = %{version}-%{release} +%{?python_provide:%python_provide python3-%{srcname}-doc} +Provides: python3-imaging-doc = %{version}-%{release} + +%description -n python3-%{srcname}-doc +Documentation for %{srcname}. + + +%package -n python3-%{srcname}-tk +Summary: Tk interface for %{srcname} +Requires: python3-tkinter +Requires: python3-%{srcname}%{?_isa} = %{version}-%{release} +%{?python_provide:%python_provide python3-%{srcname}-tk} +Provides: python3-imaging-tk = %{version}-%{release} + +%description -n python3-%{srcname}-tk +Tk interface for %{name}. + + +%prep +%autosetup -p1 -n Pillow-%{version} + + +%build +%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 # with_docs + + +%install +install -d %{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 -R $PWD/selftest.py $PWD/build/%py3_libbuilddir/selftest.py +pushd build/%py3_libbuilddir +PYTHONPATH=$PWD %{__python3} selftest.py +popd + + +%files -n python3-%{srcname} +%doc README.rst CHANGES.rst +%license docs/COPYING +%{python3_sitearch}/* +# These are in subpackages +%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-%{srcname}-devel +%{py3_incdir}/Imaging/ + +%files -n python3-%{srcname}-doc +%if 0%{?with_docs} +%doc docs/_build_py3/html +%endif # with_docs + +%files -n python3-%{srcname}-tk +%{python3_sitearch}/PIL/_imagingtk* +%{python3_sitearch}/PIL/ImageTk* +%{python3_sitearch}/PIL/SpiderImagePlugin* +%{python3_sitearch}/PIL/__pycache__/ImageTk* +%{python3_sitearch}/PIL/__pycache__/SpiderImagePlugin* + + +%changelog +* Tue Nov 27 2018 Lumír Balhar - 5.1.1-7 +- Add upstream patch to solve build-time warning +- Move patches to dist-git +- Resolves: rhbz#1639348 + +* Mon Oct 15 2018 Lumír Balhar - 5.1.1-6 +- Add patches to fix issues found by static code analysis +- Resolves: rhbz#1602669 + +* Wed Jun 27 2018 Petr Viktorin - 5.1.1-5 +- Correct dependency on python3-tkinter + +* Tue Jun 19 2018 Petr Viktorin - 5.1.1-4 +- Drop dependency on python3-olefile (breaking MicImagePlugin.py, FpxImagePlugin) + +* Thu Jun 14 2018 Petr Viktorin - 5.1.1-3 +- Remove the Python 2 subpackage +- Remove the libimagequant dependency + The imagequant library was only used to support a non-default image + quantization mode. + +* Thu May 31 2018 Petr Viktorin - 5.1.1-2 +- Remove the python2 version of docs +- Remove Qt subpackages +- Drop dependency on python2-olefile (breaking MicImagePlugin.py, FpxImagePlugin) + +* Wed Apr 25 2018 Sandro Mani - 5.1.1-1 +- Update to 5.1.1 + +* Thu Apr 05 2018 Sandro Mani - 5.1.0-1 +- Update to 5.1.0 + +* Wed Mar 07 2018 Sandro Mani - 5.0.0-3 +- Add missing BR: gcc + +* Fri Feb 09 2018 Fedora Release Engineering - 5.0.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Wed Jan 03 2018 Sandro Mani - 5.0.0-1 +- Update to 5.0.0 + +* Tue Oct 03 2017 Sandro Mani - 4.3.0-1 +- Update to 4.3.0 + +* Tue Sep 05 2017 Troy Dawson - 4.2.1-5 +- Cleanup spec file conditionals + +* Thu Aug 03 2017 Fedora Release Engineering - 4.2.1-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild + +* Thu Jul 27 2017 Fedora Release Engineering - 4.2.1-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Fri Jul 07 2017 Igor Gnatenko - 4.2.1-2 +- Rebuild due to bug in RPM (RHBZ #1468476) + +* Thu Jul 06 2017 Sandro Mani - 4.2.1-1 +- Update to 4.2.1 + +* Sat Jul 01 2017 Sandro Mani - 4.2.0-1 +- Update to 4.2.0 + +* Fri Apr 28 2017 Sandro Mani - 4.1.1-1 +- Update to 4.1.1 + +* Wed Apr 05 2017 Sandro Mani - 4.1.0-1 +- Update to 4.1.0 + +* Wed Feb 15 2017 Sandro Mani - 4.0.0-3 +- Fix some __pycache__ files in wrong subpackage (#1422606) + +* Wed Feb 01 2017 Sandro Mani - 4.0.0-2 +- Rebuild (libwebp) + +* Tue Jan 03 2017 Sandro Mani - 4.0.0-1 +- Update to 4.0.0 + +* Mon Dec 12 2016 Miro Hrončok - 3.4.2-3 +- Enable docs build + +* Mon Dec 12 2016 Miro Hrončok - 3.4.2-2 +- Rebuild for Python 3.6 + +* Wed Oct 19 2016 Sandro Mani - 3.4.2-1 +- Update to 3.4.2 + +* Tue Oct 04 2016 Sandro Mani - 3.4.1-1 +- Update to 3.4.1 + +* Mon Oct 03 2016 Sandro Mani - 3.4.0-1 +- Update to 3.4.0 + +* Thu Aug 18 2016 Sandro Mani - 3.3.1-1 +- Update to 3.3.1 + +* Tue Jul 19 2016 Fedora Release Engineering - 3.3.0-2 +- https://fedoraproject.org/wiki/Changes/Automatic_Provides_for_Python_RPM_Packages + +* Sat Jul 02 2016 Sandro Mani - 3.3.0-1 +- Update to 3.3.0 +- Modernize spec + +* Fri Apr 01 2016 Sandro Mani - 3.2.0-1 +- Update to 3.2.0 + +* Wed Feb 10 2016 Sandro Mani - 3.1.1-3 +- Fix broken python3-pillow package description + +* Sun Feb 07 2016 Igor Gnatenko - 3.1.1-2 +- Fix provides + +* Thu Feb 04 2016 Sandro Mani - 3.1.1-1 +- Update to 3.1.1 +- Fixes CVE-2016-0740, CVE-2016-0775 + +* Mon Jan 11 2016 Toshio Kuratomi - 3.1.0-2 +- Fix executable files in doc package bringing in python 2 for the python3 doc + packages + +* Mon Jan 04 2016 Sandro Mani - 3.1.0-1 +- Update to 3.1.0 + +* Tue Dec 29 2015 Igor Gnatenko - 3.0.0-5 +- Build with docs + +* Mon Dec 28 2015 Igor Gnatenko - 3.0.0-4 +- Rebuilt for libwebp soname bump + +* Wed Oct 14 2015 Robert Kuska - 3.0.0-3 +- Rebuilt for Python3.5 rebuild with docs + +* Tue Oct 13 2015 Robert Kuska - 3.0.0-2 +- Rebuilt for Python3.5 rebuild without docs + +* Fri Oct 02 2015 Sandro Mani - 3.0.0-1 +- Update to 3.0.0 + +* Wed Jul 29 2015 Sandro Mani - 2.9.0-2 +- Fix python3-pillow-tk Requires: tkinter -> python3-tkinter (#1248085) + +* Thu Jul 02 2015 Sandro Mani - 2.9.0-1 +- Update to 2.9.0 + +* Thu Jun 18 2015 Fedora Release Engineering - 2.8.2-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild + +* Mon Jun 08 2015 Sandro Mani - 2.8.2-1 +- Update to 2.8.2 + +* Thu Apr 02 2015 Sandro Mani - 2.8.1-1 +- Update to 2.8.1 + +* Wed Apr 01 2015 Sandro Mani - 2.8.0-1 +- Update to 2.8.0 + +* Mon Jan 12 2015 Sandro Mani - 2.7.0-1 +- Update to 2.7.0 +- Drop sane subpackage, is in python-sane now +- Fix python3 headers directory +- Drop Obsoletes: python3-pillow on python3-pillow-qt + +* Mon Oct 13 2014 Sandro Mani - 2.6.1-1 +- Update to 2.6.1 + +* Thu Oct 02 2014 Sandro Mani - 2.6.0-1 +- Update to 2.6.0 + +* Wed Aug 20 2014 Sandro Mani - 2.5.3-3 +- Rebuilding again to resolve transient build error that caused BZ#1131723 + +* Tue Aug 19 2014 Stephen Gallagher - 2.5.3-2 +- Rebuilding to resolve transient build error that caused BZ#1131723 + +* Tue Aug 19 2014 Sandro Mani - 2.5.3-1 +- Update to 2.5.3 (Fix CVE-2014-3598, a DOS in the Jpeg2KImagePlugin) + +* Sun Aug 17 2014 Fedora Release Engineering - 2.5.2-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild + +* Wed Aug 13 2014 Sandro Mani - 2.5.2-1 +- Update to 2.5.2 (Fix CVE-2014-3589, a DOS in the IcnsImagePlugin) + +* Sat Jul 26 2014 Sandro Mani - 2.5.1-2 +- Reenable jpeg2k tests on big endian arches + +* Tue Jul 15 2014 Sandro Mani - 2.5.1-1 +- Update to 2.5.1 + +* Wed Jul 02 2014 Sandro Mani - 2.5.0-1 +- Update to 2.5.0 + +* Sat Jun 07 2014 Fedora Release Engineering - 2.4.0-11 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild + +* Wed May 28 2014 Sandro Mani - 2.4.0-10 +- Rebuild with docs enabled +- Update python-pillow_openjpeg-2.1.0.patch + +* Tue May 27 2014 Sandro Mani - 2.4.0-9 +- Rebuild against openjpeg-2.1.0 + +* Fri May 23 2014 Dan Horák - 2.4.0-8 +- skip jpeg2k tests on big endian arches (#1100762) + +* Wed May 21 2014 Jaroslav Škarvada - 2.4.0-7 +- Rebuilt for https://fedoraproject.org/wiki/Changes/f21tcl86 + +* Tue May 13 2014 Bohuslav Kabrda - 2.4.0-6 +- Set with_docs to 1 to build docs. + +* Tue May 13 2014 Bohuslav Kabrda - 2.4.0-5 +- Bootstrap building sphinx docs because of circular dependency with sphinx. + +* Fri May 9 2014 Orion Poplawski - 2.4.0-4 +- Rebuild for Python 3.4 + +* Tue Apr 22 2014 Sandro Mani - 2.4.0-3 +- Add patch: Have the tempfile use a suffix with a dot + +* Thu Apr 17 2014 Sandro Mani - 2.4.0-2 +- Enable Jpeg2000 support +- Enable webp support also on s390* archs, bug #962091 is now fixed +- Add upstream patch for ghostscript detection + +* Wed Apr 02 2014 Sandro Mani - 2.4.0-1 +- Update to 2.4.0 + +* Wed Mar 19 2014 Sandro Mani - 2.3.1-1 +- Update to 2.3.1 (Fix insecure use of tempfile.mktemp (CVE-2014-1932 CVE-2014-1933)) + +* Thu Mar 13 2014 Jakub Dorňák - 2.3.0-5 +- python-pillow does not provide python3-imaging + (python3-pillow does) + +* Tue Jan 07 2014 Sandro Mani - 2.3.0-4 +- Add missing ghostscript Requires and BuildRequires + +* Mon Jan 06 2014 Sandro Mani - 2.3.0-3 +- Remove python-pillow_help-theme.patch, add python-sphinx-theme-better BR + +* Sun Jan 05 2014 Sandro Mani - 2.3.0-2 +- Rebuild with docs enabled +- Change lcms BR to lcms2 + +* Thu Jan 02 2014 Sandro Mani - 2.3.0-1 +- Update to 2.3.0 +- Build with doc disabled to break circular python-pillow -> python-sphinx -> python pillow dependency + +* Wed Oct 23 2013 Sandro Mani - 2.2.1-2 +- Backport fix for decoding tiffs with correct byteorder, fixes rhbz#1019656 + +* Wed Oct 02 2013 Sandro Mani - 2.2.1-1 +- Update to 2.2.1 +- Really enable webp on ppc, but leave disabled on s390 + +* Thu Aug 29 2013 Sandro Mani - 2.1.0-4 +- Add patch to fix incorrect PyArg_ParseTuple tuple signature, fixes rhbz#962091 and rhbz#988767. +- Renable webp support on bigendian arches + +* Wed Aug 28 2013 Sandro Mani - 2.1.0-3 +- Add patch to fix memory corruption caused by invalid palette size, see rhbz#1001122 + +* Tue Jul 30 2013 Karsten Hopp 2.1.0-2 +- Build without webp support on ppc* archs (#988767) + +* Wed Jul 03 2013 Sandro Mani - 2.1.0-1 +- Update to 2.1.0 +- Run tests in builddir, not installroot +- Build python3-pillow docs with python3 +- python-pillow_endian.patch upstreamed + +* Mon May 13 2013 Roman Rakus - 2.0.0-10 +- Build without webp support on s390* archs + Resolves: rhbz#962059 + +* Sat May 11 2013 Roman Rakus - 2.0.0-9.gitd1c6db8 +- Conditionaly disable build of python3 parts on RHEL system + +* Wed May 08 2013 Sandro Mani - 2.0.0-8.gitd1c6db8 +- Add patch to fix test failure on big-endian + +* Thu Apr 25 2013 Toshio Kuratomi - 2.0.0-7.gitd1c6db8 +- Remove Obsoletes in the python-pillow-qt subpackage. Obsoletes isn't + appropriate since qt support didn't exist in the previous python-pillow + package so there's no reason to drag in python-pillow-qt when updating + python-pillow. + +* Fri Apr 19 2013 Sandro Mani - 2.0.0-6.gitd1c6db8 +- Update to latest git +- python-pillow_quantization.patch now upstream +- python-pillow_endianness.patch now upstream +- Add subpackage for ImageQt module, with correct dependencies +- Add PyQt4 and numpy BR (for generating docs / running tests) + +* Mon Apr 08 2013 Sandro Mani - 2.0.0-5.git93a488e +- Reenable tests on bigendian, add patches for #928927 + +* Sun Apr 07 2013 Sandro Mani - 2.0.0-4.git93a488e +- Update to latest git +- disable tests on bigendian (PPC*, S390*) until rhbz#928927 is fixed + +* Fri Mar 22 2013 Sandro Mani - 2.0.0-3.gitde210a2 +- python-pillow_tempfile.patch now upstream +- Add python3-imaging provides (bug #924867) + +* Fri Mar 22 2013 Sandro Mani - 2.0.0-2.git2e88848 +- Update to latest git +- Remove python-pillow-disable-test.patch, gcc is now fixed +- Add python-pillow_tempfile.patch to prevent a temporary file from getting packaged + +* Tue Mar 19 2013 Sandro Mani - 2.0.0-1.git2f4207c +- Update to 2.0.0 git snapshot +- Enable python3 packages +- Add libwebp-devel BR for Pillow 2.0.0 + +* Wed Mar 13 2013 Peter Robinson 1.7.8-6.20130305git +- Add ARM support + +* Tue Mar 12 2013 Karsten Hopp 1.7.8-5.20130305git +- add s390* and ppc* to arch detection + +* Tue Mar 05 2013 Sandro Mani - 1.7.8-4.20130305git7866759 +- Update to latest git snapshot +- 0001-Cast-hash-table-values-to-unsigned-long.patch now upstream +- Pillow-1.7.8-selftest.patch now upstream + +* Mon Feb 25 2013 Sandro Mani - 1.7.8-3.20130210gite09ff61 +- Really remove -fno-strict-aliasing +- Place comment on how to retreive source just above the Source0 line + +* Mon Feb 18 2013 Sandro Mani - 1.7.8-2.20130210gite09ff61 +- Rebuild without -fno-strict-aliasing +- Add patch for upstream issue #52 + +* Sun Feb 10 2013 Sandro Mani - 1.7.8-1.20130210gite09ff61 +- Initial RPM package