#977469 matplotlib: Please make package bootstrappable

#977469#5
Date:
2020-12-15 12:44:57 UTC
From:
To:
Hello!

matploblib is currently BD-Uninstallanble on multiple architectures and it's
not easily possible to build the package because there is a circular build
dependency with the package on itself [1]:

(sid-powerpc-sbuild2)root@kapitsa:/# apt build-dep python3-matplotlib
Reading package lists... Done
Picking 'matplotlib' as source package instead of 'python3-matplotlib'
Reading package lists... Done
Building dependency tree
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 python3-matplotlib : Depends: python3 (< 3.9) but 3.9.0-4 is to be installed
 python3-pandas : Depends: python3-pandas-lib (>= 1.1.5+dfsg) but it is not going to be installed
E: Unable to correct problems, you have held broken packages.
(sid-powerpc-sbuild2)root@kapitsa:/#

Could you make matplotlib bootstrappable so that porters can bootstrap the
package when it's necessary?

I'm currently stuck with this package and I have no clue how to break the
circular build dependency here.

Thanks,
Adrian

#977469#10
Date:
2020-12-16 19:41:37 UTC
From:
To:
Hello!

It seems that most of the Python dependencies in Build-Depends in debian/control
are optional when comparing those with the build dependencies in openSUSE [1].

I used the brute-force approach now and it built for me on powerpc with those
packages set to <!stage1>:

               python3-all-dbg,
               python3-all-dev,
               python3-cairocffi [!ia64] <!stage1>,
               python3-certifi (>= 2020.6.20-1) <!stage1>,
               python3-colorspacious <!stage1>,
               python3-cxx-dev <!stage1>,
               python3-cycler (>= 0.10.0) <!stage1>,
               python3-dateutil <!stage1>,
               python3-gi <!stage1>,
               python3-ipython <!nodoc> <!stage1>,
               python3-ipywidgets <!stage1>,
               python3-kiwisolver <!stage1>,
               python3-kiwisolver-dbg <!stage1>,
               python3-mock <!stage1>,
               python3-nose <!stage1>,
               python3-numpy <!stage1>,
               python3-numpy-dbg <!stage1>,
               python3-numpydoc <!stage1>,
               python3-pandas  <!stage1>,
               python3-pil <!stage1>,
               python3-pkg-resources <!stage1>,
               python3-pyparsing (>= 1.5.6) <!stage1>,
               python3-pyqt5 [!hurd-i386] <!stage1>,
               python3-pytest <!stage1>,
               python3-scipy <!nodoc> <!stage1>,
               python3-setuptools,
               python3-six (>= 1.4) <!stage1>,
               python3-sphinx <!nodoc> <!stage1>,
               python3-sphinx-copybutton <!nodoc> <!stage1>,
               python3-sphinxcontrib.svg2pdfconverter <!nodoc> <!stage1>,
               python3-tk <!stage1>,
               python3-tk-dbg <!stage1>,
               python3-tornado <!stage1>,

Adrian

#977469#15
Date:
2020-12-17 22:39:15 UTC
From:
To:
Hello,

While at it:

               python3-sphinx-gallery (>= 0.7.0) <!stage1> <!nodoc>,

I believe you meant

               python3-sphinx-gallery (>= 0.7.0) <!stage1 !nodoc>,

So that the python3-sphinx-gallery dep is disable when using the stage1
profile alone or when using the nodoc profile alone. Currently one has
to using both the stage1 and the nodoc profiles to break the

python3-matplotlib -> python3-sphinx-gallery -> python3-matplotlib

loop.

Samuel

#977469#20
Date:
2020-12-17 22:47:42 UTC
From:
To:
Hi Samuel!

You just solved that mystery for me. I was already starting to question
my sanity when the --profile switch didn't work as expected :-).

Thanks a lot for pointer!

Adrian

#977469#25
Date:
2020-12-17 22:55:22 UTC
From:
To:
John Paul Adrian Glaubitz, le jeu. 17 déc. 2020 23:47:42 +0100, a ecrit:

It was driving me crazy in the past couple hours as well, I was
questioning the support in sbuild, in pbuilder, and at the point of
trying mk-build-deps with the nodoc profile instead of the stage1
profile, I at last noticed that the <!nodoc> were working but not the
<!stage1> <!nodoc> :)

Samuel

#977469#30
Date:
2020-12-17 23:08:19 UTC
From:
To:
I guess we'll just need to fix this bug then to make the package bootstrappable.

Adrian

#977469#35
Date:
2020-12-18 01:44:25 UTC
From:
To:
they are not: they are either used to run tests or build the documentation.

this is not good enough, you just marked !stage1 for all the packages
that were on your way. please rework this patch to mark each of those
as either !nodoc or !nocheck where appropriate and run the build with
both profiles disabled; at that point i will be able to merge this.

Regards,

#977469#40
Date:
2020-12-18 07:27:11 UTC
From:
To:
Well, that actually means they are optional for building the package. They should
be marked as <!nocheck> then or <!stage1>

As Samuel already pointed out, the main problem is the incorrect use of
the build profile markers. It should be <!nocheck !stage1> not <!nocheck>
<!stage1>.

So, if you could fix this for the time being, we'd already be a step further.

Adrian

#977469#45
Date:
2020-12-18 07:48:13 UTC
From:
To:
On Fri, Dec 18, 2020 at 2:27 AM John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de> wrote:

many of these b-d predate the introduction (or wide-spread use) of
build profiles and recently introduced b-d are being tagged, so this
is an unhelpful comment.

which, btw, you suggested in
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=954071

are you saying that is the only problematic b-d that prevents
matplotlib bootstrap?

#977469#50
Date:
2022-01-10 10:06:56 UTC
From:
To:
Hello,

As suggested in an other bug report, moving the build-dependencies that
are only needed to build -doc/arch:all packages to Build-Depends-Indep
would also help here I guess

Kind regards,

Laurent Bigonville

#977469#55
Date:
2022-01-27 15:40:58 UTC
From:
To:
On Mon, 10 Jan 2022 11:06:56 +0100 Laurent Bigonville <bigon@debian.org>  wrote:
 > Hello,
 >
 > As suggested in an other bug report, moving the build-dependencies that
 > are only needed to build -doc/arch:all packages to Build-Depends-Indep
 > would also help here I guess
 >

I've made this merge request:
https://salsa.debian.org/python-team/packages/matplotlib/-/merge_requests/1

I duplicated some of the build-dependencies to make it more clear that
they are needed by both, if that's no OK I can rework my change and only
keep one

#977469#60
Date:
2022-01-28 04:47:13 UTC
From:
To:
but i am not willing to complicate the maintenance of matplotlib by
splitting b-d and b-d-i.

You provide this patch as a one-off, and then i will be the one that
will have to take care of maintaining it forever. that's not something
i'm not willing to commit to.

All of this to support the bootstrap of unofficial ports.
bootstrapping is (AFAICT) a manual operation sometimes.

I'm ok with annotating the current b-d with !stage1 where needed (or
fix the current annotations if they are incorrect), if that
facilitates your work.

Thanks,