Bug 1509657 - Should matplotlib depend on texlive and perl?
Summary: Should matplotlib depend on texlive and perl?
Keywords:
Status: CLOSED RAWHIDE
Alias: None
Product: Fedora
Classification: Fedora
Component: python-matplotlib
Version: rawhide
Hardware: Unspecified
OS: Unspecified
unspecified
unspecified
Target Milestone: ---
Assignee: Miro Hrončok
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
: 1847729 (view as bug list)
Depends On: 1838207
Blocks:
TreeView+ depends on / blocked
 
Reported: 2017-11-05 13:36 UTC by Miro Hrončok
Modified: 2020-06-30 05:47 UTC (History)
12 users (show)

Fixed In Version: python-matplotlib-3.3.0-0.1.rc1.fc33
Clone Of:
Environment:
Last Closed: 2020-06-30 05:47:21 UTC
Type: Bug
Embargoed:


Attachments (Terms of Use)

Description Miro Hrončok 2017-11-05 13:36:45 UTC
I've just realized that matplotlib requires texlive and perl. I wonder if this is really necessary, for example if I want to produce some nice graphs in an IPython Jupyter Notebbok, do I need texlive to do that?

This is what goes in when I install python3-matplotlib to a fresh mock.

Installed:
  python3-matplotlib.x86_64 2.0.0-3.fc27                                   cairo.x86_64 1.15.8-1.fc28                                                    dejavu-fonts-common.noarch 2.35-5.fc27                                 
  dejavu-sans-fonts.noarch 2.35-5.fc27                                     fontconfig.x86_64 2.12.6-3.fc28                                               fontpackages-filesystem.noarch 1.44-19.fc27                            
  freetype.x86_64 2.8-7.fc28                                               gd.x86_64 2.2.5-1.fc28                                                        groff-base.x86_64 1.22.3-11.fc27                                       
  jbigkit-libs.x86_64 2.1-8.fc27                                           libICE.x86_64 1.0.9-11.fc27                                                   libSM.x86_64 1.2.2-7.fc27                                              
  libX11.x86_64 1.6.5-5.fc28                                               libX11-common.noarch 1.6.5-5.fc28                                             libXau.x86_64 1.0.8-10.fc28                                            
  libXext.x86_64 1.3.3-7.fc27                                              libXft.x86_64 2.3.2-7.fc27                                                    libXpm.x86_64 3.5.12-4.fc27                                            
  libXrender.x86_64 0.9.10-4.fc27                                          libgfortran.x86_64 7.2.1-1.fc28                                               libjpeg-turbo.x86_64 1.5.1-4.fc27                                      
  libpng.x86_64 2:1.6.34-1.fc28                                            libqhull.x86_64 2015.2-4.fc27                                                 libquadmath.x86_64 7.2.1-1.fc28                                        
  libtiff.x86_64 4.0.8-3.fc27                                              libwebp.x86_64 0.6.0-4.fc27                                                   libxcb.x86_64 1.12-5.fc27                                              
  openblas.x86_64 0.2.20-3.fc28                                            openblas-threads.x86_64 0.2.20-3.fc28                                         perl-Carp.noarch 1.42-394.fc27                                         
  perl-Data-Dumper.x86_64 2.167-396.fc27                                   perl-Digest.noarch 1.17-394.fc27                                              perl-Digest-MD5.x86_64 2.55-395.fc27                                   
  perl-Encode.x86_64 4:2.93-15.fc28                                        perl-Errno.x86_64 1.28-401.fc28                                               perl-Exporter.noarch 5.72-395.fc27                                     
  perl-File-Path.noarch 2.15-1.fc27                                        perl-File-Temp.noarch 0.230.400-394.fc27                                      perl-Filter.x86_64 2:1.57-6.fc27                                       
  perl-Getopt-Long.noarch 1:2.50-3.fc27                                    perl-HTTP-Tiny.noarch 0.070-394.fc27                                          perl-IO.x86_64 1.38-401.fc28                                           
  perl-MIME-Base64.x86_64 3.15-395.fc27                                    perl-PathTools.x86_64 3.67-395.fc27                                           perl-Pod-Escapes.noarch 1:1.07-394.fc27                                
  perl-Pod-Perldoc.noarch 3.28-395.fc27                                    perl-Pod-Simple.noarch 1:3.35-394.fc27                                        perl-Pod-Usage.noarch 4:1.69-394.fc27                                  
  perl-Scalar-List-Utils.x86_64 3:1.49-1.fc28                              perl-Socket.x86_64 4:2.024-5.fc27                                             perl-Storable.x86_64 1:2.62-395.fc27                                   
  perl-Term-ANSIColor.noarch 4.06-395.fc27                                 perl-Term-Cap.noarch 1.17-394.fc27                                            perl-Text-ParseWords.noarch 3.30-394.fc27                              
  perl-Text-Tabs+Wrap.noarch 2013.0523-394.fc27                            perl-Text-Unidecode.noarch 1.30-4.fc27                                        perl-Time-Local.noarch 1:1.250-394.fc27                                
  perl-Unicode-Normalize.x86_64 1.25-395.fc27                              perl-XML-Parser.x86_64 2.44-9.fc27                                            perl-XML-XPath.noarch 1.42-1.fc27                                      
  perl-constant.noarch 1.33-395.fc27                                       perl-encoding.x86_64 4:2.19-15.fc28                                           perl-interpreter.x86_64 4:5.26.1-401.fc28                              
  perl-libs.x86_64 4:5.26.1-401.fc28                                       perl-macros.x86_64 4:5.26.1-401.fc28                                          perl-open.noarch 1.11-401.fc28                                         
  perl-parent.noarch 1:0.236-394.fc27                                      perl-podlators.noarch 4.09-394.fc27                                           perl-threads.x86_64 1:2.16-4.fc27                                      
  perl-threads-shared.x86_64 1.57-4.fc27                                   pixman.x86_64 0.34.0-3.fc26                                                   python-matplotlib-data.noarch 2.0.0-3.fc27                             
  python-matplotlib-data-fonts.noarch 2.0.0-3.fc27                         python3-cairo.x86_64 1.15.3-1.fc28                                            python3-cycler.noarch 0.10.0-4.fc27                                    
  python3-dateutil.noarch 1:2.6.1-1.fc28                                   python3-matplotlib-tk.x86_64 2.0.0-3.fc27                                     python3-numpy.x86_64 1:1.13.3-2.fc28                                   
  python3-pyparsing.noarch 2.1.10-4.fc27                                   python3-pytz.noarch 2017.2-4.fc28                                             python3-six.noarch 1.11.0-1.fc28                                       
  python3-tkinter.x86_64 3.6.3-2.fc28                                      tcl.x86_64 1:8.6.7-2.fc28                                                     texlive-base.noarch 6:2016-36.20160520.fc28.7                          
  texlive-dvipng.noarch 6:svn40768-36.fc28.7                               texlive-dvipng-bin.x86_64 6:svn40473-36.20160520.fc28.7                       texlive-kpathsea.noarch 6:svn41139-36.fc28.7                           
  texlive-kpathsea-bin.x86_64 6:svn40473-36.20160520.fc28.7                texlive-lib.x86_64 6:2016-36.20160520.fc28.7                                  texlive-metafont.noarch 6:svn40793-36.fc28.7                           
  texlive-metafont-bin.x86_64 6:svn40987-36.20160520.fc28.7                texlive-tetex.noarch 6:svn41059-36.fc28.7                                     texlive-tetex-bin.noarch 6:svn36770.0-36.20160520.fc28.7               
  texlive-texlive.infra.noarch 6:svn41280-36.fc28.7                        texlive-texlive.infra-bin.x86_64 6:svn40312-36.20160520.fc28.7                tk.x86_64 1:8.6.7-2.fc28

