public inbox for docs@lists.yoctoproject.org
 help / color / mirror / Atom feed
* [PATCH v4 0/3] migrate Debian/Ubuntu to pip packages for docs + fix epub and latexpdf targets not finding glob images
@ 2026-02-16 11:26 Quentin Schulz
  2026-02-16 11:26 ` [PATCH v4 1/3] use a venv for installing packages with pip Quentin Schulz
                   ` (4 more replies)
  0 siblings, 5 replies; 12+ messages in thread
From: Quentin Schulz @ 2026-02-16 11:26 UTC (permalink / raw)
  To: docs; +Cc: Quentin Schulz, Antonin Godard

This fixes images being improperly handled by our Make targets by
switching to a sphinx extension that generates a PNG or PDF of an SVG
upon request by Sphinx itself.

To do that, we need sphinxcontrib-svg2pdfconverter>=2.0.0 which is not
available for all supported distros, including Debian/Ubuntu which only
used packages from their official package feeds until now. This migrates
both distros to use pip packages for building the docs such that the
same instructions are used for all supported distros.
This however required to use a virtualenv to install packages, since
Debian doesn't allow using pip outside of a virtualenv since Bookworm
(12). So this migrates the pip package installation to use a virtualenv
as well. Since sourcing scripts in RUN commands to make variables
accessible in later container layers is not possible in Containerfile,
we do the same logic as in the venv bin/activate script manually in the
Containerfile.

Signed-off-by: Quentin Schulz <quentin.schulz@cherry.de>
---
Changes in v4:
- migrate all distros to use virtualenv for installing packages via pip,
- migrate Debian and Ubuntu to use pip installation steps for building
  the docs,
- tested all distros build correctly by running the `html epub` make
  targets (`all` doesn't work for almalinux, rockylinux and centos
  stream at the moment),
- Link to v3: https://patch.msgid.link/20260211-fix-make-multi-target-v3-1-1168a6f1525f@cherry.de

Changes in v3:
- rebased on top of master, rebuilt with `make all` no build error to be
  seen,
- Link to v2: https://patch.msgid.link/20251202-fix-make-multi-target-v2-1-7eea1d64cf6b@cherry.de

Changes in v2:
- switched to upstream sphinxcontrib-svg2pdfconverter since the
  necessary MR got merged and a new release made,
- removed IMAGEDIRS Make variable as it is now unused,
- added sphinxcontrib-svg2pdfconverter to Pipfile (not tested) and pip
  installation script,
- Link to v1: https://patch.msgid.link/20251030-fix-make-multi-target-v1-0-213616ed1f0a@cherry.de

---
Quentin Schulz (3):
      use a venv for installing packages with pip
      consistently use pip packages for all distros
      convert SVGs to PDF and PNG using sphinxcontrib.rsvgconverter plugin

 documentation/Makefile                             | 27 +++-------------------
 documentation/Pipfile                              |  2 ++
 documentation/conf.py                              |  1 +
 documentation/ref-manual/system-requirements.rst   |  3 +++
 documentation/tools/build-docs-container           |  4 +++-
 .../tools/containerfiles/Containerfile.apt         | 10 ++++++++
 .../tools/containerfiles/Containerfile.dnf         |  6 +++++
 .../tools/containerfiles/Containerfile.zypper      |  7 ++++++
 .../tools/host_packages_scripts/pip3_docs.sh       |  4 +++-
 .../tools/host_packages_scripts/ubuntu_docs.sh     |  2 +-
 10 files changed, 39 insertions(+), 27 deletions(-)
---
base-commit: 095981c08b9d63905472df5d1d60c07af96f0250
change-id: 20251029-fix-make-multi-target-d2de9d4ff7ec

Best regards,
--  
Quentin Schulz <quentin.schulz@cherry.de>



^ permalink raw reply	[flat|nested] 12+ messages in thread

* [PATCH v4 1/3] use a venv for installing packages with pip
  2026-02-16 11:26 [PATCH v4 0/3] migrate Debian/Ubuntu to pip packages for docs + fix epub and latexpdf targets not finding glob images Quentin Schulz
@ 2026-02-16 11:26 ` Quentin Schulz
  2026-02-18  8:18   ` [docs] " Antonin Godard
  2026-02-16 11:26 ` [PATCH v4 2/3] consistently use pip packages for all distros Quentin Schulz
                   ` (3 subsequent siblings)
  4 siblings, 1 reply; 12+ messages in thread
From: Quentin Schulz @ 2026-02-16 11:26 UTC (permalink / raw)
  To: docs; +Cc: Quentin Schulz

From: Quentin Schulz <quentin.schulz@cherry.de>

In a few commits, we'll migrate Debian/Ubuntu to use pip packages.
However, Debian rejects pip commands outside of virtual environments.

It is generally best practice to use virtual environments with pip, so
let's migrate distros that currently use pip to use virtual environments
as well.

Because BitBake is a Python project and requires a few Python packages
that we currently install with distro package managers, if we were to
ignore system packages when creating the virtual environment the user
would either be able to build the docs or run BitBake. Let's include the
system packages in the virtual env so that isn't an issue.

Signed-off-by: Quentin Schulz <quentin.schulz@cherry.de>
---
 documentation/tools/containerfiles/Containerfile.dnf    | 6 ++++++
 documentation/tools/containerfiles/Containerfile.zypper | 7 +++++++
 documentation/tools/host_packages_scripts/pip3_docs.sh  | 4 +++-
 3 files changed, 16 insertions(+), 1 deletion(-)

diff --git a/documentation/tools/containerfiles/Containerfile.dnf b/documentation/tools/containerfiles/Containerfile.dnf
index fd47fde34..01e838ef9 100644
--- a/documentation/tools/containerfiles/Containerfile.dnf
+++ b/documentation/tools/containerfiles/Containerfile.dnf
@@ -9,6 +9,12 @@ ARG PIP3=pip3_docs.sh
 
 ENV TEXTOOLDIR=/opt/docs-build-tex-tools
 ENV PATH="$PATH:$TEXTOOLDIR/tl/bin/x86_64-linux"
+# RUN . /tmp/yocto-venv/bin/activate doesn't work because env variables set in
+# RUN don't persist, so set up the virtualenv manually.
+# Unsetting env variables in Containerfile is difficult, so we hope it works
+# fine without doing that for PYTHONHOME (see activate script content).
+ENV VIRTUAL_ENV=/tmp/yocto-venv
+ENV PATH="$VIRTUAL_ENV/bin:$PATH"
 
 # relative to the location of the dockerfile
 COPY --chmod=777 ${ESSENTIAL} /temp/host_packages_essential.sh
diff --git a/documentation/tools/containerfiles/Containerfile.zypper b/documentation/tools/containerfiles/Containerfile.zypper
index 3850b9ff9..204185efd 100644
--- a/documentation/tools/containerfiles/Containerfile.zypper
+++ b/documentation/tools/containerfiles/Containerfile.zypper
@@ -13,6 +13,13 @@ COPY --chmod=777 ${DOCS} /temp/host_packages_docs.sh
 COPY --chmod=777 ${DOCS_PDF} /temp/host_packages_docs_pdf.sh
 COPY --chmod=777 ${PIP3} /temp/pip3_docs.sh
 
