Bug 1701932 - python2-matplotlib FTBFS on s390x
Summary: python2-matplotlib FTBFS on s390x
Keywords:
Status: CLOSED RAWHIDE
Alias: None
Product: Fedora
Classification: Fedora
Component: python2-matplotlib
Version: rawhide
Hardware: s390x
OS: Linux
unspecified
unspecified
Target Milestone: ---
Assignee: Mattias Ellert
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On: 1706450
Blocks: ZedoraTracker F31FTBFS 1634979 PY2FTBI 1732841
TreeView+ depends on / blocked
 
Reported: 2019-04-22 13:37 UTC by Miro Hrončok
Modified: 2019-07-31 22:40 UTC (History)
3 users (show)

Fixed In Version: python2-matplotlib-2.2.4-3.fc31
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
Environment:
Last Closed: 2019-06-03 15:27:26 UTC
Type: Bug
Embargoed:


Attachments (Terms of Use)
build.log from Koji (1.44 MB, text/plain)
2019-04-22 13:37 UTC, Miro Hrončok
no flags Details
root.log from Koji (137.20 KB, text/plain)
2019-04-22 13:38 UTC, Miro Hrončok
no flags Details


Links
System ID Private Priority Status Summary Last Updated
Red Hat Bugzilla 1702273 0 unspecified CLOSED python-matplotlib FTBFS on s390x 2021-02-22 00:41:40 UTC

Internal Links: 1702273

Description Miro Hrončok 2019-04-22 13:37:51 UTC
Created attachment 1557161 [details]
build.log from Koji

python2-matplotlib doesn't pass %check on s390x.

Logs attached.

Comment 1 Miro Hrončok 2019-04-22 13:38:21 UTC
Created attachment 1557162 [details]
root.log from Koji

Comment 2 Miro Hrončok 2019-04-22 17:56:16 UTC
5 test failures:

=================================== FAILURES ===================================
_______________ test_save_animation_smoketest[pillow-movie.gif] ________________
[gw0] linux2 -- Python 2.7.16 /usr/bin/python2
tmpdir = local('/tmp/pytest-of-mockbuild/pytest-0/popen-gw0/test_save_animation_smoketest_3')
writer = 'pillow', output = 'movie.gif'
    @pytest.mark.parametrize('writer, output', WRITER_OUTPUT)
    def test_save_animation_smoketest(tmpdir, writer, output):
        try:
            # for ImageMagick the rcparams must be patched to account for
            # 'convert' being a built in MS tool, not the imagemagick
            # tool.
            writer._init_from_registry()
        except AttributeError:
            pass
        if not animation.writers.is_available(writer):
            pytest.skip("writer '%s' not available on this system" % writer)
        fig, ax = plt.subplots()
        line, = ax.plot([], [])
    
        ax.set_xlim(0, 10)
        ax.set_ylim(-1, 1)
    
        dpi = None
        codec = None
        if writer == 'ffmpeg':
            # Issue #8253
            fig.set_size_inches((10.85, 9.21))
            dpi = 100.
            codec = 'h264'
    
        def init():
            line.set_data([], [])
            return line,
    
        def animate(i):
            x = np.linspace(0, 10, 100)
            y = np.sin(x + i)
            line.set_data(x, y)
            return line,
    
        # Use temporary directory for the file-based writers, which produce a file
        # per frame with known names.
        with tmpdir.as_cwd():
            anim = animation.FuncAnimation(fig, animate, init_func=init, frames=5)
            try:
                anim.save(output, fps=30, writer=writer, bitrate=500, dpi=dpi,
>                         codec=codec)
../../BUILDROOT/python2-matplotlib-2.2.4-2.fc31.s390x/usr/lib64/python2.7/site-packages/matplotlib/tests/test_animation.py:174: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
../../BUILDROOT/python2-matplotlib-2.2.4-2.fc31.s390x/usr/lib64/python2.7/site-packages/matplotlib/animation.py:1200: in save
    writer.grab_frame(**savefig_kwargs)
/usr/lib64/python2.7/contextlib.py:24: in __exit__
    self.gen.next()
../../BUILDROOT/python2-matplotlib-2.2.4-2.fc31.s390x/usr/lib64/python2.7/site-packages/matplotlib/animation.py:241: in saving
    self.finish()
../../BUILDROOT/python2-matplotlib-2.2.4-2.fc31.s390x/usr/lib64/python2.7/site-packages/matplotlib/animation.py:612: in finish
    duration=int(1000 / self.fps))
/usr/lib64/python2.7/site-packages/PIL/Image.py:2007: in save
    save_handler(self, fp, filename)
/usr/lib64/python2.7/site-packages/PIL/GifImagePlugin.py:490: in _save_all
    _save(im, fp, filename, save_all=True)
