[PATCH 00/15] Translate sphinx-pre-install to Python

Mauro Carvalho Chehab posted 15 patches 3 months, 1 week ago
There is a newer version of this series
scripts/sphinx-pre-install | 2218 +++++++++++++++++++-----------------
1 file changed, 1164 insertions(+), 1054 deletions(-)
[PATCH 00/15] Translate sphinx-pre-install to Python
Posted by Mauro Carvalho Chehab 3 months, 1 week ago
Hi Jon,

This series port scripts/sphinx-pre-install to Python. It started as
a bug-compatible version with the old logic.

Yet, while testing it with lxc and some Docker images, I opted
to also drop legacy logic from it and to add support for some
additional variants compatible with existing detection logic.

It also fixes some issues that were present at the proposed
install procedures that don't work anymore with new distro
versions.

I ended writing some scripts I used internally to test it.
Such scripts compare the diff output of both the .pl and
.py version. The differences were only blank lines for
gentoo and some  warning reorder.

The test script also ran the install procedure for system,
venv and native Sphinx install.

Since there are distros which has a default Python 3.6
(like openSuse and RHEL8), I opted to make the script
compatible with it. Yet, internally it requires at least
Python 3.7(*) to support the build.

The tests were done with those containers, obtained from
lxc download templates or via podman run:

+--------------------|------------------------------|----------------+
| Name               | release                      | container type |
+--------------------+------------------------------+----------------+
| debian             | bookworm                     | lxc            |
| ubuntu             | plucky                       | lxc            |
| ubuntu-lts         | noble                        | lxc            |
| almalinux          | 9                            | lxc            |
| archlinux          | current                      | lxc            |
| gentoo             | current                      | lxc            |
| opensuse           | tumbleweed                   | lxc            |
| devuan             | daedalus                     | lxc            |
| kali               | current                      | lxc            |
| mint               | wilma                        | lxc            |
| fedora             | 42                           | lxc            |
| centos             | 9-Stream                     | lxc            |
| rockylinux         | 9                            | lxc            |
| oracle             | 9                            | lxc            |
| amazonlinux        | 2023                         | lxc            |
| openeuler          | 25.03                        | lxc            |
| springdalelinux    | 9                            | lxc            |
+--------------------+------------------------------+----------------+
| mageia             | mageia:latest                | docker         |
| openmandriva       | openmandriva/4.0             | docker         |
| scientificlinux    | eurolinux/scientific-linux-7 | docker         |
| rhel               | redhat/ubi8                  | docker         |
| opensuse-leap      | opensuse/leap:15.6           | docker         |
+--------------------+------------------------------+----------------+
 
It succeeded to install either with venv or system package (most
for both) for all those OSes:

Detected OS                : AlmaLinux release 9.6 (Sage Margay).
Installing system_install  : PASSED
Installing venv            : PASSED: Sphinx 7.4.7
Installing package_install : PASSED: Sphinx 3.4.3

Detected OS                : Amazon Linux release 2023 (Amazon Linux).
Installing system_install  : PASSED
Installing venv            : PASSED: Sphinx 7.4.7
Installing package_install : PASSED: Sphinx 3.4.3

Detected OS                : Arch Linux.
Installing system_install  : PASSED
Installing venv            : PASSED: Sphinx 8.2.3
Installing package_install : PASSED: Sphinx 8.2.3

Detected OS                : CentOS Stream release 9.
Installing system_install  : PASSED
Installing venv            : PASSED: Sphinx 7.4.7
Installing package_install : PASSED: Sphinx 3.4.3

Detected OS                : Debian GNU/Linux 12.
Installing system_install  : PASSED
Installing venv            : PASSED: Sphinx 8.2.3
Installing package_install : PASSED: Sphinx 5.3.0

Detected OS                : Devuan GNU/Linux 5.
Installing system_install  : PASSED
Installing venv            : PASSED: Sphinx 8.2.3
Installing package_install : PASSED: Sphinx 5.3.0

Detected OS                : Fedora release 42 (Adams).
Installing system_install  : PASSED
Installing venv            : PASSED: Sphinx 8.2.3
Installing package_install : PASSED: Sphinx 8.1.3

Detected OS                : Gentoo Base System release 2.17.
Installing venv            : PASSED: Sphinx 8.2.3
Installing package_install : PASSED: Sphinx 8.2.3

Detected OS                : Kali GNU/Linux 2025.2.
Installing system_install  : PASSED
Installing venv            : PASSED: Sphinx 8.2.3
Installing package_install : PASSED: Sphinx 8.1.3

Detected OS                : Mageia 9.
Installing system_install  : PASSED
Installing venv            : PASSED: Sphinx 8.1.3
Installing package_install : PASSED: Sphinx 6.1.3

Detected OS                : Linux Mint 22.
Installing system_install  : PASSED
Installing venv            : PASSED: Sphinx 8.1.3
Installing package_install : PASSED: Sphinx 4.3.2

Detected OS                : openEuler release 25.03.
Installing system_install  : PASSED
Installing venv            : PASSED: Sphinx 8.2.3
Installing package_install : PASSED: Sphinx 8.1.3

Detected OS                : OpenMandriva Lx 4.0.
Installing venv            : WARNING: No such file or directory: 'sphinx-build'
Installing package_install : PASSED: Sphinx 8.2.3

Detected OS                : openSUSE Leap 15.6.
Installing venv            : WARNING: No such file or directory: 'sphinx-build'
Installing package_install : PASSED: Sphinx 7.2.6

Detected OS                : openSUSE Tumbleweed.
Installing system_install  : PASSED
Installing venv            : PASSED: Sphinx 8.2.3
Installing package_install : PASSED: Sphinx 8.2.3

Detected OS                : Oracle Linux Server release 9.6.
Installing system_install  : PASSED
Installing venv            : PASSED: Sphinx 7.4.7
Installing package_install : WARNING: No such file or directory: 'sphinx-build'

Detected OS                : Rocky Linux release 9.6 (Blue Onyx).
Installing system_install  : PASSED
Installing venv            : PASSED: Sphinx 7.4.7
Installing package_install : PASSED: Sphinx 3.4.3

Detected OS                : Springdale Open Enterprise Linux release 9.2 (Parma).
Installing venv            : PASSED: Sphinx 7.4.7
Installing package_install : PASSED: Sphinx 3.4.3

Detected OS                : Ubuntu 24.04.2 LTS.
Installing system_install  : PASSED
Installing venv            : PASSED: Sphinx 8.2.3
Installing package_install : PASSED: Sphinx 7.2.6

Detected OS                : Ubuntu 25.04.
Installing system_install  : PASSED
Installing venv            : PASSED: Sphinx 8.2.3
Installing package_install : PASSED: Sphinx 8.1.3

It also properly detected RHEL 8 string:

Detected OS                : Red Hat Enterprise Linux release 8.10 (Ootpa).
Installing venv            : WARNING: No such file or directory: 'sphinx-build'
Installing package_install : WARNING: No such file or directory: 'sphinx-build'

But, at this particular docker container, no repositories had
python3-sphinx nor python3-virtualenv, but I suspect that this
is a problem on this particular image, as I'm almost sure we
tested RHEL 8 in the past, so, I have hopes that this could
still work with real RHEL, if it has Python >= 3.7.

Yet, our goal is to support the latest LTS version, so
RHEL 8 is out of scope.

(*) Officially, the minimal Python version we endorse is
3.9, as several Python scripts at the Kernel won't run
with previous releases, but what we have for doc builds
is currently compatible with 3.7. We may later increase
it if you think it is a good idea. Yet, if you see the
Sphinx version above, you'll notice that some venv installed
7.4.7 as the latest version. It means that such distros
still have Python <= 3.9.

Mauro Carvalho Chehab (15):
  scripts: sphinx-pre-install: fix version check for Fedora
  scripts: sphinx-pre-install: rename it to
    scripts/sphinx-pre-install.pl
  scripts: sphinx-pre-install: Convert script to Python
  scripts: sphinx-pre-install: Make it compatible with Python 3.6
  scripts: sphinx-pre-install: run on a supported version
  scripts: sphinx-pre-install: drop obsolete routines
  scripts: sphinx-pre-install: drop support for old virtualenv
  scripts: sphinx-pre-install: Address issues with OpenSUSE Leap 15.x
  scripts: sphinx-pre-install.py fix opensuse hints
  scripts: sphinx-pre-install.py: fix support for gentoo
  scripts: sphinx-pre-install: Address issues with OpenSUSE Tumbleweed
  scripts: sphinx-pre-install.py: only show portage hints once
  scripts: sphinx-pre-install.py: cleanup rhel support
  docs: Makefile: switch to the new scripts/sphinx-pre-install.py
  scripts: sphinx-pre-install.pl: get rid of the old script

 scripts/sphinx-pre-install | 2218 +++++++++++++++++++-----------------
 1 file changed, 1164 insertions(+), 1054 deletions(-)

-- 
2.50.0
Re: [PATCH 00/15] Translate sphinx-pre-install to Python
Posted by Jonathan Corbet 3 months, 1 week ago
Mauro Carvalho Chehab <mchehab+huawei@kernel.org> writes:

> Hi Jon,
>
> This series port scripts/sphinx-pre-install to Python. It started as
> a bug-compatible version with the old logic.

In my limited testing this seems to work just fine ...  Unless somebody
comes up with a problem, I don't see a lot of reasons to not apply it.

Thanks,

jon
Re: [PATCH 00/15] Translate sphinx-pre-install to Python
Posted by Mauro Carvalho Chehab 3 months ago
Em Wed, 02 Jul 2025 17:03:54 -0600
Jonathan Corbet <corbet@lwn.net> escreveu:

> Mauro Carvalho Chehab <mchehab+huawei@kernel.org> writes:
> 
> > Hi Jon,
> >
> > This series port scripts/sphinx-pre-install to Python. It started as
> > a bug-compatible version with the old logic.  
> 
> In my limited testing this seems to work just fine ...  Unless somebody
> comes up with a problem, I don't see a lot of reasons to not apply it.

I'm coming up with a bigger patch series in a few. Just re-running
the tests to see if everything is ok now.

Thanks,
Mauro
Re: [PATCH 00/15] Translate sphinx-pre-install to Python
Posted by Akira Yokosawa 3 months ago
Hi Mauro,

On Mon, 30 Jun 2025 23:34:48 +0200, Mauro Carvalho Chehab wrote:
[...]

> The test script also ran the install procedure for system,
> venv and native Sphinx install.

Which install procedure did you test?  The short one with the "--no-pdf"
option?

I am asking because installing the full list of packages in podman run
of opensuse/leap:15.6 didn't complete successfully for me.

And by the look of things, you stopped at installation, because you are
well aware of all the issues in running "make htmldocs" and its friends
after the install.

I assume you (or somebody else) are going to update the script once this
series is applied to make the suggested lists of packages be useful for
newcomers.

> The tests were done with those containers, obtained from
> lxc download templates or via podman run:
[...]

> It also properly detected RHEL 8 string:
> 
> Detected OS                : Red Hat Enterprise Linux release 8.10 (Ootpa).
> Installing venv            : WARNING: No such file or directory: 'sphinx-build'
> Installing package_install : WARNING: No such file or directory: 'sphinx-build'
> 
> But, at this particular docker container, no repositories had
> python3-sphinx nor python3-virtualenv, but I suspect that this
> is a problem on this particular image, as I'm almost sure we
> tested RHEL 8 in the past, so, I have hopes that this could
> still work with real RHEL, if it has Python >= 3.7.

FWIW, almalinux 8 provides python3-sphinx in the "PowerTools" repo.
It installs Sphinx 1.7.6 on top of python 3.6.8.
python3-virtualenv is in the "AppStream" repo. It also comes with
python 3.6.8.

> 
> Yet, our goal is to support the latest LTS version, so
> RHEL 8 is out of scope.

Yes, I think it is reasonable to ignore RHEL 8 and its clones.

For the record, here is a WIP scorecard of suggested procedure by
actually running "make htmldocs" and its friends after installing distro
packages (if it succeeds):

------------------------------------------------------------------------
* debian:12

htmldocs:  OK
latexdocs: NG

Debian and its derivative prohibit convert(1) (of ImageMagick) from
generating PDF by their default policy, so you'll get a bunch of:

[while building userspace-api.tex]

WARNING: Error #1 when calling: /usr/bin/convert /<srcdir>/Documentation/userspace-api/media/typical_media_device.svg /<srcdir>/Documentation/output/userspace-api/latex/typical_media_device.pdf
WARNING: Warning msg from convert(1): convert: attempt to perform an operation not allowed by the security policy `PDF' @ error/constitute.c/IsCoderAuthorized/426.

, and if you ignore them and try to build PDF, you'll get:

[while building userspace-api.pdf]

! Dimension too large.
\spx@boxes@fcolorbox ...dimexpr \ht \spx@tempboxa 
                                                  +\spx@boxes@border@top +\s...
l.54887 \end{sphinxVerbatim}
                            
? 
! Emergency stop.
\spx@boxes@fcolorbox ...dimexpr \ht \spx@tempboxa 
                                                  +\spx@boxes@border@top +\s...
l.54887 \end{sphinxVerbatim}

* fedora:latest (42)

htmldocs:  NG

Container images of fedora has stopped having "which" as a command.
You need to install it manually.  After installing "which": OK

pdfdocs:  OK

* opensuse/leap:15.6

htmldocs:  NG
After installing "which": OK

latexdocs: NG
Can't complete "zypper install" inside a podman container run using the
full package list ???
------------------------------------------------------------------------

Having look at these poor results, I don't see any reason to continue
testing further.

Regards,
Akira
Re: [PATCH 00/15] Translate sphinx-pre-install to Python
Posted by Mauro Carvalho Chehab 3 months ago
Em Tue, 8 Jul 2025 12:09:52 +0900
Akira Yokosawa <akiyks@gmail.com> escreveu:

> Hi Mauro,
> 
> On Mon, 30 Jun 2025 23:34:48 +0200, Mauro Carvalho Chehab wrote:
> [...]
> 
> > The test script also ran the install procedure for system,
> > venv and native Sphinx install.  
> 
> Which install procedure did you test?  The short one with the "--no-pdf"
> option?

No, I'm testing it with PDF.

> I am asking because installing the full list of packages in podman run
> of opensuse/leap:15.6 didn't complete successfully for me.

I got a couple of extra fixes for Leap. Will be submitting in a few.

> And by the look of things, you stopped at installation, because you are
> well aware of all the issues in running "make htmldocs" and its friends
> after the install.
> 
> I assume you (or somebody else) are going to update the script once this
> series is applied to make the suggested lists of packages be useful for
> newcomers.

I'm not actually building the docs, just checking that the script will
install Sphinx and required dependencies. There are a couple of reasons
for that:

- the disk space on my desktop. Right now, I'm just copying the
  files instead of doing a Kernel git clone. Even so, testing all
  those distros is requiring about 100GB on my /var partition;
- test time. Right now, I'm starting dozens of machines in
  lxc or podman in parallel. Still, it takes a lot of time to
  download and install all packages;
- compilation build itself is out of the scope of the script.
  I'm pretty sure we'll have compilation issues(*).

(*) on some RHEL-based distros, for instance, texlive-ctex package
    is not there (I guess version 8). so, I suspect that CJK
    builds may fail.

Anyway, fore sure there will be space for improvements after it, and
I really appreciate if you could send patches on the top of the new
series addressing the issues. 

> > The tests were done with those containers, obtained from
> > lxc download templates or via podman run:  
> [...]
> 
> > It also properly detected RHEL 8 string:
> > 
> > Detected OS                : Red Hat Enterprise Linux release 8.10 (Ootpa).
> > Installing venv            : WARNING: No such file or directory: 'sphinx-build'
> > Installing package_install : WARNING: No such file or directory: 'sphinx-build'
> > 
> > But, at this particular docker container, no repositories had
> > python3-sphinx nor python3-virtualenv, but I suspect that this
> > is a problem on this particular image, as I'm almost sure we
> > tested RHEL 8 in the past, so, I have hopes that this could
> > still work with real RHEL, if it has Python >= 3.7.  

On this container, you can only install Sphinx with packages with
a subscription, as the repository where it sits can't be enabled
without registering. 

> FWIW, almalinux 8 provides python3-sphinx in the "PowerTools" repo.
> It installs Sphinx 1.7.6 on top of python 3.6.8.
> python3-virtualenv is in the "AppStream" repo. It also comes with
> python 3.6.8.

I added a version check on my test script. I'm opting to use
rockylinux 8 instead, as it is meant to be 1:1 binary compatible
with RHEL.

I will provide the output for it at the next version.

> > 
> > Yet, our goal is to support the latest LTS version, so
> > RHEL 8 is out of scope.  
> 
> Yes, I think it is reasonable to ignore RHEL 8 and its clones.

Yes, but still it may work with venv. I'm adjusting the script
right now for it to propose installing python39 package and
accepting install on venv.

> For the record, here is a WIP scorecard of suggested procedure by
> actually running "make htmldocs" and its friends after installing distro
> packages (if it succeeds):
> 
> ------------------------------------------------------------------------
> * debian:12
> 
> htmldocs:  OK
> latexdocs: NG
> 
> Debian and its derivative prohibit convert(1) (of ImageMagick) from
> generating PDF by their default policy, so you'll get a bunch of:
> 
> [while building userspace-api.tex]
> 
> WARNING: Error #1 when calling: /usr/bin/convert /<srcdir>/Documentation/userspace-api/media/typical_media_device.svg /<srcdir>/Documentation/output/userspace-api/latex/typical_media_device.pdf
> WARNING: Warning msg from convert(1): convert: attempt to perform an operation not allowed by the security policy `PDF' @ error/constitute.c/IsCoderAuthorized/426.
> 
> , and if you ignore them and try to build PDF, you'll get:
> 
> [while building userspace-api.pdf]
> 
> ! Dimension too large.
> \spx@boxes@fcolorbox ...dimexpr \ht \spx@tempboxa 
>                                                   +\spx@boxes@border@top +\s...
> l.54887 \end{sphinxVerbatim}
>                             
> ? 
> ! Emergency stop.
> \spx@boxes@fcolorbox ...dimexpr \ht \spx@tempboxa 
>                                                   +\spx@boxes@border@top +\s...
> l.54887 \end{sphinxVerbatim}