Do wee really need all of that?

(I will have a look, but I'm opening this so it's not forgotten.)

Comment 1 Elliott Sales de Andrade 2017-11-18 23:34:49 UTC
I don't know about all the packages, but LaTeX is needed if you create an artist with `usetex=True` and probably also if you try to save as a pgf/TikZ file.

Comment 2 Petr Viktorin (pviktori) 2017-11-20 10:01:42 UTC
If the user explicitly needs to say "usetex=True" or "pgf/TikZ", I'd cont that as integration with LaTex rather than a part of matplotlib's core functionality.
I think it would be fine to require installing LaTeX separately. 

If LaTeX is not installed, do these use cases give a reasonable error message?

Comment 3 Fedora End Of Life 2018-02-20 15:36:46 UTC
This bug appears to have been reported against 'rawhide' during the Fedora 28 development cycle.
Changing version to '28'.

Comment 4 Miro Hrončok 2018-12-02 00:08:07 UTC
This is still a thing to consider.

Comment 5 Miro Hrončok 2018-12-03 09:22:16 UTC
When I install matplotlib into a Python virtual environment and I don't ahve tex and I explicitly say usetex=True:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/pythonista/venv/lib64/python3.6/site-packages/matplotlib/pyplot.py", line 689, in savefig
    res = fig.savefig(*args, **kwargs)
  File "/home/pythonista/venv/lib64/python3.6/site-packages/matplotlib/figure.py", line 2094, in savefig
    self.canvas.print_figure(fname, **kwargs)
  File "/home/pythonista/venv/lib64/python3.6/site-packages/matplotlib/backend_bases.py", line 2075, in print_figure
    **kwargs)
  File "/home/pythonista/venv/lib64/python3.6/site-packages/matplotlib/backends/backend_agg.py", line 510, in print_png
    FigureCanvasAgg.draw(self)
  File "/home/pythonista/venv/lib64/python3.6/site-packages/matplotlib/backends/backend_agg.py", line 402, in draw
    self.figure.draw(self.renderer)
  File "/home/pythonista/venv/lib64/python3.6/site-packages/matplotlib/artist.py", line 50, in draw_wrapper
    return draw(artist, renderer, *args, **kwargs)
  File "/home/pythonista/venv/lib64/python3.6/site-packages/matplotlib/figure.py", line 1649, in draw
    renderer, self, artists, self.suppressComposite)
  File "/home/pythonista/venv/lib64/python3.6/site-packages/matplotlib/image.py", line 138, in _draw_list_compositing_images
    a.draw(renderer)
  File "/home/pythonista/venv/lib64/python3.6/site-packages/matplotlib/artist.py", line 50, in draw_wrapper
    return draw(artist, renderer, *args, **kwargs)
  File "/home/pythonista/venv/lib64/python3.6/site-packages/matplotlib/axes/_base.py", line 2628, in draw
    mimage._draw_list_compositing_images(renderer, self, artists)
  File "/home/pythonista/venv/lib64/python3.6/site-packages/matplotlib/image.py", line 138, in _draw_list_compositing_images
    a.draw(renderer)
  File "/home/pythonista/venv/lib64/python3.6/site-packages/matplotlib/artist.py", line 50, in draw_wrapper
    return draw(artist, renderer, *args, **kwargs)
  File "/home/pythonista/venv/lib64/python3.6/site-packages/matplotlib/axis.py", line 1187, in draw
    renderer)
  File "/home/pythonista/venv/lib64/python3.6/site-packages/matplotlib/axis.py", line 1125, in _get_tick_bboxes
    extent = tick.label1.get_window_extent(renderer)
  File "/home/pythonista/venv/lib64/python3.6/site-packages/matplotlib/text.py", line 930, in get_window_extent
    bbox, info, descent = self._get_layout(self._renderer)
  File "/home/pythonista/venv/lib64/python3.6/site-packages/matplotlib/text.py", line 313, in _get_layout
    ismath=ismath)
  File "/home/pythonista/venv/lib64/python3.6/site-packages/matplotlib/backends/backend_agg.py", line 209, in get_text_width_height_descent
    s, fontsize, renderer=self)
  File "/home/pythonista/venv/lib64/python3.6/site-packages/matplotlib/texmanager.py", line 464, in get_text_width_height_descent
    dvifile = self.make_dvi(tex, fontsize)
  File "/home/pythonista/venv/lib64/python3.6/site-packages/matplotlib/texmanager.py", line 328, in make_dvi
    texfile], tex)
  File "/home/pythonista/venv/lib64/python3.6/site-packages/matplotlib/texmanager.py", line 298, in _run_checked_subprocess
    stderr=subprocess.STDOUT)
  File "/usr/lib64/python3.6/subprocess.py", line 336, in check_output
    **kwargs).stdout
  File "/usr/lib64/python3.6/subprocess.py", line 403, in run
    with Popen(*popenargs, **kwargs) as process:
  File "/usr/lib64/python3.6/subprocess.py", line 707, in __init__
    restore_signals, start_new_session)
  File "/usr/lib64/python3.6/subprocess.py", line 1326, in _execute_child
    raise child_exception_type(errno_num, err_msg)
