diff mbox series

[v3,1/2] python3-sphinxcontrib-svg2pdfconverter: add new recipe

Message ID 20251203-svg2pdf-v3-1-879d05cb101b@cherry.de
State New
Headers show
Series buildtools-docs-tarball: add new Sphinx extension svg2pdfconverter | expand

Commit Message

Quentin Schulz Dec. 3, 2025, 11:32 a.m. UTC
From: Quentin Schulz <quentin.schulz@cherry.de>

This will be a dependency for building the Yocto docs soon, so let's add
a recipe for it.

This does SVG to PDF (or PNG) conversion for images used in Sphinx
projects.

It exposes three different Sphinx extensions, each using a different
tool for the conversion:
- cairosvg, a Python module with no available recipe,
- inkscape, only available in seemingly unmaintained 3rd party layer,
- rsvg-convert,

So we'll only support the last extension for now.

Signed-off-by: Quentin Schulz <quentin.schulz@cherry.de>
---
 meta/conf/distro/include/maintainers.inc             |  1 +
 .../python3-sphinxcontrib-svg2pdfconverter_2.0.0.bb  | 20 ++++++++++++++++++++
 2 files changed, 21 insertions(+)

Comments

Mathieu Dubois-Briand Dec. 3, 2025, 12:18 p.m. UTC | #1
On Wed Dec 3, 2025 at 12:32 PM CET, Quentin Schulz wrote:
> From: Quentin Schulz <quentin.schulz@cherry.de>
>
> This will be a dependency for building the Yocto docs soon, so let's add
> a recipe for it.
>
> This does SVG to PDF (or PNG) conversion for images used in Sphinx
> projects.
>
> It exposes three different Sphinx extensions, each using a different
> tool for the conversion:
> - cairosvg, a Python module with no available recipe,
> - inkscape, only available in seemingly unmaintained 3rd party layer,
> - rsvg-convert,
>
> So we'll only support the last extension for now.
>
> Signed-off-by: Quentin Schulz <quentin.schulz@cherry.de>
> ---

Hi Quentin,

Thanks for your patch.

>  meta/conf/distro/include/maintainers.inc             |  1 +
>  .../python3-sphinxcontrib-svg2pdfconverter_2.0.0.bb  | 20 ++++++++++++++++++++
>  2 files changed, 21 insertions(+)
>
> diff --git a/meta/conf/distro/include/maintainers.inc b/meta/conf/distro/include/maintainers.inc
> index 9f4e5e2df8..f819a21cce 100644
> --- a/meta/conf/distro/include/maintainers.inc
> +++ b/meta/conf/distro/include/maintainers.inc
> @@ -733,6 +733,7 @@ RECIPE_MAINTAINER:pn-python3-sphinxcontrib-jquery = "Tim Orling <tim.orling@kons
>  RECIPE_MAINTAINER:pn-python3-sphinxcontrib-jsmath = "Tim Orling <tim.orling@konsulko.com>"
>  RECIPE_MAINTAINER:pn-python3-sphinxcontrib-qthelp = "Tim Orling <tim.orling@konsulko.com>"
>  RECIPE_MAINTAINER:pn-python3-sphinxcontrib-serializinghtml = "Tim Orling <tim.orling@konsulko.com>"
> +RECIPE_MAINTAINER:pn-python3-sphinxcontrib-svg2pdfconverter = "Antonin Godard <antonin.godard@bootlin.com>"

It looks like this is not enough to make QA happy:

2025-12-03 10:53:56,449 - oe-selftest - INFO - FAIL: distrodata.Distrodata.test_maintainers (subunit.RemotedTestCase)
2025-12-03 10:53:56,449 - oe-selftest - INFO - ----------------------------------------------------------------------
2025-12-03 10:53:56,449 - oe-selftest - INFO - testtools.testresult.real._StringException: Traceback (most recent call last):
  File "/srv/pokybuild/yocto-worker/oe-selftest-debian/build/layers/openembedded-core/meta/lib/oeqa/selftest/cases/distrodata.py", line 105, in test_maintainers
    self.fail("""
  File "/usr/lib/python3.10/unittest/case.py", line 675, in fail
    raise self.failureException(msg)
AssertionError:
The following recipes do not have a maintainer assigned to them. Please add an entry to meta/conf/distro/include/maintainers.inc file.
python3-sphinxcontrib-svg2pdfconverter (/srv/pokybuild/yocto-worker/oe-selftest-debian/build/layers/openembedded-core/meta/recipes-devtools/python/python3-sphinxcontrib-svg2pdfconverter_2.0.0.bb)

https://autobuilder.yoctoproject.org/valkyrie/#/builders/35/builds/2786
https://autobuilder.yoctoproject.org/valkyrie/#/builders/48/builds/2681

Can you have a look at this?

Thanks,
Mathieu
Quentin Schulz Dec. 3, 2025, 12:41 p.m. UTC | #2
Hi Mathieu,

On 12/3/25 1:18 PM, Mathieu Dubois-Briand wrote:
> On Wed Dec 3, 2025 at 12:32 PM CET, Quentin Schulz wrote:
>> From: Quentin Schulz <quentin.schulz@cherry.de>
>>
>> This will be a dependency for building the Yocto docs soon, so let's add
>> a recipe for it.
>>
>> This does SVG to PDF (or PNG) conversion for images used in Sphinx
>> projects.
>>
>> It exposes three different Sphinx extensions, each using a different
>> tool for the conversion:
>> - cairosvg, a Python module with no available recipe,
>> - inkscape, only available in seemingly unmaintained 3rd party layer,
>> - rsvg-convert,
>>
>> So we'll only support the last extension for now.
>>
>> Signed-off-by: Quentin Schulz <quentin.schulz@cherry.de>
>> ---
> 
> Hi Quentin,
> 
> Thanks for your patch.
> 
>>   meta/conf/distro/include/maintainers.inc             |  1 +
>>   .../python3-sphinxcontrib-svg2pdfconverter_2.0.0.bb  | 20 ++++++++++++++++++++
>>   2 files changed, 21 insertions(+)
>>
>> diff --git a/meta/conf/distro/include/maintainers.inc b/meta/conf/distro/include/maintainers.inc
>> index 9f4e5e2df8..f819a21cce 100644
>> --- a/meta/conf/distro/include/maintainers.inc
>> +++ b/meta/conf/distro/include/maintainers.inc
>> @@ -733,6 +733,7 @@ RECIPE_MAINTAINER:pn-python3-sphinxcontrib-jquery = "Tim Orling <tim.orling@kons
>>   RECIPE_MAINTAINER:pn-python3-sphinxcontrib-jsmath = "Tim Orling <tim.orling@konsulko.com>"
>>   RECIPE_MAINTAINER:pn-python3-sphinxcontrib-qthelp = "Tim Orling <tim.orling@konsulko.com>"
>>   RECIPE_MAINTAINER:pn-python3-sphinxcontrib-serializinghtml = "Tim Orling <tim.orling@konsulko.com>"
>> +RECIPE_MAINTAINER:pn-python3-sphinxcontrib-svg2pdfconverter = "Antonin Godard <antonin.godard@bootlin.com>"
> 
> It looks like this is not enough to make QA happy:
> 
> 2025-12-03 10:53:56,449 - oe-selftest - INFO - FAIL: distrodata.Distrodata.test_maintainers (subunit.RemotedTestCase)
> 2025-12-03 10:53:56,449 - oe-selftest - INFO - ----------------------------------------------------------------------
> 2025-12-03 10:53:56,449 - oe-selftest - INFO - testtools.testresult.real._StringException: Traceback (most recent call last):
>    File "/srv/pokybuild/yocto-worker/oe-selftest-debian/build/layers/openembedded-core/meta/lib/oeqa/selftest/cases/distrodata.py", line 105, in test_maintainers
>      self.fail("""
>    File "/usr/lib/python3.10/unittest/case.py", line 675, in fail
>      raise self.failureException(msg)
> AssertionError:
> The following recipes do not have a maintainer assigned to them. Please add an entry to meta/conf/distro/include/maintainers.inc file.
> python3-sphinxcontrib-svg2pdfconverter (/srv/pokybuild/yocto-worker/oe-selftest-debian/build/layers/openembedded-core/meta/recipes-devtools/python/python3-sphinxcontrib-svg2pdfconverter_2.0.0.bb)
> 
> https://autobuilder.yoctoproject.org/valkyrie/#/builders/35/builds/2786
> https://autobuilder.yoctoproject.org/valkyrie/#/builders/48/builds/2681
> 
> Can you have a look at this?
> 

It says "Finished two hours ago" at the top of the provided link but I 
sent v3 more recently than that.

How do I know which patch(es) were applied from the logs? I went into 
"Build properties" and it points at mathieu/master-next branch for 
oe-core from openembedded-core-contrib repo at commit 
687147e96e53a1ddb3842a3d190a683161e82167 but this isn't the proper HEAD 
anymore, so I had to start from commit 
687147e96e53a1ddb3842a3d190a683161e82167 from cgit and then go to its 
parent recursively until I reached 
https://git.openembedded.org/openembedded-core-contrib/commit/?h=mathieu/master-next&id=141b8fdfdc311053d69eab6adbec5c3b09e3acee 
which is v2. Is there any chance we can have an easier way to figure 
this out?

I also ran the test locally with

oe-selftest -r distrodata.Distrodata.test_maintainers

and it passed.

Cheers,
Quentin
Mathieu Dubois-Briand Dec. 3, 2025, 3:24 p.m. UTC | #3
On Wed Dec 3, 2025 at 1:41 PM CET, Quentin Schulz wrote:
> Hi Mathieu,
>
>
> It says "Finished two hours ago" at the top of the provided link but I 
> sent v3 more recently than that.
>
> How do I know which patch(es) were applied from the logs? I went into 
> "Build properties" and it points at mathieu/master-next branch for 
> oe-core from openembedded-core-contrib repo at commit 
> 687147e96e53a1ddb3842a3d190a683161e82167 but this isn't the proper HEAD 
> anymore, so I had to start from commit 
> 687147e96e53a1ddb3842a3d190a683161e82167 from cgit and then go to its 
> parent recursively until I reached 
> https://git.openembedded.org/openembedded-core-contrib/commit/?h=mathieu/master-next&id=141b8fdfdc311053d69eab6adbec5c3b09e3acee 
> which is v2. Is there any chance we can have an easier way to figure 
> this out?
>
> I also ran the test locally with
>
> oe-selftest -r distrodata.Distrodata.test_maintainers
>
> and it passed.
>
> Cheers,
> Quentin

My bad, this was indeed an earlier revision:
https://git.yoctoproject.org/poky-ci-archive/commit/?h=oecore/autobuilder.yoctoproject.org/valkyrie/a-full-2814&id=141b8fdfdc311053d69eab6adbec5c3b09e3acee

Sorry for the noise.
diff mbox series

Patch

diff --git a/meta/conf/distro/include/maintainers.inc b/meta/conf/distro/include/maintainers.inc
index 9f4e5e2df8..f819a21cce 100644
--- a/meta/conf/distro/include/maintainers.inc
+++ b/meta/conf/distro/include/maintainers.inc
@@ -733,6 +733,7 @@  RECIPE_MAINTAINER:pn-python3-sphinxcontrib-jquery = "Tim Orling <tim.orling@kons
 RECIPE_MAINTAINER:pn-python3-sphinxcontrib-jsmath = "Tim Orling <tim.orling@konsulko.com>"
 RECIPE_MAINTAINER:pn-python3-sphinxcontrib-qthelp = "Tim Orling <tim.orling@konsulko.com>"
 RECIPE_MAINTAINER:pn-python3-sphinxcontrib-serializinghtml = "Tim Orling <tim.orling@konsulko.com>"
+RECIPE_MAINTAINER:pn-python3-sphinxcontrib-svg2pdfconverter = "Antonin Godard <antonin.godard@bootlin.com>"
 RECIPE_MAINTAINER:pn-python3-subunit = "Trevor Gamblin <tgamblin@baylibre.com>"
 RECIPE_MAINTAINER:pn-python3-testtools = "Trevor Gamblin <tgamblin@baylibre.com>"
 RECIPE_MAINTAINER:pn-python3-trove-classifiers = "Trevor Gamblin <tgamblin@baylibre.com>"
diff --git a/meta/recipes-devtools/python/python3-sphinxcontrib-svg2pdfconverter_2.0.0.bb b/meta/recipes-devtools/python/python3-sphinxcontrib-svg2pdfconverter_2.0.0.bb
new file mode 100644
index 0000000000..1bf3e55ebd
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-sphinxcontrib-svg2pdfconverter_2.0.0.bb
@@ -0,0 +1,20 @@ 
+SUMMARY = "Sphinx SVG to PDF or PNG converter extension"
+HOMEPAGE = "https://github.com/missinglinkelectronics/sphinxcontrib-svg2pdfconverter"
+LICENSE = "BSD-2-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=b11cf936853a71258d4b57bb1849a3f9"
+
+SRC_URI[sha256sum] = "ab9c8f1080391e231812d20abf2657a69ee35574563b1014414f953964a95fa3"
+
+inherit pypi python_setuptools_build_meta
+
+PYPI_PACKAGE = "sphinxcontrib_svg2pdfconverter"
+UPSTREAM_CHECK_PYPI_PACKAGE = "${PYPI_PACKAGE}"
+
+RDEPENDS:${PN} = "python3-sphinx"
+# Only support sphinxcontrib.rsvgconverter for now.
+# sphinxcontrib.cairosvgconverter depends on cairosvg module, no recipe yet
+# sphinxcontrib.inkscapeconverter depends on inkscape, recipe in meta-office,
+# 3rd-party layer not updated in years
+RDEPENDS:${PN} += "librsvg"
+
+BBCLASSEXTEND = "native nativesdk"