I use Debian to regularly produce html results. It requires a
change at ImageMagick policies for it to run.

> * fedora:latest (42)
> 
> htmldocs:  NG
> 
> Container images of fedora has stopped having "which" as a command.
> You need to install it manually.  After installing "which": OK

Thanks for the feedback! I'm installing which on my container's
setup, as my test scripts require it. I'll add a check to install
it.

> 
> pdfdocs:  OK
> 
> * opensuse/leap:15.6
> 
> htmldocs:  NG
> After installing "which": OK

Will do the same here.

> 
> latexdocs: NG
> Can't complete "zypper install" inside a podman container run using the
> full package list ???

I added some fixes for it.

> Having look at these poor results, I don't see any reason to continue
> testing further.

Thanks for the feedback!

Thanks,
Mauro
Re: [PATCH 00/15] Translate sphinx-pre-install to Python
Posted by Jonathan Corbet 3 months ago
Akira Yokosawa <akiyks@gmail.com> writes:

> Hi Mauro,
>
> On Mon, 30 Jun 2025 23:34:48 +0200, Mauro Carvalho Chehab wrote:
> [...]
>
>> The test script also ran the install procedure for system,
>> venv and native Sphinx install.
>
> Which install procedure did you test?  The short one with the "--no-pdf"
> option?
>
> I am asking because installing the full list of packages in podman run
> of opensuse/leap:15.6 didn't complete successfully for me.
>
> And by the look of things, you stopped at installation, because you are
> well aware of all the issues in running "make htmldocs" and its friends
> after the install.
>
> I assume you (or somebody else) are going to update the script once this
> series is applied to make the suggested lists of packages be useful for
> newcomers.

Thanks for testing this out.

My question would be: are the results somehow worse than those provided
by the existing, Perl script?  If this change regresses things, we
obviously do not want to proceed.  If it reproduces the old behavior in
a more maintainable language, then hopefully it is a step toward fixing
things in the long run ... ?

Thanks,

jon
Re: [PATCH 00/15] Translate sphinx-pre-install to Python
Posted by Akira Yokosawa 3 months ago
On Tue, 08 Jul 2025 08:25:08 -0600, Jonathan Corbet wrote:
> Akira Yokosawa <akiyks@gmail.com> writes:
> 
>> Hi Mauro,
>>
>> On Mon, 30 Jun 2025 23:34:48 +0200, Mauro Carvalho Chehab wrote:
>> [...]
>>
>>> The test script also ran the install procedure for system,
>>> venv and native Sphinx install.
>>
>> Which install procedure did you test?  The short one with the "--no-pdf"
>> option?
>>
>> I am asking because installing the full list of packages in podman run
>> of opensuse/leap:15.6 didn't complete successfully for me.
>>
>> And by the look of things, you stopped at installation, because you are
>> well aware of all the issues in running "make htmldocs" and its friends
>> after the install.
>>
>> I assume you (or somebody else) are going to update the script once this
>> series is applied to make the suggested lists of packages be useful for
>> newcomers.
> 
> Thanks for testing this out.
> 
> My question would be: are the results somehow worse than those provided
> by the existing, Perl script?

Not at all.  Mauro made some improvements WRT opensuse/leap over the perl
one, but there remain a lot of rooms for improvements here and there. 

I've been ignoring sphinx-pre-install all these years, but the impressive
test results presented in this cover-letter made me test it.

>                                If this change regresses things, we
> obviously do not want to proceed.  If it reproduces the old behavior in
> a more maintainable language, then hopefully it is a step toward fixing
> things in the long run ... ?

Yes, translation into python would help a lot, I guess.

        Thanks, Akira
Re: [PATCH 00/15] Translate sphinx-pre-install to Python
Posted by Mauro Carvalho Chehab 2 months, 1 week ago
Em Tue, 8 Jul 2025 23:56:01 +0900
Akira Yokosawa <akiyks@gmail.com> escreveu:

> > My question would be: are the results somehow worse than those provided
> > by the existing, Perl script?  
> 
> Not at all.  Mauro made some improvements WRT opensuse/leap over the perl
> one, but there remain a lot of rooms for improvements here and there. 
> 
> I've been ignoring sphinx-pre-install all these years, but the impressive
> test results presented in this cover-letter made me test it.

I'm now working to fix PDF generation, assuming that all packages from
sphinx-pre-install are installed.

I'm placing the patches on my scratch tree at:
	https://github.com/mchehab/linux/tree/my-docs-next

It contains several branches merged there in sequence:
	- elder_python_v1: makes kernel-doc run with elder kernels (2 patches);
	- netlink_v10: patches adding an yaml parser for netlink (14 patches);
	- sphinx-pre-install-v4: current version of this series (39 patches);
	- pdfdocs: specific fixes for PDF doc generation (11 patches);
	- sphinx-build-wrapper: a new script with a large cleanup at docs Makefile
	  (7 patches)

On my testbanch, this is the current summary, where:
- PASSED: means both HTML and PDF were generated:

  PASSED - AlmaLinux release 9.6 (Sage Margay) (7 tests)
  PASSED - Amazon Linux release 2023 (Amazon Linux) (7 tests)
  PASSED - Arch Linux (7 tests)
  PASSED - CentOS Stream release 9 (7 tests)
  PASSED - Fedora release 42 (Adams) (7 tests)
  PASSED - Kali GNU/Linux 2025.2 (7 tests)
  PASSED - Mageia 9 (7 tests)
  PASSED - openSUSE Leap 15.6 (7 tests)
  PASSED - openSUSE Tumbleweed (7 tests)
  PASSED - Oracle Linux Server release 9.6 (7 tests)
  PASSED - Rocky Linux release 9.6 (Blue Onyx) (7 tests)
  PASSED - Ubuntu 24.04.2 LTS (7 tests)
  PASSED - Ubuntu 25.04 (7 tests)

- PARTIAL: problems with PDF generation:

  Some PDF build files weren't built:

  PARTIAL - Debian GNU/Linux 12 (7 tests)
  PARTIAL - Devuan GNU/Linux 5 (7 tests)
  PARTIAL - Gentoo Base System release 2.17 (7 tests)
  PARTIAL - Linux Mint 22 (7 tests)
  PARTIAL - openEuler release 25.03 (7 tests)

  I didn't check the results here yet, but I suspect that the problems
  may be related to CJK fonts and/or images inside files.

  Packages installed, but no PDF were built:

  PARTIAL - OpenMandriva Lx 4.0 (7 tests)

  Here, the problem are at the distro LaTeX packages where
  xelatex doesn't work even with a really simple manually
  generated .tex file.