/usr/lib64/python2.7/site-packages/PIL/GifImagePlugin.py:501: in _save
    if not save_all or not _write_multiple_frames(im, fp, palette):
/usr/lib64/python2.7/site-packages/PIL/GifImagePlugin.py:485: in _write_multiple_frames
    _write_frame_data(fp, im_frame, offset, frame_data['encoderinfo'])
/usr/lib64/python2.7/site-packages/PIL/GifImagePlugin.py:774: in _write_frame_data
    RAWMODE[im_frame.mode])])
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
im = <PIL.Image.Image image mode=P size=640x480 at 0x3FF8FFF0320>
fp = <closed file 'movie.gif', mode 'w+b' at 0x3ff8e011300>
tile = [('gif', (0, 0, 640, 480), 0, 'P')], bufsize = 65536
    def _save(im, fp, tile, bufsize=0):
        """Helper to save image based on tile list
    
        :param im: Image object.
        :param fp: File object.
        :param tile: Tile list.
        :param bufsize: Optional buffer size
        """
    
        im.load()
        if not hasattr(im, "encoderconfig"):
            im.encoderconfig = ()
        tile.sort(key=_tilesort)
        # FIXME: make MAXBLOCK a configuration parameter
        # It would be great if we could have the encoder specify what it needs
        # But, it would need at least the image size in most cases. RawEncode is
        # a tricky case.
        bufsize = max(MAXBLOCK, bufsize, im.size[0] * 4)  # see RawEncode.c
        if fp == sys.stdout:
            fp.flush()
            return
        try:
            fh = fp.fileno()
            fp.flush()
        except (AttributeError, io.UnsupportedOperation):
            # compress to Python file-compatible object
            for e, b, o, a in tile:
                e = Image._getencoder(im.mode, e, a, im.encoderconfig)
                if o > 0:
                    fp.seek(o)
                e.setimage(im.im, b)
                if e.pushes_fd:
                    e.setfd(fp)
                    l, s = e.encode_to_pyfd()
                else:
                    while True:
                        l, s, d = e.encode(bufsize)
                        fp.write(d)
                        if s:
                            break
                if s < 0:
                    raise IOError("encoder error %d when writing image file" % s)
                e.cleanup()
        else:
            # slight speedup: compress to real file object
            for e, b, o, a in tile:
                e = Image._getencoder(im.mode, e, a, im.encoderconfig)
                if o > 0:
                    fp.seek(o)
>               e.setimage(im.im, b)
E               SystemError: tile cannot extend outside image
/usr/lib64/python2.7/site-packages/PIL/ImageFile.py:515: SystemError
________________________________ test_jpeg_dpi _________________________________
[gw1] linux2 -- Python 2.7.16 /usr/bin/python2
    @pytest.mark.backend('Agg')
    def test_jpeg_dpi():
        Image = pytest.importorskip("PIL.Image")
        # Check that dpi is set correctly in jpg files.
        plt.plot([0, 1, 2], [0, 1, 0])
        buf = io.BytesIO()
>       plt.savefig(buf, format="jpg", dpi=200)
../../BUILDROOT/python2-matplotlib-2.2.4-2.fc31.s390x/usr/lib64/python2.7/site-packages/matplotlib/tests/test_agg.py:241: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
../../BUILDROOT/python2-matplotlib-2.2.4-2.fc31.s390x/usr/lib64/python2.7/site-packages/matplotlib/pyplot.py:695: in savefig
    res = fig.savefig(*args, **kwargs)
../../BUILDROOT/python2-matplotlib-2.2.4-2.fc31.s390x/usr/lib64/python2.7/site-packages/matplotlib/figure.py:2062: in savefig
    self.canvas.print_figure(fname, **kwargs)
../../BUILDROOT/python2-matplotlib-2.2.4-2.fc31.s390x/usr/lib64/python2.7/site-packages/matplotlib/backend_bases.py:2263: in print_figure
    **kwargs)
../../BUILDROOT/python2-matplotlib-2.2.4-2.fc31.s390x/usr/lib64/python2.7/site-packages/matplotlib/backends/backend_agg.py:588: in print_jpg
    return background.save(filename_or_obj, format='jpeg', **options)
/usr/lib64/python2.7/site-packages/PIL/Image.py:2007: in save
    save_handler(self, fp, filename)
/usr/lib64/python2.7/site-packages/PIL/JpegImagePlugin.py:765: in _save
    ImageFile._save(im, fp, [("jpeg", (0, 0)+im.size, 0, rawmode)], bufsize)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