+# RUN . /tmp/yocto-venv/bin/activate doesn't work because env variables set in
+# RUN don't persist, so set up the virtualenv manually.
+# Unsetting env variables in Containerfile is difficult, so we hope it works
+# fine without doing that for PYTHONHOME (see activate script content).
+ENV VIRTUAL_ENV=/tmp/yocto-venv
+ENV PATH="$VIRTUAL_ENV/bin:$PATH"
+
 # Zypper doesn't have environment variables to specify whether to run in
 # non-interactive mode like Debian does with DEBIAN_FRONTEND and piping yes to
 # the scripts doesn't need to be enough as well, so let's force all zypper calls
diff --git a/documentation/tools/host_packages_scripts/pip3_docs.sh b/documentation/tools/host_packages_scripts/pip3_docs.sh
index 907ecec55..9aa7f16fb 100644
--- a/documentation/tools/host_packages_scripts/pip3_docs.sh
+++ b/documentation/tools/host_packages_scripts/pip3_docs.sh
@@ -1 +1,3 @@
-sudo pip3 install sphinx sphinx_rtd_theme pyyaml sphinx-copybutton
+python3 -m venv --clear --system-site-packages /tmp/yocto-venv
+. /tmp/yocto-venv/bin/activate
+python3 -m pip install sphinx sphinx_rtd_theme pyyaml sphinx-copybutton

-- 
2.53.0



^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [PATCH v4 2/3] consistently use pip packages for all distros
  2026-02-16 11:26 [PATCH v4 0/3] migrate Debian/Ubuntu to pip packages for docs + fix epub and latexpdf targets not finding glob images Quentin Schulz
  2026-02-16 11:26 ` [PATCH v4 1/3] use a venv for installing packages with pip Quentin Schulz
@ 2026-02-16 11:26 ` Quentin Schulz
  2026-02-16 11:26 ` [PATCH v4 3/3] convert SVGs to PDF and PNG using sphinxcontrib.rsvgconverter plugin Quentin Schulz
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 12+ messages in thread
From: Quentin Schulz @ 2026-02-16 11:26 UTC (permalink / raw)
  To: docs; +Cc: Quentin Schulz, Antonin Godard

From: Quentin Schulz <quentin.schulz@cherry.de>

Until now, Debian and Ubuntu had special instructions for installing
Python packages to build the docs. Specifically, the packages that all
other distros are installing via pip were installed from the package
feed (apt).

In the next commit, a new Python module will be required, which isn't
available in the package feed. We thus have two options, have a pip3
Debian/Ubuntu-specific set of instructions to install this one package,
or migrate packages currently installed through the package manager to
use pip like other distros. To lower maintenance burden and the
possibility of missing to update both "generic" and "Debian/Ubuntu"
variants of pip instructions, the latter was chosen.

Suggested-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Quentin Schulz <quentin.schulz@cherry.de>
---
 documentation/ref-manual/system-requirements.rst         |  3 +++
 documentation/tools/build-docs-container                 |  4 +++-
 documentation/tools/containerfiles/Containerfile.apt     | 10 ++++++++++
 documentation/tools/host_packages_scripts/ubuntu_docs.sh |  2 +-
 4 files changed, 17 insertions(+), 2 deletions(-)

diff --git a/documentation/ref-manual/system-requirements.rst b/documentation/ref-manual/system-requirements.rst
index f9f32f2a8..e7c1c3916 100644
--- a/documentation/ref-manual/system-requirements.rst
+++ b/documentation/ref-manual/system-requirements.rst
@@ -171,6 +171,9 @@ Here are the packages needed to build Project documentation manuals:
 .. literalinclude:: ../tools/host_packages_scripts/ubuntu_docs.sh
    :language: shell
 
+.. literalinclude:: ../tools/host_packages_scripts/pip3_docs.sh
+   :language: shell
+
 In addition to the previous packages, here are the packages needed to build the
 documentation in PDF format:
 
diff --git a/documentation/tools/build-docs-container b/documentation/tools/build-docs-container
index 23c3dfe33..f2f54044c 100755
--- a/documentation/tools/build-docs-container
+++ b/documentation/tools/build-docs-container
@@ -115,6 +115,7 @@ main ()
       essential=ubuntu_essential.sh
       docs=ubuntu_docs.sh
       docs_pdf=ubuntu_docs_pdf.sh
+      pip3=pip3_docs.sh
       ;;
     "fedora:39"*|\
     "fedora:40"*|\
@@ -151,6 +152,7 @@ main ()
       essential=ubuntu_essential.sh
       docs=ubuntu_docs.sh
       docs_pdf=ubuntu_docs_pdf.sh
+      pip3=pip3_docs.sh
       ;;
     *)
       echo "$image not supported!"
@@ -166,7 +168,7 @@ main ()
     --build-arg ESSENTIAL="host_packages_scripts/$essential" \
     --build-arg DOCS="host_packages_scripts/$docs" \
     --build-arg DOCS_PDF="host_packages_scripts/$docs_pdf" \
-    --build-arg PIP3="host_packages_scripts/${pip3:-}" \
+    --build-arg PIP3="host_packages_scripts/$pip3" \
     --file "$SCRIPT_DIR/containerfiles/$containerfile" \
     "$SCRIPT_DIR"
 
diff --git a/documentation/tools/containerfiles/Containerfile.apt b/documentation/tools/containerfiles/Containerfile.apt
index a573786f0..13cbc791f 100644
--- a/documentation/tools/containerfiles/Containerfile.apt
+++ b/documentation/tools/containerfiles/Containerfile.apt
@@ -5,6 +5,7 @@ ARG INCLUDE_ESSENTIAL_PACKAGES=0
 ARG ESSENTIAL=ubuntu_essential.sh
 ARG DOCS=ubuntu_docs.sh
 ARG DOCS_PDF=ubuntu_docs_pdf.sh
+ARG PIP3=pip3_docs.sh
 
 ENV DEBIAN_FRONTEND=noninteractive
 ARG TZ=Europe/Vienna
@@ -13,6 +14,14 @@ ARG TZ=Europe/Vienna
 COPY --chmod=777 ${ESSENTIAL} /temp/host_packages_essential.sh
 COPY --chmod=777 ${DOCS} /temp/host_packages_docs.sh
 COPY --chmod=777 ${DOCS_PDF} /temp/host_packages_docs_pdf.sh
+COPY --chmod=777 ${PIP3} /temp/pip3_docs.sh
+
+# RUN . /tmp/yocto-venv/bin/activate doesn't work because env variables set in
+# RUN don't persist, so set up the virtualenv manually.
+# Unsetting env variables in Containerfile is difficult, so we hope it works
+# fine without doing that for PYTHONHOME (see activate script content).
+ENV VIRTUAL_ENV=/tmp/yocto-venv
+ENV PATH="$VIRTUAL_ENV/bin:$PATH"
 
 RUN ln -fs "/usr/share/zoneinfo/$TZ" /etc/localtime \
  && apt-get update \
@@ -20,6 +29,7 @@ RUN ln -fs "/usr/share/zoneinfo/$TZ" /etc/localtime \
  && if [ "$INCLUDE_ESSENTIAL_PACKAGES" = "1" ]; then yes | /temp/host_packages_essential.sh; fi \
  && yes | /temp/host_packages_docs.sh \
  && yes | /temp/host_packages_docs_pdf.sh \
+ && yes | /temp/pip3_docs.sh \
  && apt-get --yes autoremove \
  && apt-get clean \
  && rm -rf /temp
diff --git a/documentation/tools/host_packages_scripts/ubuntu_docs.sh b/documentation/tools/host_packages_scripts/ubuntu_docs.sh
index c322b61e4..db0743021 100644
--- a/documentation/tools/host_packages_scripts/ubuntu_docs.sh
+++ b/documentation/tools/host_packages_scripts/ubuntu_docs.sh
@@ -1 +1 @@
-sudo apt install git librsvg2-bin locales make python3-saneyaml python3-sphinx-rtd-theme python3-sphinx-copybutton sphinx
+sudo apt install git librsvg2-bin locales make python3-saneyaml python3-pip python3-venv

-- 
2.53.0



^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [PATCH v4 3/3] convert SVGs to PDF and PNG using sphinxcontrib.rsvgconverter plugin
  2026-02-16 11:26 [PATCH v4 0/3] migrate Debian/Ubuntu to pip packages for docs + fix epub and latexpdf targets not finding glob images Quentin Schulz
  2026-02-16 11:26 ` [PATCH v4 1/3] use a venv for installing packages with pip Quentin Schulz
  2026-02-16 11:26 ` [PATCH v4 2/3] consistently use pip packages for all distros Quentin Schulz
@ 2026-02-16 11:26 ` Quentin Schulz
  2026-02-16 14:26 ` [PATCH v4 0/3] migrate Debian/Ubuntu to pip packages for docs + fix epub and latexpdf targets not finding glob images Antonin Godard
  2026-03-02  9:53 ` Antonin Godard
  4 siblings, 0 replies; 12+ messages in thread