- FAILED: something bad happened:

  FAILED - Red Hat Enterprise Linux release 8.10 (Ootpa) (7 tests)
  (no subscription: I can't install missing packages)

  FAILED - rockylinux8 (1 tests)
  (this started today: I can't download LXC container for it.
   Yesterday it got a PARTIAL result)

  FAILED - Springdale Open Enterprise Linux release 9.2 (Parma) (7 tests)
  (broken distro dependency for ImageMagick)


So, at least for me, it seems that the changes will be fixing
lots of existing issues.

Btw, one of the problem with PDFs is that the existing logic
doesn't really report success/failures for each PDF target.
That's why I ended writing a wrapper (sphinx-build-wrapper) with
checks the results. As a side effect, docs Makefile is now in
sane state.

Thanks,
Mauro

---


AlmaLinux release 9.6 (Sage Margay):
------------------------------------
    PASSED: OS detection: AlmaLinux release 9.6 (Sage Margay)
    SKIPPED (Sphinx Sphinx 3.4.3): System packages
    SKIPPED (Sphinx already installed either as venv or as native package): Sphinx on venv
    SKIPPED (Sphinx already installed either as venv or as native package): Sphinx package
    PASSED: Clean documentation: Build time: 0:00, return code: 0
    PASSED: Build HTML documentation: Build time: 6:19, return code: 0
    PASSED: Build PDF documentation: Build time: 11:51, return code: 0

  PDF docs:
  ---------
      PASSED: dev-tools: pdf/dev-tools.pdf
      PASSED: tools: pdf/tools.pdf
      PASSED: filesystems: pdf/filesystems.pdf
      PASSED: w1: pdf/w1.pdf
      PASSED: maintainer: pdf/maintainer.pdf
      PASSED: process: pdf/process.pdf
      PASSED: isdn: pdf/isdn.pdf
      PASSED: fault-injection: pdf/fault-injection.pdf
      PASSED: iio: pdf/iio.pdf
      PASSED: scheduler: pdf/scheduler.pdf
      PASSED: staging: pdf/staging.pdf
      PASSED: fpga: pdf/fpga.pdf
      PASSED: power: pdf/power.pdf
      PASSED: leds: pdf/leds.pdf
      PASSED: edac: pdf/edac.pdf
      PASSED: PCI: pdf/PCI.pdf
      PASSED: firmware-guide: pdf/firmware-guide.pdf
      PASSED: cpu-freq: pdf/cpu-freq.pdf
      PASSED: mhi: pdf/mhi.pdf
      PASSED: wmi: pdf/wmi.pdf
      PASSED: timers: pdf/timers.pdf
      PASSED: accel: pdf/accel.pdf
      PASSED: hid: pdf/hid.pdf
      PASSED: userspace-api: pdf/userspace-api.pdf
      PASSED: spi: pdf/spi.pdf
      PASSED: networking: pdf/networking.pdf
      PASSED: virt: pdf/virt.pdf
      PASSED: nvme: pdf/nvme.pdf
      PASSED: translations: pdf/translations.pdf
      PASSED: input: pdf/input.pdf
      PASSED: tee: pdf/tee.pdf
      PASSED: doc-guide: pdf/doc-guide.pdf
      PASSED: cdrom: pdf/cdrom.pdf
      PASSED: gpu: pdf/gpu.pdf
      PASSED: i2c: pdf/i2c.pdf
      PASSED: RCU: pdf/RCU.pdf
      PASSED: watchdog: pdf/watchdog.pdf
      PASSED: usb: pdf/usb.pdf
      PASSED: rust: pdf/rust.pdf
      PASSED: crypto: pdf/crypto.pdf
      PASSED: kbuild: pdf/kbuild.pdf
      PASSED: livepatch: pdf/livepatch.pdf
      PASSED: mm: pdf/mm.pdf
      PASSED: locking: pdf/locking.pdf
      PASSED: infiniband: pdf/infiniband.pdf
      PASSED: driver-api: pdf/driver-api.pdf
      PASSED: bpf: pdf/bpf.pdf
      PASSED: devicetree: pdf/devicetree.pdf
      PASSED: block: pdf/block.pdf
      PASSED: target: pdf/target.pdf
      PASSED: arch: pdf/arch.pdf
      PASSED: pcmcia: pdf/pcmcia.pdf
      PASSED: scsi: pdf/scsi.pdf
      PASSED: netlabel: pdf/netlabel.pdf
      PASSED: sound: pdf/sound.pdf
      PASSED: security: pdf/security.pdf
      PASSED: accounting: pdf/accounting.pdf
      PASSED: admin-guide: pdf/admin-guide.pdf
      PASSED: core-api: pdf/core-api.pdf
      PASSED: fb: pdf/fb.pdf
      PASSED: peci: pdf/peci.pdf
      PASSED: trace: pdf/trace.pdf
      PASSED: misc-devices: pdf/misc-devices.pdf
      PASSED: kernel-hacking: pdf/kernel-hacking.pdf
      PASSED: hwmon: pdf/hwmon.pdf

Amazon Linux release 2023 (Amazon Linux):
-----------------------------------------
    PASSED: OS detection: Amazon Linux release 2023 (Amazon Linux)
    SKIPPED (Sphinx Sphinx 3.4.3): System packages
    SKIPPED (Sphinx already installed either as venv or as native package): Sphinx on venv
    SKIPPED (Sphinx already installed either as venv or as native package): Sphinx package
    PASSED: Clean documentation: Build time: 0:00, return code: 0
    PASSED: Build HTML documentation: Build time: 6:23, return code: 0
    PASSED: Build PDF documentation: Build time: 11:17, return code: 0

  PDF docs:
  ---------
      PASSED: dev-tools: pdf/dev-tools.pdf
      PASSED: tools: pdf/tools.pdf
      PASSED: filesystems: pdf/filesystems.pdf
      PASSED: w1: pdf/w1.pdf
      PASSED: maintainer: pdf/maintainer.pdf
      PASSED: process: pdf/process.pdf
      PASSED: isdn: pdf/isdn.pdf
      PASSED: fault-injection: pdf/fault-injection.pdf
      PASSED: iio: pdf/iio.pdf
      PASSED: scheduler: pdf/scheduler.pdf
      PASSED: staging: pdf/staging.pdf
      PASSED: fpga: pdf/fpga.pdf
      PASSED: power: pdf/power.pdf
      PASSED: leds: pdf/leds.pdf
      PASSED: edac: pdf/edac.pdf
      PASSED: PCI: pdf/PCI.pdf
      PASSED: firmware-guide: pdf/firmware-guide.pdf
      PASSED: cpu-freq: pdf/cpu-freq.pdf
      PASSED: mhi: pdf/mhi.pdf
      PASSED: wmi: pdf/wmi.pdf
      PASSED: timers: pdf/timers.pdf
      PASSED: accel: pdf/accel.pdf
      PASSED: hid: pdf/hid.pdf
      PASSED: userspace-api: pdf/userspace-api.pdf
      PASSED: spi: pdf/spi.pdf
      PASSED: networking: pdf/networking.pdf
      PASSED: virt: pdf/virt.pdf
      PASSED: nvme: pdf/nvme.pdf
      PASSED: translations: pdf/translations.pdf
      PASSED: input: pdf/input.pdf
      PASSED: tee: pdf/tee.pdf
      PASSED: doc-guide: pdf/doc-guide.pdf
      PASSED: cdrom: pdf/cdrom.pdf
      PASSED: gpu: pdf/gpu.pdf
      PASSED: i2c: pdf/i2c.pdf
      PASSED: RCU: pdf/RCU.pdf
      PASSED: watchdog: pdf/watchdog.pdf
      PASSED: usb: pdf/usb.pdf
      PASSED: rust: pdf/rust.pdf
      PASSED: crypto: pdf/crypto.pdf
      PASSED: kbuild: pdf/kbuild.pdf
      PASSED: livepatch: pdf/livepatch.pdf
      PASSED: mm: pdf/mm.pdf
      PASSED: locking: pdf/locking.pdf
      PASSED: infiniband: pdf/infiniband.pdf
      PASSED: driver-api: pdf/driver-api.pdf
      PASSED: bpf: pdf/bpf.pdf
      PASSED: devicetree: pdf/devicetree.pdf
      PASSED: block: pdf/block.pdf
      PASSED: target: pdf/target.pdf
      PASSED: arch: pdf/arch.pdf
      PASSED: pcmcia: pdf/pcmcia.pdf
      PASSED: scsi: pdf/scsi.pdf
      PASSED: netlabel: pdf/netlabel.pdf
      PASSED: sound: pdf/sound.pdf
      PASSED: security: pdf/security.pdf
      PASSED: accounting: pdf/accounting.pdf
      PASSED: admin-guide: pdf/admin-guide.pdf
      PASSED: core-api: pdf/core-api.pdf
      PASSED: fb: pdf/fb.pdf
      PASSED: peci: pdf/peci.pdf
      PASSED: trace: pdf/trace.pdf
      PASSED: misc-devices: pdf/misc-devices.pdf
      PASSED: kernel-hacking: pdf/kernel-hacking.pdf
      PASSED: hwmon: pdf/hwmon.pdf

Arch Linux:
-----------
    PASSED: OS detection: Arch Linux
    PASSED: System packages: Packages installed
    PASSED: Sphinx on venv: Sphinx Sphinx 8.2.3
    PASSED: Sphinx package: Sphinx Sphinx 8.2.3
    PASSED: Clean documentation: Build time: 0:00, return code: 0
    PASSED: Build HTML documentation: Build time: 5:11, return code: 0
    PASSED: Build PDF documentation: Build time: 6:09, return code: 0

  PDF docs:
  ---------
      PASSED: dev-tools: pdf/dev-tools.pdf
      PASSED: tools: pdf/tools.pdf
      PASSED: filesystems: pdf/filesystems.pdf
      PASSED: w1: pdf/w1.pdf
      PASSED: maintainer: pdf/maintainer.pdf
      PASSED: process: pdf/process.pdf
      PASSED: isdn: pdf/isdn.pdf
      PASSED: fault-injection: pdf/fault-injection.pdf
      PASSED: iio: pdf/iio.pdf
      PASSED: scheduler: pdf/scheduler.pdf
      PASSED: staging: pdf/staging.pdf
      PASSED: fpga: pdf/fpga.pdf
      PASSED: power: pdf/power.pdf
      PASSED: leds: pdf/leds.pdf
      PASSED: edac: pdf/edac.pdf
      PASSED: PCI: pdf/PCI.pdf
      PASSED: firmware-guide: pdf/firmware-guide.pdf
      PASSED: cpu-freq: pdf/cpu-freq.pdf
      PASSED: mhi: pdf/mhi.pdf
      PASSED: wmi: pdf/wmi.pdf
      PASSED: timers: pdf/timers.pdf
      PASSED: accel: pdf/accel.pdf
      PASSED: hid: pdf/hid.pdf
      PASSED: userspace-api: pdf/userspace-api.pdf
      PASSED: spi: pdf/spi.pdf
      PASSED: networking: pdf/networking.pdf
      PASSED: virt: pdf/virt.pdf
      PASSED: nvme: pdf/nvme.pdf
      PASSED: translations: pdf/translations.pdf
      PASSED: input: pdf/input.pdf
      PASSED: tee: pdf/tee.pdf
      PASSED: doc-guide: pdf/doc-guide.pdf
      PASSED: cdrom: pdf/cdrom.pdf
      PASSED: gpu: pdf/gpu.pdf
      PASSED: i2c: pdf/i2c.pdf
      PASSED: RCU: pdf/RCU.pdf
      PASSED: watchdog: pdf/watchdog.pdf
      PASSED: usb: pdf/usb.pdf
      PASSED: rust: pdf/rust.pdf
      PASSED: crypto: pdf/crypto.pdf
      PASSED: kbuild: pdf/kbuild.pdf
      PASSED: livepatch: pdf/livepatch.pdf
      PASSED: mm: pdf/mm.pdf
      PASSED: locking: pdf/locking.pdf
      PASSED: infiniband: pdf/infiniband.pdf
      PASSED: driver-api: pdf/driver-api.pdf
      PASSED: bpf: pdf/bpf.pdf
      PASSED: devicetree: pdf/devicetree.pdf
      PASSED: block: pdf/block.pdf
      PASSED: target: pdf/target.pdf
      PASSED: arch: pdf/arch.pdf
      PASSED: pcmcia: pdf/pcmcia.pdf
      PASSED: scsi: pdf/scsi.pdf
      PASSED: netlabel: pdf/netlabel.pdf
      PASSED: sound: pdf/sound.pdf
      PASSED: security: pdf/security.pdf
      PASSED: accounting: pdf/accounting.pdf
      PASSED: admin-guide: pdf/admin-guide.pdf
      PASSED: core-api: pdf/core-api.pdf
      PASSED: fb: pdf/fb.pdf
      PASSED: peci: pdf/peci.pdf
      PASSED: trace: pdf/trace.pdf
      PASSED: misc-devices: pdf/misc-devices.pdf
      PASSED: kernel-hacking: pdf/kernel-hacking.pdf
      PASSED: hwmon: pdf/hwmon.pdf

CentOS Stream release 9:
------------------------
    PASSED: OS detection: CentOS Stream release 9
    SKIPPED (Sphinx Sphinx 3.4.3): System packages
    SKIPPED (Sphinx already installed either as venv or as native package): Sphinx on venv
    SKIPPED (Sphinx already installed either as venv or as native package): Sphinx package
    PASSED: Clean documentation: Build time: 0:00, return code: 0
    PASSED: Build HTML documentation: Build time: 6:20, return code: 0
    PASSED: Build PDF documentation: Build time: 11:47, return code: 0

  PDF docs:
  ---------
      PASSED: dev-tools: pdf/dev-tools.pdf
      PASSED: tools: pdf/tools.pdf
      PASSED: filesystems: pdf/filesystems.pdf
      PASSED: w1: pdf/w1.pdf
      PASSED: maintainer: pdf/maintainer.pdf
      PASSED: process: pdf/process.pdf
      PASSED: isdn: pdf/isdn.pdf
      PASSED: fault-injection: pdf/fault-injection.pdf
      PASSED: iio: pdf/iio.pdf
      PASSED: scheduler: pdf/scheduler.pdf
      PASSED: staging: pdf/staging.pdf
      PASSED: fpga: pdf/fpga.pdf
      PASSED: power: pdf/power.pdf
      PASSED: leds: pdf/leds.pdf
      PASSED: edac: pdf/edac.pdf
      PASSED: PCI: pdf/PCI.pdf
      PASSED: firmware-guide: pdf/firmware-guide.pdf
      PASSED: cpu-freq: pdf/cpu-freq.pdf
      PASSED: mhi: pdf/mhi.pdf
      PASSED: wmi: pdf/wmi.pdf
      PASSED: timers: pdf/timers.pdf
      PASSED: accel: pdf/accel.pdf
      PASSED: hid: pdf/hid.pdf
      PASSED: userspace-api: pdf/userspace-api.pdf
      PASSED: spi: pdf/spi.pdf
      PASSED: networking: pdf/networking.pdf
      PASSED: virt: pdf/virt.pdf
      PASSED: nvme: pdf/nvme.pdf
      PASSED: translations: pdf/translations.pdf
      PASSED: input: pdf/input.pdf
      PASSED: tee: pdf/tee.pdf
      PASSED: doc-guide: pdf/doc-guide.pdf
      PASSED: cdrom: pdf/cdrom.pdf
      PASSED: gpu: pdf/gpu.pdf
      PASSED: i2c: pdf/i2c.pdf
      PASSED: RCU: pdf/RCU.pdf
      PASSED: watchdog: pdf/watchdog.pdf
      PASSED: usb: pdf/usb.pdf
      PASSED: rust: pdf/rust.pdf
      PASSED: crypto: pdf/crypto.pdf
      PASSED: kbuild: pdf/kbuild.pdf
      PASSED: livepatch: pdf/livepatch.pdf
      PASSED: mm: pdf/mm.pdf
      PASSED: locking: pdf/locking.pdf
      PASSED: infiniband: pdf/infiniband.pdf
      PASSED: driver-api: pdf/driver-api.pdf
      PASSED: bpf: pdf/bpf.pdf
      PASSED: devicetree: pdf/devicetree.pdf
      PASSED: block: pdf/block.pdf
      PASSED: target: pdf/target.pdf
      PASSED: arch: pdf/arch.pdf
      PASSED: pcmcia: pdf/pcmcia.pdf
      PASSED: scsi: pdf/scsi.pdf
      PASSED: netlabel: pdf/netlabel.pdf
      PASSED: sound: pdf/sound.pdf
      PASSED: security: pdf/security.pdf
      PASSED: accounting: pdf/accounting.pdf
      PASSED: admin-guide: pdf/admin-guide.pdf
      PASSED: core-api: pdf/core-api.pdf
      PASSED: fb: pdf/fb.pdf
      PASSED: peci: pdf/peci.pdf
      PASSED: trace: pdf/trace.pdf
      PASSED: misc-devices: pdf/misc-devices.pdf
      PASSED: kernel-hacking: pdf/kernel-hacking.pdf
      PASSED: hwmon: pdf/hwmon.pdf

Debian GNU/Linux 12:
--------------------
    PASSED: OS detection: Debian GNU/Linux 12
    SKIPPED (Sphinx Sphinx 5.3.0): System packages
    SKIPPED (Sphinx already installed either as venv or as native package): Sphinx on venv
    SKIPPED (Sphinx already installed either as venv or as native package): Sphinx package
    PASSED: Clean documentation: Build time: 0:00, return code: 0
    PASSED: Build HTML documentation: Build time: 6:08, return code: 0
    PARTIAL: Build PDF documentation: Test failed (Build time: 10:25, return code: 2)

  PDF docs:
  ---------
      PASSED: dev-tools: pdf/dev-tools.pdf
      PASSED: tools: pdf/tools.pdf
      PASSED: filesystems: pdf/filesystems.pdf
      PASSED: w1: pdf/w1.pdf
      PASSED: maintainer: pdf/maintainer.pdf
      PASSED: process: pdf/process.pdf
      PASSED: isdn: pdf/isdn.pdf
      PASSED: fault-injection: pdf/fault-injection.pdf
      PASSED: iio: pdf/iio.pdf
      PASSED: scheduler: pdf/scheduler.pdf
      PASSED: staging: pdf/staging.pdf
      PASSED: fpga: pdf/fpga.pdf
      PASSED: power: pdf/power.pdf
      PASSED: leds: pdf/leds.pdf
      PASSED: edac: pdf/edac.pdf
      PASSED: PCI: pdf/PCI.pdf
      PASSED: firmware-guide: pdf/firmware-guide.pdf
      PASSED: cpu-freq: pdf/cpu-freq.pdf
      PASSED: mhi: pdf/mhi.pdf
      PASSED: wmi: pdf/wmi.pdf
      PASSED: timers: pdf/timers.pdf
      PASSED: accel: pdf/accel.pdf
      PASSED: hid: pdf/hid.pdf
      FAILED: userspace-api: Build failed (FAILED)
      PASSED: spi: pdf/spi.pdf
      PASSED: networking: pdf/networking.pdf
      PASSED: virt: pdf/virt.pdf
      PASSED: nvme: pdf/nvme.pdf
      FAILED: translations: Build failed (FAILED)
      PASSED: input: pdf/input.pdf
      PASSED: tee: pdf/tee.pdf
      FAILED: doc-guide: Build failed (FAILED)
      PASSED: cdrom: pdf/cdrom.pdf
      FAILED: gpu: Build failed (FAILED)
      FAILED: i2c: Build failed (FAILED)
      FAILED: RCU: Build failed (FAILED)
      PASSED: watchdog: pdf/watchdog.pdf
      PASSED: usb: pdf/usb.pdf
      PASSED: rust: pdf/rust.pdf
      PASSED: crypto: pdf/crypto.pdf
      PASSED: kbuild: pdf/kbuild.pdf
      PASSED: livepatch: pdf/livepatch.pdf
      PASSED: mm: pdf/mm.pdf
      PASSED: locking: pdf/locking.pdf
      PASSED: infiniband: pdf/infiniband.pdf
      PASSED: driver-api: pdf/driver-api.pdf
      PASSED: bpf: pdf/bpf.pdf
      PASSED: devicetree: pdf/devicetree.pdf
      PASSED: block: pdf/block.pdf
      PASSED: target: pdf/target.pdf
      FAILED: arch: Build failed (FAILED)
      PASSED: pcmcia: pdf/pcmcia.pdf
      PASSED: scsi: pdf/scsi.pdf
      PASSED: netlabel: pdf/netlabel.pdf
      PASSED: sound: pdf/sound.pdf
      PASSED: security: pdf/security.pdf
      PASSED: accounting: pdf/accounting.pdf
      PASSED: admin-guide: pdf/admin-guide.pdf
      FAILED: core-api: Build failed (FAILED)
      PASSED: fb: pdf/fb.pdf
      PASSED: peci: pdf/peci.pdf
      PASSED: trace: pdf/trace.pdf
      PASSED: misc-devices: pdf/misc-devices.pdf
      PASSED: kernel-hacking: pdf/kernel-hacking.pdf
      PASSED: hwmon: pdf/hwmon.pdf

Devuan GNU/Linux 5:
-------------------
    PASSED: OS detection: Devuan GNU/Linux 5
    SKIPPED (Sphinx Sphinx 5.3.0): System packages
    SKIPPED (Sphinx already installed either as venv or as native package): Sphinx on venv
    SKIPPED (Sphinx already installed either as venv or as native package): Sphinx package
    PASSED: Clean documentation: Build time: 0:00, return code: 0
    PASSED: Build HTML documentation: Build time: 6:10, return code: 0
    PARTIAL: Build PDF documentation: Test failed (Build time: 10:27, return code: 2)

  PDF docs:
  ---------
      PASSED: dev-tools: pdf/dev-tools.pdf
      PASSED: tools: pdf/tools.pdf
      PASSED: filesystems: pdf/filesystems.pdf
      PASSED: w1: pdf/w1.pdf
      PASSED: maintainer: pdf/maintainer.pdf
      PASSED: process: pdf/process.pdf
      PASSED: isdn: pdf/isdn.pdf
      PASSED: fault-injection: pdf/fault-injection.pdf
      PASSED: iio: pdf/iio.pdf
      PASSED: scheduler: pdf/scheduler.pdf
      PASSED: staging: pdf/staging.pdf
      PASSED: fpga: pdf/fpga.pdf
      PASSED: power: pdf/power.pdf
      PASSED: leds: pdf/leds.pdf
      PASSED: edac: pdf/edac.pdf
      PASSED: PCI: pdf/PCI.pdf
      PASSED: firmware-guide: pdf/firmware-guide.pdf
      PASSED: cpu-freq: pdf/cpu-freq.pdf
      PASSED: mhi: pdf/mhi.pdf
      PASSED: wmi: pdf/wmi.pdf
      PASSED: timers: pdf/timers.pdf
      PASSED: accel: pdf/accel.pdf
      PASSED: hid: pdf/hid.pdf
      FAILED: userspace-api: Build failed (FAILED)
      PASSED: spi: pdf/spi.pdf
      PASSED: networking: pdf/networking.pdf
      PASSED: virt: pdf/virt.pdf
      PASSED: nvme: pdf/nvme.pdf
      FAILED: translations: Build failed (FAILED)
      PASSED: input: pdf/input.pdf
      PASSED: tee: pdf/tee.pdf
      FAILED: doc-guide: Build failed (FAILED)
      PASSED: cdrom: pdf/cdrom.pdf
      FAILED: gpu: Build failed (FAILED)
      FAILED: i2c: Build failed (FAILED)
      FAILED: RCU: Build failed (FAILED)
      PASSED: watchdog: pdf/watchdog.pdf
      PASSED: usb: pdf/usb.pdf
      PASSED: rust: pdf/rust.pdf
      PASSED: crypto: pdf/crypto.pdf
      PASSED: kbuild: pdf/kbuild.pdf
      PASSED: livepatch: pdf/livepatch.pdf
      PASSED: mm: pdf/mm.pdf
      PASSED: locking: pdf/locking.pdf
      PASSED: infiniband: pdf/infiniband.pdf
      PASSED: driver-api: pdf/driver-api.pdf
      PASSED: bpf: pdf/bpf.pdf
      PASSED: devicetree: pdf/devicetree.pdf
      PASSED: block: pdf/block.pdf
      PASSED: target: pdf/target.pdf
      FAILED: arch: Build failed (FAILED)
      PASSED: pcmcia: pdf/pcmcia.pdf
      PASSED: scsi: pdf/scsi.pdf
      PASSED: netlabel: pdf/netlabel.pdf
      PASSED: sound: pdf/sound.pdf
      PASSED: security: pdf/security.pdf
      PASSED: accounting: pdf/accounting.pdf
      PASSED: admin-guide: pdf/admin-guide.pdf
      FAILED: core-api: Build failed (FAILED)
      PASSED: fb: pdf/fb.pdf
      PASSED: peci: pdf/peci.pdf
      PASSED: trace: pdf/trace.pdf
      PASSED: misc-devices: pdf/misc-devices.pdf
      PASSED: kernel-hacking: pdf/kernel-hacking.pdf
      PASSED: hwmon: pdf/hwmon.pdf

Fedora release 42 (Adams):
--------------------------
    PASSED: OS detection: Fedora release 42 (Adams)
    SKIPPED (Sphinx Sphinx 8.1.3): System packages
    SKIPPED (Sphinx already installed either as venv or as native package): Sphinx on venv
    SKIPPED (Sphinx already installed either as venv or as native package): Sphinx package
    PASSED: Clean documentation: Build time: 0:00, return code: 0
    PASSED: Build HTML documentation: Build time: 5:09, return code: 0
    PASSED: Build PDF documentation: Build time: 10:27, return code: 0

  PDF docs:
  ---------
      PASSED: dev-tools: pdf/dev-tools.pdf
      PASSED: tools: pdf/tools.pdf
      PASSED: filesystems: pdf/filesystems.pdf
      PASSED: w1: pdf/w1.pdf
      PASSED: maintainer: pdf/maintainer.pdf
      PASSED: process: pdf/process.pdf
      PASSED: isdn: pdf/isdn.pdf
      PASSED: fault-injection: pdf/fault-injection.pdf
      PASSED: iio: pdf/iio.pdf
      PASSED: scheduler: pdf/scheduler.pdf
      PASSED: staging: pdf/staging.pdf
      PASSED: fpga: pdf/fpga.pdf
      PASSED: power: pdf/power.pdf
      PASSED: leds: pdf/leds.pdf
      PASSED: edac: pdf/edac.pdf
      PASSED: PCI: pdf/PCI.pdf
      PASSED: firmware-guide: pdf/firmware-guide.pdf
      PASSED: cpu-freq: pdf/cpu-freq.pdf
      PASSED: mhi: pdf/mhi.pdf
      PASSED: wmi: pdf/wmi.pdf
      PASSED: timers: pdf/timers.pdf
      PASSED: accel: pdf/accel.pdf
      PASSED: hid: pdf/hid.pdf
      PASSED: userspace-api: pdf/userspace-api.pdf
      PASSED: spi: pdf/spi.pdf
      PASSED: networking: pdf/networking.pdf
      PASSED: virt: pdf/virt.pdf
      PASSED: nvme: pdf/nvme.pdf
      PASSED: translations: pdf/translations.pdf
      PASSED: input: pdf/input.pdf
      PASSED: tee: pdf/tee.pdf
      PASSED: doc-guide: pdf/doc-guide.pdf
      PASSED: cdrom: pdf/cdrom.pdf
      PASSED: gpu: pdf/gpu.pdf
      PASSED: i2c: pdf/i2c.pdf
      PASSED: RCU: pdf/RCU.pdf
      PASSED: watchdog: pdf/watchdog.pdf
      PASSED: usb: pdf/usb.pdf
      PASSED: rust: pdf/rust.pdf
      PASSED: crypto: pdf/crypto.pdf
      PASSED: kbuild: pdf/kbuild.pdf
      PASSED: livepatch: pdf/livepatch.pdf
      PASSED: mm: pdf/mm.pdf
      PASSED: locking: pdf/locking.pdf
      PASSED: infiniband: pdf/infiniband.pdf
      PASSED: driver-api: pdf/driver-api.pdf
      PASSED: bpf: pdf/bpf.pdf
      PASSED: devicetree: pdf/devicetree.pdf
      PASSED: block: pdf/block.pdf
      PASSED: target: pdf/target.pdf
      PASSED: arch: pdf/arch.pdf
      PASSED: pcmcia: pdf/pcmcia.pdf
      PASSED: scsi: pdf/scsi.pdf
      PASSED: netlabel: pdf/netlabel.pdf
      PASSED: sound: pdf/sound.pdf
      PASSED: security: pdf/security.pdf
      PASSED: accounting: pdf/accounting.pdf
      PASSED: admin-guide: pdf/admin-guide.pdf
      PASSED: core-api: pdf/core-api.pdf
      PASSED: fb: pdf/fb.pdf
      PASSED: peci: pdf/peci.pdf
      PASSED: trace: pdf/trace.pdf
      PASSED: misc-devices: pdf/misc-devices.pdf
      PASSED: kernel-hacking: pdf/kernel-hacking.pdf
      PASSED: hwmon: pdf/hwmon.pdf

Gentoo Base System release 2.17:
--------------------------------
    PASSED: OS detection: Gentoo Base System release 2.17
    SKIPPED (Sphinx Sphinx 8.2.3): System packages
    SKIPPED (Sphinx already installed either as venv or as native package): Sphinx on venv
    SKIPPED (Sphinx already installed either as venv or as native package): Sphinx package
    PASSED: Clean documentation: Build time: 0:00, return code: 0
    PASSED: Build HTML documentation: Build time: 5:28, return code: 0
    PARTIAL: Build PDF documentation: Test failed (Build time: 9:19, return code: 2)

  PDF docs:
  ---------
      PASSED: dev-tools: pdf/dev-tools.pdf
      PASSED: tools: pdf/tools.pdf
      PASSED: filesystems: pdf/filesystems.pdf
      PASSED: w1: pdf/w1.pdf
      PASSED: maintainer: pdf/maintainer.pdf
      PASSED: process: pdf/process.pdf
      PASSED: isdn: pdf/isdn.pdf
      PASSED: fault-injection: pdf/fault-injection.pdf
      PASSED: iio: pdf/iio.pdf
      PASSED: scheduler: pdf/scheduler.pdf
      PASSED: staging: pdf/staging.pdf
      PASSED: fpga: pdf/fpga.pdf
      PASSED: power: pdf/power.pdf
      PASSED: leds: pdf/leds.pdf
      PASSED: edac: pdf/edac.pdf
      PASSED: PCI: pdf/PCI.pdf
      PASSED: firmware-guide: pdf/firmware-guide.pdf
      PASSED: cpu-freq: pdf/cpu-freq.pdf
      PASSED: mhi: pdf/mhi.pdf
      PASSED: wmi: pdf/wmi.pdf
      PASSED: timers: pdf/timers.pdf
      PASSED: accel: pdf/accel.pdf
      PASSED: hid: pdf/hid.pdf
      FAILED: userspace-api: Build failed (FAILED)
      PASSED: spi: pdf/spi.pdf
      PASSED: networking: pdf/networking.pdf
      PASSED: virt: pdf/virt.pdf
      PASSED: nvme: pdf/nvme.pdf
      FAILED: translations: Build failed (FAILED)
      PASSED: input: pdf/input.pdf
      PASSED: tee: pdf/tee.pdf
      PASSED: doc-guide: pdf/doc-guide.pdf
      PASSED: cdrom: pdf/cdrom.pdf
      FAILED: gpu: Build failed (FAILED)
      FAILED: i2c: Build failed (FAILED)
      FAILED: RCU: Build failed (FAILED)
      PASSED: watchdog: pdf/watchdog.pdf
      PASSED: usb: pdf/usb.pdf
      PASSED: rust: pdf/rust.pdf
      PASSED: crypto: pdf/crypto.pdf
      PASSED: kbuild: pdf/kbuild.pdf
      PASSED: livepatch: pdf/livepatch.pdf
      PASSED: mm: pdf/mm.pdf
      PASSED: locking: pdf/locking.pdf
      PASSED: infiniband: pdf/infiniband.pdf
      PASSED: driver-api: pdf/driver-api.pdf
      PASSED: bpf: pdf/bpf.pdf
      PASSED: devicetree: pdf/devicetree.pdf
      PASSED: block: pdf/block.pdf
      PASSED: target: pdf/target.pdf
      FAILED: arch: Build failed (FAILED)
      PASSED: pcmcia: pdf/pcmcia.pdf
      PASSED: scsi: pdf/scsi.pdf
      PASSED: netlabel: pdf/netlabel.pdf
      PASSED: sound: pdf/sound.pdf
      PASSED: security: pdf/security.pdf
      PASSED: accounting: pdf/accounting.pdf
      PASSED: admin-guide: pdf/admin-guide.pdf
      FAILED: core-api: Build failed (FAILED)
      PASSED: fb: pdf/fb.pdf
      PASSED: peci: pdf/peci.pdf
      PASSED: trace: pdf/trace.pdf
      PASSED: misc-devices: pdf/misc-devices.pdf
      PASSED: kernel-hacking: pdf/kernel-hacking.pdf
      PASSED: hwmon: pdf/hwmon.pdf

Kali GNU/Linux 2025.2:
----------------------
    PASSED: OS detection: Kali GNU/Linux 2025.2
    SKIPPED (Sphinx Sphinx 8.1.3): System packages
    SKIPPED (Sphinx already installed either as venv or as native package): Sphinx on venv
    SKIPPED (Sphinx already installed either as venv or as native package): Sphinx package
    PASSED: Clean documentation: Build time: 0:00, return code: 0
    PASSED: Build HTML documentation: Build time: 3:20, return code: 0
    PASSED: Build PDF documentation: Build time: 12:53, return code: 0

  PDF docs:
  ---------
      PASSED: dev-tools: pdf/dev-tools.pdf
      PASSED: tools: pdf/tools.pdf
      PASSED: filesystems: pdf/filesystems.pdf
      PASSED: w1: pdf/w1.pdf
      PASSED: maintainer: pdf/maintainer.pdf
      PASSED: process: pdf/process.pdf
      PASSED: isdn: pdf/isdn.pdf
      PASSED: fault-injection: pdf/fault-injection.pdf
      PASSED: iio: pdf/iio.pdf
      PASSED: scheduler: pdf/scheduler.pdf
      PASSED: staging: pdf/staging.pdf
      PASSED: fpga: pdf/fpga.pdf
      PASSED: power: pdf/power.pdf
      PASSED: leds: pdf/leds.pdf
      PASSED: edac: pdf/edac.pdf
      PASSED: PCI: pdf/PCI.pdf
      PASSED: firmware-guide: pdf/firmware-guide.pdf
      PASSED: cpu-freq: pdf/cpu-freq.pdf
      PASSED: mhi: pdf/mhi.pdf
      PASSED: wmi: pdf/wmi.pdf
      PASSED: timers: pdf/timers.pdf
      PASSED: accel: pdf/accel.pdf
      PASSED: hid: pdf/hid.pdf
      PASSED: userspace-api: pdf/userspace-api.pdf
      PASSED: spi: pdf/spi.pdf
      PASSED: networking: pdf/networking.pdf
      PASSED: virt: pdf/virt.pdf
      PASSED: nvme: pdf/nvme.pdf
      PASSED: translations: pdf/translations.pdf
      PASSED: input: pdf/input.pdf
      PASSED: tee: pdf/tee.pdf
      PASSED: doc-guide: pdf/doc-guide.pdf
      PASSED: cdrom: pdf/cdrom.pdf
      PASSED: gpu: pdf/gpu.pdf
      PASSED: i2c: pdf/i2c.pdf
      PASSED: RCU: pdf/RCU.pdf
      PASSED: watchdog: pdf/watchdog.pdf
      PASSED: usb: pdf/usb.pdf
      PASSED: rust: pdf/rust.pdf
      PASSED: crypto: pdf/crypto.pdf
      PASSED: kbuild: pdf/kbuild.pdf
      PASSED: livepatch: pdf/livepatch.pdf
      PASSED: mm: pdf/mm.pdf
      PASSED: locking: pdf/locking.pdf
      PASSED: infiniband: pdf/infiniband.pdf
      PASSED: driver-api: pdf/driver-api.pdf
      PASSED: bpf: pdf/bpf.pdf
      PASSED: devicetree: pdf/devicetree.pdf
      PASSED: block: pdf/block.pdf
      PASSED: target: pdf/target.pdf
      PASSED: arch: pdf/arch.pdf
      PASSED: pcmcia: pdf/pcmcia.pdf
      PASSED: scsi: pdf/scsi.pdf
      PASSED: netlabel: pdf/netlabel.pdf
      PASSED: sound: pdf/sound.pdf
      PASSED: security: pdf/security.pdf
      PASSED: accounting: pdf/accounting.pdf
      PASSED: admin-guide: pdf/admin-guide.pdf
      PASSED: core-api: pdf/core-api.pdf
      PASSED: fb: pdf/fb.pdf
      PASSED: peci: pdf/peci.pdf
      PASSED: trace: pdf/trace.pdf
      PASSED: misc-devices: pdf/misc-devices.pdf
      PASSED: kernel-hacking: pdf/kernel-hacking.pdf
      PASSED: hwmon: pdf/hwmon.pdf

Mageia 9:
---------
    PASSED: OS detection: Mageia 9
    PASSED: System packages: Packages installed
    PASSED: Sphinx on venv: Sphinx Sphinx 8.1.3
    PASSED: Sphinx package: Sphinx Sphinx 6.1.3
    PASSED: Clean documentation: Build time: 0:00, return code: 0
    PASSED: Build HTML documentation: Build time: 5:17, return code: 0
    PASSED: Build PDF documentation: Build time: 14:28, return code: 0

  PDF docs:
  ---------
      PASSED: dev-tools: pdf/dev-tools.pdf
      PASSED: tools: pdf/tools.pdf
      PASSED: filesystems: pdf/filesystems.pdf
      PASSED: w1: pdf/w1.pdf
      PASSED: maintainer: pdf/maintainer.pdf
      PASSED: process: pdf/process.pdf
      PASSED: isdn: pdf/isdn.pdf
      PASSED: fault-injection: pdf/fault-injection.pdf
      PASSED: iio: pdf/iio.pdf
      PASSED: scheduler: pdf/scheduler.pdf
      PASSED: staging: pdf/staging.pdf
      PASSED: fpga: pdf/fpga.pdf
      PASSED: power: pdf/power.pdf
      PASSED: leds: pdf/leds.pdf
      PASSED: edac: pdf/edac.pdf
      PASSED: PCI: pdf/PCI.pdf
      PASSED: firmware-guide: pdf/firmware-guide.pdf
      PASSED: cpu-freq: pdf/cpu-freq.pdf
      PASSED: mhi: pdf/mhi.pdf
      PASSED: wmi: pdf/wmi.pdf
      PASSED: timers: pdf/timers.pdf
      PASSED: accel: pdf/accel.pdf
      PASSED: hid: pdf/hid.pdf
      PASSED: userspace-api: pdf/userspace-api.pdf
      PASSED: spi: pdf/spi.pdf
      PASSED: networking: pdf/networking.pdf
      PASSED: virt: pdf/virt.pdf
      PASSED: nvme: pdf/nvme.pdf
      PASSED: translations: pdf/translations.pdf
      PASSED: input: pdf/input.pdf
      PASSED: tee: pdf/tee.pdf
      PASSED: doc-guide: pdf/doc-guide.pdf
      PASSED: cdrom: pdf/cdrom.pdf
      PASSED: gpu: pdf/gpu.pdf
      PASSED: i2c: pdf/i2c.pdf
      PASSED: RCU: pdf/RCU.pdf
      PASSED: watchdog: pdf/watchdog.pdf
      PASSED: usb: pdf/usb.pdf
      PASSED: rust: pdf/rust.pdf
      PASSED: crypto: pdf/crypto.pdf
      PASSED: kbuild: pdf/kbuild.pdf
      PASSED: livepatch: pdf/livepatch.pdf
      PASSED: mm: pdf/mm.pdf
      PASSED: locking: pdf/locking.pdf
      PASSED: infiniband: pdf/infiniband.pdf
      PASSED: driver-api: pdf/driver-api.pdf
      PASSED: bpf: pdf/bpf.pdf
      PASSED: devicetree: pdf/devicetree.pdf
      PASSED: block: pdf/block.pdf
      PASSED: target: pdf/target.pdf
      PASSED: arch: pdf/arch.pdf
      PASSED: pcmcia: pdf/pcmcia.pdf
      PASSED: scsi: pdf/scsi.pdf
      PASSED: netlabel: pdf/netlabel.pdf
      PASSED: sound: pdf/sound.pdf
      PASSED: security: pdf/security.pdf
      PASSED: accounting: pdf/accounting.pdf
      PASSED: admin-guide: pdf/admin-guide.pdf
      PASSED: core-api: pdf/core-api.pdf
      PASSED: fb: pdf/fb.pdf
      PASSED: peci: pdf/peci.pdf
      PASSED: trace: pdf/trace.pdf
      PASSED: misc-devices: pdf/misc-devices.pdf
      PASSED: kernel-hacking: pdf/kernel-hacking.pdf
      PASSED: hwmon: pdf/hwmon.pdf

Linux Mint 22:
--------------
    PASSED: OS detection: Linux Mint 22
    SKIPPED (Sphinx Sphinx 4.3.2): System packages
    SKIPPED (Sphinx already installed either as venv or as native package): Sphinx on venv
    SKIPPED (Sphinx already installed either as venv or as native package): Sphinx package
    PASSED: Clean documentation: Build time: 0:00, return code: 0
    PASSED: Build HTML documentation: Build time: 5:24, return code: 0
    PARTIAL: Build PDF documentation: Test failed (Build time: 11:00, return code: 2)

  PDF docs:
  ---------
      PASSED: dev-tools: pdf/dev-tools.pdf
      PASSED: tools: pdf/tools.pdf
      PASSED: filesystems: pdf/filesystems.pdf
      PASSED: w1: pdf/w1.pdf
      PASSED: maintainer: pdf/maintainer.pdf
      PASSED: process: pdf/process.pdf
      PASSED: isdn: pdf/isdn.pdf
      PASSED: fault-injection: pdf/fault-injection.pdf
      PASSED: iio: pdf/iio.pdf
      PASSED: scheduler: pdf/scheduler.pdf
      PASSED: staging: pdf/staging.pdf
      PASSED: fpga: pdf/fpga.pdf
      PASSED: power: pdf/power.pdf
      PASSED: leds: pdf/leds.pdf
      PASSED: edac: pdf/edac.pdf
      PASSED: PCI: pdf/PCI.pdf
      PASSED: firmware-guide: pdf/firmware-guide.pdf
      PASSED: cpu-freq: pdf/cpu-freq.pdf
      PASSED: mhi: pdf/mhi.pdf
      PASSED: wmi: pdf/wmi.pdf
      PASSED: timers: pdf/timers.pdf
      PASSED: accel: pdf/accel.pdf
      PASSED: hid: pdf/hid.pdf
      FAILED: userspace-api: Build failed (FAILED)
      PASSED: spi: pdf/spi.pdf
      PASSED: networking: pdf/networking.pdf
      PASSED: virt: pdf/virt.pdf
      PASSED: nvme: pdf/nvme.pdf
      FAILED: translations: Build failed (FAILED)
      PASSED: input: pdf/input.pdf
      PASSED: tee: pdf/tee.pdf
      FAILED: doc-guide: Build failed (FAILED)
      PASSED: cdrom: pdf/cdrom.pdf
      FAILED: gpu: Build failed (FAILED)
      FAILED: i2c: Build failed (FAILED)
      FAILED: RCU: Build failed (FAILED)
      PASSED: watchdog: pdf/watchdog.pdf
      PASSED: usb: pdf/usb.pdf
      PASSED: rust: pdf/rust.pdf
      PASSED: crypto: pdf/crypto.pdf
      PASSED: kbuild: pdf/kbuild.pdf
      PASSED: livepatch: pdf/livepatch.pdf
      PASSED: mm: pdf/mm.pdf
      PASSED: locking: pdf/locking.pdf
      PASSED: infiniband: pdf/infiniband.pdf
      PASSED: driver-api: pdf/driver-api.pdf
      PASSED: bpf: pdf/bpf.pdf
      PASSED: devicetree: pdf/devicetree.pdf
      PASSED: block: pdf/block.pdf
      PASSED: target: pdf/target.pdf
      FAILED: arch: Build failed (FAILED)
      PASSED: pcmcia: pdf/pcmcia.pdf
      PASSED: scsi: pdf/scsi.pdf
      PASSED: netlabel: pdf/netlabel.pdf
      PASSED: sound: pdf/sound.pdf
      PASSED: security: pdf/security.pdf
      PASSED: accounting: pdf/accounting.pdf
      PASSED: admin-guide: pdf/admin-guide.pdf
      FAILED: core-api: Build failed (FAILED)
      PASSED: fb: pdf/fb.pdf
      PASSED: peci: pdf/peci.pdf
      PASSED: trace: pdf/trace.pdf
      PASSED: misc-devices: pdf/misc-devices.pdf
      PASSED: kernel-hacking: pdf/kernel-hacking.pdf
      PASSED: hwmon: pdf/hwmon.pdf

openEuler release 25.03:
------------------------
    PASSED: OS detection: openEuler release 25.03
    PASSED: System packages: Packages installed
    PASSED: Sphinx on venv: Sphinx Sphinx 8.2.3
    PASSED: Sphinx package: Sphinx Sphinx 8.1.3
    PASSED: Clean documentation: Build time: 0:00, return code: 0
    PASSED: Build HTML documentation: Build time: 5:36, return code: 0
    PARTIAL: Build PDF documentation: Test failed (Build time: 11:39, return code: 2)

  PDF docs:
  ---------
      PASSED: dev-tools: pdf/dev-tools.pdf
      PASSED: tools: pdf/tools.pdf
      PASSED: filesystems: pdf/filesystems.pdf
      PASSED: w1: pdf/w1.pdf
      PASSED: maintainer: pdf/maintainer.pdf
      PASSED: process: pdf/process.pdf
      PASSED: isdn: pdf/isdn.pdf
      PASSED: fault-injection: pdf/fault-injection.pdf
      PASSED: iio: pdf/iio.pdf
      PASSED: scheduler: pdf/scheduler.pdf
      PASSED: staging: pdf/staging.pdf
      PASSED: fpga: pdf/fpga.pdf
      PASSED: power: pdf/power.pdf
      PASSED: leds: pdf/leds.pdf
      PASSED: edac: pdf/edac.pdf
      PASSED: PCI: pdf/PCI.pdf
      PASSED: firmware-guide: pdf/firmware-guide.pdf
      PASSED: cpu-freq: pdf/cpu-freq.pdf
      PASSED: mhi: pdf/mhi.pdf
      PASSED: wmi: pdf/wmi.pdf
      PASSED: timers: pdf/timers.pdf
      PASSED: accel: pdf/accel.pdf
      PASSED: hid: pdf/hid.pdf
      PASSED: userspace-api: pdf/userspace-api.pdf
      PASSED: spi: pdf/spi.pdf
      PASSED: networking: pdf/networking.pdf
      PASSED: virt: pdf/virt.pdf
      PASSED: nvme: pdf/nvme.pdf
      FAILED: translations: Build failed (FAILED)
      PASSED: input: pdf/input.pdf
      PASSED: tee: pdf/tee.pdf
      PASSED: doc-guide: pdf/doc-guide.pdf
      PASSED: cdrom: pdf/cdrom.pdf
      PASSED: gpu: pdf/gpu.pdf
      PASSED: i2c: pdf/i2c.pdf
      PASSED: RCU: pdf/RCU.pdf
      PASSED: watchdog: pdf/watchdog.pdf
      PASSED: usb: pdf/usb.pdf
      PASSED: rust: pdf/rust.pdf
      PASSED: crypto: pdf/crypto.pdf
      PASSED: kbuild: pdf/kbuild.pdf
      PASSED: livepatch: pdf/livepatch.pdf
      PASSED: mm: pdf/mm.pdf
      PASSED: locking: pdf/locking.pdf
      PASSED: infiniband: pdf/infiniband.pdf
      PASSED: driver-api: pdf/driver-api.pdf
      PASSED: bpf: pdf/bpf.pdf
      PASSED: devicetree: pdf/devicetree.pdf
      PASSED: block: pdf/block.pdf
      PASSED: target: pdf/target.pdf
      PASSED: arch: pdf/arch.pdf
      PASSED: pcmcia: pdf/pcmcia.pdf
      PASSED: scsi: pdf/scsi.pdf
      PASSED: netlabel: pdf/netlabel.pdf
      PASSED: sound: pdf/sound.pdf
      PASSED: security: pdf/security.pdf
      PASSED: accounting: pdf/accounting.pdf
      PASSED: admin-guide: pdf/admin-guide.pdf
      PASSED: core-api: pdf/core-api.pdf
      PASSED: fb: pdf/fb.pdf
      PASSED: peci: pdf/peci.pdf
      PASSED: trace: pdf/trace.pdf
      PASSED: misc-devices: pdf/misc-devices.pdf
      PASSED: kernel-hacking: pdf/kernel-hacking.pdf
      PASSED: hwmon: pdf/hwmon.pdf

OpenMandriva Lx 4.0:
--------------------
    PASSED: OS detection: OpenMandriva Lx 4.0
    PASSED: System packages: Packages installed
    PASSED: Sphinx on venv: Sphinx Sphinx 4.3.2
    PASSED: Sphinx package: Sphinx Sphinx 4.3.2
    PASSED: Clean documentation: Build time: 0:00, return code: 0
    PASSED: Build HTML documentation: Build time: 0:00, return code: 0
    PARTIAL: Build PDF documentation: PDF build didn't produce any results (Build time: 0:00, return code: 0)

openSUSE Leap 15.6:
-------------------
    PASSED: OS detection: openSUSE Leap 15.6
    SKIPPED (Sphinx Sphinx 7.2.6): System packages
    SKIPPED (Sphinx already installed either as venv or as native package): Sphinx on venv
    SKIPPED (Sphinx already installed either as venv or as native package): Sphinx package
    PASSED: Clean documentation: Build time: 0:00, return code: 0
    PASSED: Build HTML documentation: Build time: 5:29, return code: 0
    PASSED: Build PDF documentation: Build time: 13:45, return code: 0

  PDF docs:
  ---------
      PASSED: dev-tools: pdf/dev-tools.pdf
      PASSED: tools: pdf/tools.pdf
      PASSED: filesystems: pdf/filesystems.pdf
      PASSED: w1: pdf/w1.pdf
      PASSED: maintainer: pdf/maintainer.pdf
      PASSED: process: pdf/process.pdf
      PASSED: isdn: pdf/isdn.pdf
      PASSED: fault-injection: pdf/fault-injection.pdf
      PASSED: iio: pdf/iio.pdf
      PASSED: scheduler: pdf/scheduler.pdf
      PASSED: staging: pdf/staging.pdf
      PASSED: fpga: pdf/fpga.pdf
      PASSED: power: pdf/power.pdf
      PASSED: leds: pdf/leds.pdf
      PASSED: edac: pdf/edac.pdf
      PASSED: PCI: pdf/PCI.pdf
      PASSED: firmware-guide: pdf/firmware-guide.pdf
      PASSED: cpu-freq: pdf/cpu-freq.pdf
      PASSED: mhi: pdf/mhi.pdf
      PASSED: wmi: pdf/wmi.pdf
      PASSED: timers: pdf/timers.pdf
      PASSED: accel: pdf/accel.pdf
      PASSED: hid: pdf/hid.pdf
      PASSED: userspace-api: pdf/userspace-api.pdf
      PASSED: spi: pdf/spi.pdf
      PASSED: networking: pdf/networking.pdf
      PASSED: virt: pdf/virt.pdf
      PASSED: nvme: pdf/nvme.pdf
      PASSED: translations: pdf/translations.pdf
      PASSED: input: pdf/input.pdf
      PASSED: tee: pdf/tee.pdf
      PASSED: doc-guide: pdf/doc-guide.pdf
      PASSED: cdrom: pdf/cdrom.pdf
      PASSED: gpu: pdf/gpu.pdf
      PASSED: i2c: pdf/i2c.pdf
      PASSED: RCU: pdf/RCU.pdf
      PASSED: watchdog: pdf/watchdog.pdf
      PASSED: usb: pdf/usb.pdf
      PASSED: rust: pdf/rust.pdf
      PASSED: crypto: pdf/crypto.pdf
      PASSED: kbuild: pdf/kbuild.pdf
      PASSED: livepatch: pdf/livepatch.pdf
      PASSED: mm: pdf/mm.pdf
      PASSED: locking: pdf/locking.pdf
      PASSED: infiniband: pdf/infiniband.pdf
      PASSED: driver-api: pdf/driver-api.pdf
      PASSED: bpf: pdf/bpf.pdf
      PASSED: devicetree: pdf/devicetree.pdf
      PASSED: block: pdf/block.pdf
      PASSED: target: pdf/target.pdf
      PASSED: arch: pdf/arch.pdf
      PASSED: pcmcia: pdf/pcmcia.pdf
      PASSED: scsi: pdf/scsi.pdf
      PASSED: netlabel: pdf/netlabel.pdf
      PASSED: sound: pdf/sound.pdf
      PASSED: security: pdf/security.pdf
      PASSED: accounting: pdf/accounting.pdf
      PASSED: admin-guide: pdf/admin-guide.pdf
      PASSED: core-api: pdf/core-api.pdf
      PASSED: fb: pdf/fb.pdf
      PASSED: peci: pdf/peci.pdf
      PASSED: trace: pdf/trace.pdf
      PASSED: misc-devices: pdf/misc-devices.pdf
      PASSED: kernel-hacking: pdf/kernel-hacking.pdf
      PASSED: hwmon: pdf/hwmon.pdf

openSUSE Tumbleweed:
--------------------
    PASSED: OS detection: openSUSE Tumbleweed
    SKIPPED (Sphinx Sphinx 8.2.3): System packages
    SKIPPED (Sphinx already installed either as venv or as native package): Sphinx on venv
    SKIPPED (Sphinx already installed either as venv or as native package): Sphinx package
    PASSED: Clean documentation: Build time: 0:00, return code: 0
    PASSED: Build HTML documentation: Build time: 4:33, return code: 0
    PASSED: Build PDF documentation: Build time: 13:18, return code: 0

  PDF docs:
  ---------
      PASSED: dev-tools: pdf/dev-tools.pdf
      PASSED: tools: pdf/tools.pdf
      PASSED: filesystems: pdf/filesystems.pdf
      PASSED: w1: pdf/w1.pdf
      PASSED: maintainer: pdf/maintainer.pdf
      PASSED: process: pdf/process.pdf
      PASSED: isdn: pdf/isdn.pdf
      PASSED: fault-injection: pdf/fault-injection.pdf
      PASSED: iio: pdf/iio.pdf
      PASSED: scheduler: pdf/scheduler.pdf
      PASSED: staging: pdf/staging.pdf
      PASSED: fpga: pdf/fpga.pdf
      PASSED: power: pdf/power.pdf
      PASSED: leds: pdf/leds.pdf
      PASSED: edac: pdf/edac.pdf
      PASSED: PCI: pdf/PCI.pdf
      PASSED: firmware-guide: pdf/firmware-guide.pdf
      PASSED: cpu-freq: pdf/cpu-freq.pdf
      PASSED: mhi: pdf/mhi.pdf
      PASSED: wmi: pdf/wmi.pdf
      PASSED: timers: pdf/timers.pdf
      PASSED: accel: pdf/accel.pdf
      PASSED: hid: pdf/hid.pdf
      PASSED: userspace-api: pdf/userspace-api.pdf
      PASSED: spi: pdf/spi.pdf
      PASSED: networking: pdf/networking.pdf
      PASSED: virt: pdf/virt.pdf
      PASSED: nvme: pdf/nvme.pdf
      PASSED: translations: pdf/translations.pdf
      PASSED: input: pdf/input.pdf
      PASSED: tee: pdf/tee.pdf
      PASSED: doc-guide: pdf/doc-guide.pdf
      PASSED: cdrom: pdf/cdrom.pdf
      PASSED: gpu: pdf/gpu.pdf
      PASSED: i2c: pdf/i2c.pdf
      PASSED: RCU: pdf/RCU.pdf
      PASSED: watchdog: pdf/watchdog.pdf
      PASSED: usb: pdf/usb.pdf
      PASSED: rust: pdf/rust.pdf
      PASSED: crypto: pdf/crypto.pdf
      PASSED: kbuild: pdf/kbuild.pdf
      PASSED: livepatch: pdf/livepatch.pdf
      PASSED: mm: pdf/mm.pdf
      PASSED: locking: pdf/locking.pdf
      PASSED: infiniband: pdf/infiniband.pdf
      PASSED: driver-api: pdf/driver-api.pdf
      PASSED: bpf: pdf/bpf.pdf
      PASSED: devicetree: pdf/devicetree.pdf
      PASSED: block: pdf/block.pdf
      PASSED: target: pdf/target.pdf
      PASSED: arch: pdf/arch.pdf
      PASSED: pcmcia: pdf/pcmcia.pdf
      PASSED: scsi: pdf/scsi.pdf
      PASSED: netlabel: pdf/netlabel.pdf
      PASSED: sound: pdf/sound.pdf
      PASSED: security: pdf/security.pdf
      PASSED: accounting: pdf/accounting.pdf
      PASSED: admin-guide: pdf/admin-guide.pdf
      PASSED: core-api: pdf/core-api.pdf
      PASSED: fb: pdf/fb.pdf
      PASSED: peci: pdf/peci.pdf
      PASSED: trace: pdf/trace.pdf
      PASSED: misc-devices: pdf/misc-devices.pdf
      PASSED: kernel-hacking: pdf/kernel-hacking.pdf
      PASSED: hwmon: pdf/hwmon.pdf

Oracle Linux Server release 9.6:
--------------------------------
    PASSED: OS detection: Oracle Linux Server release 9.6
    SKIPPED (Sphinx Sphinx 3.4.3): System packages
    SKIPPED (Sphinx already installed either as venv or as native package): Sphinx on venv
    SKIPPED (Sphinx already installed either as venv or as native package): Sphinx package
    PASSED: Clean documentation: Build time: 0:00, return code: 0
    PASSED: Build HTML documentation: Build time: 5:17, return code: 0
    PASSED: Build PDF documentation: Build time: 11:30, return code: 0

  PDF docs:
  ---------
      PASSED: dev-tools: pdf/dev-tools.pdf
      PASSED: tools: pdf/tools.pdf
      PASSED: filesystems: pdf/filesystems.pdf
      PASSED: w1: pdf/w1.pdf
      PASSED: maintainer: pdf/maintainer.pdf
      PASSED: process: pdf/process.pdf
      PASSED: isdn: pdf/isdn.pdf
      PASSED: fault-injection: pdf/fault-injection.pdf
      PASSED: iio: pdf/iio.pdf
      PASSED: scheduler: pdf/scheduler.pdf
      PASSED: staging: pdf/staging.pdf
      PASSED: fpga: pdf/fpga.pdf
      PASSED: power: pdf/power.pdf
      PASSED: leds: pdf/leds.pdf
      PASSED: edac: pdf/edac.pdf
      PASSED: PCI: pdf/PCI.pdf
      PASSED: firmware-guide: pdf/firmware-guide.pdf
      PASSED: cpu-freq: pdf/cpu-freq.pdf
      PASSED: mhi: pdf/mhi.pdf
      PASSED: wmi: pdf/wmi.pdf
      PASSED: timers: pdf/timers.pdf
      PASSED: accel: pdf/accel.pdf
      PASSED: hid: pdf/hid.pdf
      PASSED: userspace-api: pdf/userspace-api.pdf
      PASSED: spi: pdf/spi.pdf
      PASSED: networking: pdf/networking.pdf
      PASSED: virt: pdf/virt.pdf
      PASSED: nvme: pdf/nvme.pdf
      PASSED: translations: pdf/translations.pdf
      PASSED: input: pdf/input.pdf
      PASSED: tee: pdf/tee.pdf
      PASSED: doc-guide: pdf/doc-guide.pdf
      PASSED: cdrom: pdf/cdrom.pdf
      PASSED: gpu: pdf/gpu.pdf
      PASSED: i2c: pdf/i2c.pdf
      PASSED: RCU: pdf/RCU.pdf
      PASSED: watchdog: pdf/watchdog.pdf
      PASSED: usb: pdf/usb.pdf
      PASSED: rust: pdf/rust.pdf
      PASSED: crypto: pdf/crypto.pdf
      PASSED: kbuild: pdf/kbuild.pdf
      PASSED: livepatch: pdf/livepatch.pdf
      PASSED: mm: pdf/mm.pdf
      PASSED: locking: pdf/locking.pdf
      PASSED: infiniband: pdf/infiniband.pdf
      PASSED: driver-api: pdf/driver-api.pdf
      PASSED: bpf: pdf/bpf.pdf
      PASSED: devicetree: pdf/devicetree.pdf
      PASSED: block: pdf/block.pdf
      PASSED: target: pdf/target.pdf
      PASSED: arch: pdf/arch.pdf
      PASSED: pcmcia: pdf/pcmcia.pdf
      PASSED: scsi: pdf/scsi.pdf
      PASSED: netlabel: pdf/netlabel.pdf
      PASSED: sound: pdf/sound.pdf
      PASSED: security: pdf/security.pdf
      PASSED: accounting: pdf/accounting.pdf
      PASSED: admin-guide: pdf/admin-guide.pdf
      PASSED: core-api: pdf/core-api.pdf
      PASSED: fb: pdf/fb.pdf
      PASSED: peci: pdf/peci.pdf
      PASSED: trace: pdf/trace.pdf
      PASSED: misc-devices: pdf/misc-devices.pdf
      PASSED: kernel-hacking: pdf/kernel-hacking.pdf
      PASSED: hwmon: pdf/hwmon.pdf

Red Hat Enterprise Linux release 8.10 (Ootpa):
----------------------------------------------
    PASSED: OS detection: Red Hat Enterprise Linux release 8.10 (Ootpa)
    FAILED: System packages:  Error: Unable to find a match: google-noto-sans-cjk-ttc-fonts librsvg2-tools texlive-amscls texlive-amsfonts texlive-amsmath texlive-anyfontsize texlive-capt-of texlive-cmap texlive-collection-fontsrecommended texlive-collection-latex texlive-ec texlive-eqparbox texlive-euenc texlive-fancybox texlive-fancyvrb texlive-float texlive-fncychap texlive-framed texlive-luatex85 texlive-mdwtools texlive-multirow texlive-needspace texlive-oberdiek texlive-parskip texlive-polyglossia texlive-psnfss texlive-tabulary texlive-threeparttable texlive-titlesec texlive-tools texlive-ucs texlive-upquote texlive-wrapfig texlive-xecjk texlive-xetex-bin
    PARTIAL: Sphinx on venv: No Sphinx version detected
    PARTIAL: Sphinx package: No Sphinx version detected
    PASSED: Clean documentation: Build time: 0:00, return code: 0
    PARTIAL: Build HTML documentation: Test failed (Build time: 0:00, return code: 2)
    PARTIAL: Build PDF documentation: PDF build didn't produce any results (Build time: 0:00, return code: 2)

rockylinux8:
------------
    FAILED: Build failed at package installation (
            Failed to setup distrolib.distro_manager.CustomError: Failed to setup distro
            File "~/bin/doc-build-container.py", line 261, in <module>
            asyncio.run(main())
            /usr/lib64/python3.13/asyncio/runners.py, line 195, in run
            return runner.run(main)
            /usr/lib64/python3.13/asyncio/runners.py, line 118, in run
            return self._loop.run_until_complete(task)
            /usr/lib64/python3.13/asyncio/base_events.py, line 712, in run_until_complete
            self.run_forever()
            /usr/lib64/python3.13/asyncio/base_events.py, line 683, in run_forever
            self._run_once()
            /usr/lib64/python3.13/asyncio/base_events.py, line 2042, in _run_once
            handle._run()
            /usr/lib64/python3.13/asyncio/events.py, line 89, in _run
            self._context.run(self._callback, *self._args)
            File "distro_manager.py", line 612, in run_manager
            return await manager.serial_run()
            File "distro_manager.py", line 593, in serial_run
            await self.run_distro(distro)
            File "distro_manager.py", line 518, in run_distro
            self.record_status(
            )

Rocky Linux release 9.6 (Blue Onyx):
------------------------------------
    PASSED: OS detection: Rocky Linux release 9.6 (Blue Onyx)
    SKIPPED (Sphinx Sphinx 3.4.3): System packages
    SKIPPED (Sphinx already installed either as venv or as native package): Sphinx on venv
    SKIPPED (Sphinx already installed either as venv or as native package): Sphinx package
    PASSED: Clean documentation: Build time: 0:00, return code: 0
    PASSED: Build HTML documentation: Build time: 5:07, return code: 0
    PASSED: Build PDF documentation: Build time: 11:29, return code: 0

  PDF docs:
  ---------
      PASSED: dev-tools: pdf/dev-tools.pdf
      PASSED: tools: pdf/tools.pdf
      PASSED: filesystems: pdf/filesystems.pdf
      PASSED: w1: pdf/w1.pdf
      PASSED: maintainer: pdf/maintainer.pdf
      PASSED: process: pdf/process.pdf
      PASSED: isdn: pdf/isdn.pdf
      PASSED: fault-injection: pdf/fault-injection.pdf
      PASSED: iio: pdf/iio.pdf
      PASSED: scheduler: pdf/scheduler.pdf
      PASSED: staging: pdf/staging.pdf
      PASSED: fpga: pdf/fpga.pdf
      PASSED: power: pdf/power.pdf
      PASSED: leds: pdf/leds.pdf
      PASSED: edac: pdf/edac.pdf
      PASSED: PCI: pdf/PCI.pdf
      PASSED: firmware-guide: pdf/firmware-guide.pdf
      PASSED: cpu-freq: pdf/cpu-freq.pdf
      PASSED: mhi: pdf/mhi.pdf
      PASSED: wmi: pdf/wmi.pdf
      PASSED: timers: pdf/timers.pdf
      PASSED: accel: pdf/accel.pdf
      PASSED: hid: pdf/hid.pdf
      PASSED: userspace-api: pdf/userspace-api.pdf
      PASSED: spi: pdf/spi.pdf
      PASSED: networking: pdf/networking.pdf
      PASSED: virt: pdf/virt.pdf
      PASSED: nvme: pdf/nvme.pdf
      PASSED: translations: pdf/translations.pdf
      PASSED: input: pdf/input.pdf
      PASSED: tee: pdf/tee.pdf
      PASSED: doc-guide: pdf/doc-guide.pdf
      PASSED: cdrom: pdf/cdrom.pdf
      PASSED: gpu: pdf/gpu.pdf
      PASSED: i2c: pdf/i2c.pdf
      PASSED: RCU: pdf/RCU.pdf
      PASSED: watchdog: pdf/watchdog.pdf
      PASSED: usb: pdf/usb.pdf
      PASSED: rust: pdf/rust.pdf
      PASSED: crypto: pdf/crypto.pdf
      PASSED: kbuild: pdf/kbuild.pdf
      PASSED: livepatch: pdf/livepatch.pdf
      PASSED: mm: pdf/mm.pdf
      PASSED: locking: pdf/locking.pdf
      PASSED: infiniband: pdf/infiniband.pdf
      PASSED: driver-api: pdf/driver-api.pdf
      PASSED: bpf: pdf/bpf.pdf
      PASSED: devicetree: pdf/devicetree.pdf
      PASSED: block: pdf/block.pdf
      PASSED: target: pdf/target.pdf
      PASSED: arch: pdf/arch.pdf
      PASSED: pcmcia: pdf/pcmcia.pdf
      PASSED: scsi: pdf/scsi.pdf
      PASSED: netlabel: pdf/netlabel.pdf
      PASSED: sound: pdf/sound.pdf
      PASSED: security: pdf/security.pdf
      PASSED: accounting: pdf/accounting.pdf
      PASSED: admin-guide: pdf/admin-guide.pdf
      PASSED: core-api: pdf/core-api.pdf
      PASSED: fb: pdf/fb.pdf
      PASSED: peci: pdf/peci.pdf
      PASSED: trace: pdf/trace.pdf
      PASSED: misc-devices: pdf/misc-devices.pdf
      PASSED: kernel-hacking: pdf/kernel-hacking.pdf
      PASSED: hwmon: pdf/hwmon.pdf

Springdale Open Enterprise Linux release 9.2 (Parma):
-----------------------------------------------------
    PASSED: OS detection: Springdale Open Enterprise Linux release 9.2 (Parma)
    FAILED: System packages:  Error:   Problem: package ImageMagick-6.9.13.25-1.el9.x86_64 requires libMagickCore-6.Q16.so.7()(64bit), but none of the providers can be installed   - package ImageMagick-6.9.13.25-1.el9.x86_64 requires libMagickWand-6.Q16.so.7()(64bit), but none of the providers can be installed   - package ImageMagick-6.9.13.25-1.el9.x86_64 requires ImageMagick-libs(x86-64) = 6.9.13.25-1.el9, but none of the providers can be installed   - conflicting requests   - nothing provides libraw_r.so.23()(64bit) needed by ImageMagick-libs-6.9.13.25-1.el9.x86_64
    PASSED: Sphinx on venv: Sphinx Sphinx 7.4.7
    PASSED: Sphinx package: Sphinx Sphinx 3.4.3
    PASSED: Clean documentation: Build time: 0:00, return code: 0
    PASSED: Build HTML documentation: Build time: 4:30, return code: 0
    PARTIAL: Build PDF documentation: PDF build didn't produce any results (Build time: 0:00, return code: 0)

Ubuntu 24.04.2 LTS:
-------------------
    PASSED: OS detection: Ubuntu 24.04.2 LTS
    SKIPPED (Sphinx Sphinx 7.2.6): System packages
    SKIPPED (Sphinx already installed either as venv or as native package): Sphinx on venv
    SKIPPED (Sphinx already installed either as venv or as native package): Sphinx package
    PASSED: Clean documentation: Build time: 0:00, return code: 0
    PASSED: Build HTML documentation: Build time: 4:06, return code: 0
    PASSED: Build PDF documentation: Build time: 10:38, return code: 0

  PDF docs:
  ---------
      PASSED: dev-tools: pdf/dev-tools.pdf
      PASSED: tools: pdf/tools.pdf
      PASSED: filesystems: pdf/filesystems.pdf
      PASSED: w1: pdf/w1.pdf
      PASSED: maintainer: pdf/maintainer.pdf
      PASSED: process: pdf/process.pdf
      PASSED: isdn: pdf/isdn.pdf
      PASSED: fault-injection: pdf/fault-injection.pdf
      PASSED: iio: pdf/iio.pdf
      PASSED: scheduler: pdf/scheduler.pdf
      PASSED: staging: pdf/staging.pdf
      PASSED: fpga: pdf/fpga.pdf
      PASSED: power: pdf/power.pdf
      PASSED: leds: pdf/leds.pdf
      PASSED: edac: pdf/edac.pdf
      PASSED: PCI: pdf/PCI.pdf
      PASSED: firmware-guide: pdf/firmware-guide.pdf
      PASSED: cpu-freq: pdf/cpu-freq.pdf
      PASSED: mhi: pdf/mhi.pdf
      PASSED: wmi: pdf/wmi.pdf
      PASSED: timers: pdf/timers.pdf
      PASSED: accel: pdf/accel.pdf
      PASSED: hid: pdf/hid.pdf
      PASSED: userspace-api: pdf/userspace-api.pdf
      PASSED: spi: pdf/spi.pdf
      PASSED: networking: pdf/networking.pdf
      PASSED: virt: pdf/virt.pdf
      PASSED: nvme: pdf/nvme.pdf
      PASSED: translations: pdf/translations.pdf
      PASSED: input: pdf/input.pdf
      PASSED: tee: pdf/tee.pdf
      PASSED: doc-guide: pdf/doc-guide.pdf
      PASSED: cdrom: pdf/cdrom.pdf
      PASSED: gpu: pdf/gpu.pdf
      PASSED: i2c: pdf/i2c.pdf
      PASSED: RCU: pdf/RCU.pdf
      PASSED: watchdog: pdf/watchdog.pdf
      PASSED: usb: pdf/usb.pdf
      PASSED: rust: pdf/rust.pdf
      PASSED: crypto: pdf/crypto.pdf
      PASSED: kbuild: pdf/kbuild.pdf
      PASSED: livepatch: pdf/livepatch.pdf
      PASSED: mm: pdf/mm.pdf
      PASSED: locking: pdf/locking.pdf
      PASSED: infiniband: pdf/infiniband.pdf
      PASSED: driver-api: pdf/driver-api.pdf
      PASSED: bpf: pdf/bpf.pdf
      PASSED: devicetree: pdf/devicetree.pdf
      PASSED: block: pdf/block.pdf
      PASSED: target: pdf/target.pdf
      PASSED: arch: pdf/arch.pdf
      PASSED: pcmcia: pdf/pcmcia.pdf
      PASSED: scsi: pdf/scsi.pdf
      PASSED: netlabel: pdf/netlabel.pdf
      PASSED: sound: pdf/sound.pdf
      PASSED: security: pdf/security.pdf
      PASSED: accounting: pdf/accounting.pdf
      PASSED: admin-guide: pdf/admin-guide.pdf
      PASSED: core-api: pdf/core-api.pdf
      PASSED: fb: pdf/fb.pdf
      PASSED: peci: pdf/peci.pdf
      PASSED: trace: pdf/trace.pdf
      PASSED: misc-devices: pdf/misc-devices.pdf
      PASSED: kernel-hacking: pdf/kernel-hacking.pdf
      PASSED: hwmon: pdf/hwmon.pdf

Ubuntu 25.04:
-------------
    PASSED: OS detection: Ubuntu 25.04
    SKIPPED (Sphinx Sphinx 8.1.3): System packages
    SKIPPED (Sphinx already installed either as venv or as native package): Sphinx on venv
    SKIPPED (Sphinx already installed either as venv or as native package): Sphinx package
    PASSED: Clean documentation: Build time: 0:00, return code: 0
    PASSED: Build HTML documentation: Build time: 3:28, return code: 0
    PASSED: Build PDF documentation: Build time: 11:08, return code: 0

  PDF docs:
  ---------
      PASSED: dev-tools: pdf/dev-tools.pdf
      PASSED: tools: pdf/tools.pdf
      PASSED: filesystems: pdf/filesystems.pdf
      PASSED: w1: pdf/w1.pdf
      PASSED: maintainer: pdf/maintainer.pdf
      PASSED: process: pdf/process.pdf
      PASSED: isdn: pdf/isdn.pdf
      PASSED: fault-injection: pdf/fault-injection.pdf
      PASSED: iio: pdf/iio.pdf
      PASSED: scheduler: pdf/scheduler.pdf
      PASSED: staging: pdf/staging.pdf
      PASSED: fpga: pdf/fpga.pdf
      PASSED: power: pdf/power.pdf
      PASSED: leds: pdf/leds.pdf
      PASSED: edac: pdf/edac.pdf
      PASSED: PCI: pdf/PCI.pdf
      PASSED: firmware-guide: pdf/firmware-guide.pdf
      PASSED: cpu-freq: pdf/cpu-freq.pdf
      PASSED: mhi: pdf/mhi.pdf
      PASSED: wmi: pdf/wmi.pdf
      PASSED: timers: pdf/timers.pdf
      PASSED: accel: pdf/accel.pdf
      PASSED: hid: pdf/hid.pdf
      PASSED: userspace-api: pdf/userspace-api.pdf
      PASSED: spi: pdf/spi.pdf
      PASSED: networking: pdf/networking.pdf
      PASSED: virt: pdf/virt.pdf
      PASSED: nvme: pdf/nvme.pdf
      PASSED: translations: pdf/translations.pdf
      PASSED: input: pdf/input.pdf
      PASSED: tee: pdf/tee.pdf
      PASSED: doc-guide: pdf/doc-guide.pdf
      PASSED: cdrom: pdf/cdrom.pdf
      PASSED: gpu: pdf/gpu.pdf
      PASSED: i2c: pdf/i2c.pdf
      PASSED: RCU: pdf/RCU.pdf
      PASSED: watchdog: pdf/watchdog.pdf
      PASSED: usb: pdf/usb.pdf
      PASSED: rust: pdf/rust.pdf
      PASSED: crypto: pdf/crypto.pdf
      PASSED: kbuild: pdf/kbuild.pdf
      PASSED: livepatch: pdf/livepatch.pdf
      PASSED: mm: pdf/mm.pdf
      PASSED: locking: pdf/locking.pdf
      PASSED: infiniband: pdf/infiniband.pdf
      PASSED: driver-api: pdf/driver-api.pdf
      PASSED: bpf: pdf/bpf.pdf
      PASSED: devicetree: pdf/devicetree.pdf
      PASSED: block: pdf/block.pdf
      PASSED: target: pdf/target.pdf
      PASSED: arch: pdf/arch.pdf
      PASSED: pcmcia: pdf/pcmcia.pdf
      PASSED: scsi: pdf/scsi.pdf
      PASSED: netlabel: pdf/netlabel.pdf
      PASSED: sound: pdf/sound.pdf
      PASSED: security: pdf/security.pdf
      PASSED: accounting: pdf/accounting.pdf
      PASSED: admin-guide: pdf/admin-guide.pdf
      PASSED: core-api: pdf/core-api.pdf
      PASSED: fb: pdf/fb.pdf
      PASSED: peci: pdf/peci.pdf
      PASSED: trace: pdf/trace.pdf
      PASSED: misc-devices: pdf/misc-devices.pdf
      PASSED: kernel-hacking: pdf/kernel-hacking.pdf
      PASSED: hwmon: pdf/hwmon.pdf

Summary
=======
  PASSED - AlmaLinux release 9.6 (Sage Margay) (7 tests)
  PASSED - Amazon Linux release 2023 (Amazon Linux) (7 tests)
  PASSED - Arch Linux (7 tests)
  PASSED - CentOS Stream release 9 (7 tests)
  PARTIAL - Debian GNU/Linux 12 (7 tests)
  PARTIAL - Devuan GNU/Linux 5 (7 tests)
  PASSED - Fedora release 42 (Adams) (7 tests)
  PARTIAL - Gentoo Base System release 2.17 (7 tests)
  PASSED - Kali GNU/Linux 2025.2 (7 tests)
  PASSED - Mageia 9 (7 tests)
  PARTIAL - Linux Mint 22 (7 tests)
  PARTIAL - openEuler release 25.03 (7 tests)
  PARTIAL - OpenMandriva Lx 4.0 (7 tests)
  PASSED - openSUSE Leap 15.6 (7 tests)
  PASSED - openSUSE Tumbleweed (7 tests)
  PASSED - Oracle Linux Server release 9.6 (7 tests)
  FAILED - Red Hat Enterprise Linux release 8.10 (Ootpa) (7 tests)
  FAILED - rockylinux8 (1 tests)
  PASSED - Rocky Linux release 9.6 (Blue Onyx) (7 tests)
  FAILED - Springdale Open Enterprise Linux release 9.2 (Parma) (7 tests)
  PASSED - Ubuntu 24.04.2 LTS (7 tests)
  PASSED - Ubuntu 25.04 (7 tests)
Re: [PATCH 00/15] Translate sphinx-pre-install to Python
Posted by Akira Yokosawa 2 months ago
Hi,

On Thu, 31 Jul 2025 13:51:07 +0200, Mauro Carvalho Chehab wrote:
> Em Tue, 8 Jul 2025 23:56:01 +0900
> Akira Yokosawa <akiyks@gmail.com> escreveu:
> 
>> I've been ignoring sphinx-pre-install all these years, but the impressive
>> test results presented in this cover-letter made me test it.
> 
> I'm now working to fix PDF generation, assuming that all packages from
> sphinx-pre-install are installed.
> 
> I'm placing the patches on my scratch tree at:
> 	https://github.com/mchehab/linux/tree/my-docs-next
> 
> It contains several branches merged there in sequence:
> 	- elder_python_v1: makes kernel-doc run with elder kernels (2 patches);
> 	- netlink_v10: patches adding an yaml parser for netlink (14 patches);
> 	- sphinx-pre-install-v4: current version of this series (39 patches);
> 	- pdfdocs: specific fixes for PDF doc generation (11 patches);
> 	- sphinx-build-wrapper: a new script with a large cleanup at docs Makefile
> 	  (7 patches)

Sorry, but I've not looked into those branches.

[...]

> So, at least for me, it seems that the changes will be fixing
> lots of existing issues.
> 
> Btw, one of the problem with PDFs is that the existing logic
> doesn't really report success/failures for each PDF target.
> That's why I ended writing a wrapper (sphinx-build-wrapper) with
> checks the results. As a side effect, docs Makefile is now in
> sane state.

I might be interested in seeing the docs Makefile updates.

> 
> Thanks,
> Mauro
> 
> ---

[...]

> Summary
> =======
>   PASSED - AlmaLinux release 9.6 (Sage Margay) (7 tests)
>   PASSED - Amazon Linux release 2023 (Amazon Linux) (7 tests)
>   PASSED - Arch Linux (7 tests)
>   PASSED - CentOS Stream release 9 (7 tests)
>   PARTIAL - Debian GNU/Linux 12 (7 tests)
>   PARTIAL - Devuan GNU/Linux 5 (7 tests)
>   PASSED - Fedora release 42 (Adams) (7 tests)
>   PARTIAL - Gentoo Base System release 2.17 (7 tests)
>   PASSED - Kali GNU/Linux 2025.2 (7 tests)
>   PASSED - Mageia 9 (7 tests)
>   PARTIAL - Linux Mint 22 (7 tests)
>   PARTIAL - openEuler release 25.03 (7 tests)
>   PARTIAL - OpenMandriva Lx 4.0 (7 tests)
>   PASSED - openSUSE Leap 15.6 (7 tests)
>   PASSED - openSUSE Tumbleweed (7 tests)
>   PASSED - Oracle Linux Server release 9.6 (7 tests)
>   FAILED - Red Hat Enterprise Linux release 8.10 (Ootpa) (7 tests)
>   FAILED - rockylinux8 (1 tests)
>   PASSED - Rocky Linux release 9.6 (Blue Onyx) (7 tests)
>   FAILED - Springdale Open Enterprise Linux release 9.2 (Parma) (7 tests)
>   PASSED - Ubuntu 24.04.2 LTS (7 tests)
>   PASSED - Ubuntu 25.04 (7 tests)

Here is a summary I have made based on my own tests against limited list of
distros.  I'm still ignoring sphinx_pre_install.

-----------------------------------------------------------------------
* TL;DR

Setting up a tool for SVG --> PDF conversion and CJK fonts properly for
"make latexdocs" and "make pdfdocs" is sometimes tricky.

Summary table as of 2025/08/02 WRT distro packages installed as they are:

[legends]
    pdf & img:  pdfdocs with ImageMagick + rsvg-convert; w/o CJK fonts
    pdf & ink:  pdfdocs with Inkscape; w/o CJK fonts
    pdf & cjk:  pdfdocs with either ImageMagick or Inkscape; with CJK fonts

========================================================================
                                                    pdf
                                            ----------------- 
distro               python3 sphinx    html   img   ink   cjk   notes
===================  ======= =======  ===== ===== ===== =====  =========
debian:bullseye      3.9.2   3.4.3     PASS  FAIL  PASS  PASS   [*0]
debian:bookworm      3.11.2  5.3.0     PASS  FAIL  PASS  PASS   [*0]
debian:trixie        3.13.5  8.1.3     PASS  FAIL  PASS  PASS   [*6]

ubuntu:jammy         3.10.6  4.3.2     PASS  FAIL  PASS  PASS   [*0]
ubuntu:noble         3.12.3  7.2.6     PASS  FAIL  PASS  PASS   [*6]
ubuntu:plucky        3.13.3  8.1.3     PASS  FAIL  PASS  PASS   [*6]

almalinux:9          3.9.21  3.4.3     PASS  PASS  PASS  PASS
almalinux:10         3.12.9  7.2.6     PASS  PASS  ---   FAIL   [*1]

fedora:42            3.13.5  8.1.3     PASS  PASS  PASS  PASS   [*2]

opensuse/leap:15.6   3.11.9  7.2.6     PASS  PASS  FAIL  FAIL   [*3]

mageia:9             3.10.11 6.1.3     PASS  PASS  PASS  PASS   [*4]

opensuse/tumbleweed  3.13.5  8.2.3     PASS  PASS  PASS  FAIL   [*5]
archlinux            3.13.5  8.2.3     PASS  PASS  PASS  PASS
===================  ======= =======  ===== ===== ===== =====  ==========

"FAIL" means several situations, most of which can be worked around by
manual intervention after installing distro packages:

 (1) error/warning in "make latexdocs"
     (1-a) due to some issues in distro package that is not up-to-date

     (1-b) convert(1) of ImageMagick doesn't generate PDFs with the warning:
        WARNING: Warning msg from convert(1): convert: attempt to perform an
	operation not allowed by the security policy `PDF' ...

     (1-c) Incompatibility of newly added SVG figures with avalable
           SVG --> PDF converters:

        (1-c1) covert(1) + rsvg-convert(1)
	(1-c2) inkscape(1)

 (2) error in "make pdfdocs"
     (2-a) (1-b) or (1-c) can cause "LaTeX Warning: Float too large for page
           by <huge>pt" and ends up in the fatal error of xelatex:

             "! TeX capacity exceeded, sorry [main memory size=5000000]"

     (2-b) (1-b) or (1-c) can cause xelatex to error-exit without leaving
           any hint in the .log file.

 (3) CJK pages can't be rendered
     (3-a) due to missing *static* Noto CJK fonts in distro packages

Notes
=====

[*0]  ImageMagick is not allowed to generate PDFs in Debian and its
      derivative releases prior to ubuntu:noble.

[*1]  An issue in cairo prevents a DOT diagram in a CJK page to be converted
      into PDF ("dot -Tpdf" crash; known issue with cairo-1.18.2-2.el10).
      Inkscape is not in EPEL 10.  Use of flatpak is recommended for GUI apps,
      but flatpak apps don't see font setups of hosts by default.
      Serif shape Static Noto CJK fonts are not provided as distro packages.

[*2]  Due to a xelatex & fontspec limitation, if you have variable Noto CJK
      fonts installed, they need to be deny-listed for building PDF docs
      with CJK fonts.

[*3]  Sphinx 7.2.6 is provided as python311-Sphinx.
      Inkscape 1.0.1 crashes against figures drawn with Inkscape 1.4.x.
      Noto CJK fonts are not provided as distro packages.

[*4]  When Inkscape is available, their parallel runs under Gnome desktop
      can cause emergency saves of SVG files.  This issue can be worked
      around by, e.g., building under a text-only session or a non-Gnome
      desktop.

[*5]  Static Noto CJK fonts are not provided as distro packages.
      Even if they are manually installed from Google fonts manually,
      deny-listing distro-provided variable ones is required for CJK pages.

[*6]  convert(1) + rsvg_convert(1) doesn't work well with some SVG files
      under recent debian and its derivatives.  Incomplete list of examples:

      - Documentation/gpu/pipe_and_queue_abstraction.svg:
          convert: unrecognized color `context-stroke' @ warning/color.c/GetColorCompliance/1057.
          convert: non-conforming drawing primitive definition `fill' @ error/draw.c/RenderMVGContent/4456.

      - Documentation/userspace-api/media/v4l/selection.svg:
          convert: unrecognized color `dt' @ warning/color.c/GetColorCompliance/1064.
          convert: non-conforming drawing primitive definition `fill' @ error/draw.c/RenderMVGContent/4548.
          convert: unrecognized color `w' @ warning/color.c/GetColorCompliance/1064.
          convert: unrecognized color `dt' @ warning/color.c/GetColorCompliance/1064.
          convert: unrecognized color `w' @ warning/color.c/GetColorCompliance/1064.

[about almalinux:8]
      There is a package python3.11, but there is no accompanying package
      for virtualenv in official EL 8 repos. It might be possible to install
      python3.11 as well as accompanying pip and pyyaml, and install modern
      Sphinx by non-venv pip. This might be feasible, e.g., in containerized
      setups.
      On top of almalinux:8, as far as I could test, xelatex & fontspec
      can't discover fonts by its names such as "DejaVu Sans".
-----------------------------------------------------------------------

Thanks, Akira
Re: [PATCH 00/15] Translate sphinx-pre-install to Python
Posted by Mauro Carvalho Chehab 2 months, 1 week ago
Em Thu, 31 Jul 2025 13:51:07 +0200
Mauro Carvalho Chehab <mchehab+huawei@kernel.org> escreveu:

> Em Tue, 8 Jul 2025 23:56:01 +0900
> Akira Yokosawa <akiyks@gmail.com> escreveu:
> 
> > > My question would be: are the results somehow worse than those provided
> > > by the existing, Perl script?  
> > 
> > Not at all.  Mauro made some improvements WRT opensuse/leap over the perl
> > one, but there remain a lot of rooms for improvements here and there. 
> > 
> > I've been ignoring sphinx-pre-install all these years, but the impressive
> > test results presented in this cover-letter made me test it.
> 
> I'm now working to fix PDF generation, assuming that all packages from
> sphinx-pre-install are installed.
> 
> I'm placing the patches on my scratch tree at:
> 	https://github.com/mchehab/linux/tree/my-docs-next
> 
> It contains several branches merged there in sequence:
> 	- elder_python_v1: makes kernel-doc run with elder kernels (2 patches);
> 	- netlink_v10: patches adding an yaml parser for netlink (14 patches);
> 	- sphinx-pre-install-v4: current version of this series (39 patches);
> 	- pdfdocs: specific fixes for PDF doc generation (11 patches);
> 	- sphinx-build-wrapper: a new script with a large cleanup at docs Makefile
> 	  (7 patches)
> 
> On my testbanch, this is the current summary, where:
> - PASSED: means both HTML and PDF were generated:
> 
>   PASSED - AlmaLinux release 9.6 (Sage Margay) (7 tests)
>   PASSED - Amazon Linux release 2023 (Amazon Linux) (7 tests)
>   PASSED - Arch Linux (7 tests)
>   PASSED - CentOS Stream release 9 (7 tests)
>   PASSED - Fedora release 42 (Adams) (7 tests)
>   PASSED - Kali GNU/Linux 2025.2 (7 tests)
>   PASSED - Mageia 9 (7 tests)
>   PASSED - openSUSE Leap 15.6 (7 tests)
>   PASSED - openSUSE Tumbleweed (7 tests)
>   PASSED - Oracle Linux Server release 9.6 (7 tests)
>   PASSED - Rocky Linux release 9.6 (Blue Onyx) (7 tests)
>   PASSED - Ubuntu 24.04.2 LTS (7 tests)
>   PASSED - Ubuntu 25.04 (7 tests)

Forgot to mention, but for Debian-based distros, my setup does this at
the distro setup phase:

    if [ -f /etc/ImageMagick-6/policy.xml ]; then
      # Remove any existing restrictive policies for PDF/PS/EPS/XPS
      sed -i '/<policy.*domain="coder".*pattern=".*\(PDF\|PS\|EPS\|XPS\).*"/d' /etc/ImageMagick-6/policy.xml
      # Allow PDF patterns at the end </policymap>
      sed -i '/<\/policymap>/i \ \ <policy domain="coder" rights="read|write" pattern="{PS,PS2,PS3,EPS,PDF,XPS}" />'etc/ImageMagick-6/policy.xml
    fi

    if [ -f /etc/ImageMagick-7/policy.xml ]; then
      # Remove any existing restrictive policies for PDF/PS/EPS/XPS
      sed -i '/<policy.*domain="coder".*pattern=".*\(PDF\|PS\|EPS\|XPS\).*"/d' /etc/ImageMagick-7/policy.xml
      # Allow PDF patterns at the end </policymap>
      sed -i '/<\/policymap>/i \ \ <policy domain="coder" rights="read|write" pattern="{PS,PS2,PS3,EPS,PDF,XPS}" />' /etc/ImageMagick-7/policy.xml
    fi

to fix a debian-specific packaging issue that makes ImageMagick 
to fail when it is used with PS/PDF files.

Regards,Mauro
Re: [PATCH 00/15] Translate sphinx-pre-install to Python
Posted by Mauro Carvalho Chehab 3 months ago
Em Tue, 8 Jul 2025 23:56:01 +0900
Akira Yokosawa <akiyks@gmail.com> escreveu:

> On Tue, 08 Jul 2025 08:25:08 -0600, Jonathan Corbet wrote:
> > Akira Yokosawa <akiyks@gmail.com> writes:
> >   
> >> Hi Mauro,
> >>
> >> On Mon, 30 Jun 2025 23:34:48 +0200, Mauro Carvalho Chehab wrote:
> >> [...]
> >>  
> >>> The test script also ran the install procedure for system,
> >>> venv and native Sphinx install.  
> >>
> >> Which install procedure did you test?  The short one with the "--no-pdf"
> >> option?
> >>
> >> I am asking because installing the full list of packages in podman run
> >> of opensuse/leap:15.6 didn't complete successfully for me.
> >>
> >> And by the look of things, you stopped at installation, because you are
> >> well aware of all the issues in running "make htmldocs" and its friends
> >> after the install.
> >>
> >> I assume you (or somebody else) are going to update the script once this
> >> series is applied to make the suggested lists of packages be useful for
> >> newcomers.  
> > 
> > Thanks for testing this out.
> > 
> > My question would be: are the results somehow worse than those provided
> > by the existing, Perl script?  
> 
> Not at all.  Mauro made some improvements WRT opensuse/leap over the perl
> one, but there remain a lot of rooms for improvements here and there. 

On my tests, the results are better, and more variants are supported.
Those are the current results for my test script (on the version I'm 
yet to submit):

AlmaLinux release 9.6 (Sage Margay):
------------------------------------
  PASSED 1 - OS: AlmaLinux release 9.6 (Sage Margay), Python: 3.9.21, hostname: almalinux-test
  PASSED 2 - System packages: Packages installed.
  PASSED 3 - Sphinx on venv: Sphinx Sphinx 7.4.7, Docutils 0.21.2
  PASSED 4 - Sphinx package: Sphinx Sphinx 3.4.3, Docutils 0.16

Arch Linux:
-----------
  PASSED 1 - OS: Arch Linux, Python: 3.13.5
  PASSED 2 - System packages: Packages installed.
  PASSED 3 - Sphinx on venv: Sphinx Sphinx 8.2.3, Docutils 0.21.2
  PASSED 4 - Sphinx package: Sphinx Sphinx 8.2.3, Docutils 0.21.2

CentOS Stream release 9:
------------------------
  PASSED 1 - OS: CentOS Stream release 9, Python: 3.9.23, hostname: centos-test
  PASSED 2 - System packages: Packages installed.
  PASSED 3 - Sphinx on venv: Sphinx Sphinx 7.4.7, Docutils 0.21.2
  PASSED 4 - Sphinx package: Sphinx Sphinx 3.4.3, Docutils 0.16

Debian GNU/Linux 12:
--------------------
  PASSED 1 - OS: Debian GNU/Linux 12, Python: 3.11.2, hostname: debian-test
  PASSED 2 - System packages: Packages installed.
  PASSED 3 - Sphinx on venv: Sphinx Sphinx 8.2.3, Docutils 0.21.2
  PASSED 4 - Sphinx package: Sphinx Sphinx 5.3.0, Docutils 0.19

Devuan GNU/Linux 5:
-------------------
  PASSED 1 - OS: Devuan GNU/Linux 5, Python: 3.11.2, hostname: devuan-test
  PASSED 2 - System packages: Packages installed.
  PASSED 3 - Sphinx on venv: Sphinx Sphinx 8.2.3, Docutils 0.21.2
  PASSED 4 - Sphinx package: Sphinx Sphinx 5.3.0, Docutils 0.19

Fedora release 42 (Adams):
--------------------------
  PASSED 1 - OS: Fedora release 42 (Adams), Python: 3.13.5
  PASSED 2 - System packages: Packages installed.
  PASSED 3 - Sphinx on venv: Sphinx Sphinx 8.2.3, Docutils 0.21.2
  PASSED 4 - Sphinx package: Sphinx Sphinx 8.1.3, Docutils 0.21.2

Gentoo Base System release 2.17:
--------------------------------
  PASSED 1 - OS: Gentoo Base System release 2.17, Python: 3.13.3
  PASSED 2 - System packages: Packages installed.
  PASSED 3 - Sphinx on venv: Sphinx Sphinx 8.2.3, Docutils 0.21.2
  PASSED 4 - Sphinx package: Sphinx Sphinx 8.2.3, Docutils 0.21.2

Kali GNU/Linux 2025.2:
----------------------
  PASSED 1 - OS: Kali GNU/Linux 2025.2, Python: 3.13.3, hostname: kali-test
  PASSED 2 - System packages: Packages installed.
  PASSED 3 - Sphinx on venv: Sphinx Sphinx 8.2.3, Docutils 0.21.2
  PASSED 4 - Sphinx package: Sphinx Sphinx 8.1.3, Docutils 0.21.2

Mageia 9:
---------
  PASSED 1 - OS: Mageia 9, Python: 3.10.11, hostname: mageia-test
  PASSED 2 - System packages: Packages installed.
  PASSED 3 - Sphinx on venv: Sphinx Sphinx 8.1.3, Docutils 0.21.2
  PASSED 4 - Sphinx package: Sphinx Sphinx 6.1.3, Docutils 0.19

Linux Mint 22:
--------------
  PASSED 1 - OS: Linux Mint 22, Python: 3.10.12, hostname: mint-test
  PASSED 2 - System packages: Packages installed.
  PASSED 3 - Sphinx on venv: Sphinx Sphinx 8.1.3, Docutils 0.21.2
  PASSED 4 - Sphinx package: Sphinx Sphinx 4.3.2, Docutils 0.17.1

openEuler release 25.03:
------------------------
  PASSED 1 - OS: openEuler release 25.03, Python: 3.11.11, hostname: openeuler-test
  PASSED 2 - System packages: Packages installed.
  PASSED 3 - Sphinx on venv: Sphinx Sphinx 8.2.3, Docutils 0.21.2
  PASSED 4 - Sphinx package: Sphinx Sphinx 8.1.3, Docutils 0.21.2

OpenMandriva Lx 4.3:
--------------------
  PASSED 1 - OS: OpenMandriva Lx 4.3, Python: 3.9.8, hostname: openmandriva-test
  FAILED 2 - System packages:  Error: Unable to find a match: ensurepip
  FAILED 3 - Sphinx on venv
  PASSED 4 - Sphinx package: Sphinx Sphinx 4.3.2, Docutils 0.17

openSUSE Tumbleweed:
--------------------
  PASSED 1 - OS: openSUSE Tumbleweed, Python: 3.13.5, hostname: opensuse-test
  PASSED 2 - System packages: Packages installed.
  PASSED 3 - Sphinx on venv: Sphinx Sphinx 8.2.3, Docutils 0.21.2
  PASSED 4 - Sphinx package: Sphinx Sphinx 8.2.3, Docutils 0.21.2

Rocky Linux release 8.9 (Green Obsidian):
-----------------------------------------
  PASSED 1 - OS: Rocky Linux release 8.9 (Green Obsidian), Python: 3.6.8, hostname: rockylinux8-test
  PASSED 2 - System packages: Packages installed.
  FAILED 3 - Sphinx on venv:  No Sphinx version!
  FAILED 4 - Sphinx package:  No Sphinx version!

Rocky Linux release 9.6 (Blue Onyx):
------------------------------------
  PASSED 1 - OS: Rocky Linux release 9.6 (Blue Onyx), Python: 3.9.21, hostname: rockylinux-test
  FAILED 2 - System packages:  Errors during downloading metadata for repository 'epel':   - Curl error (28): Timeout was reached for http://ftp.rediris.es/mirror/fedora-epel/9/Everything/x86_64/repodata/repomd.xml [Operation too slow. Less than 1000 bytes/sec transferred the last 30 seconds]   - Curl error (28): Timeout was reached for https://mirror.yandex.ru/epel/9/Everything/x86_64/repodata/repomd.xml [Failed to connect to mirror.yandex.ru port 443: Connection timed out]   - Downloading successful, but checksum doesn't match. Calculated: ae3b260e2d12fd111887d36ddd99b22dda9d038b2ce8b1240495e7dedf3eeca4a85e5c1ef10488649c614a3029cb790a0230dbd1a9bb1d20d5d868bcd3ce3bb6(sha512)  Expected: 0b6aa1cb918981a1fa6712a14d80968d6bf4e7f121268f90cd5573edb21a36b40f6ec34f8668180c4048eb01afd2938941af61d61304383c858917ed7f2b98de(sha512)    - Curl error (28): Timeout was reached for https://fr2.rpmfind.net/linux/epel/9/Everything/x86_64/repodata/repomd.xml [Operation timed out after 30000 milliseconds with 0 out of 0 bytes received] Error: Failed to download metadata for repo 'epel': Cannot download repomd.xml: Cannot download repodata/repomd.xml: All mirrors were tried
  PASSED 3 - Sphinx on venv: Sphinx Sphinx 7.4.7, Docutils 0.21.2
  PASSED 4 - Sphinx package: Sphinx Sphinx 3.4.3, Docutils 0.16

Springdale Open Enterprise Linux release 9.2 (Parma):
-----------------------------------------------------
  PASSED 1 - OS: Springdale Open Enterprise Linux release 9.2 (Parma), Python: 3.9.16, hostname: springdalelinux-test
  FAILED 2 - System packages:  Error:   Problem: package ImageMagick-6.9.13.25-1.el9.x86_64 requires libMagickCore-6.Q16.so.7()(64bit), but none of the providers can be installed   - package ImageMagick-6.9.13.25-1.el9.x86_64 requires libMagickWand-6.Q16.so.7()(64bit), but none of the providers can be installed   - package ImageMagick-6.9.13.25-1.el9.x86_64 requires ImageMagick-libs(x86-64) = 6.9.13.25-1.el9, but none of the providers can be installed   - conflicting requests   - nothing provides libraw_r.so.23()(64bit) needed by ImageMagick-libs-6.9.13.25-1.el9.x86_64
  PASSED 3 - Sphinx on venv: Sphinx Sphinx 7.4.7, Docutils 0.21.2
  PASSED 4 - Sphinx package: Sphinx Sphinx 3.4.3, Docutils 0.16

Ubuntu 24.04.2 LTS:
-------------------
  PASSED 1 - OS: Ubuntu 24.04.2 LTS, Python: 3.12.3, hostname: ubuntu-lts-test
  PASSED 2 - System packages: Packages installed.
  PASSED 3 - Sphinx on venv: Sphinx Sphinx 8.2.3, Docutils 0.21.2
  PASSED 4 - Sphinx package: Sphinx Sphinx 7.2.6, Docutils 0.20.1

Ubuntu 25.04:
-------------
  PASSED 1 - OS: Ubuntu 25.04, Python: 3.13.3, hostname: ubuntu-test
  PASSED 2 - System packages: Packages installed.
  PASSED 3 - Sphinx on venv: Sphinx Sphinx 8.2.3, Docutils 0.21.2
  PASSED 4 - Sphinx package: Sphinx Sphinx 8.1.3, Docutils 0.21.2

Summary
=======

  PASSED: AlmaLinux release 9.6 (Sage Margay) (4 passed, 0 failed, 0 skipped)
  PASSED: Arch Linux (4 passed, 0 failed, 0 skipped)
  PASSED: CentOS Stream release 9 (4 passed, 0 failed, 0 skipped)
  PASSED: Debian GNU/Linux 12 (4 passed, 0 failed, 0 skipped)
  PASSED: Devuan GNU/Linux 5 (4 passed, 0 failed, 0 skipped)
  PASSED: Fedora release 42 (Adams) (4 passed, 0 failed, 0 skipped)
  PASSED: Gentoo Base System release 2.17 (4 passed, 0 failed, 0 skipped)
  PASSED: Kali GNU/Linux 2025.2 (4 passed, 0 failed, 0 skipped)
  PASSED: Mageia 9 (4 passed, 0 failed, 0 skipped)
  PASSED: Linux Mint 22 (4 passed, 0 failed, 0 skipped)
  PASSED: openEuler release 25.03 (4 passed, 0 failed, 0 skipped)
  PARTIAL: OpenMandriva Lx 4.3 (2 passed, 2 failed, 0 skipped)
  PASSED: openSUSE Tumbleweed (4 passed, 0 failed, 0 skipped)
  PARTIAL: Rocky Linux release 8.9 (Green Obsidian) (2 passed, 2 failed, 0 skipped)
  PARTIAL: Rocky Linux release 9.6 (Blue Onyx) (3 passed, 1 failed, 0 skipped)
  PARTIAL: Springdale Open Enterprise Linux release 9.2 (Parma) (3 passed, 1 failed, 0 skipped)
  PASSED: Ubuntu 24.04.2 LTS (4 passed, 0 failed, 0 skipped)
  PASSED: Ubuntu 25.04 (4 passed, 0 failed, 0 skipped)

So, basically:

- OpenMandriva LX 4.3 (*):
  - I didn't find a way to make pip work there. Not critical, as
    Sphinx installs as package.
  - Perl script is not OK for it.

- RHEL8 variants:
  - Installing Sphinx as packages is not possible (Python 3.6)
  - Installing as venv is possible, but I need to adjust the script.
  - Perl script is not OK for it.

- The error with Rocky Linux 9 is just because its mirrors are slow
  now. It passed already on previous tests.

Yeah, there will always be room for improvements. 

(*) Testing this one was not easy, as the docker image for it is
    half-broken. The image:

	https://hub.docker.com/r/openmandriva/4.0

   is for LX4.0, but dnf points to wrong repositories. I had to do
   some tricks to fix the repositories to the ones that actually exist
   those days, using the tricks below:

        "sed s,enabled=1,enabled=0, -i /etc/yum.repos.d/*"
        "sed s,4.0,4.3, -i /etc/yum.repos.d/openmandriva-x86_64.repo"
        "dnf update --repo release-x86_64 --releasever 4.3 -y"
        "rm -rf /var/lib/rpm; rpm --rebuilddb"
        "sed -i \"/^\\[openmandriva-x86_64\\]/,/^\\[/ s/^enabled=0/enabled=1/\" /etc/yum.repos.d/openmandriva-x86_64.repo"
        "sed -i \"/^\\[updates-x86_64\\]/,/^\\[/ s/^enabled=0/enabled=1/\" /etc/yum.repos.d/openmandriva-x86_64.repo"
        "dnf install -y passwd which net-tools openssh-server git python3 tar diffutils --releasever 4.3 -y"
        "groupadd -r sshd || true"
        "useradd -r -g sshd -s /sbin/nologin -c 'Privilege-separated SSH' sshd || true"

   The above upgrades the container to LX 4.3 on a not recommended way ;-)
   It also prepares the container to start sshd if one needs to copy files
   to it via scp (sometimes I do, when I want to quickly test changes at the
   scripts).

   I couldn't find any newer container repository that could be installed
   either via lxc or docker.
	
> I've been ignoring sphinx-pre-install all these years, but the impressive
> test results presented in this cover-letter made me test it.
> 
> >                                If this change regresses things, we
> > obviously do not want to proceed.  If it reproduces the old behavior in
> > a more maintainable language, then hopefully it is a step toward fixing
> > things in the long run ... ?  
> 
> Yes, translation into python would help a lot, I guess.

That's what I'm hoping as well ;-)

Regards,
Mauro