matplotlib2 seems to be an important node in the python2 removal/reduction 
problem (and the qt4 removal problem). I have noticed there are a substantial 
number of python module packages that it build-depends on but does not depend 
on.

python-backports.functools-lru-cache
python-cairocffi
python-colorspacious
python-cycler
python-functools32
python-gi
python-ipywidgets
python-kiwisolver
python-mock
python-nose
python-numpy
python-numpy-dbg
python-numpydoc
python-pandas
python-pil
python-pkg-resources
python-pyqt5
python-pytest
python-qt4
python-scipy
python-setuptools
python-six
python-sphinx
python-sphinx-gallery
python-subprocess32
python-tk
python-tk-dbg
python-tornado
python-wxgtk3.0
python-xlwt

There is also the slightly-strange case of kiwisolver where there is no binary 
dependency on python-kiwisolver but there is one on python-kiwisolver-dbg.

Some of these dependencies are starting to cause problems. For example

ipywidgets needs to drop it's python2 packages because jupyter-notebook has 
already done so, but it can't because of the build-dependency from matplotlib2

the qt developers want to get rid of qt4, but can't because of the 
build-dependency from matplotlib2.

the pandas maintainers have packaged a new python3 only version, which leaves 
matplotlib2 build-depending on a cruft package.

I am guessing that many of these are to get testsuite coverage for optional 
features and are not strictly needed for the build, while testing stuff is nice 
I don't think it's vital for software that is on it's way out. I tried removing 
all of the aforementioned packages except python-setuptools and 
python-kiwisolver from the build-depends (and I uninstalled all python 2 
packages from the chroot where I was doing my test builds before I installed 
the remaining build-depends).

I had to add the following packages back in to get a succesful build.

python-numpy
python-numpy-dbg
python-sphinx (needed for documentation build)
python-backports.functools-lru-cache (needed for documentation build)
python-cycler (needed for documentation build)
python-numpydoc (needed for documentation build)
python-sphinx-gallery (needed for documentation build)
python-colorspacious (needed for documentation build)
python-mock (needed for documentation build)

I also had to add a build-dependency on python-ipkernel which is needed by the 
documentation build and was previously pulled in indirectly.

That left the following list of changes to build-dependencies.

-               python-cairocffi [!ia64],
-               python-functools32,
-               python-gi,
-               python-ipywidgets,
+               python-ipykernel,
-               python-nose,
-               python-pandas [!hppa !m68k !powerpcspe !sparc64 !sh4 !x32],
-               python-pil,
-               python-pkg-resources,
-               python-pytest,
-               python-qt4,
-               python-pyqt5 [!hurd-i386],
-               python-scipy,
-               python-six (>= 1.4),
-               python-subprocess32,
-               python-tk (>= 2.5.2-1.1),
-               python-tk-dbg (>= 2.5.2-1.1),
-               python-tornado,
-               python-wxgtk3.0,
-               python-xlwt,

Unfortunately the matplotlib2 build is not reproducible, so while I was able to 
determine there were no significant changes to file lists (there were some id 
changes to id's in the documenation) I was not able to reasonably check for 
changes to file content.

What do others with more experience think? Should these build-dependencies be 
removed?

While working on this I also ran into an issue with the clean target not 
cleaning up properly which I fixed as it was getting in the way of my testing.

debdiff is attached.

diff -Nru matplotlib2-2.2.4/debian/changelog matplotlib2-2.2.4/debian/changelog
--- matplotlib2-2.2.4/debian/changelog  2019-09-17 03:44:50.000000000 +0000
+++ matplotlib2-2.2.4/debian/changelog  2019-11-12 10:59:29.000000000 +0000
@@ -1,3 +1,13 @@
+matplotlib2 (2.2.4-2.1) UNRELEASED; urgency=medium
+
+  * experimental local build
+  * reduce build-dependencies to (mostly) match binary ones.
+  * add build-depends on python-ipykernel, the documentation build
+    needs it (previously it was pulled in indirectly)
+  * fix clean target.
+
+ -- Peter Michael Green <plugw...@debian.org>  Tue, 12 Nov 2019 10:59:29 +0000
+
 matplotlib2 (2.2.4-2) unstable; urgency=medium
 
   * debian/control
diff -Nru matplotlib2-2.2.4/debian/control matplotlib2-2.2.4/debian/control
--- matplotlib2-2.2.4/debian/control    2019-09-17 03:44:50.000000000 +0000
+++ matplotlib2-2.2.4/debian/control    2019-11-12 10:59:29.000000000 +0000
@@ -19,36 +19,18 @@
                python-cycler (>= 0.10.0),
                python-dateutil,
                python-colorspacious,
-               python-cairocffi [!ia64],
-               python-functools32,
-               python-gi,
-               python-ipywidgets,
+               python-ipykernel,
                python-kiwisolver,
                python-kiwisolver-dbg,
                python-mock,
-               python-nose,
                python-numpy,
                python-numpy-dbg,
                python-numpydoc,
-               python-pandas [!hppa !m68k !powerpcspe !sparc64 !sh4 !x32],
-               python-pil,
-               python-pkg-resources,
                python-pyparsing (>= 1.5.6),
-               python-pytest,
-               python-qt4,
-               python-pyqt5 [!hurd-i386],
-               python-scipy,
                python-setuptools,
-               python-six (>= 1.4),
                python-sphinx (>= 1.0.7+dfsg),
                python-sphinx-gallery,
-               python-subprocess32,
-               python-tk (>= 2.5.2-1.1),
-               python-tk-dbg (>= 2.5.2-1.1),
-               python-tornado,
                python-tz,
-               python-wxgtk3.0,
-               python-xlwt,
                tcl8.6-dev,
                texlive-fonts-recommended,
                texlive-latex-extra,
diff -Nru matplotlib2-2.2.4/debian/rules matplotlib2-2.2.4/debian/rules
--- matplotlib2-2.2.4/debian/rules      2019-09-17 03:44:50.000000000 +0000
+++ matplotlib2-2.2.4/debian/rules      2019-11-12 10:59:29.000000000 +0000
@@ -93,6 +93,22 @@
        # remove embedded CXX to prevent it to be picked up
        rm -rf extern/CXX/
 
+       #more cleanup
+       rm -rf .eggs
+       find examples -name '*.png' -delete
+       find examples -name '*.pdf' -delete
+       find examples -name '*.svgz' -delete
+       rm -f examples/misc/*.svg
+       find . -name '*.zip' -delete
+       find . -name '*.md5' -delete
+       find . -name '*.pickle' -delete
+       find doc -name '*.ipynb' -delete
+       rm -rf doc/tutorials
+       rm -rf doc/gallery
+       rm -rf doc/build
+       rm -f doc/fontList.json
+       rm -f examples/misc/*.eps
+
 # install
 install-arch: build-arch install-arch-stamp
        dh_testdir

Reply via email to