im = <PIL.Image.Image image mode=RGB size=1600x1200 at 0x3FF6FE77EB8>
fp = <_io.BytesIO object at 0x3ff6f9d6fc0>
tile = [('jpeg', (0, 0, 1600, 1200), 0, 'RGB')], bufsize = 65536
    def _save(im, fp, tile, bufsize=0):
        """Helper to save image based on tile list
    
        :param im: Image object.
        :param fp: File object.
        :param tile: Tile list.
        :param bufsize: Optional buffer size
        """
    
        im.load()
        if not hasattr(im, "encoderconfig"):
            im.encoderconfig = ()
        tile.sort(key=_tilesort)
        # FIXME: make MAXBLOCK a configuration parameter
        # It would be great if we could have the encoder specify what it needs
        # But, it would need at least the image size in most cases. RawEncode is
        # a tricky case.
        bufsize = max(MAXBLOCK, bufsize, im.size[0] * 4)  # see RawEncode.c
        if fp == sys.stdout:
            fp.flush()
            return
        try:
            fh = fp.fileno()
            fp.flush()
        except (AttributeError, io.UnsupportedOperation):
            # compress to Python file-compatible object
            for e, b, o, a in tile:
                e = Image._getencoder(im.mode, e, a, im.encoderconfig)
                if o > 0:
                    fp.seek(o)
>               e.setimage(im.im, b)
E               SystemError: tile cannot extend outside image
/usr/lib64/python2.7/site-packages/PIL/ImageFile.py:496: SystemError
_________________________________ test_jpeg_2d _________________________________
[gw1] linux2 -- Python 2.7.16 /usr/bin/python2
    def test_jpeg_2d():
        Image = pytest.importorskip('PIL.Image')
        # smoke test that mode-L pillow images work.
        imd = np.ones((10, 10), dtype='uint8')
        for i in range(10):
            imd[i, :] = np.linspace(0.0, 1.0, 10) * 255
        im = Image.new('L', (10, 10))
        im.putdata(imd.flatten())
        fig, ax = plt.subplots()
>       ax.imshow(im)
../../BUILDROOT/python2-matplotlib-2.2.4-2.fc31.s390x/usr/lib64/python2.7/site-packages/matplotlib/tests/test_image.py:501: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
../../BUILDROOT/python2-matplotlib-2.2.4-2.fc31.s390x/usr/lib64/python2.7/site-packages/matplotlib/__init__.py:1869: in inner
    return func(ax, *args, **kwargs)
../../BUILDROOT/python2-matplotlib-2.2.4-2.fc31.s390x/usr/lib64/python2.7/site-packages/matplotlib/axes/_axes.py:5501: in imshow
    im.set_data(X)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <matplotlib.image.AxesImage object at 0x3ff6f7536a0>
A = <PIL.Image.Image image mode=L size=10x10 at 0x3FF6FE427B8>
    def set_data(self, A):
        """
        Set the image array.
    
        ACCEPTS: numpy/PIL Image A
    
        Note that this function does *not* update the normalization used.
        """
        self._A = cbook.safe_masked_invalid(A, copy=True)
    
        if (self._A.dtype != np.uint8 and
                not np.can_cast(self._A.dtype, float, "same_kind")):
>           raise TypeError("Image data cannot be converted to float")
E           TypeError: Image data cannot be converted to float
../../BUILDROOT/python2-matplotlib-2.2.4-2.fc31.s390x/usr/lib64/python2.7/site-packages/matplotlib/image.py:642: TypeError
____________________________ test_imread_pil_uint16 ____________________________
[gw0] linux2 -- Python 2.7.16 /usr/bin/python2
    def test_imread_pil_uint16():
        pytest.importorskip("PIL")
        img = plt.imread(os.path.join(os.path.dirname(__file__),
>                        'baseline_images', 'test_image', 'uint16.tif'))
../../BUILDROOT/python2-matplotlib-2.2.4-2.fc31.s390x/usr/lib64/python2.7/site-packages/matplotlib/tests/test_image.py:111: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
../../BUILDROOT/python2-matplotlib-2.2.4-2.fc31.s390x/usr/lib64/python2.7/site-packages/matplotlib/pyplot.py:2373: in imread
    return _imread(*args, **kwargs)
../../BUILDROOT/python2-matplotlib-2.2.4-2.fc31.s390x/usr/lib64/python2.7/site-packages/matplotlib/image.py:1349: in imread
    im = pilread(fname)
../../BUILDROOT/python2-matplotlib-2.2.4-2.fc31.s390x/usr/lib64/python2.7/site-packages/matplotlib/image.py:1328: in pilread
    return pil_to_array(image)
../../BUILDROOT/python2-matplotlib-2.2.4-2.fc31.s390x/usr/lib64/python2.7/site-packages/matplotlib/image.py:1440: in pil_to_array
    raw = pilImage.tobytes('raw', pilImage.mode)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <PIL.TiffImagePlugin.TiffImageFile image mode=I;16 size=64x64 at 0x3FF8F3737F0>