From: Quentin Schulz @ 2026-02-16 11:26 UTC (permalink / raw)
  To: docs; +Cc: Quentin Schulz

From: Quentin Schulz <quentin.schulz@cherry.de>

The sphinxcontrib.rsvgconverter plugin allows to generate a PDF or PNG
from an SVG.
This is what we already do manually via Make targets but it isn't good
enough.

Sphinx generates a cache upon first parsing and stores it in a doctrees
directory. Sphinx claims that it can be shared between all builders[1].
For glob patterns in image or figure directives, Sphinx will look for
all possible matches in the source tree and store those in a
"candidates" map for each file, along with the associated mimetype. When
building, Sphinx will then look in this map to try to find a match in
the current builder's supported_image_types. If none is found, the build
will fail.

The latexpdf (using the LaTeXBuilder) target does not support SVGs by
default[2]. We used Make to generate PDFs from them before generating
the doc PDF though (see PDFs variable and %.pdf in Makefile) and that
type is supported by default[2].

The epub (via the Epub3Builder) target does support SVGs by default[3]
but we disabled their support in commit ff3876ca4910 ("conf.py: use PNG
first in EPUB output"). We used Make to generate PNGs from them before
generating the doc epub though (see PNGs variable and %.png in Makefile)
and that type is supported (c.f. Epub3Builder.supported_image_types in
our conf.py).

The issue is that this is done transparently from Sphinx. When we
generate the PDFs or PNGs variants of the SVGs, we put them in-tree
directly along their source file. Then, when caching, Sphinx will find
both the source file and the appropriate variant. However, the cache
isn't updated if there are new files in the tree and the source rST
files aren't modified. So, the cache will not have its map updated and
we won't be able to find the new variant when building for a
non-SVG-compatible builder. Take the following scenario:

- start from a clean source file (fresh clone or git clean -ffdx)
- build the html target (which supports SVGs by default[4])
- sphinx will find all the files in the source tree matching the glob
  pattern in ".. image:: test.*", in our case only an SVG since the PDFs
  and PNGs are only generated for the latexpdf and epub targets
  respectively. The cache will only store the path to the SVG file
  because it is the only source file that matches the glob,
- attempt to build the epub target (which doesn't support SVGs, only
  PNGs)
- Sphinx checks for the file to include for '.. image:: test.*' and
  finds an SVG in the cache map and then check the list of supported
  image types for the Epub3Builder and find that it doesn't support
  that. It cannot find anything satisfying the dependency and thus fails
  to build.

This scenario can easily be reproduced by running the `make all` command
since the html builder will be used first, then epub and finally
latexpdf.

The `make publish` target works by chance, because the epub builder is
built first and will cache SVG + PNG for each glob, then the latexpdf
builder is built and supports PNGs so that's fine and then html, which
supports SVG as well.

To fix this issue, we could simply always generate PDFs and PNGs of all
SVGs in the source tree, but this isn't ideal.

Instead, let's use an ImageConverter from a Sphinx plugin. This allows
to map a plugin as being able to generate a file of type Y from a file
of type X. When Sphinx wants to build an image, it'll try to find the
image with the type the current builder supports in the cache. If it
cannot, it's going to try to find an ImageConverter plugin that is able
to convert one of the image types in cache with one of the image types
the current builder supports. Then Sphinx will call this plugin to
generate the file and put it into the build directory (not in the
source!).

This allows to simplify the Makefile as well and is a much cleaner
approach.

The epub target is removed as the catch-all target contains the same
instructions as the epub target we remove in this commit.

sphinxcontrib.rsvgconverter is a plugin from
sphinxcontrib-svg2pdfconverter python module. SVGs to PNGs is only
supported since 2.0.0.

[1] https://www.sphinx-doc.org/en/master/man/sphinx-build.html#cmdoption-sphinx-build-d
[2] https://www.sphinx-doc.org/en/master/usage/builders/index.html#sphinx.builders.latex.LaTeXBuilder.supported_image_types
[3] https://www.sphinx-doc.org/en/master/usage/builders/index.html#sphinx.builders.epub3.Epub3Builder.supported_image_types
[4] https://www.sphinx-doc.org/en/master/usage/builders/index.html#sphinx.builders.html.StandaloneHTMLBuilder

Signed-off-by: Quentin Schulz <quentin.schulz@cherry.de>
---
 documentation/Makefile                             | 27 +++-------------------
 documentation/Pipfile                              |  2 ++
 documentation/conf.py                              |  1 +
 .../tools/host_packages_scripts/pip3_docs.sh       |  2 +-
 4 files changed, 7 insertions(+), 25 deletions(-)

diff --git a/documentation/Makefile b/documentation/Makefile
index e144a50b4..897db2b5a 100644
--- a/documentation/Makefile
+++ b/documentation/Makefile
@@ -10,11 +10,8 @@ VALEOPTS       ?= --no-wrap --glob '!migration-guides/release-notes-*.rst'
 SOURCEDIR      = .
 VALEDOCS       ?= $(SOURCEDIR)
 SPHINXLINTDOCS ?= $(SOURCEDIR)
-IMAGEDIRS      = */svg
 BUILDDIR       = _build
 DESTDIR        = final
-SVG2PNG        = rsvg-convert
-SVG2PDF        = rsvg-convert
 
 ifeq ($(shell if which $(SPHINXBUILD) >/dev/null 2>&1; then echo 1; else echo 0; fi),0)
 $(error "The '$(SPHINXBUILD)' command was not found. Make sure you have Sphinx installed")
@@ -24,7 +21,7 @@ endif
 help:
 	@$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
 
-.PHONY: all checks help Makefile clean stylecheck publish epub latexpdf
+.PHONY: all checks help Makefile clean stylecheck publish latexpdf
 
 publish: Makefile checks epub latexpdf html singlehtml
 	rm -rf $(BUILDDIR)/$(DESTDIR)/
@@ -35,22 +32,8 @@ publish: Makefile checks epub latexpdf html singlehtml
 	cp $(BUILDDIR)/singlehtml/index.html $(BUILDDIR)/$(DESTDIR)/singleindex.html
 	sed -i -e 's@index.html#@singleindex.html#@g' $(BUILDDIR)/$(DESTDIR)/singleindex.html
 
-# Build a list of SVG files to convert to PDFs
-PDFs := $(foreach dir, $(IMAGEDIRS), $(patsubst %.svg,%.pdf,$(wildcard $(SOURCEDIR)/$(dir)/*.svg)))
-
-# Build a list of SVG files to convert to PNGs
-PNGs := $(foreach dir, $(IMAGEDIRS), $(patsubst %.svg,%.png,$(wildcard $(SOURCEDIR)/$(dir)/*.svg)))
-
-# Pattern rule for converting SVG to PDF
-%.pdf : %.svg
-	$(SVG2PDF) --format=pdf --output=$@ $<
-
-# Pattern rule for converting SVG to PNG
-%.png : %.svg
-	$(SVG2PNG) --format=png --output=$@ $<
-
 clean:
-	@rm -rf $(BUILDDIR) $(PNGs) $(PDFs) poky.yaml sphinx-static/switchers.js releases.rst
+	@rm -rf $(BUILDDIR) poky.yaml sphinx-static/switchers.js releases.rst
 
 checks:
 	$(SOURCEDIR)/tools/check-glossaries --docs-dir $(SOURCEDIR)
@@ -62,14 +45,10 @@ stylecheck:
 sphinx-lint:
 	sphinx-lint $(SPHINXLINTDOCS)
 
-epub: $(PNGs)
-	$(SOURCEDIR)/set_versions.py
-	@$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
-
 # Note: we need to pass buf_size here (which is also configurable from
 # texmf.cnf), to avoid following error:
 #   Unable to read an entire line---bufsize=200000. Please increase buf_size in texmf.cnf.
-latexpdf: $(PDFs)
+latexpdf:
 	$(SOURCEDIR)/set_versions.py
 	buf_size=10000000 $(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
 
diff --git a/documentation/Pipfile b/documentation/Pipfile
index 1fa2df31e..67fce078d 100644
--- a/documentation/Pipfile
+++ b/documentation/Pipfile
@@ -10,6 +10,8 @@ sphinx = "*"
 sphinx-rtd-theme = "*"
 pyyaml = "*"
 sphinx-copybutton = "*"
+# SVG to PNG only supported since 2.0.0
+sphinxcontrib-svg2pdfconverter = ">=2.0.0"
 
 [requires]
 python_version = "3"
diff --git a/documentation/conf.py b/documentation/conf.py
index 3d04f9057..5a69977cf 100644
--- a/documentation/conf.py
+++ b/documentation/conf.py
@@ -67,6 +67,7 @@ extensions = [
     'sphinx.ext.extlinks',
     'sphinx.ext.intersphinx',
     'sphinx_copybutton',
+    'sphinxcontrib.rsvgconverter',
     'yocto-vars'
 ]
 autosectionlabel_prefix_document = True
diff --git a/documentation/tools/host_packages_scripts/pip3_docs.sh b/documentation/tools/host_packages_scripts/pip3_docs.sh
index 9aa7f16fb..2c9330d70 100644
--- a/documentation/tools/host_packages_scripts/pip3_docs.sh
+++ b/documentation/tools/host_packages_scripts/pip3_docs.sh
@@ -1,3 +1,3 @@
 python3 -m venv --clear --system-site-packages /tmp/yocto-venv
 . /tmp/yocto-venv/bin/activate
-python3 -m pip install sphinx sphinx_rtd_theme pyyaml sphinx-copybutton
+python3 -m pip install sphinx sphinx_rtd_theme pyyaml sphinx-copybutton 'sphinxcontrib-svg2pdfconverter>=2.0.0'

-- 
2.53.0



^ permalink raw reply related	[flat|nested] 12+ messages in thread

* Re: [PATCH v4 0/3] migrate Debian/Ubuntu to pip packages for docs + fix epub and latexpdf targets not finding glob images
  2026-02-16 11:26 [PATCH v4 0/3] migrate Debian/Ubuntu to pip packages for docs + fix epub and latexpdf targets not finding glob images Quentin Schulz
                   ` (2 preceding siblings ...)
  2026-02-16 11:26 ` [PATCH v4 3/3] convert SVGs to PDF and PNG using sphinxcontrib.rsvgconverter plugin Quentin Schulz
@ 2026-02-16 14:26 ` Antonin Godard
  2026-03-02  9:53 ` Antonin Godard
  4 siblings, 0 replies; 12+ messages in thread
From: Antonin Godard @ 2026-02-16 14:26 UTC (permalink / raw)
  To: Quentin Schulz, docs; +Cc: Quentin Schulz

Hi,

I have an issue after applying the series:

  $ ./documentation/tools/build-docs-container almalinux:9 latexpdf
  [...]
  latexmk -pdf -dvi- -ps-  'theyoctoproject.tex'
  make[1]: latexmk: No such file or directory
  make[1]: *** [Makefile:28: theyoctoproject.pdf] Error 127
  make[1]: Leaving directory '/docs/documentation/_build/latex'
  make: *** [Makefile:53: latexpdf] Error 2
  make: Leaving directory '/docs/documentation'

You reported an error with latexpdf on IRC, was that it?

Antonin


^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [docs] [PATCH v4 1/3] use a venv for installing packages with pip
  2026-02-16 11:26 ` [PATCH v4 1/3] use a venv for installing packages with pip Quentin Schulz
@ 2026-02-18  8:18   ` Antonin Godard
  2026-02-23 17:33     ` Quentin Schulz
  0 siblings, 1 reply; 12+ messages in thread
From: Antonin Godard @ 2026-02-18  8:18 UTC (permalink / raw)
  To: foss, docs; +Cc: Quentin Schulz

Hi,

On Mon Feb 16, 2026 at 12:26 PM CET, Quentin Schulz via lists.yoctoproject.org wrote:
[...]
> diff --git a/documentation/tools/host_packages_scripts/pip3_docs.sh b/documentation/tools/host_packages_scripts/pip3_docs.sh
> index 907ecec55..9aa7f16fb 100644
> --- a/documentation/tools/host_packages_scripts/pip3_docs.sh
> +++ b/documentation/tools/host_packages_scripts/pip3_docs.sh
> @@ -1 +1,3 @@
> -sudo pip3 install sphinx sphinx_rtd_theme pyyaml sphinx-copybutton
> +python3 -m venv --clear --system-site-packages /tmp/yocto-venv

I find /tmp a bit odd for installing a virtual environment (at least, from a
user perspective, as I can understand why you did this for the container).

Maybe you can add a comment above this line saying:

# change "/tmp/yocto-venv" to "./yocto-venv" if you want a persistent virtual environment

?

Also maybe, s/yocto-venv/yocto-docs-venv/?

Antonin


^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [docs] [PATCH v4 1/3] use a venv for installing packages with pip
  2026-02-18  8:18   ` [docs] " Antonin Godard
@ 2026-02-23 17:33     ` Quentin Schulz
  2026-02-24  8:28       ` Antonin Godard
  0 siblings, 1 reply; 12+ messages in thread
From: Quentin Schulz @ 2026-02-23 17:33 UTC (permalink / raw)
  To: Antonin Godard, foss, docs

Hi Antonin,

On 2/18/26 9:18 AM, Antonin Godard wrote:
> Hi,
> 
> On Mon Feb 16, 2026 at 12:26 PM CET, Quentin Schulz via lists.yoctoproject.org wrote:
> [...]
>> diff --git a/documentation/tools/host_packages_scripts/pip3_docs.sh b/documentation/tools/host_packages_scripts/pip3_docs.sh
>> index 907ecec55..9aa7f16fb 100644
>> --- a/documentation/tools/host_packages_scripts/pip3_docs.sh
>> +++ b/documentation/tools/host_packages_scripts/pip3_docs.sh
>> @@ -1 +1,3 @@
>> -sudo pip3 install sphinx sphinx_rtd_theme pyyaml sphinx-copybutton
>> +python3 -m venv --clear --system-site-packages /tmp/yocto-venv
> 
> I find /tmp a bit odd for installing a virtual environment (at least, from a
> user perspective, as I can understand why you did this for the container).
> 
> Maybe you can add a comment above this line saying:
> 
> # change "/tmp/yocto-venv" to "./yocto-venv" if you want a persistent virtual environment
> 
> ?
> 

I can do yet another sed in Containerfile to avoid telling the user to 
do that and just have the path different in the container (see what we 
do for zypper install commands). I tried mounting the volume 
(yocto-docs) as an overlay within the container (:O in podman) but that 
didn't work, so we have to have the venv outside of the mounting point.

> Also maybe, s/yocto-venv/yocto-docs-venv/?
> 

I was about to interject that because we use --system-site-packages, we 
could still run bitbake from within the venv and thus renaming it is 
unnecessary, but then I tried building the docs locally on my f43 system 
and this series doesn't actually work.

It complains about not being able to find sphinxcontrib.rsvgconverter 
plugin while it definitely is installed!

Then I remembered having a somewhat similar issue in my Python 
pet-project when I had the same package installed twice, once 
system-wide and once in a venv... Turns out that a package which 
installs a command/script doesn't seem to work with venv (at least with 
my sample pool of... 2). It would always use the system's when using the 
command (and it'd be fine with python3 -m <package> as far as I remember).
sphinx-build actually is a script, c.f. 
https://github.com/sphinx-doc/sphinx/blob/master/pyproject.toml#L99. So 
when our Makefile calls sphinx-build, it may very well be calling the 
system package if there's one and not the command for the sphinx within 
the venv. This results in not being able to find the modules installed 
in the venv (that is, sphinxcontrib.rsvgconverter). But Quentin, you 
would say, simply replace sphinx-build with python3 -m sphinx and all 
shall be well! Now the sphinx Python module used is indeed the one from 
the venv, but it cannot find the system modules anymore. If anyone has 
any idea what's going on, let me know but I don't think I'll investigate 
this further.

Instead, I'll NOT pass --system-site-packages to venv such that we only 
have packages from PyPI (which means, not being able to run BitBake from 
that venv). Now... this still doesn't resolve the issue of sphinx-build 
calling the module from the system if it exists... So I plan to change 
sphinx-build to python3 -m sphinx in our Makefile to work-around that. 
Any objection? Did I miss something or get something wrong maybe?

Cheers,
Quentin


^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [docs] [PATCH v4 1/3] use a venv for installing packages with pip
  2026-02-23 17:33     ` Quentin Schulz
@ 2026-02-24  8:28       ` Antonin Godard
  2026-02-24 12:52         ` Quentin Schulz
  0 siblings, 1 reply; 12+ messages in thread
From: Antonin Godard @ 2026-02-24  8:28 UTC (permalink / raw)
  To: Quentin Schulz, foss, docs

Hi,

On Mon Feb 23, 2026 at 6:33 PM CET, Quentin Schulz wrote:
> Hi Antonin,
>
> On 2/18/26 9:18 AM, Antonin Godard wrote:
>> Hi,
>> 
>> On Mon Feb 16, 2026 at 12:26 PM CET, Quentin Schulz via lists.yoctoproject.org wrote:
>> [...]
>>> diff --git a/documentation/tools/host_packages_scripts/pip3_docs.sh b/documentation/tools/host_packages_scripts/pip3_docs.sh
>>> index 907ecec55..9aa7f16fb 100644
>>> --- a/documentation/tools/host_packages_scripts/pip3_docs.sh
>>> +++ b/documentation/tools/host_packages_scripts/pip3_docs.sh
>>> @@ -1 +1,3 @@
>>> -sudo pip3 install sphinx sphinx_rtd_theme pyyaml sphinx-copybutton
>>> +python3 -m venv --clear --system-site-packages /tmp/yocto-venv
>> 
>> I find /tmp a bit odd for installing a virtual environment (at least, from a
>> user perspective, as I can understand why you did this for the container).
>> 
>> Maybe you can add a comment above this line saying:
>> 
>> # change "/tmp/yocto-venv" to "./yocto-venv" if you want a persistent virtual environment
>> 
>> ?
>> 
>
> I can do yet another sed in Containerfile to avoid telling the user to 
> do that and just have the path different in the container (see what we 
> do for zypper install commands). I tried mounting the volume 
> (yocto-docs) as an overlay within the container (:O in podman) but that 

You mean yocto-venv?

> didn't work, so we have to have the venv outside of the mounting point.

Sure, I guess it's best if we can show the user the proper way of setting things
up while doing it our way.

>> Also maybe, s/yocto-venv/yocto-docs-venv/?
>> 
>
> I was about to interject that because we use --system-site-packages, we 
> could still run bitbake from within the venv and thus renaming it is 
> unnecessary, but then I tried building the docs locally on my f43 system 
> and this series doesn't actually work.
>
> It complains about not being able to find sphinxcontrib.rsvgconverter 
> plugin while it definitely is installed!
>
> Then I remembered having a somewhat similar issue in my Python 
> pet-project when I had the same package installed twice, once 
> system-wide and once in a venv... Turns out that a package which 
> installs a command/script doesn't seem to work with venv (at least with 
> my sample pool of... 2). It would always use the system's when using the 
> command (and it'd be fine with python3 -m <package> as far as I remember).
> sphinx-build actually is a script, c.f. 
> https://github.com/sphinx-doc/sphinx/blob/master/pyproject.toml#L99. So 
> when our Makefile calls sphinx-build, it may very well be calling the 
> system package if there's one and not the command for the sphinx within 
> the venv. This results in not being able to find the modules installed 
> in the venv (that is, sphinxcontrib.rsvgconverter). But Quentin, you 
> would say, simply replace sphinx-build with python3 -m sphinx and all 
> shall be well! Now the sphinx Python module used is indeed the one from 
> the venv, but it cannot find the system modules anymore. If anyone has 
> any idea what's going on, let me know but I don't think I'll investigate 
> this further.
>
> Instead, I'll NOT pass --system-site-packages to venv such that we only 
> have packages from PyPI (which means, not being able to run BitBake from 
> that venv). Now... this still doesn't resolve the issue of sphinx-build 
> calling the module from the system if it exists...

I did some tests:

➜  ~ mktemp -d
/tmp/tmp.M4eSbciQhZ
➜  ~ cd /tmp/tmp.M4eSbciQhZ
➜  which sphinx-build
/usr/bin/sphinx-build
➜  python -m venv .venv
➜  source .venv/bin/activate
➜  pip install sphinx >/dev/null
➜  which sphinx-build
/usr/bin/sphinx-build

Maybe you're also hitting this. Now after running:

➜  rehash
➜  which sphinx-build
/tmp/tmp.M4eSbciQhZ/.venv/bin/sphinx-build

Looks like it's working now. rehash seems specific to zsh in my case, bash does
not know this command. But bash does not need to rehash, it works out of the box
for me with bash.

> So I plan to change sphinx-build to python3 -m sphinx in our Makefile to
> work-around that. Any objection? Did I miss something or get something wrong
> maybe?

I thought of doing:

diff --git a/documentation/tools/containerfiles/Containerfile.apt b/documentation/tools/containerfiles/Containerfile.apt
index a573786f0..0861354fb 100644
--- a/documentation/tools/containerfiles/Containerfile.apt
+++ b/documentation/tools/containerfiles/Containerfile.apt
@@ -17,9 +17,9 @@ COPY --chmod=777 ${DOCS_PDF} /temp/host_packages_docs_pdf.sh
 RUN ln -fs "/usr/share/zoneinfo/$TZ" /etc/localtime \
  && apt-get update \
  && apt-get install -y sudo \
- && if [ "$INCLUDE_ESSENTIAL_PACKAGES" = "1" ]; then yes | /temp/host_packages_essential.sh; fi \
- && yes | /temp/host_packages_docs.sh \
- && yes | /temp/host_packages_docs_pdf.sh \
+ && if [ "$INCLUDE_ESSENTIAL_PACKAGES" = "1" ]; then yes | bash /temp/host_packages_essential.sh; fi \
+ && yes | bash /temp/host_packages_docs.sh \
+ && yes | bash /temp/host_packages_docs_pdf.sh \
  && apt-get --yes autoremove \
  && apt-get clean \
  && rm -rf /temp

Or add a shebang to the snippets… but that makes them non "copy-pasteable".

So, yes, I vote for "python -m sphinx" too! Seems like a good solution to me :)

Antonin


^ permalink raw reply related	[flat|nested] 12+ messages in thread

* Re: [docs] [PATCH v4 1/3] use a venv for installing packages with pip
  2026-02-24  8:28       ` Antonin Godard
@ 2026-02-24 12:52         ` Quentin Schulz
  2026-02-24 13:55           ` Quentin Schulz
  0 siblings, 1 reply; 12+ messages in thread
From: Quentin Schulz @ 2026-02-24 12:52 UTC (permalink / raw)
  To: Antonin Godard, foss, docs

Hi Antonin,

On 2/24/26 9:28 AM, Antonin Godard wrote:
> Hi,
> 
> On Mon Feb 23, 2026 at 6:33 PM CET, Quentin Schulz wrote:
>> Hi Antonin,
>>
>> On 2/18/26 9:18 AM, Antonin Godard wrote:
>>> Hi,
>>>
>>> On Mon Feb 16, 2026 at 12:26 PM CET, Quentin Schulz via lists.yoctoproject.org wrote:
>>> [...]
>>>> diff --git a/documentation/tools/host_packages_scripts/pip3_docs.sh b/documentation/tools/host_packages_scripts/pip3_docs.sh
>>>> index 907ecec55..9aa7f16fb 100644
>>>> --- a/documentation/tools/host_packages_scripts/pip3_docs.sh
>>>> +++ b/documentation/tools/host_packages_scripts/pip3_docs.sh
>>>> @@ -1 +1,3 @@
>>>> -sudo pip3 install sphinx sphinx_rtd_theme pyyaml sphinx-copybutton
>>>> +python3 -m venv --clear --system-site-packages /tmp/yocto-venv
>>>
>>> I find /tmp a bit odd for installing a virtual environment (at least, from a
>>> user perspective, as I can understand why you did this for the container).
>>>
>>> Maybe you can add a comment above this line saying:
>>>
>>> # change "/tmp/yocto-venv" to "./yocto-venv" if you want a persistent virtual environment
>>>
>>> ?
>>>
>>
>> I can do yet another sed in Containerfile to avoid telling the user to
>> do that and just have the path different in the container (see what we
>> do for zypper install commands). I tried mounting the volume
>> (yocto-docs) as an overlay within the container (:O in podman) but that
> 
> You mean yocto-venv?
> 

No, I meant yocto-docs git repo.

The venv is within the container rootfs (set up as part of the 
Containerfile instructions).

We mount the yocto-docs repo into /docs in the container with a volume 
mount, see the declaration of args_run array in tools/build-docs-container.

We need to have a way to have the container /docs (where yocto-docs-venv 
venv is) overlayed by a volume mount such that the yocto-docs git repo 
and the venv appear in /docs within the container. I am not sure this is 
possible (at least, my short experiment with :O in volume mount 
option[1] didn't succeed. I think this is rather used as "make the 
content added by the container runtime overlay the volume mount from the 
host such that when you exits the container the overlayed stuff is 
removed". It seems you can tell podman to use a different upperdir and 
workdir but my understanding is that this is for storing the overlayed 
stuff outside of the container such that it persists for later container 
runtimes).

[1] 
https://docs.podman.io/en/latest/markdown/podman-run.1.html#volume-v-source-volume-host-dir-container-dir-options 
Overlay Volume Mounts

>> didn't work, so we have to have the venv outside of the mounting point.
> 
> Sure, I guess it's best if we can show the user the proper way of setting things
> up while doing it our way.
> 
>>> Also maybe, s/yocto-venv/yocto-docs-venv/?
>>>
>>
>> I was about to interject that because we use --system-site-packages, we
>> could still run bitbake from within the venv and thus renaming it is
>> unnecessary, but then I tried building the docs locally on my f43 system
>> and this series doesn't actually work.
>>
>> It complains about not being able to find sphinxcontrib.rsvgconverter
>> plugin while it definitely is installed!
>>
>> Then I remembered having a somewhat similar issue in my Python
>> pet-project when I had the same package installed twice, once
>> system-wide and once in a venv... Turns out that a package which
>> installs a command/script doesn't seem to work with venv (at least with
>> my sample pool of... 2). It would always use the system's when using the
>> command (and it'd be fine with python3 -m <package> as far as I remember).
>> sphinx-build actually is a script, c.f.
>> https://github.com/sphinx-doc/sphinx/blob/master/pyproject.toml#L99. So
>> when our Makefile calls sphinx-build, it may very well be calling the
>> system package if there's one and not the command for the sphinx within
>> the venv. This results in not being able to find the modules installed
>> in the venv (that is, sphinxcontrib.rsvgconverter). But Quentin, you
>> would say, simply replace sphinx-build with python3 -m sphinx and all
>> shall be well! Now the sphinx Python module used is indeed the one from
>> the venv, but it cannot find the system modules anymore. If anyone has
>> any idea what's going on, let me know but I don't think I'll investigate
>> this further.
>>
>> Instead, I'll NOT pass --system-site-packages to venv such that we only
>> have packages from PyPI (which means, not being able to run BitBake from
>> that venv). Now... this still doesn't resolve the issue of sphinx-build
>> calling the module from the system if it exists...
> 
> I did some tests:
> 
> ➜  ~ mktemp -d
> /tmp/tmp.M4eSbciQhZ
> ➜  ~ cd /tmp/tmp.M4eSbciQhZ
> ➜  which sphinx-build
> /usr/bin/sphinx-build
> ➜  python -m venv .venv
> ➜  source .venv/bin/activate
> ➜  pip install sphinx >/dev/null
> ➜  which sphinx-build
> /usr/bin/sphinx-build
> 
> Maybe you're also hitting this. Now after running:
> 
Nope, works perfectly fine on my side. Returns what it should, that is, 
sphinx-build from the venv. However, *running* the command (e.g. 
sphinx-build --version) shows it's using the host system's and not venv's.

> ➜  rehash

hash -r is run as part of the activate script of the venv when sourced 
(see last line in the script). I'm assuming this is similar to zsh's 
rehash since this script is compatible with zsh and bash[2].

I'm assuming the issue is we need to run it again after installing 
packages through pip...

Another option is to source the venv activate script again after having 
run pip commands. Or run pip without having sourced that activate 
script, e.g. like

python3 -m venv --clear --system-site-packages ./yocto-docs-venv/
./yocto-docs-venv/bin/python3 -m pip install xxx
. ./yocto-docs-venv/bin/activate

or

python3 -m venv --clear --system-site-packages ./yocto-docs-venv/
. ./yocto-docs-venv/bin/activate
python3 -m pip install xxx
. ./yocto-docs-venv/bin/activate

or we use python3 -m sphinx in Makefile. What would you prefer?

[2] https://docs.python.org/3/library/venv.html#how-venvs-work

> ➜  which sphinx-build
> /tmp/tmp.M4eSbciQhZ/.venv/bin/sphinx-build
> 
> Looks like it's working now. rehash seems specific to zsh in my case, bash does
> not know this command. But bash does not need to rehash, it works out of the box
> for me with bash.
> 

I bet it doesn't if you don't run rehash. Can you run sphinx-build 
--version, python3 -m sphinx --version and python3 -m pip list | grep 
Sphinx?

For me, the former returns the same version inside and outside the venv, 
that is, the host system's version. The second returns what's inside the 
venv, as reported by the latter.

So... I researched this a bit more and I think I may have an idea what's 
happening. sphinxcontrib is a namespace package. Many packages install 
in that namespace, e.g. sphinxcontrib-jquery but also 
sphinxcontrib-svg2pdfconverter, you know the package I'm trying to add 
in this series as a dependency?

See 
https://packaging.python.org/en/latest/guides/packaging-namespace-packages/#native-namespace-packages 
for how to create native namespace packages.

And you know what namespace supports? Different locations per "portion" 
of the namespace, see 
https://peps.python.org/pep-0420/#differences-between-namespace-packages-and-regular-packages. 
This means you can import sphinxcontrib packages from different 
locations (host system's or venv, if you use --system-site-package for 
python3 -m venv). And you know what's important for regular packages 
that are portions of a namespace? To not break the namespace package, 
that is, NOT have a sphinxcontrib/__init__.py file... Which, lo and 
behold, seems to be what sphinxcontrib-svg2pdfconverter is doing. I'm 
assuming because it is NOT using the sphinxcontrib namespace package, 
but defining a regular package sphinxcontrib with multiple modules. This 
means that importing sphinxcontrib when you have 
sphinxcontrib-svg2pdfconverter anywhere in your host system or venv 
environment, you break multi-location support for packages in the 
namespace. Why this didn't break more than simply not being able to use 
multi-location support is beyond my understanding.

To check paths checked by the NamespaceLoader[3], you can create a venv 
with --system-site-packages, then after sourcing the venv activate 
script, run

python3 -c 'import sphinxcontrib; print(sphinxcontrib.__path__)'

It'll print a few paths that will be looked up when doing an

import sphinxcontrib.something

Now install sphinxcontrib-svg2pdfconverter and run the same command and 
you get only one path.

So... I'll be working on fixing sphinxcontrib-svg2pdfconverter and 
hopefully we don't have to wait too long for a v2.0.1 (or whatever the 
next version will be). This means we'll be able to use 
--system-site-packages again, which I think is neat.

[3] 
https://docs.python.org/3/library/importlib.html#importlib.machinery.NamespaceLoader

>> So I plan to change sphinx-build to python3 -m sphinx in our Makefile to
>> work-around that. Any objection? Did I miss something or get something wrong
>> maybe?
> 
> I thought of doing:
> 
> diff --git a/documentation/tools/containerfiles/Containerfile.apt b/documentation/tools/containerfiles/Containerfile.apt
> index a573786f0..0861354fb 100644
> --- a/documentation/tools/containerfiles/Containerfile.apt
> +++ b/documentation/tools/containerfiles/Containerfile.apt
> @@ -17,9 +17,9 @@ COPY --chmod=777 ${DOCS_PDF} /temp/host_packages_docs_pdf.sh
>   RUN ln -fs "/usr/share/zoneinfo/$TZ" /etc/localtime \
>    && apt-get update \
>    && apt-get install -y sudo \
> - && if [ "$INCLUDE_ESSENTIAL_PACKAGES" = "1" ]; then yes | /temp/host_packages_essential.sh; fi \
> - && yes | /temp/host_packages_docs.sh \
> - && yes | /temp/host_packages_docs_pdf.sh \
> + && if [ "$INCLUDE_ESSENTIAL_PACKAGES" = "1" ]; then yes | bash /temp/host_packages_essential.sh; fi \
> + && yes | bash /temp/host_packages_docs.sh \
> + && yes | bash /temp/host_packages_docs_pdf.sh \
>    && apt-get --yes autoremove \
>    && apt-get clean \
>    && rm -rf /temp
> 

What does this help with exactly?

> Or add a shebang to the snippets… but that makes them non "copy-pasteable".
> 

Why not, it's just a regular comment when pasted into the CLI?

Cheers,
Quentin


^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [docs] [PATCH v4 1/3] use a venv for installing packages with pip
  2026-02-24 12:52         ` Quentin Schulz
@ 2026-02-24 13:55           ` Quentin Schulz
  2026-02-24 14:03             ` Antonin Godard
  0 siblings, 1 reply; 12+ messages in thread
From: Quentin Schulz @ 2026-02-24 13:55 UTC (permalink / raw)
  To: Antonin Godard, foss, docs

Hi Antonin,

On 2/24/26 1:52 PM, Quentin Schulz via lists.yoctoproject.org wrote:
> Hi Antonin,
> 
> On 2/24/26 9:28 AM, Antonin Godard wrote:
>> Hi,
>>
>> On Mon Feb 23, 2026 at 6:33 PM CET, Quentin Schulz wrote:
>>> Hi Antonin,
>>>
>>> On 2/18/26 9:18 AM, Antonin Godard wrote:
>>>> Hi,
>>>>
>>>> On Mon Feb 16, 2026 at 12:26 PM CET, Quentin Schulz via 
>>>> lists.yoctoproject.org wrote:

[...]

> So... I'll be working on fixing sphinxcontrib-svg2pdfconverter and 
> hopefully we don't have to wait too long for a v2.0.1 (or whatever the 
> next version will be). This means we'll be able to use --system-site- 
> packages again, which I think is neat.
> 

See 
https://github.com/missinglinkelectronics/sphinxcontrib-svg2pdfconverter/pull/34

Do we want to wait for this to be merged before having a look at this 
series again? This prevents us from using --system-site-packages, but we 
could decide to not have it and force all Python packages for building 
the docs to be taken only from the venv (which is what happens when 
--system-site-packages is *NOT* passed to venv at creation time).

What do you think?

Cheers,
Quentin


^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [docs] [PATCH v4 1/3] use a venv for installing packages with pip
  2026-02-24 13:55           ` Quentin Schulz
@ 2026-02-24 14:03             ` Antonin Godard
  0 siblings, 0 replies; 12+ messages in thread
From: Antonin Godard @ 2026-02-24 14:03 UTC (permalink / raw)
  To: Quentin Schulz, foss, docs

Hi,

On Tue Feb 24, 2026 at 2:55 PM CET, Quentin Schulz wrote:
> Hi Antonin,
>
> On 2/24/26 1:52 PM, Quentin Schulz via lists.yoctoproject.org wrote:
>> Hi Antonin,
>> 
>> On 2/24/26 9:28 AM, Antonin Godard wrote:
>>> Hi,
>>>
>>> On Mon Feb 23, 2026 at 6:33 PM CET, Quentin Schulz wrote:
>>>> Hi Antonin,
>>>>
>>>> On 2/18/26 9:18 AM, Antonin Godard wrote:
>>>>> Hi,
>>>>>
>>>>> On Mon Feb 16, 2026 at 12:26 PM CET, Quentin Schulz via 
>>>>> lists.yoctoproject.org wrote:
>
> [...]
>
>> So... I'll be working on fixing sphinxcontrib-svg2pdfconverter and 
>> hopefully we don't have to wait too long for a v2.0.1 (or whatever the 
>> next version will be). This means we'll be able to use --system-site- 
>> packages again, which I think is neat.
>> 
>
> See 
> https://github.com/missinglinkelectronics/sphinxcontrib-svg2pdfconverter/pull/34
>
> Do we want to wait for this to be merged before having a look at this 
> series again? This prevents us from using --system-site-packages, but we 
> could decide to not have it and force all Python packages for building 
> the docs to be taken only from the venv (which is what happens when 
> --system-site-packages is *NOT* passed to venv at creation time).
>
> What do you think?

Let's go for python3 -m sphinx in the Makefile and no --system-site-packages
package option for the time being, and improve later if we can.

Thanks for taking the time to dig!
Antonin


^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH v4 0/3] migrate Debian/Ubuntu to pip packages for docs + fix epub and latexpdf targets not finding glob images
  2026-02-16 11:26 [PATCH v4 0/3] migrate Debian/Ubuntu to pip packages for docs + fix epub and latexpdf targets not finding glob images Quentin Schulz
                   ` (3 preceding siblings ...)
  2026-02-16 14:26 ` [PATCH v4 0/3] migrate Debian/Ubuntu to pip packages for docs + fix epub and latexpdf targets not finding glob images Antonin Godard
@ 2026-03-02  9:53 ` Antonin Godard
  4 siblings, 0 replies; 12+ messages in thread
From: Antonin Godard @ 2026-03-02  9:53 UTC (permalink / raw)
  To: docs, Quentin Schulz; +Cc: Antonin Godard, Quentin Schulz

Applied, thanks!

[1/3] use a venv for installing packages with pip
      commit: 16599c4f65d451c47104e7604b68a0658d25ac48
[2/3] consistently use pip packages for all distros
      commit: 4fbae014790373ec2c662325e54cf7f07f507dbc
[3/3] convert SVGs to PDF and PNG using sphinxcontrib.rsvgconverter plugin
      commit: ba351b35480d9c06c870a6f34d8bdbc1856b9511


^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2026-03-02  9:54 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-02-16 11:26 [PATCH v4 0/3] migrate Debian/Ubuntu to pip packages for docs + fix epub and latexpdf targets not finding glob images Quentin Schulz
2026-02-16 11:26 ` [PATCH v4 1/3] use a venv for installing packages with pip Quentin Schulz
2026-02-18  8:18   ` [docs] " Antonin Godard
2026-02-23 17:33     ` Quentin Schulz
2026-02-24  8:28       ` Antonin Godard
2026-02-24 12:52         ` Quentin Schulz
2026-02-24 13:55           ` Quentin Schulz
2026-02-24 14:03             ` Antonin Godard
2026-02-16 11:26 ` [PATCH v4 2/3] consistently use pip packages for all distros Quentin Schulz
2026-02-16 11:26 ` [PATCH v4 3/3] convert SVGs to PDF and PNG using sphinxcontrib.rsvgconverter plugin Quentin Schulz
2026-02-16 14:26 ` [PATCH v4 0/3] migrate Debian/Ubuntu to pip packages for docs + fix epub and latexpdf targets not finding glob images Antonin Godard
2026-03-02  9:53 ` Antonin Godard

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox