Backport: SVG output: incremental ID scheme for non-rectangular clip paths.
This backports an upstream patch to fix an output nondeterminism (e.g. build reproducibility) bug - it is available in v3.10 of matplotlib
upstream, but is relatively straightforward to backport to v3.8.3 also.
Closes #1065124.
Aside / Build-Dep modification explainer
The rendering of a TextPath
entity introduced by the determinism patch causes a subtle build-time bug during autopkgtests
: the fact that dvips
produces intermediate DVI files that include Encoding vector references for the tcss3583
font -- because that font appears in dvips-all.enc
as distributed in texlive-base
.matplotlib
produces and processes TeX that includes \usepackage{type1ec}
-- without specifying a 10-point font size! -- means that large-sized text may attempt to use fonts such as tcss3583
that are not available in cm-super-minimal
(the minimal variant of the package only contains 10*
font files).
However: we do not currently install the referenced font file itself during package build, and matplotlib
fails to render the PostScript version of the deterministic test diagram as a result of that.
In this merge request, commit 80b52c68 adds a workaround: it migrates the build-dep on cm-super-minimal
to cm-super
so that the TCSS3583 font is available when the test suite runs. However, I'll try to learn more about the problem and report it as a bug upstream in ; there may be a way to handle this condition as a non-fatal error.matplotlib
Edit: markup fixup for malformatted subheading in description
Edit 2: provide a more accurate problem description
Edit 3: improve the formatting of these edit footnotes
Edit 4: update a reference in the closing paragraph to commit 1375a4fa -- it has been superseded by 80b52c68 (with an explanatory commit message)