encoder_name = 'raw', args = ('I;16',)
e = <ImagingEncoder object at 0x3ff8fa52608>, bufsize = 65536, data = []
    def tobytes(self, encoder_name="raw", *args):
        """
        Return image as a bytes object.
    
        .. warning::
    
            This method returns the raw image data from the internal
            storage.  For compressed image data (e.g. PNG, JPEG) use
            :meth:`~.save`, with a BytesIO parameter for in-memory
            data.
    
        :param encoder_name: What encoder to use.  The default is to
                             use the standard "raw" encoder.
        :param args: Extra arguments to the encoder.
        :rtype: A bytes object.
        """
    
        # may pass tuple instead of argument list
        if len(args) == 1 and isinstance(args[0], tuple):
            args = args[0]
    
        if encoder_name == "raw" and args == ():
            args = self.mode
    
        self.load()
    
        # unpack data
        e = _getencoder(self.mode, encoder_name, args)
        e.setimage(self.im)
    
        bufsize = max(65536, self.size[0] * 4)  # see RawEncode.c
    
        data = []
        while True:
>           l, s, d = e.encode(bufsize)
E           MemoryError
/usr/lib64/python2.7/site-packages/PIL/Image.py:756: MemoryError
_______________________________ test_jpeg_alpha ________________________________
[gw0] linux2 -- Python 2.7.16 /usr/bin/python2
    def test_jpeg_alpha():
        Image = pytest.importorskip('PIL.Image')
    
        plt.figure(figsize=(1, 1), dpi=300)
        # Create an image that is all black, with a gradient from 0-1 in
        # the alpha channel from left to right.
        im = np.zeros((300, 300, 4), dtype=float)
        im[..., 3] = np.linspace(0.0, 1.0, 300)
    
        plt.figimage(im)
    
        buff = io.BytesIO()
        with rc_context({'savefig.facecolor': 'red'}):
>           plt.savefig(buff, transparent=True, format='jpg', dpi=300)
../../BUILDROOT/python2-matplotlib-2.2.4-2.fc31.s390x/usr/lib64/python2.7/site-packages/matplotlib/tests/test_image.py:517: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
../../BUILDROOT/python2-matplotlib-2.2.4-2.fc31.s390x/usr/lib64/python2.7/site-packages/matplotlib/pyplot.py:695: in savefig
    res = fig.savefig(*args, **kwargs)
../../BUILDROOT/python2-matplotlib-2.2.4-2.fc31.s390x/usr/lib64/python2.7/site-packages/matplotlib/figure.py:2062: in savefig
    self.canvas.print_figure(fname, **kwargs)
../../BUILDROOT/python2-matplotlib-2.2.4-2.fc31.s390x/usr/lib64/python2.7/site-packages/matplotlib/backend_bases.py:2263: in print_figure
    **kwargs)
../../BUILDROOT/python2-matplotlib-2.2.4-2.fc31.s390x/usr/lib64/python2.7/site-packages/matplotlib/backends/backend_agg.py:588: in print_jpg
    return background.save(filename_or_obj, format='jpeg', **options)
/usr/lib64/python2.7/site-packages/PIL/Image.py:2007: in save
    save_handler(self, fp, filename)
/usr/lib64/python2.7/site-packages/PIL/JpegImagePlugin.py:765: in _save
    ImageFile._save(im, fp, [("jpeg", (0, 0)+im.size, 0, rawmode)], bufsize)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
im = <PIL.Image.Image image mode=RGB size=300x300 at 0x3FF8DA8AE48>
fp = <_io.BytesIO object at 0x3ff8f39b938>
tile = [('jpeg', (0, 0, 300, 300), 0, 'RGB')], bufsize = 65536
    def _save(im, fp, tile, bufsize=0):
        """Helper to save image based on tile list
    
        :param im: Image object.
        :param fp: File object.
        :param tile: Tile list.
        :param bufsize: Optional buffer size
        """
    
        im.load()
        if not hasattr(im, "encoderconfig"):
            im.encoderconfig = ()
        tile.sort(key=_tilesort)
        # FIXME: make MAXBLOCK a configuration parameter
        # It would be great if we could have the encoder specify what it needs
        # But, it would need at least the image size in most cases. RawEncode is
        # a tricky case.
        bufsize = max(MAXBLOCK, bufsize, im.size[0] * 4)  # see RawEncode.c
        if fp == sys.stdout:
            fp.flush()
            return
        try:
            fh = fp.fileno()
            fp.flush()
        except (AttributeError, io.UnsupportedOperation):
            # compress to Python file-compatible object
            for e, b, o, a in tile:
                e = Image._getencoder(im.mode, e, a, im.encoderconfig)
                if o > 0:
                    fp.seek(o)
>               e.setimage(im.im, b)
E               SystemError: tile cannot extend outside image
/usr/lib64/python2.7/site-packages/PIL/ImageFile.py:496: SystemError


Note You need to log in before you can comment on or make changes to this bug.