Note: This is a public test instance of Red Hat Bugzilla. The data contained within is a snapshot of the live data so any changes you make will not be reflected in the production Bugzilla. Email is disabled so feel free to test any aspect of the site that you want. File any problems you find or give feedback at bugzilla.redhat.com.
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 2022-05-16 11:32:56 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.