FileNotFoundError: [Errno 2] No such file or directory: 'latex'

Not sure if this is decent, but:

 * I've explicitly said use tex and the error is latex not found
 * It's how pip installed matplotlib behaves

Conclusion:

  Switch to recommends?

Comment 6 Ben Cotton 2019-05-02 20:11:19 UTC
This message is a reminder that Fedora 28 is nearing its end of life.
On 2019-May-28 Fedora will stop maintaining and issuing updates for
Fedora 28. It is Fedora's policy to close all bug reports from releases
that are no longer maintained. At that time this bug will be closed as
EOL if it remains open with a Fedora 'version' of '28'.

Package Maintainer: If you wish for this bug to remain open because you
plan to fix it in a currently maintained version, simply change the 'version' 
to a later Fedora version.

Thank you for reporting this issue and we are sorry that we were not 
able to fix it before Fedora 28 is end of life. If you would still like 
to see this bug fixed and are able to reproduce it against a later version 
of Fedora, you are encouraged  change the 'version' to a later Fedora 
version prior this bug is closed as described in the policy above.

Although we aim to fix as many bugs as possible during every release's 
lifetime, sometimes those efforts are overtaken by events. Often a 
more recent Fedora release includes newer upstream software that fixes 
bugs or makes them obsolete.

Comment 7 Zbigniew Jędrzejewski-Szmek 2020-05-31 09:46:41 UTC
+1 to switching to Recommends. On the mailing list I suggested the following:
> >    Recommends: dvipng
> >    Requires: (dvipng if texlive-base)

Comment 9 Elliott Sales de Andrade 2020-06-16 21:39:24 UTC
*** Bug 1847729 has been marked as a duplicate of this bug. ***


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