Skip to contentSkip to conversation

Fix PDF doc builds on major distros

PATCH Superseded Mauro Carvalho Chehab 5 participants 43 messages Aug 15, 2025 – Oct 2, 2025

Subsystems (4)

v1 of 2 Superseded Latest is v2 →

lore
Share & tools
lore
#0 lore raw

cover Fix PDF doc builds on major distros

Hi Jon,

This series touch only on three files, and have a small diffstat:

   Documentation/Makefile     |    4 -
   Documentation/conf.py      |  106 +++++++++++++++++++++----------------
   scripts/sphinx-pre-install |   41 +++++++++++---
   3 files changed, 96 insertions(+), 55 deletions(-)

Yet, it took a lot of my time. Basically, it addresses lots of problems related with building PDF docs:

- Makefile has a wrong set of definitions for paper size. It was using pre-1.7 Sphinx nomenclature for some conf vars;
- The LaTeX options a conf.py had lots of issues;
- Finally, some PDF package dependencies for distros were wrong.

I wrote an entire testbench to test this and doing builds on every platform mentioned at sphinx-pre-install.

After the change *most* PDF files are built on *most* platforms.

Summary
=======
PASSED - AlmaLinux release 9.6 (Sage Margay) (7 tests) PASSED - Amazon Linux release 2023 (Amazon Linux) (7 tests) FAILED - archlinux (1 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.3 (7 tests)
PASSED - openSUSE Leap 15.6 (7 tests)
PASSED - openSUSE Tumbleweed (7 tests)
PARTIAL - Oracle Linux Server release 9.6 (7 tests)
FAILED - Red Hat Enterprise Linux release 8.10 (Ootpa) (7 tests) PARTIAL - Rocky Linux release 8.9 (Green Obsidian) (7 tests) PARTIAL - Rocky Linux release 9.6 (Blue Onyx) (7 tests) FAILED - Springdale Open Enterprise Linux release 9.2 (Parma) (7 tests) PARTIAL - Ubuntu 24.04.2 LTS (7 tests)
PASSED - Ubuntu 25.04 (7 tests)

The failed distros are:

- archlinux. This is some problem on recent lxc containers. Unrelated with pdf builds;
- RHEL 8: paywall issue: some packages required by Sphinx require a repository that it is not openly available. I might have using CentOS repos, but, as we're already testing it, I opted not do do it;
- Springdale 9.2: some broken package dependency.

Now, if you look at the full logs below, you'll see that some distros come with XeLaTeX or LaTeX troubles, causing bigger and/or more complex docs to fail. It is possible to fix those, but they depend on addressing distro-specific LaTeX issues like increasing maximum memory limits and maximum number of idented paragraphs.

It follows full results per distro.

Please notice that I'm testing this after applying the next series which adds a sphinx-build-wrapper. The rationale is that, on such series, the logic can check what PDF files are missed. Currently, on upstream, PDF always return an error, even when everything suceeds.

Regards,
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: 5:56, return code: 0
PASSED: Build PDF documentation: Build time: 11:44, 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: 5:59, return code: 0
PASSED: Build PDF documentation: Build time: 11:12, 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

archlinux:
----------

    FAILED: Build failed at package installation (
            Failed to setup distrolib.distro_manager.CustomError: Failed to setup distro
            File "~/bin/doc-build-container.py", line 264, 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 2050, 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 617, in run_manager
            return await manager.serial_run()
            File "distro_manager.py", line 598, in serial_run
            await self.run_distro(distro)
            File "distro_manager.py", line 523, in run_distro
            self.record_status(
            )

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: 5:55, return code: 0
PASSED: Build PDF documentation: Build time: 11:40, 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: 5:46, return code: 0
FAILED: Build PDF documentation: Test failed (Build time: 10:31, 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: 5:46, return code: 0
FAILED: Build PDF documentation: Test failed (Build time: 10:30, 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: 4:47, return code: 0
PASSED: Build PDF documentation: Build time: 10:33, 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
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: 3:43, return code: 0
FAILED: Build PDF documentation: Test failed (Build time: 10:03, 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: 4:21, return code: 0
PASSED: Build PDF documentation: Build time: 12:23, 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:34, return code: 0
PASSED: Build PDF documentation: Build time: 13:42, 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
PASSED: System packages: Packages installed
PASSED: Sphinx on venv: Sphinx Sphinx 8.1.3
PASSED: Sphinx package: Sphinx Sphinx 4.3.2
PASSED: Clean documentation: Build time: 0:00, return code: 0
PASSED: Build HTML documentation: Build time: 5:08, return code: 0
FAILED: Build PDF documentation: Test failed (Build time: 10:41, 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: 0:04, return code: 0
FAILED: Build PDF documentation: Test failed (Build time: 0:04, return code: 2)

PDF docs:
---------
PASSED: latex: FAILED (no .tex)

OpenMandriva Lx 4.3:
--------------------
PASSED: OS detection: OpenMandriva Lx 4.3
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
FAILED: 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:35, 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:26, return code: 0
PASSED: Build PDF documentation: Build time: 13: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

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: 0:06, return code: 0
FAILED: Build PDF documentation: Test failed (Build time: 0:07, return code: 2)

PDF docs:
---------
PASSED: latex: FAILED (no .tex)

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
FAILED: Sphinx on venv: No Sphinx version detected
FAILED: Sphinx package: No Sphinx version detected
PASSED: Clean documentation: Build time: 0:00, return code: 0
FAILED: Build HTML documentation: Test failed (Build time: 0:00, return code: 2)
FAILED: Build PDF documentation: PDF build didn't produce any results (Build time: 0:00, return code: 2)

Rocky Linux release 8.9 (Green Obsidian):
-----------------------------------------
PASSED: OS detection: Rocky Linux release 8.9 (Green Obsidian)
PASSED: System packages: Packages installed
PASSED: Sphinx on venv: Sphinx Sphinx 7.4.7
FAILED: Sphinx package: No Sphinx version detected
PASSED: Clean documentation: Build time: 0:00, return code: 0
PASSED: Build HTML documentation: Build time: 5:33, 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

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: 0:07, return code: 0
FAILED: Build PDF documentation: Test failed (Build time: 0:07, return code: 2)

PDF docs:
---------
PASSED: latex: FAILED (no .tex)

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: 5:25, return code: 0
FAILED: 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: 0:05, return code: 0
FAILED: Build PDF documentation: Test failed (Build time: 0:05, return code: 2)

PDF docs:
---------
PASSED: latex: FAILED (no .tex)

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:42, return code: 0
PASSED: Build PDF documentation: Build time: 11:44, 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) FAILED - archlinux (1 tests)
PASSED - CentOS Stream release 9 (7 tests)
FAILED - Debian GNU/Linux 12 (7 tests)
FAILED - Devuan GNU/Linux 5 (7 tests)
PASSED - Fedora release 42 (Adams) (7 tests)
FAILED - Gentoo Base System release 2.17 (7 tests)
PASSED - Kali GNU/Linux 2025.2 (7 tests)
PASSED - Mageia 9 (7 tests)
FAILED - Linux Mint 22 (7 tests)
FAILED - openEuler release 25.03 (7 tests)
FAILED - OpenMandriva Lx 4.3 (7 tests)
PASSED - openSUSE Leap 15.6 (7 tests)
PASSED - openSUSE Tumbleweed (7 tests)
FAILED - Oracle Linux Server release 9.6 (7 tests)
FAILED - Red Hat Enterprise Linux release 8.10 (Ootpa) (7 tests) FAILED - Rocky Linux release 8.9 (Green Obsidian) (7 tests) FAILED - Rocky Linux release 9.6 (Blue Onyx) (7 tests) FAILED - Springdale Open Enterprise Linux release 9.2 (Parma) (7 tests) FAILED - Ubuntu 24.04.2 LTS (7 tests)
PASSED - Ubuntu 25.04 (7 tests)
(base) mchehab@foz /new_devel/docs $ ktap_reader.py /tmp/build_logs/*

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: 5:56, return code: 0
PASSED: Build PDF documentation: Build time: 11:44, 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: 5:59, return code: 0
PASSED: Build PDF documentation: Build time: 11:12, 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

archlinux:
----------

    FAILED: Build failed at package installation (
            Failed to setup distrolib.distro_manager.CustomError: Failed to setup distro
            File "~/bin/doc-build-container.py", line 264, 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 2050, 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 617, in run_manager
            return await manager.serial_run()
            File "distro_manager.py", line 598, in serial_run
            await self.run_distro(distro)
            File "distro_manager.py", line 523, in run_distro
            self.record_status(
            )

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: 5:55, return code: 0
PASSED: Build PDF documentation: Build time: 11:40, 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: 5:46, return code: 0
PARTIAL: Build PDF documentation: Test failed (Build time: 10:31, 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: 5:46, return code: 0
PARTIAL: Build PDF documentation: Test failed (Build time: 10:30, 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: 4:47, return code: 0
PASSED: Build PDF documentation: Build time: 10:33, 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
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: 3:43, return code: 0
PARTIAL: Build PDF documentation: Test failed (Build time: 10:03, 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: 4:21, return code: 0
PASSED: Build PDF documentation: Build time: 12:23, 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:34, return code: 0
PASSED: Build PDF documentation: Build time: 13:42, 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
PASSED: System packages: Packages installed
PASSED: Sphinx on venv: Sphinx Sphinx 8.1.3
PASSED: Sphinx package: Sphinx Sphinx 4.3.2
PASSED: Clean documentation: Build time: 0:00, return code: 0
PASSED: Build HTML documentation: Build time: 5:08, return code: 0
PARTIAL: Build PDF documentation: Test failed (Build time: 10:41, 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: 0:04, return code: 0
PARTIAL: Build PDF documentation: Test failed (Build time: 0:04, return code: 2)

PDF docs:
---------
PASSED: latex: FAILED (no .tex)

OpenMandriva Lx 4.3:
--------------------
PASSED: OS detection: OpenMandriva Lx 4.3
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:35, 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:26, return code: 0
PASSED: Build PDF documentation: Build time: 13: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

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: 0:06, return code: 0
PARTIAL: Build PDF documentation: Test failed (Build time: 0:07, return code: 2)

PDF docs:
---------
PASSED: latex: FAILED (no .tex)

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)

Rocky Linux release 8.9 (Green Obsidian):
-----------------------------------------
PASSED: OS detection: Rocky Linux release 8.9 (Green Obsidian)
PASSED: System packages: Packages installed
PASSED: Sphinx on venv: Sphinx Sphinx 7.4.7
PARTIAL: Sphinx package: No Sphinx version detected
PASSED: Clean documentation: Build time: 0:00, return code: 0
PASSED: Build HTML documentation: Build time: 5:33, 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

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: 0:07, return code: 0
PARTIAL: Build PDF documentation: Test failed (Build time: 0:07, return code: 2)

PDF docs:
---------
PASSED: latex: FAILED (no .tex)

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: 5:25, 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: 0:05, return code: 0
PARTIAL: Build PDF documentation: Test failed (Build time: 0:05, return code: 2)

PDF docs:
---------
PASSED: latex: FAILED (no .tex)

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:42, return code: 0
PASSED: Build PDF documentation: Build time: 11:44, 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

Mauro Carvalho Chehab (11):
docs: Makefile: Fix LaTeX paper size settings
docs: conf.py: better handle latex documents
docs: conf.py: fix doc name with SPHINXDIRS
docs: conf.py: rename some vars at latex_documents logic
docs: conf.py: fix some troubles for LaTeX output
scripts: sphinx-pre-install: fix PDF build issues on Ubuntu
scripts: sphinx-pre-install: add missing gentoo pdf dependencies
scripts: sphinx-pre-install: fix PDF dependencies for openSuse
scripts: sphinx-pre-install: fix dependencies for OpenMandriva
scripts: sphinx-pre-install: fix pdf dependencies for Mageia 9
scripts: sphinx-pre-install: fix PDF dependencies for gentoo

 Documentation/Makefile     |   4 +-
 Documentation/conf.py      | 106 ++++++++++++++++++++++---------------
 scripts/sphinx-pre-install |  41 ++++++++++----
 3 files changed, 96 insertions(+), 55 deletions(-)
Signature · 1 line
2.50.1
#1 lore raw

PATCH 1/11 docs: Makefile: Fix LaTeX paper size settings

According with:
https://www.sphinx-doc.org/en/master/latex.html

The variable that handles paper size changed during version 1.5, as pointed at:

	https://www.sphinx-doc.org/en/master/changes/1.5.html
---
 Documentation/Makefile | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
Documentation/Makefile +2 -2
index 820f07e0afe6..2ed334971acd 100644
@@ -60,8 +60,8 @@ ifeq ($(HAVE_LATEXMK),1)
 endif #HAVE_LATEXMK
 
 # Internal variables.
-PAPEROPT_a4     = -D latex_paper_size=a4
-PAPEROPT_letter = -D latex_paper_size=letter
+PAPEROPT_a4     = -D latex_elements.papersize=a4paper
+PAPEROPT_letter = -D latex_elements.papersize=letterpaper
 ALLSPHINXOPTS   = -D kerneldoc_srctree=$(srctree) -D kerneldoc_bin=$(KERNELDOC)
 ALLSPHINXOPTS   += $(PAPEROPT_$(PAPER)) $(SPHINXOPTS)
 ifneq ($(wildcard $(srctree)/.config),)
Signature · 1 line
2.50.1
#2 lore raw

PATCH 2/11 docs: conf.py: better handle latex documents

In reply to Mauro Carvalho Chehab

The original logic assumed that app.srcdir is identical to the current working dir. This is the case for a normal build, but, when SPHINXDIRS="some dir" is used, this is not the case anymore.

Adjust the logic to fill the LaTeX documents considering app.srcdir, in a way that it will work properly on all cases.

---
 Documentation/conf.py | 54 +++++++++++++++++++++----------------------
 1 file changed, 26 insertions(+), 28 deletions(-)
Documentation/conf.py +26 -28
index f9828f3862f9..2c1be59fd54b 100644
@@ -51,11 +51,13 @@ else:
     dyn_exclude_patterns.append("devicetree/bindings/**.yaml")
     dyn_exclude_patterns.append("core-api/kho/bindings/**.yaml")
 
-# Properly handle include/exclude patterns
-# ----------------------------------------
+# Properly handle directory patterns and LaTeX docs
+# -------------------------------------------------
 
-def update_patterns(app, config):
+def config_init(app, config):
     """
+    Initialize path-dependent variabled
+
     On Sphinx, all directories are relative to what it is passed as
     SOURCEDIR parameter for sphinx-build. Due to that, all patterns
     that have directory names on it need to be dynamically set, after
@@ -86,6 +88,25 @@ def update_patterns(app, config):
 
         config.exclude_patterns.append(rel_path)
 
+    # LaTeX and PDF output require a list of documents with are dependent
+    # of the app.srcdir. Add them here
+
+    for fn in os.listdir(app.srcdir):
+        doc = os.path.join(fn, "index")
+        if not os.path.exists(os.path.join(app.srcdir, doc + ".rst")):
+            continue
+
+        has = False
+        for l in latex_documents:
+            if l[0] == doc:
+                has = True
+                break
+
+        if not has:
+            latex_documents.append((doc, fn + ".tex",
+                                    "Linux %s Documentation" % fn.capitalize(),
+                                    "The kernel development community",
+                                    "manual"))
 
 # helper
 # ------
@@ -456,32 +477,9 @@ latex_elements["preamble"] += """
         \\input{kerneldoc-preamble.sty}
 """
 
-# Grouping the document tree into LaTeX files. List of tuples
-# (source start file, target name, title,
-#  author, documentclass [howto, manual, or own class]).
-# Sorted in alphabetical order
+# This will be filled up by config-inited event
 latex_documents = []
 
-# Add all other index files from Documentation/ subdirectories
-for fn in os.listdir("."):
-    doc = os.path.join(fn, "index")
-    if os.path.exists(doc + ".rst"):
-        has = False
-        for l in latex_documents:
-            if l[0] == doc:
-                has = True
-                break
-        if not has:
-            latex_documents.append(
-                (
-                    doc,
-                    fn + ".tex",
-                    "Linux %s Documentation" % fn.capitalize(),
-                    "The kernel development community",
-                    "manual",
-                )
-            )
-
 # The name of an image file (relative to this directory) to place at the top of
 # the title page.
 # latex_logo = None
@@ -577,4 +575,4 @@ loadConfig(globals())
 def setup(app):
     """Patterns need to be updated at init time on older Sphinx versions"""
 
-    app.connect('config-inited', update_patterns)
+    app.connect('config-inited', config_init)
Signature · 1 line
2.50.1
#3 lore raw

PATCH 3/11 docs: conf.py: fix doc name with SPHINXDIRS

In reply to Mauro Carvalho Chehab

When SPHINXDIRS is used, the current logic produces a wrong list of files, as it will not pick the SPHINXDIRS directory, picking instead their children.

Add a rule to detect it and create the PDF doc with the right name.

---
 Documentation/conf.py | 13 +++++++++++++
 1 file changed, 13 insertions(+)
Documentation/conf.py +13 -0
index 2c1be59fd54b..c8401ed75402 100644
@@ -91,6 +91,19 @@ def config_init(app, config):
     # LaTeX and PDF output require a list of documents with are dependent
     # of the app.srcdir. Add them here
 
+    # When SPHINXDIRS is used, we just need to get index.rst, if it exists
+    if not os.path.samefile(doctree, app.srcdir):
+        doc = "index"
+        doc_name = os.path.basename(app.srcdir)
+        if os.path.exists(os.path.join(app.srcdir, doc + ".rst")):
+            latex_documents.append((doc, doc_name + ".tex",
+                                    "Linux %s Documentation" % doc_name.capitalize(),
+                                    "The kernel development community",
+                                    "manual"))
+            return
+
+    # When building all docs, or when a main index.rst doesn't exist, seek
+    # for it on subdirectories
     for fn in os.listdir(app.srcdir):
         doc = os.path.join(fn, "index")
         if not os.path.exists(os.path.join(app.srcdir, doc + ".rst")):
Signature · 1 line
2.50.1
#4 lore raw

PATCH 4/11 docs: conf.py: rename some vars at latex_documents logic

In reply to Mauro Carvalho Chehab

Currently, the logic uses fn and doc vars, but they don't properly describe what such vars do.

Make them clearer:
- fname: points to the file name to search (index.rst);
- doc: contains the name of the LaTeX or PDF doc to be produced.

With that, the checks for SPHINXDIRS and for subdirs will be more coherent.

---
 Documentation/conf.py | 22 +++++++++++-----------
 1 file changed, 11 insertions(+), 11 deletions(-)
Documentation/conf.py +11 -11
index c8401ed75402..6e12c7d8e07e 100644
@@ -93,31 +93,31 @@ def config_init(app, config):
 
     # When SPHINXDIRS is used, we just need to get index.rst, if it exists
     if not os.path.samefile(doctree, app.srcdir):
-        doc = "index"
-        doc_name = os.path.basename(app.srcdir)
-        if os.path.exists(os.path.join(app.srcdir, doc + ".rst")):
-            latex_documents.append((doc, doc_name + ".tex",
-                                    "Linux %s Documentation" % doc_name.capitalize(),
+        doc = os.path.basename(app.srcdir)
+        fname = "index"
+        if os.path.exists(os.path.join(app.srcdir, fname + ".rst")):
+            latex_documents.append((fname, doc + ".tex",
+                                    "Linux %s Documentation" % doc.capitalize(),
                                     "The kernel development community",
                                     "manual"))
             return
 
     # When building all docs, or when a main index.rst doesn't exist, seek
     # for it on subdirectories
-    for fn in os.listdir(app.srcdir):
-        doc = os.path.join(fn, "index")
-        if not os.path.exists(os.path.join(app.srcdir, doc + ".rst")):
+    for doc in os.listdir(app.srcdir):
+        fname = os.path.join(doc, "index")
+        if not os.path.exists(os.path.join(app.srcdir, fname + ".rst")):
             continue
 
         has = False
         for l in latex_documents:
-            if l[0] == doc:
+            if l[0] == fname:
                 has = True
                 break
 
         if not has:
-            latex_documents.append((doc, fn + ".tex",
-                                    "Linux %s Documentation" % fn.capitalize(),
+            latex_documents.append((fname, doc + ".tex",
+                                    "Linux %s Documentation" % doc.capitalize(),
                                     "The kernel development community",
                                     "manual"))
 
Signature · 1 line
2.50.1
#5 lore raw

PATCH 5/11 docs: conf.py: fix some troubles for LaTeX output

In reply to Mauro Carvalho Chehab

While PDF docs work fine on RPM-based distros, it causes conflicts on Debian & friends:

Documentation/output/process/latex/process.log:

Package: fontenc 2021/04/29 v2.0v Standard LaTeX package
LaTeX Font Info: Trying to load font information for T1+lmr on input line 11
6.
LaTeX Font Info: No file T1lmr.fd. on input line 116.

LaTeX Font Warning: Font shape `T1/lmr/m/n' undefined
(Font) using `T1/lmr/m/n' instead on input line 116.

! Corrupted NFSS tables.
wrong@fontshape ...message {Corrupted NFSS tables}
error@fontshape else let f...
l.116 ...\familydefault\seriesdefault\shapedefault

Change some logic inside latex_elements to avoid such issues, following the example from Sphinx documentation:

https://www.sphinx-doc.org/en/master/latex.html

---
 Documentation/conf.py | 39 +++++++++++++++++++++++----------------
 1 file changed, 23 insertions(+), 16 deletions(-)
Documentation/conf.py +23 -16
index 6e12c7d8e07e..712e0a016727 100644
@@ -9,6 +9,8 @@ import os
 import shutil
 import sys
 
+from  textwrap import dedent
+
 import sphinx
 
 # If extensions (or modules to document with autodoc) are in another directory,
@@ -454,19 +456,38 @@ htmlhelp_basename = "TheLinuxKerneldoc"
 latex_elements = {
     # The paper size ('letterpaper' or 'a4paper').
     "papersize": "a4paper",
+    "passoptionstopackages": dedent(r"""
+        \PassOptionsToPackage{svgnames}{xcolor}
+        % Avoid encoding troubles when creating indexes
+        \PassOptionsToPackage{xindy}{language=english,codepage=utf8,noautomatic}
+    """),
     # The font size ('10pt', '11pt' or '12pt').
     "pointsize": "11pt",
+    # Needed to generate a .ind file
+    'printindex': r'\footnotesize\raggedright\printindex',
     # Latex figure (float) alignment
     # 'figure_align': 'htbp',
     # Don't mangle with UTF-8 chars
+    "fontenc": "",
     "inputenc": "",
     "utf8extra": "",
+    'fontpkg': dedent(r'''
+        \usepackage{fontspec}
+        \setmainfont{DejaVu Serif}
+        \setsansfont{DejaVu Sans}
+        \setmonofont{DejaVu Sans Mono}
+        \newfontfamily\headingfont{DejaVu Serif}
+    '''),
     # Set document margins
-    "sphinxsetup": """
+    "sphinxsetup": dedent(r"""
         hmargin=0.5in, vmargin=1in,
         parsedliteralwraps=true,
         verbatimhintsturnover=false,
-    """,
+    """),
+    "preamble": dedent(r"""
+        % Load kerneldoc specific LaTeX settings
+        \input{kerneldoc-preamble.sty}
+    """),
     #
     # Some of our authors are fond of deep nesting; tell latex to
     # cope.
@@ -474,22 +495,8 @@ latex_elements = {
     "maxlistdepth": "10",
     # For CJK One-half spacing, need to be in front of hyperref
     "extrapackages": r"\usepackage{setspace}",
-    # Additional stuff for the LaTeX preamble.
-    "preamble": """
-        % Use some font with UTF-8 support with XeLaTeX
-        \\usepackage{fontspec}
-        \\setsansfont{DejaVu Sans}
-        \\setromanfont{DejaVu Serif}
-        \\setmonofont{DejaVu Sans Mono}
-    """,
 }
 
-# Load kerneldoc specific LaTeX settings
-latex_elements["preamble"] += """
-        % Load kerneldoc specific LaTeX settings
-        \\input{kerneldoc-preamble.sty}
-"""
-
 # This will be filled up by config-inited event
 latex_documents = []
 
Signature · 1 line
2.50.1
#6 lore raw

Re: [PATCH 05/11] docs: conf.py: fix some troubles for LaTeX output

Hi Mauro,

Looks like my word choice annoyed you. Apologies again.

I've just realized your response while composing this, but I'm sending it anyway. Please see below.

Quoted 18 lines · Mauro Carvalho Chehab

While PDF docs work fine on RPM-based distros, it causes conflicts on Debian & friends:

Documentation/output/process/latex/process.log:

Package: fontenc 2021/04/29 v2.0v Standard LaTeX package
LaTeX Font Info: Trying to load font information for T1+lmr on input line 11
6.
LaTeX Font Info: No file T1lmr.fd. on input line 116.

LaTeX Font Warning: Font shape `T1/lmr/m/n' undefined
(Font) using `T1/lmr/m/n' instead on input line 116.

! Corrupted NFSS tables.
wrong@fontshape ...message {Corrupted NFSS tables}
error@fontshape else let f...
l.116 ...\familydefault\seriesdefault\shapedefault

Quoted 5 lines

Change some logic inside latex_elements to avoid such issues, following the example from Sphinx documentation:

https://www.sphinx-doc.org/en/master/latex.html

I spotted a wrong looking LaTeX macro use. See below:

Quoted 19 lines
---
 Documentation/conf.py | 39 +++++++++++++++++++++++----------------
 1 file changed, 23 insertions(+), 16 deletions(-)
Documentation/conf.py +2 -0
index 6e12c7d8e07e..712e0a016727 100644
@@ -9,6 +9,8 @@ import os
 import shutil
 import sys
 
+from  textwrap import dedent
+
 import sphinx
 
 # If extensions (or modules to document with autodoc) are in another directory,

Documentation/conf.py htmlhelp_basename = "TheLinuxKerneldoc" · line 463

Quoted 8 lines
Documentation/conf.py +5 -0
@@ -454,19 +456,38 @@ htmlhelp_basename = "TheLinuxKerneldoc"
 latex_elements = {
     # The paper size ('letterpaper' or 'a4paper').
     "papersize": "a4paper",
+    "passoptionstopackages": dedent(r"""
+        \PassOptionsToPackage{svgnames}{xcolor}
+        % Avoid encoding troubles when creating indexes
+        \PassOptionsToPackage{xindy}{language=english,codepage=utf8,noautomatic}
+    """),

This use of \PassOptionsToPackage{}{} looks very wrong, because its 1st argument is the option string you would like to pass to a latex package given in the 2nd argument.

See: https://latexref.xyz/_005cPassOptionsToClass-_0026-_005cPassOptionsToPackage.html

Furthermore, as there is no such latex package named "xindy", this will have any effect even if you reverse the argument order.

I imagine you had some illusion and believed it would fix some issue you had observed.

Also, I don't see the need of \PassOptionsToPackage{svgnames}{xcolor}. Please clarify who needs that color namespace option in the changelog.

Documentation/conf.py htmlhelp_basename = "TheLinuxKerneldoc" · line 467

Quoted 4 lines
Documentation/conf.py +2 -0
     # The font size ('10pt', '11pt' or '12pt').
     "pointsize": "11pt",
+    # Needed to generate a .ind file
+    'printindex': r'\footnotesize\raggedright\printindex',

I would mention this as an improvement in the changelog.

And the following changes look good to me.

Thanks, Akira

Quoted 51 lines
Documentation/conf.py +14 -16
     # Latex figure (float) alignment
     # 'figure_align': 'htbp',
     # Don't mangle with UTF-8 chars
+    "fontenc": "",
     "inputenc": "",
     "utf8extra": "",
+    'fontpkg': dedent(r'''
+        \usepackage{fontspec}
+        \setmainfont{DejaVu Serif}
+        \setsansfont{DejaVu Sans}
+        \setmonofont{DejaVu Sans Mono}
+        \newfontfamily\headingfont{DejaVu Serif}
+    '''),
     # Set document margins
-    "sphinxsetup": """
+    "sphinxsetup": dedent(r"""
         hmargin=0.5in, vmargin=1in,
         parsedliteralwraps=true,
         verbatimhintsturnover=false,
-    """,
+    """),
+    "preamble": dedent(r"""
+        % Load kerneldoc specific LaTeX settings
+        \input{kerneldoc-preamble.sty}
+    """),
     #
     # Some of our authors are fond of deep nesting; tell latex to
     # cope.
@@ -474,22 +495,8 @@ latex_elements = {
     "maxlistdepth": "10",
     # For CJK One-half spacing, need to be in front of hyperref
     "extrapackages": r"\usepackage{setspace}",
-    # Additional stuff for the LaTeX preamble.
-    "preamble": """
-        % Use some font with UTF-8 support with XeLaTeX
-        \\usepackage{fontspec}
-        \\setsansfont{DejaVu Sans}
-        \\setromanfont{DejaVu Serif}
-        \\setmonofont{DejaVu Sans Mono}
-    """,
 }
 
-# Load kerneldoc specific LaTeX settings
-latex_elements["preamble"] += """
-        % Load kerneldoc specific LaTeX settings
-        \\input{kerneldoc-preamble.sty}
-"""
-
 # This will be filled up by config-inited event
 latex_documents = []
 
#7 lore raw

Re: [PATCH 05/11] docs: conf.py: fix some troubles for LaTeX output

AKIRA!

Quoted 141 lines · Akira Yokosawa

Hi Mauro,

Looks like my word choice annoyed you. Apologies again.

I've just realized your response while composing this, but I'm sending it anyway. Please see below.

Quoted 18 lines · Mauro Carvalho Chehab

While PDF docs work fine on RPM-based distros, it causes conflicts on Debian & friends:

Documentation/output/process/latex/process.log:

Package: fontenc 2021/04/29 v2.0v Standard LaTeX package
LaTeX Font Info: Trying to load font information for T1+lmr on input line 11
6.
LaTeX Font Info: No file T1lmr.fd. on input line 116.

LaTeX Font Warning: Font shape `T1/lmr/m/n' undefined
(Font) using `T1/lmr/m/n' instead on input line 116.

! Corrupted NFSS tables.
wrong@fontshape ...message {Corrupted NFSS tables}
error@fontshape else let f...
l.116 ...\familydefault\seriesdefault\shapedefault

Quoted 5 lines

Change some logic inside latex_elements to avoid such issues, following the example from Sphinx documentation:

https://www.sphinx-doc.org/en/master/latex.html

I spotted a wrong looking LaTeX macro use. See below:

Quoted 19 lines
---
 Documentation/conf.py | 39 +++++++++++++++++++++++----------------
 1 file changed, 23 insertions(+), 16 deletions(-)
Documentation/conf.py +2 -0
index 6e12c7d8e07e..712e0a016727 100644
@@ -9,6 +9,8 @@ import os
 import shutil
 import sys
 
+from  textwrap import dedent
+
 import sphinx
 
 # If extensions (or modules to document with autodoc) are in another directory,

Documentation/conf.py htmlhelp_basename = "TheLinuxKerneldoc" · line 463

Quoted 8 lines
Documentation/conf.py +5 -0
@@ -454,19 +456,38 @@ htmlhelp_basename = "TheLinuxKerneldoc"
 latex_elements = {
     # The paper size ('letterpaper' or 'a4paper').
     "papersize": "a4paper",
+    "passoptionstopackages": dedent(r"""
+        \PassOptionsToPackage{svgnames}{xcolor}
+        % Avoid encoding troubles when creating indexes
+        \PassOptionsToPackage{xindy}{language=english,codepage=utf8,noautomatic}
+    """),

This use of \PassOptionsToPackage{}{} looks very wrong, because its 1st argument is the option string you would like to pass to a latex package given in the 2nd argument.

See: https://latexref.xyz/_005cPassOptionsToClass-_0026-_005cPassOptionsToPackage.html

Furthermore, as there is no such latex package named "xindy", this will have any effect even if you reverse the argument order.

I imagine you had some illusion and believed it would fix some issue you had observed.

Also, I don't see the need of \PassOptionsToPackage{svgnames}{xcolor}. Please clarify who needs that color namespace option in the changelog.

Documentation/conf.py htmlhelp_basename = "TheLinuxKerneldoc" · line 467

Quoted 4 lines
Documentation/conf.py +2 -0
     # The font size ('10pt', '11pt' or '12pt').
     "pointsize": "11pt",
+    # Needed to generate a .ind file
+    'printindex': r'\footnotesize\raggedright\printindex',

I would mention this as an improvement in the changelog.

And the following changes look good to me.

Thanks, Akira

Quoted 51 lines
Documentation/conf.py +14 -16
     # Latex figure (float) alignment
     # 'figure_align': 'htbp',
     # Don't mangle with UTF-8 chars
+    "fontenc": "",
     "inputenc": "",
     "utf8extra": "",
+    'fontpkg': dedent(r'''
+        \usepackage{fontspec}
+        \setmainfont{DejaVu Serif}
+        \setsansfont{DejaVu Sans}
+        \setmonofont{DejaVu Sans Mono}
+        \newfontfamily\headingfont{DejaVu Serif}
+    '''),
     # Set document margins
-    "sphinxsetup": """
+    "sphinxsetup": dedent(r"""
         hmargin=0.5in, vmargin=1in,
         parsedliteralwraps=true,
         verbatimhintsturnover=false,
-    """,
+    """),
+    "preamble": dedent(r"""
+        % Load kerneldoc specific LaTeX settings
+        \input{kerneldoc-preamble.sty}
+    """),
     #
     # Some of our authors are fond of deep nesting; tell latex to
     # cope.
@@ -474,22 +495,8 @@ latex_elements = {
     "maxlistdepth": "10",
     # For CJK One-half spacing, need to be in front of hyperref
     "extrapackages": r"\usepackage{setspace}",
-    # Additional stuff for the LaTeX preamble.
-    "preamble": """
-        % Use some font with UTF-8 support with XeLaTeX
-        \\usepackage{fontspec}
-        \\setsansfont{DejaVu Sans}
-        \\setromanfont{DejaVu Serif}
-        \\setmonofont{DejaVu Sans Mono}
-    """,
 }
 
-# Load kerneldoc specific LaTeX settings
-latex_elements["preamble"] += """
-        % Load kerneldoc specific LaTeX settings
-        \\input{kerneldoc-preamble.sty}
-"""
-
 # This will be filled up by config-inited event
 latex_documents = []
 
#8 lore raw

PATCH 6/11 scripts: sphinx-pre-install: fix PDF build issues on Ubuntu

In reply to Mauro Carvalho Chehab

PDF output with current Debian-based distros require other packages for it to work. The main one is pzdr.tfm. Without that, \sphinxhyphen{} won't work, affecting multiple docs.

For CJK, tex-gyre is required.

Add the missing packages to the list.

After the change, all PDF files build on latest Ubuntu:

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

---
 scripts/sphinx-pre-install | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)
scripts/sphinx-pre-install +9 -3
index b8474848df4e..b24a6f91ec0a 100755
@@ -764,9 +764,6 @@ class SphinxDependencyChecker(MissingCheckers):
 
         if self.pdf:
             pdf_pkgs = {
-                "texlive-lang-chinese": [
-                    "/usr/share/texlive/texmf-dist/tex/latex/ctex/ctexhook.sty",
-                ],
                 "fonts-dejavu": [
                     "/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf",
                 ],
@@ -775,6 +772,15 @@ class SphinxDependencyChecker(MissingCheckers):
                     "/usr/share/fonts/opentype/noto/NotoSansCJK-Regular.ttc",
                     "/usr/share/fonts/opentype/noto/NotoSerifCJK-Regular.ttc",
                 ],
+                "tex-gyre": [
+                    "/usr/share/texmf/tex/latex/tex-gyre/tgtermes.sty"
+                ],
+                "texlive-fonts-recommended": [
+                    "/usr/share/texlive/texmf-dist/fonts/tfm/adobe/zapfding/pzdr.tfm",
+                ],
+                "texlive-lang-chinese": [
+                    "/usr/share/texlive/texmf-dist/tex/latex/ctex/ctexhook.sty",
+                ],
             }
 
             for package, files in pdf_pkgs.items():
Signature · 1 line
2.50.1
#9 lore raw

PATCH 7/11 scripts: sphinx-pre-install: add missing gentoo pdf dependencies

In reply to Mauro Carvalho Chehab

There are two packages that are required to build PDF at gentoo:

dev-texlive/texlive-latexextra
media-fonts/lm

Place latex_dependencies on a list to make it easier to maintain and add the missing ones.

With that, most PDF documents now build on Gentoo:

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

---
 scripts/sphinx-pre-install | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)
scripts/sphinx-pre-install +8 -1
index b24a6f91ec0a..f987abfec802 100755
@@ -1058,12 +1058,19 @@ class SphinxDependencyChecker(MissingCheckers):
         """
         Provide package installation hints for Gentoo.
         """
+        texlive_deps = [
+            "dev-texlive/texlive-latexextra",
+            "dev-texlive/texlive-xetex",
+            "media-fonts/dejavu",
+            "media-fonts/lm",
+        ]
+
         progs = {
             "convert":       "media-gfx/imagemagick",
             "dot":           "media-gfx/graphviz",
             "rsvg-convert":  "gnome-base/librsvg",
             "virtualenv":    "dev-python/virtualenv",
-            "xelatex":       "dev-texlive/texlive-xetex media-fonts/dejavu",
+            "xelatex":       " ".join(texlive_deps),
             "yaml":          "dev-python/pyyaml",
             "python-sphinx": "dev-python/sphinx",
         }
Signature · 1 line
2.50.1
#10 lore raw

PATCH 8/11 scripts: sphinx-pre-install: fix PDF dependencies for openSuse

In reply to Mauro Carvalho Chehab

The dependencies are outdated: both versions need texlive-dejavu fonts. Also, for PDF generation, python311-Sphinx-latex is required.

With that, all PDF files are now tuilt on both:

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

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

Summary
=======
PASSED - openSUSE Leap 15.6 (7 tests)
PASSED - openSUSE Tumbleweed (7 tests)

---
 scripts/sphinx-pre-install | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)
scripts/sphinx-pre-install +3 -3
index f987abfec802..86f129c76ecd 100755
@@ -901,7 +901,7 @@ class SphinxDependencyChecker(MissingCheckers):
             "dot":           "graphviz",
             "python-sphinx": "python3-sphinx",
             "virtualenv":    "python3-virtualenv",
-            "xelatex":       "texlive-xetex-bin",
+            "xelatex":       "texlive-xetex-bin texlive-dejavu",
             "yaml":          "python3-pyyaml",
         }
 
@@ -937,7 +937,7 @@ class SphinxDependencyChecker(MissingCheckers):
                     self.recommend_python = True
 
                 progs.update({
-                    "python-sphinx": "python311-Sphinx",
+                    "python-sphinx": "python311-Sphinx python311-Sphinx-latex",
                     "virtualenv":    "python311-virtualenv",
                     "yaml":          "python311-PyYAML",
                 })
@@ -945,7 +945,7 @@ class SphinxDependencyChecker(MissingCheckers):
             # Tumbleweed defaults to Python 3.11
 
             progs.update({
-                "python-sphinx": "python313-Sphinx",
+                "python-sphinx": "python313-Sphinx python313-Sphinx-latex",
                 "virtualenv":    "python313-virtualenv",
                 "yaml":          "python313-PyYAML",
             })
Signature · 1 line
2.50.1
#11 lore raw

PATCH 9/11 scripts: sphinx-pre-install: fix dependencies for OpenMandriva

In reply to Mauro Carvalho Chehab

The dependeny list for OpenMandriva is wrong. Update it.

Yet, on my tests with OpenMandriva LX 4.3, the texlive packages are
broken: xelatex can't build anything there, as it lacks xelatex.sfm.

Yet, this could be a problem at the way I created the container. Just in case, add a note about that.

---
 scripts/sphinx-pre-install | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)
scripts/sphinx-pre-install +10 -2
index 86f129c76ecd..224db3af17db 100755
@@ -984,13 +984,19 @@ class SphinxDependencyChecker(MissingCheckers):
         if re.search(r"OpenMandriva", self.system_release):
             packager_cmd = "dnf install"
             noto_sans = "noto-sans-cjk-fonts"
-            tex_pkgs = ["texlive-collection-fontsextra"]
+            tex_pkgs = [
+                "texlive-collection-basic",
+                "texlive-collection-langcjk",
+                "texlive-collection-fontsextra",
+                "texlive-collection-fontsrecommended"
+            ]
 
             # Tested on OpenMandriva Lx 4.3
             progs["convert"] = "imagemagick"
             progs["yaml"] = "python-pyyaml"
             progs["python-virtualenv"] = "python-virtualenv"
             progs["python-sphinx"] = "python-sphinx"
+            progs["xelatex"] = "texlive"
 
             self.check_program("python-virtualenv", DepManager.PYTHON_MANDATORY)
 
@@ -1004,7 +1010,9 @@ class SphinxDependencyChecker(MissingCheckers):
 
             if not self.distro_msg:
                 self.distro_msg = \
-                    "Note: for venv, ensurepip could be broken, preventing its install method."
+                    "Notes:\n"\
+                    "1. for venv, ensurepip could be broken, preventing its install method.\n" \
+                    "2. at least on OpenMandriva LX 4.3, texlive packages seem broken"
 
         else:
             packager_cmd = "urpmi"
Signature · 1 line
2.50.1
#12 lore raw

PATCH 10/11 scripts: sphinx-pre-install: fix pdf dependencies for Mageia 9

In reply to Mauro Carvalho Chehab

On Mageia 9, two packages are missing. Add them.

With that, all PDF packages now build:

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

Summary
=======
PASSED - Mageia 9 (7 tests)

---
 scripts/sphinx-pre-install | 2 ++
 1 file changed, 2 insertions(+)
scripts/sphinx-pre-install +2 -0
index 224db3af17db..758a84ae6347 100755
@@ -979,6 +979,8 @@ class SphinxDependencyChecker(MissingCheckers):
 
         tex_pkgs = [
             "texlive-fontsextra",
+            "texlive-fonts-asian",
+            "fonts-ttf-dejavu",
         ]
 
         if re.search(r"OpenMandriva", self.system_release):
Signature · 1 line
2.50.1
#13 lore raw

PATCH 11/11 scripts: sphinx-pre-install: fix PDF dependencies for gentoo

In reply to Mauro Carvalho Chehab

Package fonts are wrong. Fix it. With that, most PDF files now builds.

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

---
 scripts/sphinx-pre-install | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
scripts/sphinx-pre-install +1 -1
index 758a84ae6347..c46d7b76f93c 100755
@@ -1069,10 +1069,10 @@ class SphinxDependencyChecker(MissingCheckers):
         Provide package installation hints for Gentoo.
         """
         texlive_deps = [
+            "dev-texlive/texlive-fontsrecommended",
             "dev-texlive/texlive-latexextra",
             "dev-texlive/texlive-xetex",
             "media-fonts/dejavu",
-            "media-fonts/lm",
         ]
 
         progs = {
Signature · 1 line
2.50.1
#14 lore raw
In reply to Mauro Carvalho Chehab

[-CC most folks]

Hi Mauro,

Quoted 57 lines · Mauro Carvalho Chehab

Hi Jon,

This series touch only on three files, and have a small diffstat:

   Documentation/Makefile     |    4 -
   Documentation/conf.py      |  106 +++++++++++++++++++++----------------
   scripts/sphinx-pre-install |   41 +++++++++++---
   3 files changed, 96 insertions(+), 55 deletions(-)

Yet, it took a lot of my time. Basically, it addresses lots of problems related with building PDF docs:

- Makefile has a wrong set of definitions for paper size. It was using pre-1.7 Sphinx nomenclature for some conf vars;
- The LaTeX options a conf.py had lots of issues;
- Finally, some PDF package dependencies for distros were wrong.

I wrote an entire testbench to test this and doing builds on every platform mentioned at sphinx-pre-install.

After the change *most* PDF files are built on *most* platforms.

Summary
=======
PASSED - AlmaLinux release 9.6 (Sage Margay) (7 tests) PASSED - Amazon Linux release 2023 (Amazon Linux) (7 tests) FAILED - archlinux (1 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.3 (7 tests)
PASSED - openSUSE Leap 15.6 (7 tests)
PASSED - openSUSE Tumbleweed (7 tests)
PARTIAL - Oracle Linux Server release 9.6 (7 tests)
FAILED - Red Hat Enterprise Linux release 8.10 (Ootpa) (7 tests) PARTIAL - Rocky Linux release 8.9 (Green Obsidian) (7 tests) PARTIAL - Rocky Linux release 9.6 (Blue Onyx) (7 tests) FAILED - Springdale Open Enterprise Linux release 9.2 (Parma) (7 tests) PARTIAL - Ubuntu 24.04.2 LTS (7 tests)
PASSED - Ubuntu 25.04 (7 tests)

The failed distros are:

- archlinux. This is some problem on recent lxc containers. Unrelated with pdf builds;
- RHEL 8: paywall issue: some packages required by Sphinx require a repository that it is not openly available. I might have using CentOS repos, but, as we're already testing it, I opted not do do it;
- Springdale 9.2: some broken package dependency.

Quoted 5 lines

Now, if you look at the full logs below, you'll see that some distros come with XeLaTeX or LaTeX troubles, causing bigger and/or more complex docs to fail. It is possible to fix those, but they depend on addressing distro-specific LaTeX issues like increasing maximum memory limits and maximum number of idented paragraphs.

No, the trouble is failed conversion of SVG --> PDF by convert(1) + rsvg-convert(1). Failed conversions trigger huge raw SVG code to be included literally into LaTeX sources, which results in code listings too huge to be rendered in a page; and overwhelms xelatex.

IIUC, kfigure.py does such fallbacks of failed PDF conversions. Mightn't it be better to give up early in the latexdocs stage?

Quoted 1 line

It follows full results per distro.

[Ignoring lengthy list of results...]

I think all you need to test build against are the limited list of:

- arch.pdf
- core-api.pdf
- doc-guide.pdf
- gpu.pdf
- i2c.pdf
- RCU.pdf
- translations.pdf
- userspace-api.pdf

All of them have figures in SVG, and latexdocs tries to convert them into PDF.

Probably, recommending Inkscape rather than ImageMagick would be the right thing, at least where it is provided as a distro package.

Regards,
Akira

#15 lore raw

Em Sat, 16 Aug 2025 14:06:43 +0900
Akira Yokosawa <[email protected]> escreveu:

Quoted 68 lines

[-CC most folks]

Hi Mauro,

Quoted 57 lines · Mauro Carvalho Chehab

Hi Jon,

This series touch only on three files, and have a small diffstat:

   Documentation/Makefile     |    4 -
   Documentation/conf.py      |  106 +++++++++++++++++++++----------------
   scripts/sphinx-pre-install |   41 +++++++++++---
   3 files changed, 96 insertions(+), 55 deletions(-)

Yet, it took a lot of my time. Basically, it addresses lots of problems related with building PDF docs:

- Makefile has a wrong set of definitions for paper size. It was using pre-1.7 Sphinx nomenclature for some conf vars;
- The LaTeX options a conf.py had lots of issues;
- Finally, some PDF package dependencies for distros were wrong.

I wrote an entire testbench to test this and doing builds on every platform mentioned at sphinx-pre-install.

After the change *most* PDF files are built on *most* platforms.

Summary
=======
PASSED - AlmaLinux release 9.6 (Sage Margay) (7 tests) PASSED - Amazon Linux release 2023 (Amazon Linux) (7 tests) FAILED - archlinux (1 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.3 (7 tests)
PASSED - openSUSE Leap 15.6 (7 tests)
PASSED - openSUSE Tumbleweed (7 tests)
PARTIAL - Oracle Linux Server release 9.6 (7 tests)
FAILED - Red Hat Enterprise Linux release 8.10 (Ootpa) (7 tests) PARTIAL - Rocky Linux release 8.9 (Green Obsidian) (7 tests) PARTIAL - Rocky Linux release 9.6 (Blue Onyx) (7 tests) FAILED - Springdale Open Enterprise Linux release 9.2 (Parma) (7 tests) PARTIAL - Ubuntu 24.04.2 LTS (7 tests)
PASSED - Ubuntu 25.04 (7 tests)

The failed distros are:

- archlinux. This is some problem on recent lxc containers. Unrelated with pdf builds;
- RHEL 8: paywall issue: some packages required by Sphinx require a repository that it is not openly available. I might have using CentOS repos, but, as we're already testing it, I opted not do do it;
- Springdale 9.2: some broken package dependency.

Quoted 5 lines

Now, if you look at the full logs below, you'll see that some distros come with XeLaTeX or LaTeX troubles, causing bigger and/or more complex docs to fail. It is possible to fix those, but they depend on addressing distro-specific LaTeX issues like increasing maximum memory limits and maximum number of idented paragraphs.

Quoted 4 lines

No, the trouble is failed conversion of SVG --> PDF by convert(1) + rsvg-convert(1). Failed conversions trigger huge raw SVG code to be included literally into LaTeX sources, which results in code listings too huge to be rendered in a page; and overwhelms xelatex.

I remember we had some cases of too large items on media uAPI. There, the problem were mostly on tables. The fix was to add several LaTeX specific commands:

	$ git grep -i "raw:: latex" Documentation/userspace-api/media/|wc -l
	201

Currently, they all are just changing font size, but

We also use less-ugly things like Sphinx PDF builder specific classes:

.. cssclass:: longtable

So, one alternative would be to look at techniques to auto-scale image, like:

	\usepackage{pdfpages}
	...
	\includepdf{image.png}

as proposed here:

https://tex.stackexchange.com/questions/39147/scale-image-to-page-width

Yet, we tried something like that before to auto-scale tables, overriding Sphinx Latex macros. It worked for a couple of sphinx versions, but maintaining it was hard, as newer versions of Sphinx came with different macro names or different behaviors.

Heh, if you check:
https://www.sphinx-doc.org/en/master/latex.html#additional-css-like-sphinxsetup-keys

You'll see that sphinx latex builder have been suffering lots of changes over time.

Quoted 2 lines

IIUC, kfigure.py does such fallbacks of failed PDF conversions. Mightn't it be better to give up early in the latexdocs stage?

Makes sense to me.

Quoted 15 lines
Quoted 1 line

It follows full results per distro.

[Ignoring lengthy list of results...]

I think all you need to test build against are the limited list of:

- arch.pdf
- core-api.pdf
- doc-guide.pdf
- gpu.pdf
- i2c.pdf
- RCU.pdf
- translations.pdf
- userspace-api.pdf

Quoted 5 lines

All of them have figures in SVG, and latexdocs tries to convert them into PDF.

Probably, recommending Inkscape rather than ImageMagick would be the right thing, at least where it is provided as a distro package.

Works for me, but let's do it on a separate series. I still have more than 100 patches on my pile to be merged. This series is focused on making at least some PDFs to build where possible, addressing major problems at conf.py that are causing LaTeX to not work on several distros and to fix wrong package dependencies(*).

I'll add a TODO item on my queue to replace fom ImageMagick to Inkscape on a separate series.

(*) One of such problem you blamed sphinx-build-wrapper, but
the issue is actually addressed on this series with fixes to conf.py:
there are currently several troubles at latex_documents list and at latex_elements.

Those are causing wrong font detection on LaTeX. Maybe the corrupted font issues you got are related to it.

It took me a lot of time to set latex_elements in a way that it now works fine. The main keys related to it are those:

"passoptionstopackages": dedent(r"""
\PassOptionsToPackage{svgnames}{xcolor}
% Avoid encoding troubles when creating indexes \PassOptionsToPackage{xindy}{language=english,codepage=utf8,noautomatic}
"""),
"fontenc": "",
'fontpkg': dedent(r'''
\usepackage{fontspec}
\setmainfont{DejaVu Serif}
\setsansfont{DejaVu Sans}
\setmonofont{DejaVu Sans Mono} \newfontfamily\headingfont{DejaVu Serif}
'''),

You can't imagine how much hours it took to get the above lines right ;-)

Basically, "fontenc" and "fontpkg" are two different ways that LaTeX use to include true-type fonts. We need to disable the first, as otherwise it will try to use both, which may result in incompatible fonts (On Debian, LaTeX build reports corrupted fonts on T1 fontenc set - preventing PDF builds). The actual messge there is:

! Corrupted NFSS tables

Btw, just disabling fontenc there was not enough, as babel was still trying to load a T1 Polish font indirectly used by Sphinx hyphenation macros. I had to add \newfontfamily to fix such issue.

Thanks,
Mauro

#16 lore raw

[-CC: bpf@vger]

Quoted 3 lines · Mauro Carvalho Chehab

Em Sat, 16 Aug 2025 14:06:43 +0900
Akira Yokosawa <[email protected]> escreveu:

[...]

Quoted 9 lines

Works for me, but let's do it on a separate series. I still have more than 100 patches on my pile to be merged. This series is focused on making at least some PDFs to build where possible, addressing major problems at conf.py that are causing LaTeX to not work on several distros and to fix wrong package dependencies(*).

I'll add a TODO item on my queue to replace fom ImageMagick to Inkscape on a separate series.

Quoted 6 lines

(*) One of such problem you blamed sphinx-build-wrapper, but
the issue is actually addressed on this series with fixes to conf.py:
there are currently several troubles at latex_documents list and at latex_elements.

Those are causing wrong font detection on LaTeX.

I couldn't see what you are talking about at first, because there have not been any such issues reported.

Also, after applying 1/11 ... 4/11 on top of current docs-next (commit 0bbc2548ea85 ("Merge branch 'pre-install' into docs-mw"), despite the changelog of 5/11 which claims to fix an issue under debian, I couldn't reproduce the "! Corrupted NFSS tables" error under Ubuntu 24.04 (noble).

I'm confused ... How can I reproduce this?

It's getting really hard for me to keep up with your pace of changes in doc build scripts, really.

Akira

#17 lore raw

Em Sun, 17 Aug 2025 18:46:35 +0900
Akira Yokosawa <[email protected]> escreveu:

Quoted 23 lines

[-CC: bpf@vger]

Quoted 3 lines · Mauro Carvalho Chehab

Em Sat, 16 Aug 2025 14:06:43 +0900
Akira Yokosawa <[email protected]> escreveu:

[...]

Quoted 14 lines

Works for me, but let's do it on a separate series. I still have more than 100 patches on my pile to be merged. This series is focused on making at least some PDFs to build where possible, addressing major problems at conf.py that are causing LaTeX to not work on several distros and to fix wrong package dependencies(*).

I'll add a TODO item on my queue to replace fom ImageMagick to Inkscape on a separate series.

(*) One of such problem you blamed sphinx-build-wrapper, but
the issue is actually addressed on this series with fixes to conf.py:
there are currently several troubles at latex_documents list and at latex_elements.

Quoted 4 lines
Quoted 1 line

Those are causing wrong font detection on LaTeX.

I couldn't see what you are talking about at first, because there have not been any such issues reported.

Heh, as you reported, you had troubles building pdf on Debian/Ubuntu. That's mainly why I took some time finding issues and writing this series. Basically, just fixing ImageMagick permissions didn't fix everything, as, at least with the Sphinx versions used at the tests got troubles with Sphinx hyphernation, which required a Polish font.

Debian LaTeX packages seem to have issues with that. Fedora and other rpm-based distros built it fine.

Now, reproducing such bugs could be tricky, specially with LaTeX, which is a complex tool with lots of system-specific stuff.

Eventually, this could be related to LANG/LANGUAGE/LC_ALL/... env vars. Here, I'm using lxc-attach to bind to the container. It doesn't run .bashrc nor set locale vars, and it seems to keep some env vars from the host. In the specific case of LANG, it doesn't set anything. So, my test script sets LANG and LC_ALL to "C". The host has it set to LANG=pt_BR.UTF-8.

Quoted 5 lines

Also, after applying 1/11 ... 4/11 on top of current docs-next (commit 0bbc2548ea85 ("Merge branch 'pre-install' into docs-mw"), despite the changelog of 5/11 which claims to fix an issue under debian, I couldn't reproduce the "! Corrupted NFSS tables" error under Ubuntu 24.04 (noble).

Maybe you could try set LANG/LC_ALL to "C".

I tested it on the following lxc containers (picked from lxc download repositories):

# APT-based (Debian/Ubuntu-like)
debian:
release: "bookworm"
pre_setup_cmds: *apt_pkg_cmd
post_setup_cmds:
- "systemctl enable ssh"
pkg_cmd: *apt_pkg_cmd

devuan:
release: "daedalus"
pkg_cmd: *apt_pkg_cmd

kali:
release: "current"
pkg_cmd: *apt_pkg_cmd

mint:
release: "wilma"
pkg_cmd: *apt_pkg_cmd

ubuntu:
release: "plucky"
pkg_cmd: *apt_pkg_cmd

ubuntu-lts:
dist: "ubuntu"
release: "noble"
pkg_cmd: *apt_pkg_cmd

apt_pkg_cmd: &apt_pkg_cmd
- "sudo locale-gen"
- "sudo dpkg-reconfigure --frontend=noninteractive locales"
- "apt-get update && apt-get install -y openssh-server git python3 make"
- |
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

Packages are installed according using sphinx-pre-install instructions.

I don't remember what of those got the corrupted tables LaTeX warning, but I got it on more than one Debian-based distro. When I wrote the fix, I guess I logged at the Debian container.

Quoted 6 lines

I'm confused ... How can I reproduce this?

It's getting really hard for me to keep up with your pace of changes in doc build scripts, really.

Akira

#18 lore raw
Quoted 5 lines · Mauro Carvalho Chehab

Em Sun, 17 Aug 2025 18:46:35 +0900
Akira Yokosawa <[email protected]> escreveu:

Quoted 2 lines

[-CC: bpf@vger]

[...]

Quoted 81 lines
Quoted 2 lines

I couldn't see what you are talking about at first, because there have not been any such issues reported.

Heh, as you reported, you had troubles building pdf on Debian/Ubuntu. That's mainly why I took some time finding issues and writing this series. Basically, just fixing ImageMagick permissions didn't fix everything, as, at least with the Sphinx versions used at the tests got troubles with Sphinx hyphernation, which required a Polish font.

Debian LaTeX packages seem to have issues with that. Fedora and other rpm-based distros built it fine.

Now, reproducing such bugs could be tricky, specially with LaTeX, which is a complex tool with lots of system-specific stuff.

Eventually, this could be related to LANG/LANGUAGE/LC_ALL/... env vars. Here, I'm using lxc-attach to bind to the container. It doesn't run .bashrc nor set locale vars, and it seems to keep some env vars from the host. In the specific case of LANG, it doesn't set anything. So, my test script sets LANG and LC_ALL to "C". The host has it set to LANG=pt_BR.UTF-8.

Quoted 5 lines

Also, after applying 1/11 ... 4/11 on top of current docs-next (commit 0bbc2548ea85 ("Merge branch 'pre-install' into docs-mw"), despite the changelog of 5/11 which claims to fix an issue under debian, I couldn't reproduce the "! Corrupted NFSS tables" error under Ubuntu 24.04 (noble).

Maybe you could try set LANG/LC_ALL to "C".

I tested it on the following lxc containers (picked from lxc download repositories):

# APT-based (Debian/Ubuntu-like)
debian:
release: "bookworm"
pre_setup_cmds: *apt_pkg_cmd
post_setup_cmds:
- "systemctl enable ssh"
pkg_cmd: *apt_pkg_cmd

devuan:
release: "daedalus"
pkg_cmd: *apt_pkg_cmd

kali:
release: "current"
pkg_cmd: *apt_pkg_cmd

mint:
release: "wilma"
pkg_cmd: *apt_pkg_cmd

ubuntu:
release: "plucky"
pkg_cmd: *apt_pkg_cmd

ubuntu-lts:
dist: "ubuntu"
release: "noble"
pkg_cmd: *apt_pkg_cmd

apt_pkg_cmd: &apt_pkg_cmd
- "sudo locale-gen"
- "sudo dpkg-reconfigure --frontend=noninteractive locales"
- "apt-get update && apt-get install -y openssh-server git python3 make"
- |
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

Quoted 7 lines

Packages are installed according using sphinx-pre-install instructions.

I don't remember what of those got the corrupted tables LaTeX warning, but I got it on more than one Debian-based distro. When I wrote the fix, I guess I logged at the Debian container.

That explains! I've stopped using ImageMagick all together.

So it sounds to me like there is some issue in debian/ubuntu/...'s ImageMagick packaging, probably its build config disables some aspect of SVG --> PDF support for security concerns (???). I'm not sure at all.

I think it has nothing to do with XeLaTeX font discovery and I don't see any reason to apply 5/11, at least for the time being.

My suggestion would be to give up ImageMagick and install Inkscape instead. It is provided as a deb package for debian and its derivatives.

Thanks, Akira

#19 lore raw

Em Sun, 17 Aug 2025 21:24:49 +0900
Akira Yokosawa <[email protected]> escreveu:

Quoted 105 lines · Mauro Carvalho Chehab
Quoted 5 lines

Em Sun, 17 Aug 2025 18:46:35 +0900
Akira Yokosawa <[email protected]> escreveu:

Quoted 2 lines

[-CC: bpf@vger]

[...]

Quoted 81 lines
Quoted 2 lines

I couldn't see what you are talking about at first, because there have not been any such issues reported.

Heh, as you reported, you had troubles building pdf on Debian/Ubuntu. That's mainly why I took some time finding issues and writing this series. Basically, just fixing ImageMagick permissions didn't fix everything, as, at least with the Sphinx versions used at the tests got troubles with Sphinx hyphernation, which required a Polish font.

Debian LaTeX packages seem to have issues with that. Fedora and other rpm-based distros built it fine.

Now, reproducing such bugs could be tricky, specially with LaTeX, which is a complex tool with lots of system-specific stuff.

Eventually, this could be related to LANG/LANGUAGE/LC_ALL/... env vars. Here, I'm using lxc-attach to bind to the container. It doesn't run .bashrc nor set locale vars, and it seems to keep some env vars from the host. In the specific case of LANG, it doesn't set anything. So, my test script sets LANG and LC_ALL to "C". The host has it set to LANG=pt_BR.UTF-8.

Quoted 5 lines

Also, after applying 1/11 ... 4/11 on top of current docs-next (commit 0bbc2548ea85 ("Merge branch 'pre-install' into docs-mw"), despite the changelog of 5/11 which claims to fix an issue under debian, I couldn't reproduce the "! Corrupted NFSS tables" error under Ubuntu 24.04 (noble).

Maybe you could try set LANG/LC_ALL to "C".

I tested it on the following lxc containers (picked from lxc download repositories):

# APT-based (Debian/Ubuntu-like)
debian:
release: "bookworm"
pre_setup_cmds: *apt_pkg_cmd
post_setup_cmds:
- "systemctl enable ssh"
pkg_cmd: *apt_pkg_cmd

devuan:
release: "daedalus"
pkg_cmd: *apt_pkg_cmd

kali:
release: "current"
pkg_cmd: *apt_pkg_cmd

mint:
release: "wilma"
pkg_cmd: *apt_pkg_cmd

ubuntu:
release: "plucky"
pkg_cmd: *apt_pkg_cmd

ubuntu-lts:
dist: "ubuntu"
release: "noble"
pkg_cmd: *apt_pkg_cmd

apt_pkg_cmd: &apt_pkg_cmd
- "sudo locale-gen"
- "sudo dpkg-reconfigure --frontend=noninteractive locales"
- "apt-get update && apt-get install -y openssh-server git python3 make"
- |
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

Quoted 7 lines

Packages are installed according using sphinx-pre-install instructions.

I don't remember what of those got the corrupted tables LaTeX warning, but I got it on more than one Debian-based distro. When I wrote the fix, I guess I logged at the Debian container.

That explains! I've stopped using ImageMagick all together.

So it sounds to me like there is some issue in debian/ubuntu/...'s ImageMagick packaging, probably its build config disables some aspect of SVG --> PDF support for security concerns (???). I'm not sure at all.

Quoted 5 lines

I think it has nothing to do with XeLaTeX font discovery and I don't see any reason to apply 5/11, at least for the time being.

My suggestion would be to give up ImageMagick and install Inkscape instead. It is provided as a deb package for debian and its derivatives.

The corrupted table error happened with very simple PDF files and has nothing to do with image generation.

It rises even with very simple PDF targets like this:

make SPHINXDIRS=peci pdfdocs

Which produces \sphinxhyphen{} inside peci.tex, like this one:

controller is acting as a PECI originator and the processor \sphinxhyphen{} as

Basically, if this is included, directly or indirectly at the .tex file:

	\usepackage[T1]{fontenc}

the fonts from T1 fontset aren't UTF-8 compatible, causing troubles with xelatex. The fixes on this series solved some corner cases, where babel tries to include it and use a Polish font (pzdr.tfm) to handle hyphenation.

Such issue likely depends on Sphinx versions (as it is related to a sphinx-specific macro) and what LaTeX packages are installed at the system (fonts, babel, polygrossia).

Regards,
Mauro

Reviewed-by
#20 lore raw

On Sun, 17 Aug 2025 15:45:44 +0200, Mauro Carvalho Chehab wrote:

[...]

Quoted 16 lines

The corrupted table error happened with very simple PDF files and has nothing to do with image generation.

It rises even with very simple PDF targets like this:

make SPHINXDIRS=peci pdfdocs

Which produces \sphinxhyphen{} inside peci.tex, like this one:

controller is acting as a PECI originator and the processor \sphinxhyphen{} as

Basically, if this is included, directly or indirectly at the .tex file:

	\usepackage[T1]{fontenc}
Quoted 8 lines

the fonts from T1 fontset aren't UTF-8 compatible, causing troubles with xelatex. The fixes on this series solved some corner cases, where babel tries to include it and use a Polish font (pzdr.tfm) to handle hyphenation.

Such issue likely depends on Sphinx versions (as it is related to a sphinx-specific macro) and what LaTeX packages are installed at the system (fonts, babel, polygrossia).

Ah, I have finally understood what 5/11 is trying to do.

Its changelog mainly talks about an issue you saw after adding options to xindy in that same commit, and you added

\newfontfamily\headingfont{DejaVu Serif}

to resolve it.

Current changelog didn't make sense at all for me.

Can you please reword it and make it easier to follow?

With that, feel free to add my

Thanks, Akira

#21 lore raw

On Mon, 18 Aug 2025 01:07:24 +0900, Akira Yokosawa wrote:
[...]

Quoted 9 lines

Ah, I have finally understood what 5/11 is trying to do.

Its changelog mainly talks about an issue you saw after adding options to xindy in that same commit, and you added

   \newfontfamily\headingfont{DejaVu Serif}

to resolve it.

Sidenote:

It looks like texlive-xindy is not available for RHEL based distros.

That means, you will need to ask EPEL to provide it. Otherwise, you are obsoleting those distros for pdfdocs build (under the confinement of "distro packages only").

I think I can live with it.

Akira

#22 lore raw

Em Mon, 18 Aug 2025 09:44:39 +0900
Akira Yokosawa <[email protected]> escreveu:

Quoted 9 lines · Akira Yokosawa

[...]

Quoted 6 lines

Ah, I have finally understood what 5/11 is trying to do.

Its changelog mainly talks about an issue you saw after adding options to xindy in that same commit, and you added

Quoted 7 lines
Quoted 3 lines
   \newfontfamily\headingfont{DejaVu Serif}

to resolve it.

Sidenote:

It looks like texlive-xindy is not available for RHEL based distros.

On several rpm-based distros, extra repositories are needed.

So, if you take a look at rpmfind:
https://rpmfind.net/linux/rpm2html/search.php?query=python3-sphinx

For the limited set of distros supported there, you'll see that sphinx-build can either be at:
- main distro repos;
- CRB;
- Powertools

But this is only a fraction of the problem, as there are several exceptions. For instance, RHEL8 from "redhat/ubi8" docker container(*) sounds to be an official vendor-provided image.

(*) https://hub.docker.com/r/redhat/ubi8

Yet, if you use it and try to install sphinx-build:

	# dnf install python3-sphinx
	Updating Subscription Management repositories.
	Unable to read consumer identity

This system is not registered with an entitlement server. You can use subscription-manager to register.

Last metadata expiration check: 21:10:22 ago on Sun Aug 17 11:30:23 2025. No match for argument: python3-sphinx
Error: Unable to find a match: python3-sphinx

It won't work, because repo management in this case requires to setup a paywall protected procedure.

Quoted 3 lines

That means, you will need to ask EPEL to provide it. Otherwise, you are obsoleting those distros for pdfdocs build (under the confinement of "distro packages only").

Recommending a repository setup for rpm distros is complex. When I wrote sphinx-pre-install, I opted to keep such setup out of it.

The rationale is that the ones using such distros should know better and may require a paid subscription.

With the exception of rpmfusion on Fedora, where one needs to first download a RPM file from some site, for most distros, the extra needed repositories are already installed or can be installed from a package provided at the main repository. Once downloaded, all it takes is to enable it.

For instance, to get what is needed to build both html and pdf on RockyLinux, one needs to install a distro package:

dnf install -y epel-release

Which adds extra repositories to /etc/yum.repos.d/.

Then, either use config-manager:

	# change "enable" flag from /etc/yum.repos.d/ repos
	dnf install 'dnf-command(config-manager)'
	dnf config-manager --set-enabled powertools appstream epel

or pass an extra option to enable the repo(s) during install:

	sudo dnf --enablrepo=powertools --enablrepo=appstream --enablrepo=epel install -y python3-sphinx {other packages}

Now, sphinx-pre-install can later be improved to also contain repo-management instructions but this is out of the scope of this series (and I'm not sure if it is worth adding it there).

Thanks,
Mauro

#23 lore raw
Quoted 10 lines · Mauro Carvalho Chehab

Em Mon, 18 Aug 2025 09:44:39 +0900
Akira Yokosawa <[email protected]> escreveu:

Quoted 3 lines

Sidenote:

It looks like texlive-xindy is not available for RHEL based distros.

On several rpm-based distros, extra repositories are needed.

So, if you take a look at rpmfind:
https://rpmfind.net/linux/rpm2html/search.php?query=python3-sphinx

No, I'm talking about texlive-xindy.

https://rpmfind.net/linux/rpm2html/search.php?query=texlive-xindy

has RPMs for fedora 41/42/rawhide only.

How do you install xindy under AlmaLinux release 9.6 (Sage Margay), Amazon Linux release 2023 (Amazon Linux), CentOS Stream release 9, and the likes?

Thanks,
Akira

#24 lore raw

Em Mon, 18 Aug 2025 19:06:03 +0900
Akira Yokosawa <[email protected]> escreveu:

Quoted 14 lines · Mauro Carvalho Chehab
Quoted 10 lines

Em Mon, 18 Aug 2025 09:44:39 +0900
Akira Yokosawa <[email protected]> escreveu:

Quoted 3 lines

Sidenote:

It looks like texlive-xindy is not available for RHEL based distros.

On several rpm-based distros, extra repositories are needed.

So, if you take a look at rpmfind:
https://rpmfind.net/linux/rpm2html/search.php?query=python3-sphinx

No, I'm talking about texlive-xindy.

Quoted 7 lines

https://rpmfind.net/linux/rpm2html/search.php?query=texlive-xindy

has RPMs for fedora 41/42/rawhide only.

How do you install xindy under AlmaLinux release 9.6 (Sage Margay), Amazon Linux release 2023 (Amazon Linux), CentOS Stream release 9, and the likes?

I didn't install it there.

Yet, on some distros it seems that this is packaged together with a texlive collection package and it is called during pdf build.

This was also causing font issues. So, I added an option at latex_elements to ensure that, if used, it will request UTF-8 fonts:

	latex_elements = {
	    # The paper size ('letterpaper' or 'a4paper').
	    "papersize": "a4paper",
	    "passoptionstopackages": dedent(r"""
	        \PassOptionsToPackage{svgnames}{xcolor}
	        % Avoid encoding troubles when creating indexes
	        \PassOptionsToPackage{xindy}{language=english,codepage=utf8,noautomatic}
	    """),

I just built manually on almalinux. There, all pdfs built fine:

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

All PDF files were built.
</snip>

Those are all installed packages on AlmaLinux 9.6 (obtained only from sphinx-pre-install requirements):

<snip>

# rpm -q -a|grep texlive
texlive-base-20200406-26.el9_2.noarch
texlive-lib-20200406-26.el9_2.x86_64
texlive-texlive-common-doc-20200406-26.el9_2.noarch
texlive-cm-20200406-26.el9_2.noarch
texlive-etex-20200406-26.el9_2.noarch
texlive-graphics-def-20200406-26.el9_2.noarch
texlive-hyph-utf8-20200406-26.el9_2.noarch
texlive-hyphen-base-20200406-26.el9_2.noarch
texlive-knuth-lib-20200406-26.el9_2.noarch
texlive-plain-20200406-26.el9_2.noarch
texlive-tex-ini-files-20200406-26.el9_2.noarch
texlive-unicode-data-20200406-26.el9_2.noarch
texlive-texlive.infra-20200406-26.el9_2.noarch
texlive-luatex-20200406-26.el9_2.x86_64
texlive-texlive-scripts-20200406-26.el9_2.noarch
texlive-kpathsea-20200406-26.el9_2.x86_64
texlive-iftex-20200406-26.el9_2.noarch
texlive-atbegshi-20200406-26.el9_2.noarch
texlive-amsmath-20200406-26.el9_2.noarch
texlive-kvoptions-20200406-26.el9_2.noarch
texlive-babel-20200406-26.el9_2.noarch
texlive-etex-pkg-20200406-26.el9_2.noarch
texlive-etoolbox-20200406-26.el9_2.noarch
texlive-latex-fonts-20200406-26.el9_2.noarch
texlive-ltxcmds-20200406-26.el9_2.noarch
texlive-url-20200406-26.el9_2.noarch
texlive-amsfonts-20200406-26.el9_2.noarch
texlive-infwarerr-20200406-26.el9_2.noarch
texlive-pdftexcmds-20200406-26.el9_2.noarch
texlive-luatexbase-20200406-26.el9_2.noarch
texlive-atveryend-20200406-26.el9_2.noarch
texlive-auxhook-20200406-26.el9_2.noarch
texlive-etexcmds-20200406-26.el9_2.noarch
texlive-l3backend-20200406-26.el9_2.noarch
texlive-lm-20200406-26.el9_2.noarch
texlive-booktabs-20200406-26.el9_2.noarch
texlive-ec-20200406-26.el9_2.noarch
texlive-fancyhdr-20200406-26.el9_2.noarch
texlive-footmisc-20200406-26.el9_2.noarch
texlive-intcalc-20200406-26.el9_2.noarch
texlive-kvsetkeys-20200406-26.el9_2.noarch
texlive-multido-20200406-26.el9_2.noarch
texlive-natbib-20200406-26.el9_2.noarch
texlive-ulem-20200406-26.el9_2.noarch
texlive-zapfding-20200406-26.el9_2.noarch
texlive-catchfile-20200406-26.el9_2.noarch
texlive-babelbib-20200406-26.el9_2.noarch
texlive-bookmark-20200406-26.el9_2.noarch
texlive-epstopdf-pkg-20200406-26.el9_2.noarch
texlive-fonts-tlwg-20200406-26.el9_2.noarch
texlive-fp-20200406-26.el9_2.noarch
texlive-gettitlestring-20200406-26.el9_2.noarch
texlive-glyphlist-20200406-26.el9_2.noarch
texlive-graphics-cfg-20200406-26.el9_2.noarch
texlive-graphics-20200406-26.el9_2.noarch
texlive-tools-20200406-26.el9_2.noarch
texlive-xkeyval-20200406-26.el9_2.noarch
texlive-geometry-20200406-26.el9_2.noarch
texlive-colortbl-20200406-26.el9_2.noarch
texlive-carlisle-20200406-26.el9_2.noarch
texlive-caption-20200406-26.el9_2.noarch
texlive-sauerj-20200406-26.el9_2.noarch
texlive-grfext-20200406-26.el9_2.noarch
texlive-hycolor-20200406-26.el9_2.noarch
texlive-kvdefinekeys-20200406-26.el9_2.noarch
texlive-latexconfig-20200406-26.el9_2.noarch
texlive-letltxmacro-20200406-26.el9_2.noarch
texlive-lua-alt-getopt-20200406-26.el9_2.noarch
texlive-marvosym-20200406-26.el9_2.noarch
texlive-mptopdf-20200406-26.el9_2.noarch
texlive-paralist-20200406-26.el9_2.noarch
texlive-pdfescape-20200406-26.el9_2.noarch
texlive-pdftex-20200406-26.el9_2.x86_64
texlive-placeins-20200406-26.el9_2.noarch
texlive-refcount-20200406-26.el9_2.noarch
texlive-setspace-20200406-26.el9_2.noarch
texlive-stringenc-20200406-26.el9_2.noarch
texlive-svn-prov-20200406-26.el9_2.noarch
texlive-everyhook-20200406-37.el9.noarch
texlive-symbol-20200406-26.el9_2.noarch
texlive-psnfss-20200406-26.el9_2.noarch
texlive-tex-20200406-26.el9_2.x86_64
texlive-uniquecounter-20200406-26.el9_2.noarch
texlive-rerunfilecheck-20200406-26.el9_2.noarch
texlive-wasy-20200406-26.el9_2.noarch
texlive-zref-20200406-26.el9_2.noarch
texlive-adobemapping-20200406-37.el9.noarch
texlive-firstaid-20200406-37.el9.noarch
texlive-ipaex-20200406-37.el9.noarch
texlive-latex-base-dev-20200406-37.el9.noarch
texlive-latex-firstaid-dev-20200406-37.el9.noarch
texlive-ptex-base-20200406-37.el9.noarch
texlive-ptex-fonts-20200406-37.el9.noarch
texlive-uptex-fonts-20200406-37.el9.noarch
texlive-wasy-type1-20200406-26.el9_2.noarch
texlive-subfig-20200406-26.el9_2.noarch
texlive-breakurl-20200406-26.el9_2.noarch
texlive-qstest-20200406-26.el9_2.noarch
texlive-sttools-20200406-37.el9.noarch
texlive-csquotes-20200406-26.el9_2.noarch
texlive-translator-20200406-26.el9_2.noarch
texlive-japanese-otf-20200406-37.el9.noarch
texlive-japanese-otf-uptex-20200406-37.el9.noarch
texlive-euro-20200406-26.el9_2.noarch
texlive-garuda-c90-20200406-26.el9_2.noarch
texlive-norasi-c90-20200406-26.el9_2.noarch
texlive-ifplatform-20200406-26.el9_2.noarch
texlive-dvips-20200406-26.el9_2.x86_64
texlive-memoir-20200406-26.el9_2.noarch
texlive-tex-gyre-20200406-26.el9_2.noarch
texlive-alphalph-20200406-26.el9_2.noarch
texlive-arphic-20200406-26.el9_2.noarch
texlive-avantgar-20200406-26.el9_2.noarch
texlive-babel-english-20200406-26.el9_2.noarch
texlive-beton-20200406-26.el9_2.noarch
texlive-bibtex-20200406-26.el9_2.x86_64
texlive-bigintcalc-20200406-26.el9_2.noarch
texlive-bitset-20200406-26.el9_2.noarch
texlive-bookman-20200406-26.el9_2.noarch
texlive-changepage-20200406-26.el9_2.noarch
texlive-charter-20200406-26.el9_2.noarch
texlive-chngcntr-20200406-26.el9_2.noarch
texlive-cmextra-20200406-26.el9_2.noarch
texlive-cns-20200406-26.el9_2.noarch
texlive-colorprofiles-20200406-26.el9_2.noarch
texlive-courier-20200406-26.el9_2.noarch
texlive-enctex-20200406-26.el9_2.noarch
texlive-enumitem-20200406-26.el9_2.noarch
texlive-euler-20200406-26.el9_2.noarch
texlive-eurosym-20200406-26.el9_2.noarch
texlive-filecontents-20200406-26.el9_2.noarch
texlive-fix2col-20200406-26.el9_2.noarch
texlive-float-20200406-26.el9_2.noarch
texlive-fpl-20200406-26.el9_2.noarch
texlive-grffile-20200406-26.el9_2.noarch
texlive-helvetic-20200406-26.el9_2.noarch
texlive-hobsub-20200406-26.el9_2.noarch
texlive-hyperref-20200406-26.el9_2.noarch
texlive-latex-20200406-26.el9_2.noarch
texlive-tipa-20200406-26.el9_2.noarch
texlive-xunicode-20200406-26.el9_2.noarch
texlive-amscls-20200406-26.el9_2.noarch
texlive-ae-20200406-26.el9_2.noarch
texlive-algorithms-20200406-26.el9_2.noarch
texlive-bera-20200406-26.el9_2.noarch
texlive-cm-super-20200406-26.el9_2.noarch
texlive-ucs-20200406-26.el9_2.noarch
texlive-attachfile-20200406-26.el9_2.noarch
texlive-hologo-20200406-26.el9_2.noarch
texlive-hyphenex-20200406-26.el9_2.noarch
texlive-ifmtarg-20200406-26.el9_2.noarch
texlive-xifthen-20200406-26.el9_2.noarch
texlive-index-20200406-26.el9_2.noarch
texlive-kastrup-20200406-26.el9_2.noarch
texlive-knuth-local-20200406-26.el9_2.noarch
texlive-lm-math-20200406-26.el9_2.noarch
texlive-luahbtex-20200406-26.el9_2.x86_64
texlive-lualibs-20200406-26.el9_2.noarch
texlive-luaotfload-20200406-26.el9_2.noarch
texlive-makecmds-20200406-26.el9_2.noarch
texlive-makeindex-20200406-26.el9_2.x86_64
texlive-manfnt-font-20200406-26.el9_2.noarch
texlive-marginnote-20200406-26.el9_2.noarch
texlive-mathpazo-20200406-26.el9_2.noarch
texlive-mflogo-20200406-26.el9_2.noarch
texlive-mflogo-font-20200406-26.el9_2.noarch
texlive-mfnfss-20200406-26.el9_2.noarch
texlive-mfware-20200406-26.el9_2.x86_64
texlive-modes-20200406-26.el9_2.noarch
texlive-mparhack-20200406-26.el9_2.noarch
texlive-ncntrsbk-20200406-26.el9_2.noarch
texlive-notoccite-20200406-26.el9_2.noarch
texlive-minitoc-20200406-26.el9_2.noarch
texlive-ltxmisc-20200406-26.el9_2.noarch
texlive-palatino-20200406-26.el9_2.noarch
texlive-parallel-20200406-26.el9_2.noarch
texlive-pdfcolmk-20200406-26.el9_2.noarch
texlive-xcolor-20200406-26.el9_2.noarch
texlive-pgf-20200406-26.el9_2.noarch
texlive-currfile-20200406-26.el9_2.noarch
texlive-filehook-20200406-26.el9_2.noarch
texlive-sansmathaccent-20200406-26.el9_2.noarch
texlive-beamer-20200406-26.el9_2.noarch
texlive-eso-pic-20200406-26.el9_2.noarch
texlive-pslatex-20200406-26.el9_2.noarch
texlive-pspicture-20200406-26.el9_2.noarch
texlive-pst-arrow-20200406-26.el9_2.noarch
texlive-pst-math-20200406-26.el9_2.noarch
texlive-pxfonts-20200406-26.el9_2.noarch
texlive-rsfs-20200406-26.el9_2.noarch
texlive-soul-20200406-26.el9_2.noarch
texlive-tex-gyre-math-20200406-26.el9_2.noarch
texlive-texlive-docindex-20200406-26.el9_2.noarch
texlive-texlive-en-20200406-26.el9_2.noarch
texlive-texlive-msg-translations-20200406-26.el9_2.noarch
texlive-times-20200406-26.el9_2.noarch
texlive-titlesec-20200406-26.el9_2.noarch
texlive-trimspaces-20200406-26.el9_2.noarch
texlive-environ-20200406-26.el9_2.noarch
texlive-txfonts-20200406-26.el9_2.noarch
texlive-uhc-20200406-26.el9_2.noarch
texlive-underscore-20200406-26.el9_2.noarch
texlive-updmap-map-20200406-26.el9_2.noarch
texlive-utopia-20200406-26.el9_2.noarch
texlive-varwidth-20200406-26.el9_2.noarch
texlive-ms-20200406-26.el9_2.noarch
texlive-koma-script-20200406-26.el9_2.noarch
texlive-listings-20200406-26.el9_2.noarch
texlive-showexpl-20200406-26.el9_2.noarch
texlive-fancyvrb-20200406-26.el9_2.noarch
texlive-pst-3d-20200406-26.el9_2.noarch
texlive-pst-coil-20200406-26.el9_2.noarch
texlive-pst-eps-20200406-26.el9_2.noarch
texlive-pst-fill-20200406-26.el9_2.noarch
texlive-pst-grad-20200406-26.el9_2.noarch
texlive-pst-node-20200406-26.el9_2.noarch
texlive-pst-plot-20200406-26.el9_2.noarch
texlive-pst-text-20200406-26.el9_2.noarch
texlive-pst-tools-20200406-26.el9_2.noarch
texlive-pst-tree-20200406-26.el9_2.noarch
texlive-pstricks-add-20200406-26.el9_2.noarch
texlive-pstricks-20200406-26.el9_2.noarch
texlive-wadalab-20200406-26.el9_2.noarch
texlive-cjk-20200406-26.el9_2.noarch
texlive-wasysym-20200406-26.el9_2.noarch
texlive-xetexconfig-20200406-26.el9_2.noarch
texlive-zapfchan-20200406-26.el9_2.noarch
texlive-ascmac-20200406-37.el9.noarch
texlive-cjkpunct-20200406-37.el9.noarch
texlive-convbkmk-20200406-37.el9.noarch
texlive-fandol-20200406-37.el9.noarch
texlive-ttfutils-20200406-37.el9.x86_64
texlive-uptex-base-20200406-37.el9.noarch
texlive-zhmetrics-20200406-37.el9.noarch
texlive-zhmetrics-uptex-20200406-37.el9.noarch
texlive-xdvi-20200406-26.el9_2.x86_64
texlive-ptex-20200406-37.el9.x86_64
texlive-uptex-20200406-37.el9.x86_64
texlive-metafont-20200406-26.el9_2.x86_64
texlive-thumbpdf-20200406-26.el9_2.noarch
texlive-fontspec-20200406-26.el9_2.noarch
texlive-l3packages-20200406-26.el9_2.noarch
texlive-lualatex-math-20200406-26.el9_2.noarch
texlive-unicode-math-20200406-26.el9_2.noarch
texlive-oberdiek-20200406-26.el9_2.noarch
texlive-l3kernel-20200406-26.el9_2.noarch
texlive-xecjk-20200406-26.el9_2.noarch
texlive-dvipdfmx-20200406-26.el9_2.x86_64
texlive-xetex-20200406-26.el9_2.x86_64
texlive-collection-basic-20200406-26.el9_2.noarch
texlive-platex-20200406-37.el9.noarch
texlive-xcjk2uni-20200406-37.el9.noarch
texlive-xpinyin-20200406-37.el9.noarch
texlive-platex-tools-20200406-37.el9.noarch
texlive-uplatex-20200406-37.el9.noarch
texlive-luatexja-20200406-37.el9.noarch
texlive-zhnumber-20200406-37.el9.noarch
texlive-bidi-20200406-26.el9_2.noarch
texlive-polyglossia-20200406-26.el9_2.noarch
texlive-ctex-20200406-37.el9.noarch
texlive-collection-fontsrecommended-20200406-26.el9_2.noarch
texlive-collection-latex-20200406-26.el9_2.noarch
texlive-eqparbox-20200406-26.el9_2.noarch
texlive-upquote-20200406-26.el9_2.noarch
texlive-tabulary-20200406-26.el9_2.noarch
texlive-fncychap-20200406-26.el9_2.noarch
texlive-anyfontsize-20200406-26.el9_2.noarch
texlive-capt-of-20200406-26.el9_2.noarch
texlive-cmap-20200406-26.el9_2.noarch
texlive-euenc-20200406-26.el9_2.noarch
texlive-fancybox-20200406-26.el9_2.noarch
texlive-framed-20200406-26.el9_2.noarch
texlive-luatex85-20200406-26.el9_2.noarch
texlive-mdwtools-20200406-26.el9_2.noarch
texlive-multirow-20200406-26.el9_2.noarch
texlive-needspace-20200406-26.el9_2.noarch
texlive-parskip-20200406-26.el9_2.noarch
texlive-threeparttable-20200406-26.el9_2.noarch
texlive-wrapfig-20200406-26.el9_2.noarch
</snip>

Thanks,
Mauro

#25 lore raw
Quoted 24 lines · Mauro Carvalho Chehab

Em Mon, 18 Aug 2025 19:06:03 +0900
Akira Yokosawa <[email protected]> escreveu:

Quoted 3 lines

How do you install xindy under AlmaLinux release 9.6 (Sage Margay), Amazon Linux release 2023 (Amazon Linux), CentOS Stream release 9, and the likes?

I didn't install it there.

Yet, on some distros it seems that this is packaged together with a texlive collection package and it is called during pdf build.

This was also causing font issues. So, I added an option at latex_elements to ensure that, if used, it will request UTF-8 fonts:

	latex_elements = {
	    # The paper size ('letterpaper' or 'a4paper').
	    "papersize": "a4paper",
	    "passoptionstopackages": dedent(r"""
	        \PassOptionsToPackage{svgnames}{xcolor}
	        % Avoid encoding troubles when creating indexes
	        \PassOptionsToPackage{xindy}{language=english,codepage=utf8,noautomatic}
	    """),
Quoted 1 line

I just built manually on almalinux. There, all pdfs built fine:

Ah, xindy is optional then.

Got it!

Sorry for the noise.

Akira

maintainer
#26 lore raw
In reply to Akira Yokosawa
Quoted 9 lines · Akira Yokosawa

Ah, I have finally understood what 5/11 is trying to do.

Its changelog mainly talks about an issue you saw after adding options to xindy in that same commit, and you added

   \newfontfamily\headingfont{DejaVu Serif}

to resolve it.

Quoted 7 lines

Current changelog didn't make sense at all for me.

Can you please reword it and make it easier to follow?

With that, feel free to add my

So, if I have managed to understand this conversation, this reword is all we need to get this series merged..?

Thanks,

jon

#27 lore raw
Quoted 13 lines · Jonathan Corbet
Quoted 11 lines · Akira Yokosawa

Ah, I have finally understood what 5/11 is trying to do.

Its changelog mainly talks about an issue you saw after adding options to xindy in that same commit, and you added

   \newfontfamily\headingfont{DejaVu Serif}

to resolve it.

Current changelog didn't make sense at all for me.

Quoted 8 lines
Quoted 5 lines

Can you please reword it and make it easier to follow?

With that, feel free to add my

So, if I have managed to understand this conversation, this reword is all we need to get this series merged..?

Well, after some thoughts on the conversation took place on xindy, I think I have to withdraw my Reviewed-by: tag.

I was the one who was totally confused.

Please disregard it.

Mauro, I can't review on 5/11 unless you provide me exact steps to reproduce the font discovery issue you said you have observed under debian at 4/11 of this series. That is, without assuming your other series of build-wrapper.

The build-wrapper should be upper compatible with the current way of running sub-make, without any change in conf.py.

I don't think this is too much to ask. Moving both the goal post and the build script at the same time is the wrong thing to do in my opinion.

Regards,
Akira

#28 lore raw

Em Tue, 19 Aug 2025 08:26:31 +0900
Akira Yokosawa <[email protected]> escreveu:

Quoted 26 lines · Jonathan Corbet
Quoted 13 lines
Quoted 11 lines · Akira Yokosawa

Ah, I have finally understood what 5/11 is trying to do.

Its changelog mainly talks about an issue you saw after adding options to xindy in that same commit, and you added

   \newfontfamily\headingfont{DejaVu Serif}

to resolve it.

Current changelog didn't make sense at all for me.

Quoted 8 lines
Quoted 5 lines

Can you please reword it and make it easier to follow?

With that, feel free to add my

So, if I have managed to understand this conversation, this reword is all we need to get this series merged..?

Well, after some thoughts on the conversation took place on xindy, I think I have to withdraw my Reviewed-by: tag.

Quoted 7 lines

I was the one who was totally confused.

Please disregard it.

Mauro, I can't review on 5/11 unless you provide me exact steps to reproduce the font discovery issue you said you have observed under debian at 4/11 of this series. That is, without assuming your other series of build-wrapper.

See below.

Quoted 2 lines

The build-wrapper should be upper compatible with the current way of running sub-make, without any change in conf.py.

The build-wrapper series doesn't make any changes on conf.py:

	 $ git diff pdfdocs..sphinx-build-wrapper --stat
	 .pylintrc                                |   2 +-
	 Documentation/Makefile                   | 142 +++-------
	 Documentation/sphinx/parallel-wrapper.sh |  33 ---
	 scripts/jobserver-exec                   |  88 ++-----
	 scripts/lib/jobserver.py                 | 149 +++++++++++
	 scripts/sphinx-build-wrapper             | 767 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
	 scripts/sphinx-pre-install               |  14 +-
	 7 files changed, 994 insertions(+), 201 deletions(-)

It also doesn't change the build logic: it just moves it to the script. The only difference was with regards to serializing the build, as I forgot to take it into account when I wrote it. However, I sent already a patch addressing it.

In summary, all the sphinx-build-wrapper series do is:

- move code from Documentation/Makefile into a python script;
- get rid of a shell script;
- split scripts/jobserver-exec into an exec and a library;
- change the output of doc build to produce a summary at the end, returning an error code only if one or more PDF files were not built;
- allow calling the script directly without requiring a makefile;
- add a couple of optional command line parameters to help debugging.

On the other hand, the pdf series diffstat is:

$ git diff netlink_v10..pdfdocs --stat
 Documentation/Makefile     |   4 ++--
 Documentation/conf.py      | 106 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--------------------------------------------
 scripts/sphinx-pre-install |  41 ++++++++++++++++++++++++++++++++---------
 3 files changed, 96 insertions(+), 55 deletions(-)

The Makefile change is actually a fix:

diff --git a/Documentation/Makefile b/Documentation/Makefile index 820f07e0afe6..2ed334971acd 100644
--- a/Documentation/Makefile
+++ b/Documentation/Makefile
@@ -63,2 +63,2 @@ endif #HAVE_LATEXMK
-PAPEROPT_a4 = -D latex_paper_size=a4
-PAPEROPT_letter = -D latex_paper_size=letter
+PAPEROPT_a4 = -D latex_elements.papersize=a4paper
+PAPEROPT_letter = -D latex_elements.papersize=letterpaper

So, the entire series do:

1. Fix paper size define, as latex_paper_size doesn´t exist since Sphinx 1.x. It got replaced by latex_elements.papersize;

2. Broken package dependencies related to PDF builds on several distros inside sphinx-pre-install;

3. It properly construct the name of pdfdocs to be built when SPHINXDIRS is used;

4. It prevents the usage of T1 fontenc fonts, which could be caused by either one of those two reasons:

	a) \sphinxhyphen{}
	b) index build

I got those when checking what packages were required on some distros (Debian, Ubuntu, Mageia, openMandriva, Gentoo).

Depending on the distro, the Sphinx version and the installed packages, the *.tex file ends adding:

	\usepackage[T1]{fontenc}

This is incompatible with xelatex with utf-8 fonts as T1 is not UTF-8 ready.

with (a), \sphinxhyphen{} logic - together with babel, ends requiring pzdr.tfm.

To do the conf.py, I did some changes for it to better align with:

https://www.sphinx-doc.org/en/master/latex.html#module-latex

As the original settings were written for Sphinx 1.4.1 and had very little fixes since then.

The changes are:

1. Added:

	"fontenc": ""

to prevent a possible default of having:

	r'\usepackage[T1]{fontenc}'

2. Place font settings at the right place for more modern Spinx versions. If you look there, font specs shall be under "fontpkg", not under "preamble":

+ 'fontpkg': dedent(r'''

+        \usepackage{fontspec}
+        \setmainfont{DejaVu Serif}
+        \setsansfont{DejaVu Sans}
+        \setmonofont{DejaVu Sans Mono}

- # Additional stuff for the LaTeX preamble.
- "preamble": """

-        % Use some font with UTF-8 support with XeLaTeX
-        \\usepackage{fontspec}
-        \\setsansfont{DejaVu Sans}
-        \\setromanfont{DejaVu Serif}
-        \\setmonofont{DejaVu Sans Mono}

- """,
}

3. Added a fix where some LaTeX modules were trying to use T1 fontenc:

        \newfontfamily\headingfont{DejaVu Serif}

4. I used dedent() to remove weird whitespaces at the beginning inside .tex files - no functional changes - this is just cosmetic at the output;

5. I moved preamble from a separate part of conf.py:

+ "preamble": dedent(r"""
+ % Load kerneldoc specific LaTeX settings
+ \input{kerneldoc-preamble.sty}
+ """),

-# Load kerneldoc specific LaTeX settings
-latex_elements["preamble"] += """
- % Load kerneldoc specific LaTeX settings
- \\input{kerneldoc-preamble.sty}
-"""

6. I solved an issue were xindy was trying to include T1 fontenc. while here, I also added a parameter recommended at sphinx Latex configuration doc:

+ "passoptionstopackages": dedent(r"""

+        \PassOptionsToPackage{svgnames}{xcolor}
+        % Avoid encoding troubles when creating indexes
+        \PassOptionsToPackage{xindy}{language=english,codepage=utf8,noautomatic}

+ """),

(the xcolor came from the documentation)

The above doesn't load xindy; it just ensures that codepage=utf8 is used if it is used;

7. some distros didn't build pdf due to the lack of an index file. So, I added this:

+ 'printindex': r'\footnotesize\raggedright\printindex',

which is also suggested at
https://www.sphinx-doc.org/en/master/latex.html#module-latex

So, basically, the changes at conf.py better align it with Sphinx documentation, and were experimentally tested: I didn't find any regressions on it, and it fixed PDF builds for several distros.

Did you find any regressions?

Quoted 1 line

I don't think this is too much to ask.

Actually, it is... finding a way for you to reproduce it would require me to start from scratch and redo everything again, hoping that I'll do exactly the same way. It took me 2 entire weeks to do it the first time.

I very much prefer dropping patch 05/11 and keep PDF broken than spending 2 weeks redoing it.

Quoted 1 line

Moving both the goal post

What do you mean by "goal post"?

The pdfdocs series is there just to make sure that pdf builds will work on most distros, as currently they don't build on several of them.

Quoted 2 lines

and the build script at the same time is the wrong thing to do in my opinion.

Well, we can postpone the PDF series - or at least the patches you find problematic.

The build script cleanup is important, though as it affects a series I have afterwards addressing some build issues affecting only the media subsystem, which is the only user of kernel-include tag.

Thanks,
Mauro

#29 lore raw

Hi Mauro,

Please calm down.
Apologizes if my wording has annoyed you.

Quoted 2 lines · Mauro Carvalho Chehab

Em Tue, 19 Aug 2025 08:26:31 +0900
Akira Yokosawa <[email protected]> escreveu:

[...]

Quoted 10 lines
Quoted 3 lines

Mauro, I can't review on 5/11 unless you provide me exact steps to reproduce the font discovery issue you said you have observed under debian at 4/11 of this series. That is, without assuming your other series of build-wrapper.

See below.

Quoted 2 lines

The build-wrapper should be upper compatible with the current way of running sub-make, without any change in conf.py.

The build-wrapper series doesn't make any changes on conf.py:

Of course not, I'm well aware of the fact from the cover letter.

[...]

Quoted 8 lines

4. It prevents the usage of T1 fontenc fonts, which could be caused by either one of those two reasons:

	a) \sphinxhyphen{}
	b) index build

I got those when checking what packages were required on some distros (Debian, Ubuntu, Mageia, openMandriva, Gentoo).

I couldn't reproduce it at PATCH 4/11 under a Ubnutu-based container I've been using, ignoring your sphinx-build-warpper series.

I'd really like to see the issue with my eyes on top current way of doc building!

That's all I am asking.

I have no particular interest in the way you are testing all those variety of distros, and have no idea about it.

Please provide steps to reproduce.
I'd like to see a Dockerfile based "FROM ubuntu:latest" as the testing environment.

I suspect you have encountered some issue due to some missing package/ setting in the container container side.

Or does the issue only appear when you run the script directly?

Of course, there always is a chance I might be missing something important.

Regards,
Akira

#30 lore raw

Em Tue, 19 Aug 2025 11:16:29 +0900
Akira Yokosawa <[email protected]> escreveu:

Quoted 29 lines

Hi Mauro,

Please calm down.
Apologizes if my wording has annoyed you.

Quoted 2 lines · Mauro Carvalho Chehab

Em Tue, 19 Aug 2025 08:26:31 +0900
Akira Yokosawa <[email protected]> escreveu:

[...]

Quoted 10 lines
Quoted 3 lines

Mauro, I can't review on 5/11 unless you provide me exact steps to reproduce the font discovery issue you said you have observed under debian at 4/11 of this series. That is, without assuming your other series of build-wrapper.

See below.

Quoted 2 lines

The build-wrapper should be upper compatible with the current way of running sub-make, without any change in conf.py.

The build-wrapper series doesn't make any changes on conf.py:

Of course not, I'm well aware of the fact from the cover letter.

[...]

Quoted 3 lines

4. It prevents the usage of T1 fontenc fonts, which could be caused by either one of those two reasons:

Quoted 8 lines
Quoted 5 lines
	a) \sphinxhyphen{}
	b) index build

I got those when checking what packages were required on some distros (Debian, Ubuntu, Mageia, openMandriva, Gentoo).

I couldn't reproduce it at PATCH 4/11 under a Ubnutu-based container I've been using, ignoring your sphinx-build-warpper series.

I'm assuming you're referring to patch 5/11, e.g.:

ceaa95123364 ("docs: conf.py: fix some troubles for LaTeX output")

Quoted 11 lines

I'd really like to see the issue with my eyes on top current way of doc building!

That's all I am asking.

I have no particular interest in the way you are testing all those variety of distros, and have no idea about it.

Please provide steps to reproduce.
I'd like to see a Dockerfile based "FROM ubuntu:latest" as the testing environment.

Heh, that's why you can't reproduce... you're using a Docker container and a different Ubuntu version than I.

What I did here was to use a lxc container with 25.04, and used a script to pick the exact recommendations given by sphinx-pre-install.

The container was created with:

<script>
sudo lxc-create -n ubuntu-test -t download -- --dist ubuntu --release plucky --arch amd64 sudo mkdir -p /var/lib/lxc/ubuntu-test
sudo sh -c cat > /var/lib/lxc/ubuntu-test/config <<EOF
lxc.arch = x86_64
lxc.pty.max = 1024
lxc.tty.max = 4
lxc.net.0.type = veth
lxc.net.0.link = lxcbr0
lxc.net.0.flags = up
lxc.net.0.hwaddr = 00:16:3e:6f:66:8c
lxc.cap.drop = mac_admin mac_override sys_time sys_module sys_rawio lxc.cgroup.devices.allow = a
lxc.cgroup2.devices.allow = a
lxc.mount.auto = proc sys cgroup
lxc.rootfs.path = /var/lib/lxc/ubuntu-test/rootfs
EOF
</script>

once you get what's needed for make htmldocs work, installing only the dependencies recommended by sphinx-pre-install, you can start trying to reproduce the build issues for pdf.

For the steps below, I installed Sphinx latest using venv:

	$ make SPHINXDIRS=peci pdfdocs
	...
	This is XeTeX, Version 3.141592653-2.6-0.999996 (TeX Live 2025/dev/Debian) (preloaded format=xelatex)
	entering extended mode
	Latexmk: Getting log file 'peci.log'
	Latexmk: Examining 'peci.fls'
	Latexmk: Examining 'peci.log'
	Latexmk: Missing input file 'tgtermes.sty' (or dependence on it) from following:
	  ! LaTeX Error: File `tgtermes.sty' not found.
	Latexmk: Log file says no output from latex
	Latexmk: For rule 'xelatex', no output was made
	Latexmk: Errors, so I did not complete making targets
	Collected error summary (may duplicate other messages):
	  xelatex: Command for 'xelatex' gave return code 1
	      Refer to 'peci.log' and/or above output for details

Latexmk: Sometimes, the -f option can be used to get latexmk
to try to force complete processing.
But normally, you will need to correct the file(s) that caused the error, and then rerun latexmk.
In some cases, it is best to clean out generated files before rerunning latexmk after you've corrected the files.
make[3]: *** [Makefile:29: peci.pdf] Error 12
make[2]: *** [Documentation/Makefile:148: pdfdocs] Error 1 make[1]: *** [/root/Makefile:1806: pdfdocs] Error 2
make: *** [Makefile:248: __sub-make] Error 2

Fix the broken font dependencies require installing other packages:

	# apt install tex-gyre texlive-fonts-recommended texlive-lang-chinese
	texlive-lang-chinese is already the newest version (2024.20250309-1).
	Installing:
	  tex-gyre  texlive-fonts-recommended

Installing dependencies:
fonts-texgyre fonts-texgyre-math

As described at sphinx-pre-install patch:

commit a888d353ac1eb0d558fda5482c6955d6c4a29f23
Author: Mauro Carvalho Chehab <[email protected]>
Date: Mon Jul 28 15:54:09 2025 +0200

scripts: sphinx-pre-install: fix PDF build issues on Ubuntu

PDF output with current Debian-based distros require other packages for it to work. The main one is pzdr.tfm. Without that, \sphinxhyphen{} won't work, affecting multiple docs.

For CJK, tex-gyre is required.

Add the missing packages to the list.

Now, here's the thing: to get the above dependencies, I played with installing/uninstalling multiple packages, until I discovered where each font dependency was, and where CJK fonts were placed.

Still, the above is not enough:

	$ make cleandocs; LANG=C LC_ALL=C make SPHINXDIRS=peci pdfdocs
	...
	entering extended mode
	Latexmk: Getting log file 'peci.log'
	Latexmk: Examining 'peci.fls'
	Latexmk: Examining 'peci.log'
	Latexmk: Index file 'peci.idx' was written
	Latexmk: References changed.
	Latexmk: Missing input file 'peci.toc' (or dependence on it) from following:
	  No file peci.toc.
	Latexmk: Missing input file 'peci.ind' (or dependence on it) from following:
	  No file peci.ind.
	Latexmk: References changed.
	Latexmk: References changed.
	Latexmk: Log file says output to 'peci.xdv'
	Have index file 'peci.idx', peci.ind peci
	Latexmk: Errors, so I did not complete making targets
	Collected error summary (may duplicate other messages):
	  xelatex: Command for 'xelatex' gave return code 1
      Refer to 'peci.log' and/or above output for details

Latexmk: Sometimes, the -f option can be used to get latexmk
to try to force complete processing.
But normally, you will need to correct the file(s) that caused the error, and then rerun latexmk.
In some cases, it is best to clean out generated files before rerunning latexmk after you've corrected the files.
make[3]: *** [Makefile:29: peci.pdf] Error 12
make[2]: *** [Documentation/Makefile:148: pdfdocs] Error 1 make[1]: *** [/root/Makefile:1806: pdfdocs] Error 2
make: *** [Makefile:248: __sub-make] Error 2

$ ls Documentation/output/peci/latex/|grep pdf <none>

PS.: such error is intermitent: re-creating containers sometimes fix the issues; sometimes not. It sounds to be that this is due to some race condition somewhere.

Also, if you look at the *.tex output, you'll see it is messing with fonts:

	# grep usepackage Documentation/output/peci/latex/peci.tex 
	\usepackage{cmap}
	\usepackage[T1]{fontenc}
	\usepackage{amsmath,amssymb,amstext}
	\usepackage{babel}
	\usepackage{tgtermes}
	\usepackage{tgheros}
	\usepackage[Bjarne]{fncychap}
	\usepackage[,maxlistdepth=10]{sphinx}
	\usepackage{geometry}
	\usepackage{setspace}
	\usepackage{hyperref}
	\usepackage{hypcap}% it must be loaded after hyperref.
	\usepackage{sphinxmessages}
	        \usepackage{fontspec}

e.g.:

- The tex file is trying to use T1 fontenc and fontspec;

- The fontspec usage came from conf.py preamble, which is not indented well:

	# grep -A7 fontspec Documentation/output/peci/latex/peci.tex
	        \usepackage{fontspec}
	        \setsansfont{DejaVu Sans}
	        \setromanfont{DejaVu Serif}
	        \setmonofont{DejaVu Sans Mono}
	        % Load kerneldoc specific LaTeX settings
	        \input{kerneldoc-preamble.sty}

On several of my attempts, I got those errors:

Package: fontenc 2021/04/29 v2.0v Standard LaTeX package
LaTeX Font Info: Trying to load font information for T1+lmr on input line 11
6.
LaTeX Font Info: No file T1lmr.fd. on input line 116.

LaTeX Font Warning: Font shape `T1/lmr/m/n' undefined
(Font) using `T1/lmr/m/n' instead on input line 116.

! Corrupted NFSS tables.
wrong@fontshape ...message {Corrupted NFSS tables}
error@fontshape else let f...
l.116 ...\familydefault\seriesdefault\shapedefault

If you search for it, you would get references like:
https://tex.stackexchange.com/questions/740050/corrupted-nfss-tables

explaining that using T1 together with fontenc is a very bad idea, recommending to use instead:

	\usepackage{fontspec}
	\newfontfamily<sometthing>

and not use T1 fontenc.

Unfortunately, I was not able to reproduce this exact error anymore, at least on Ubuntu. Perhaps I got this one on Gentoo or on some other distro, but I can't remember anymore how to reproduce this specific error message.

-

Yet, using my today's container, this specific scenario can be fixed by moving the font config data from preamble to "fontenc":

<patch>
+from textwrap import dedent
+
# If extensions (or modules to document with autodoc) are in another directory,

 # add these directories to sys.path here. If the directory is relative to the
 # documentation root, use os.path.abspath to make it absolute, like shown here.
@@ -441,20 +443,18 @@ latex_elements = {
     # For CJK One-half spacing, need to be in front of hyperref
     "extrapackages": r"\usepackage{setspace}",
     # Additional stuff for the LaTeX preamble.
-    "preamble": """
+    "fontenc": dedent("""
         % Use some font with UTF-8 support with XeLaTeX
         \\usepackage{fontspec}
         \\setsansfont{DejaVu Sans}
         \\setromanfont{DejaVu Serif}
         \\setmonofont{DejaVu Sans Mono}
-    """,
-}
-
-# Load kerneldoc specific LaTeX settings
-latex_elements["preamble"] += """
+    """),
+    "preamble": dedent("""
         % Load kerneldoc specific LaTeX settings
         \\input{kerneldoc-preamble.sty}
-"""
+    """)
+}
</patch> 

which is one of the main changes I made. At the actual change, I opted to use raw strings, to avoid "\\" e.g.:

	"fontenc": dedent(r"""
             % Use some font with UTF-8 support with XeLaTeX
             \usepackage{fontspec}
             \setsansfont{DejaVu Sans}
             \setromanfont{DejaVu Serif}
             \setmonofont{DejaVu Sans Mono}
	"""),

With that, we have now:

	# grep usepackage Documentation/output/peci/latex/*.tex
	\usepackage{cmap}
	\usepackage{fontspec}
	\usepackage{amsmath,amssymb,amstext}
	\usepackage{babel}
	\usepackage{tgtermes}
	\usepackage{tgheros}
	\usepackage[Bjarne]{fncychap}
	\usepackage[,maxlistdepth=10]{sphinx}
	\usepackage{geometry}
	\usepackage{setspace}
	\usepackage{hyperref}
	\usepackage{hypcap}% it must be loaded after hyperref.
	\usepackage{sphinxmessages}

However, on other tests, including other distros, I found that this is not enough, because:

1) the *.ind creation may use xindy on some distros and xindy could try to use T1 fontenc. So, I had to add this line:

	\PassOptionsToPackage{xindy}{language=english,codepage=utf8,noautomatic}

to ensure that, if xindy is used, it will get codepage=utf8.

2) there were some other corner cases that required to add

	\newfontfamily\headingfont{DejaVu Serif}

Again related to T1 fontenc.

Thanks,
Mauro

#31 lore raw
Quoted 2 lines · Mauro Carvalho Chehab

Em Tue, 19 Aug 2025 11:16:29 +0900
Akira Yokosawa <[email protected]> escreveu:

[...]

Quoted 17 lines
Quoted 8 lines

That's all I am asking.

I have no particular interest in the way you are testing all those variety of distros, and have no idea about it.

Please provide steps to reproduce.
I'd like to see a Dockerfile based "FROM ubuntu:latest" as the testing environment.

Heh, that's why you can't reproduce... you're using a Docker container and a different Ubuntu version than I.

What I did here was to use a lxc container with 25.04, and used a script to pick the exact recommendations given by sphinx-pre-install.

The container was created with:

[...]

Quoted 3 lines

once you get what's needed for make htmldocs work, installing only the dependencies recommended by sphinx-pre-install, you can start trying to reproduce the build issues for pdf.

I've just built a container "FROM ubuntu:plucky", which has inkscape instead of imagemagick + rsvg-convert.
I don't see any font issue at 4/11 of this series under the container (I'm using podman).

Furthermore, after I applied both of your series and the change for parallel runs of xelatex/latexmk and reverting the 5/11, I don't see any issue.

Which strongly suggests 5/11 is not fixing any realistic issues.

FWIW, Dockerfile I'm using for building the container is derived from the one I've been taking care of since 2021 as a LaTeX advisor to perfbook.

If you are interested, here is its repo of Paul:

git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/perfbook.git

You might be interested in seeing docker/Dockerfile.

I think there is something you are missing in the boot strapping phases of building your container.

Just my wild guess.

Thanks,
Akira

#32 lore raw

Em Wed, 20 Aug 2025 08:54:52 +0900
Akira Yokosawa <[email protected]> escreveu:

Quoted 24 lines · Mauro Carvalho Chehab
Quoted 2 lines

Em Tue, 19 Aug 2025 11:16:29 +0900
Akira Yokosawa <[email protected]> escreveu:

[...]

Quoted 9 lines
Quoted 8 lines

That's all I am asking.

I have no particular interest in the way you are testing all those variety of distros, and have no idea about it.

Please provide steps to reproduce.
I'd like to see a Dockerfile based "FROM ubuntu:latest" as the testing environment.

Quoted 8 lines

Heh, that's why you can't reproduce... you're using a Docker container and a different Ubuntu version than I.

What I did here was to use a lxc container with 25.04, and used a script to pick the exact recommendations given by sphinx-pre-install.

The container was created with:

Quoted 8 lines

[...]

Quoted 3 lines

once you get what's needed for make htmldocs work, installing only the dependencies recommended by sphinx-pre-install, you can start trying to reproduce the build issues for pdf.

I've just built a container "FROM ubuntu:plucky", which has inkscape instead of imagemagick + rsvg-convert.

I don't think that inkscape x imagemagick/rsvg-convert itself has anyhting to do with the problems I detected, as they're related to font issues (still, I got an issue on one of my builds on kfigure write file: encoding is missing at open, which may cause errors).

Yet, installing imagemagick + rsvg-convert might affect some other packages that LaTeX would use.

Quoted 14 lines

I don't see any font issue at 4/11 of this series under the container (I'm using podman).

Furthermore, after I applied both of your series and the change for parallel runs of xelatex/latexmk and reverting the 5/11, I don't see any issue.

Which strongly suggests 5/11 is not fixing any realistic issues.

FWIW, Dockerfile I'm using for building the container is derived from the one I've been taking care of since 2021 as a LaTeX advisor to perfbook.

If you are interested, here is its repo of Paul:

Quoted 8 lines

git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/perfbook.git

You might be interested in seeing docker/Dockerfile.

I think there is something you are missing in the boot strapping phases of building your container.

Just my wild guess.

Just because you can't reproduce the issue, it doesn't mean it doesn't exist. LaTeX builds are complex having it has lots of dependencies, and may be affected by installed fonts, LC_* and LANG env vars, etc.

It should be noticed that a Docker container doesn't have the same packages installed when compared with a LXC one.

-

IMO, instead of trying to reproduce the bug that was already fixed by my patches, it would be a way more important if you can double check if the changes introduce regressions.

I'm planning to submit a new version of this series, with this patch split into 3 patches, with a better description, plus a couple of other fixes. If you notice a regression caused by any of the patches, please let us know, preferably pointing the the exact patch that broke it.

Thanks,
Mauro

#33 lore raw

Hi,

Quoted 4 lines · Mauro Carvalho Chehab

Em Wed, 20 Aug 2025 08:54:52 +0900
Akira Yokosawa <[email protected]> escreveu:

Quoted 1 line · Mauro Carvalho Chehab

[...]

Quoted 7 lines
Quoted 2 lines

I've just built a container "FROM ubuntu:plucky", which has inkscape instead of imagemagick + rsvg-convert.

I don't think that inkscape x imagemagick/rsvg-convert itself has anyhting to do with the problems I detected, as they're related to font issues (still, I got an issue on one of my builds on kfigure write file: encoding is missing at open, which may cause errors).

OK, so you have spent a lot of time to paper over the ImageMagick issue used as an SVG --> PDF converter.

I have simply given up using ImageMagick and been using inkscape instead.

I can reliably reproduce the warnings and build errors (see below) without inkscape installed, instead with imagemagick + rsvg-convert installed, under a ubuntu:plucky based container.

When I run: "make cleandocs; make SPHINXDIRS=gpu latexdocs",

[**NOTE**] SPHINXDIRS=peci is not affected by this issue!

kfigure.py emits warnings like this:

-----------------------------------------------------------------------------------
WARNING: Error #1 when calling: /usr/bin/convert /linux/Documentation/gpu/amdgpu/pipe_and_queue_abstraction.svg /linux/Documentation/output/gpu/latex/pipe_and_queue_abstraction.pdf
WARNING: Warning msg from convert(1): convert: unrecognized color `context-stroke' @ warning/color.c/GetColorCompliance/1064.
convert: non-conforming drawing primitive definition `fill' @ error/draw.c/RenderMVGContent/4548.
-----------------------------------------------------------------------------------

Nevertheless, "make SPHINXDIRS=gpu pdfdocs" continues building gpu.pdf, but ends up in this error in the middle of xelatex run.

-----------------------------------------------------------------------------------
------------
Run number 1 of rule 'xelatex'
------------
------------
Running 'xelatex --no-pdf -interaction=batchmode -no-shell-escape -no-pdf -recorder "gpu.tex"'
------------
This is XeTeX, Version 3.141592653-2.6-0.999996 (TeX Live 2025/dev/Debian) (preloaded format=xelatex) entering extended mode
Latexmk: Getting log file 'gpu.log'
Latexmk: Examining 'gpu.fls'
Latexmk: Examining 'gpu.log'
Latexmk: Index file 'gpu.idx' was written
Latexmk: References changed.
Latexmk: Missing input file 'gpu.toc' (or dependence on it) from following:
No file gpu.toc.
Latexmk: Missing input file 'gpu.ind' (or dependence on it) from following:
No file gpu.ind.
Latexmk: References changed.
Latexmk: References changed.
Latexmk: Log file says output to 'gpu.xdv'
Have index file 'gpu.idx', gpu.ind gpu
Latexmk: Errors, so I did not complete making targets
Collected error summary (may duplicate other messages):
xelatex: Command for 'xelatex' gave return code 1
Refer to 'gpu.log' and/or above output for details

Latexmk: Sometimes, the -f option can be used to get latexmk
to try to force complete processing.
But normally, you will need to correct the file(s) that caused the error, and then rerun latexmk.
In some cases, it is best to clean out generated files before rerunning latexmk after you've corrected the files.
make[3]: *** [Makefile:29: gpu.pdf] Error 12
make[2]: *** [Documentation/Makefile:148: pdfdocs] Error 1 make[1]: *** [/linux/Makefile:1806: pdfdocs] Error 2
make: *** [Makefile:248: __sub-make] Error 2
-----------------------------------------------------------------------------------

I think this is (mostly) the same as the issue you have been trying hard to track down.

Lastly, I'm afraid but I have to tell you that I see the same error on my test branch which has both of your series applied.

From "./scripts/sphinx-build-wrapper pdfdocs --sphinxdirs gpu":

-----------------------------------------------------------------------------------
------------
Run number 1 of rule 'xelatex'
------------
------------
Running 'xelatex --no-pdf -no-pdf -interaction=batchmode -no-shell-escape -recorder "/linux/Documentation/output/gpu/latex/gpu.tex"'
------------
This is XeTeX, Version 3.141592653-2.6-0.999996 (TeX Live 2025/dev/Debian) (preloaded format=xelatex)
entering extended mode
Latexmk: Getting log file 'gpu.log'
Latexmk: Examining 'gpu.fls'
Latexmk: Examining 'gpu.log'
Latexmk: Index file 'gpu.idx' was written
Latexmk: References changed.
Latexmk: Missing input file 'gpu.toc' (or dependence on it) from following:
No file gpu.toc.
Latexmk: Missing input file 'gpu.ind' (or dependence on it) from following:
No file gpu.ind.
Latexmk: References changed.
Latexmk: References changed.
Latexmk: Log file says output to 'gpu.xdv'
Have index file 'gpu.idx', gpu.ind gpu
Latexmk: Errors, so I did not complete making targets
Collected error summary (may duplicate other messages):
xelatex: Command for 'xelatex' gave return code 1
Refer to 'gpu.log' and/or above output for details

Latexmk: Sometimes, the -f option can be used to get latexmk
to try to force complete processing.
But normally, you will need to correct the file(s) that caused the error, and then rerun latexmk.
In some cases, it is best to clean out generated files before rerunning latexmk after you've corrected the files.

Summary
=======
gpu: FAILED

PDF build failed: not all PDF files were created.
-----------------------------------------------------------------------------------

Please test yourself with SPHINXDIRS=gpu and see what happens under your test environment.

Thanks,
Akira

#34 lore raw
Quoted 13 lines · Akira Yokosawa

Hi,

Quoted 4 lines · Mauro Carvalho Chehab

Em Wed, 20 Aug 2025 08:54:52 +0900
Akira Yokosawa <[email protected]> escreveu:

Quoted 1 line · Mauro Carvalho Chehab

[...]

Quoted 3 lines
Quoted 2 lines

I've just built a container "FROM ubuntu:plucky", which has inkscape instead of imagemagick + rsvg-convert.

Quoted 7 lines
Quoted 4 lines

I don't think that inkscape x imagemagick/rsvg-convert itself has anyhting to do with the problems I detected, as they're related to font issues (still, I got an issue on one of my builds on kfigure write file: encoding is missing at open, which may cause errors).

OK, so you have spent a lot of time to paper over the ImageMagick issue used as an SVG --> PDF converter.

Why are you insisting with this? Again:

This series doesn't try to address anything that would be caused by either imagemagick/rsvg-convert - or inkscape.

It only address:
- wrong dependencies from the existing ones - whatever they are;
- non-UTF-8 fonts inside the produced *.tex files and a couple of other issues at conf.py - none of them related to images.

Quoted 7 lines

I have simply given up using ImageMagick and been using inkscape instead.

I can reliably reproduce the warnings and build errors (see below) without inkscape installed, instead with imagemagick + rsvg-convert installed, under a ubuntu:plucky based container.

Quoted 5 lines

When I run: "make cleandocs; make SPHINXDIRS=gpu latexdocs",

[**NOTE**] SPHINXDIRS=peci is not affected by this issue!

kfigure.py emits warnings like this:

I did got kfigure.py issues that can affect both inkscape and imagemagic, but those are **NOT** in this series:

- the first issue is that python tries to write PDF output as strings, but Python 3.x can crash because strings have encodings. The default ascii encoding crashes with chars > 127 (and probably when there is a "\0" at the code);

- the second issue is that two files use ForeignObject, which is not properly supported by inkscape or ImageMagick. Still both seems to be working fine (I only tried to do conversions by hand today).

I believe that we need to add kfigure.py on our TODO list to make it more python 3.x friendly.

Again: this is out of the scope of this series.

               ================
Quoted 48 lines

-----------------------------------------------------------------------------------
WARNING: Error #1 when calling: /usr/bin/convert /linux/Documentation/gpu/amdgpu/pipe_and_queue_abstraction.svg /linux/Documentation/output/gpu/latex/pipe_and_queue_abstraction.pdf
WARNING: Warning msg from convert(1): convert: unrecognized color `context-stroke' @ warning/color.c/GetColorCompliance/1064.
convert: non-conforming drawing primitive definition `fill' @ error/draw.c/RenderMVGContent/4548.
-----------------------------------------------------------------------------------

Nevertheless, "make SPHINXDIRS=gpu pdfdocs" continues building gpu.pdf, but ends up in this error in the middle of xelatex run.

-----------------------------------------------------------------------------------
------------
Run number 1 of rule 'xelatex'
------------
------------
Running 'xelatex --no-pdf -interaction=batchmode -no-shell-escape -no-pdf -recorder "gpu.tex"'
------------
This is XeTeX, Version 3.141592653-2.6-0.999996 (TeX Live 2025/dev/Debian) (preloaded format=xelatex) entering extended mode
Latexmk: Getting log file 'gpu.log'
Latexmk: Examining 'gpu.fls'
Latexmk: Examining 'gpu.log'
Latexmk: Index file 'gpu.idx' was written
Latexmk: References changed.
Latexmk: Missing input file 'gpu.toc' (or dependence on it) from following:
No file gpu.toc.
Latexmk: Missing input file 'gpu.ind' (or dependence on it) from following:
No file gpu.ind.
Latexmk: References changed.
Latexmk: References changed.
Latexmk: Log file says output to 'gpu.xdv'
Have index file 'gpu.idx', gpu.ind gpu
Latexmk: Errors, so I did not complete making targets
Collected error summary (may duplicate other messages):
xelatex: Command for 'xelatex' gave return code 1
Refer to 'gpu.log' and/or above output for details

Latexmk: Sometimes, the -f option can be used to get latexmk
to try to force complete processing.
But normally, you will need to correct the file(s) that caused the error, and then rerun latexmk.
In some cases, it is best to clean out generated files before rerunning latexmk after you've corrected the files.
make[3]: *** [Makefile:29: gpu.pdf] Error 12
make[2]: *** [Documentation/Makefile:148: pdfdocs] Error 1 make[1]: *** [/linux/Makefile:1806: pdfdocs] Error 2
make: *** [Makefile:248: __sub-make] Error 2
-----------------------------------------------------------------------------------

Quoted 2 lines

I think this is (mostly) the same as the issue you have been trying hard to track down.

No. Up to today(*), I was simply ignoring any warnings/errors related to kfigure.py.

(*) earlier today I submitted exactly one patch related to it:

	https://lore.kernel.org/linux-doc/df1602df0da3a6254d58a782654e7f2e60512dc8.1755680997.git.mchehab+huawei@kernel.org/

Even such patch is unrelated to Inkscape x ImageMagick. It is meant to fix troubles during SVG/dot read and during PDF output writes.

-

As I've been replying over and over and over:

The issue was with [T1]{fontenc} added at the *.tex files and/or the usage of other non-UTF-8 fonts.

That happens on very simple files. There are also font issues on some distros affecting CJK related fonts due to missing packages and such.

What I pointed is:

I Don't know how you can setup an environment identical to mine to reproduce the font issues I got.

-

If you want a more comprehensive answer:

LaTeX is highly dependent lots of packages, including fonts. The reason why you can't reproduce the font issues with Docker (I wasn't able to reproduce with Docker here as well) is probably due to either packaging differences between the two containers, due to different environment technologies or even due to the way Docker and LXC handles OS virtualization.

Docker, for instance, doesn't have systemd running on it, which could affect install logic at packages that could be trying do something via systemd. I guess it also doesn't implement cgroups. It also requires to download locales package to setup locales (such package is already on lxc, although not configured).

As the issue is related to fonts, different defaults with regards to the fonts already installed at the containers could be the root cause.

Also, installing any package (you name it) that might have a direct or indirect dependency to a font can affect the bug reproduction.

Installing inkscape, for instance, would directly require:

<snip>

# apt-cache depends inkscape
inkscape
  Depends: librsvg2-common
  Depends: <python3:any>
    python3
  Depends: lib2geom1.2.0t64
  Depends: libatkmm-1.6-1v5
  Depends: libboost-filesystem1.83.0
  Depends: libc6
  Depends: libcairo-gobject2
  Depends: libcairo2
  Depends: libcairomm-1.0-1v5
  Depends: libcdr-0.1-1
  Depends: libfontconfig1
  Depends: libfreetype6
  Depends: libgc1
  Depends: libgcc-s1
  Depends: libgdk-pixbuf-2.0-0
  Depends: libglib2.0-0t64
  Depends: libglibmm-2.4-1t64
  Depends: libgomp1
  Depends: libgsl28
  Depends: libgspell-1-3
  Depends: libgtk-3-0t64
  Depends: libgtkmm-3.0-1t64
  Depends: libharfbuzz0b
  Depends: libjpeg8
  Depends: liblcms2-2
  Depends: libpango-1.0-0
  Depends: libpangocairo-1.0-0
  Depends: libpangoft2-1.0-0
  Depends: libpangomm-1.4-1v5
  Depends: libpng16-16t64
  Depends: libpoppler-glib8t64
  Depends: libpoppler147
  Depends: libpotrace0
  Depends: libreadline8t64
  Depends: librevenge-0.0-0
  Depends: libsigc++-2.0-0v5
  Depends: libsoup-2.4-1
  Depends: libstdc++6
  Depends: libvisio-0.1-1
  Depends: libwpg-0.3-3
  Depends: libx11-6
  Depends: libxml2
  Depends: libxslt1.1
  Depends: zlib1g
  Recommends: aspell
  Recommends: fig2dev
  Recommends: imagemagick
    graphicsmagick-imagemagick-compat
    imagemagick-7.q16
  Recommends: libimage-magick-perl
  Recommends: libwmf-bin
  Recommends: python3-cssselect
  Recommends: python3-lxml
  Recommends: python3-numpy
  Recommends: python3-scour
  Suggests: dia
  Suggests: inkscape-tutorials
  Suggests: libsvg-perl
  Suggests: pstoedit
  Suggests: python3-packaging
  Suggests: <python3-uniconvertor>
  Suggests: ruby
</snip>

No fonts listed there at the direct dependencies, so in principle, installing or not Inkscape or imagemagik won't make any difference at the installed fonts, or on installed texlive packages.

Thanks,
Mauro

#35 lore raw

Hi,

Commenting on your observation quoted below.

On Wed, 20 Aug 2025 18:48:10 +0200, Mauro Carvalho Chehab wrote:
[...]

Quoted 9 lines

If you want a more comprehensive answer:

LaTeX is highly dependent lots of packages, including fonts. The reason why you can't reproduce the font issues with Docker (I wasn't able to reproduce with Docker here as well) is probably due to either packaging differences between the two containers, due to different environment technologies or even due to the way Docker and LXC handles OS virtualization.

I'm not saying there is no difference between Docker and LXC.

Can you fill in ???? cells in the table below ?
Docker column is my observation of "FROM ubuntu:plucky" podman runs.

"make SPHINXDIRS=gpu pdfdocs" under Ubuntu Plucky

    --------------- --------- ----------
    SVG --> PDF     Docker    LXC
    --------------- --------- ----------
    imagemagick     FAIL      FAIL
    inkscape        SUCCESS   ????
    imagemagick [*] FAIL      ????
    --------------- --------- ----------

[*] after installing both inkscape and imagemagick, remove inkscape
with all its dependencies kept.

Do you see any difference between Docker and LXC columns in the table? I'm all ears.

Regards,
Akira

#36 lore raw

Hi,

Let me do a quick follow up.
I messed up the table.

Quoted 17 lines · Akira Yokosawa

Hi,

Commenting on your observation quoted below.

On Wed, 20 Aug 2025 18:48:10 +0200, Mauro Carvalho Chehab wrote:
[...]

Quoted 9 lines

If you want a more comprehensive answer:

LaTeX is highly dependent lots of packages, including fonts. The reason why you can't reproduce the font issues with Docker (I wasn't able to reproduce with Docker here as well) is probably due to either packaging differences between the two containers, due to different environment technologies or even due to the way Docker and LXC handles OS virtualization.

Quoted 3 lines

I'm not saying there is no difference between Docker and LXC.

Can you fill in ???? cells in the table below ?

I mean with this series applied

Quoted 4 lines

Docker column is my observation of "FROM ubuntu:plucky" podman runs.

"make SPHINXDIRS=gpu pdfdocs" under Ubuntu Plucky

I meant:

     --------------- --------- ----------
     SVG --> PDF     Docker    LXC
     --------------- --------- ----------
     imagemagick     FAIL      ????
     inkscape        SUCCESS   ????
     imagemagick [*] FAIL      ????
     --------------- --------- ----------
Quoted 17 lines
    --------------- --------- ----------
    SVG --> PDF     Docker    LXC
    --------------- --------- ----------
    imagemagick     FAIL      FAIL
    inkscape        SUCCESS   ????
    imagemagick [*] FAIL      ????
    --------------- --------- ----------

[*] after installing both inkscape and imagemagick, remove inkscape
with all its dependencies kept.

Do you see any difference between Docker and LXC columns in the table? I'm all ears.

Regards,
Akira

#37 lore raw

Em Thu, 21 Aug 2025 09:09:41 +0900
Akira Yokosawa <[email protected]> escreveu:

Quoted 35 lines

Hi,

Let me do a quick follow up.
I messed up the table.

Quoted 17 lines · Akira Yokosawa

Hi,

Commenting on your observation quoted below.

On Wed, 20 Aug 2025 18:48:10 +0200, Mauro Carvalho Chehab wrote:
[...]

Quoted 9 lines

If you want a more comprehensive answer:

LaTeX is highly dependent lots of packages, including fonts. The reason why you can't reproduce the font issues with Docker (I wasn't able to reproduce with Docker here as well) is probably due to either packaging differences between the two containers, due to different environment technologies or even due to the way Docker and LXC handles OS virtualization.

Quoted 3 lines

I'm not saying there is no difference between Docker and LXC.

Can you fill in ???? cells in the table below ?

I mean with this series applied

Quoted 4 lines

Docker column is my observation of "FROM ubuntu:plucky" podman runs.

"make SPHINXDIRS=gpu pdfdocs" under Ubuntu Plucky

I meant:

Quoted 7 lines
     --------------- --------- ----------
     SVG --> PDF     Docker    LXC
     --------------- --------- ----------
     imagemagick     FAIL      ????
     inkscape        SUCCESS   ????
     imagemagick [*] FAIL      ????
     --------------- --------- ----------

This is after my series, with doesn't deal with imagemagick/inkscape, it only fixes broken texlive dependencies and fix font handling:

# (dpkg -l |grep -i magick; dpkg -l |grep inkscape)|grep ii

ii  imagemagick                   8:7.1.1.43+dfsg1-1                    amd64        image manipulation programs -- binaries
ii  imagemagick-7-common          8:7.1.1.43+dfsg1-1                    all          image manipulation programs -- infrastructure
ii  imagemagick-7.q16             8:7.1.1.43+dfsg1-1                    amd64        image manipulation programs -- quantum depth Q16
ii  libmagickcore-7.q16-10:amd64  8:7.1.1.43+dfsg1-1                    amd64        low-level image manipulation library -- quantum depth Q16
ii  libmagickwand-7.q16-10:amd64  8:7.1.1.43+dfsg1-1                    amd64        image manipulation library -- quantum depth Q16
# make SPHINXDIRS=gpu pdfdocs

Summary
=======
gpu: gpu/pdf/gpu.pdf

All PDF files were built.

# rm -rf Documentation/output/gpu/*
# (dpkg -l |grep -i magick; dpkg -l |grep inkscape)|grep ii
ii  imagemagick                     8:7.1.1.43+dfsg1-1                    amd64        image manipulation programs -- binaries
ii  imagemagick-7-common            8:7.1.1.43+dfsg1-1                    all          image manipulation programs -- infrastructure
ii  imagemagick-7.q16               8:7.1.1.43+dfsg1-1                    amd64        image manipulation programs -- quantum depth Q16
ii  libimage-magick-perl            8:7.1.1.43+dfsg1-1                    all          Perl interface to the ImageMagick graphics routines
ii  libimage-magick-q16-perl        8:7.1.1.43+dfsg1-1                    amd64        Perl interface to the ImageMagick graphics routines -- Q16 version
ii  libmagickcore-7.q16-10:amd64    8:7.1.1.43+dfsg1-1                    amd64        low-level image manipulation library -- quantum depth Q16
ii  libmagickwand-7.q16-10:amd64    8:7.1.1.43+dfsg1-1                    amd64        image manipulation library -- quantum depth Q16
ii  inkscape                   
# rm -rf Documentation/output/gpu/*
# (dpkg -l |grep -i magick; dpkg -l |grep inkscape)|grep ii
ii  inkscape                        1.2.2-8build1                         amd64        vector-based drawing program
# make SPHINXDIRS=gpu pdfdocs

Summary
=======
gpu: gpu/pdf/gpu.pdf

Quoted 8 lines
Quoted 8 lines
    --------------- --------- ----------
    SVG --> PDF     Docker    LXC
    --------------- --------- ----------
    imagemagick     FAIL      FAIL
    inkscape        SUCCESS   ????
    imagemagick [*] FAIL      ????
    --------------- --------- ----------
Quoted 5 lines
Quoted 5 lines

[*] after installing both inkscape and imagemagick, remove inkscape
with all its dependencies kept.

Do you see any difference between Docker and LXC columns in the table? I'm all ears.

Yes. After having texlive dependencies fixed, and addressing the broken conf.py file that is not aligned with modern Sphinx practices, it passed on all three scenarios.

Please notice that addressing image was not the intent of this series.

The goal was *just* to fix texlive dependencies and fix text font mapping that were causing troubles on Ubuntu and on other distros.

Thanks,
Mauro

#38 lore raw

Em Thu, 21 Aug 2025 09:52:21 +0200
Mauro Carvalho Chehab <[email protected]> escreveu:

Quoted 103 lines

Em Thu, 21 Aug 2025 09:09:41 +0900
Akira Yokosawa <[email protected]> escreveu:

Quoted 35 lines

Hi,

Let me do a quick follow up.
I messed up the table.

Quoted 17 lines · Akira Yokosawa

Hi,

Commenting on your observation quoted below.

On Wed, 20 Aug 2025 18:48:10 +0200, Mauro Carvalho Chehab wrote:
[...]

Quoted 9 lines

If you want a more comprehensive answer:

LaTeX is highly dependent lots of packages, including fonts. The reason why you can't reproduce the font issues with Docker (I wasn't able to reproduce with Docker here as well) is probably due to either packaging differences between the two containers, due to different environment technologies or even due to the way Docker and LXC handles OS virtualization.

Quoted 3 lines

I'm not saying there is no difference between Docker and LXC.

Can you fill in ???? cells in the table below ?

I mean with this series applied

Quoted 4 lines

Docker column is my observation of "FROM ubuntu:plucky" podman runs.

"make SPHINXDIRS=gpu pdfdocs" under Ubuntu Plucky

I meant:

Quoted 7 lines
     --------------- --------- ----------
     SVG --> PDF     Docker    LXC
     --------------- --------- ----------
     imagemagick     FAIL      ????
     inkscape        SUCCESS   ????
     imagemagick [*] FAIL      ????
     --------------- --------- ----------

This is after my series, with doesn't deal with imagemagick/inkscape, it only fixes broken texlive dependencies and fix font handling:

# (dpkg -l |grep -i magick; dpkg -l |grep inkscape)|grep ii

ii  imagemagick                   8:7.1.1.43+dfsg1-1                    amd64        image manipulation programs -- binaries
ii  imagemagick-7-common          8:7.1.1.43+dfsg1-1                    all          image manipulation programs -- infrastructure
ii  imagemagick-7.q16             8:7.1.1.43+dfsg1-1                    amd64        image manipulation programs -- quantum depth Q16
ii  libmagickcore-7.q16-10:amd64  8:7.1.1.43+dfsg1-1                    amd64        low-level image manipulation library -- quantum depth Q16
ii  libmagickwand-7.q16-10:amd64  8:7.1.1.43+dfsg1-1                    amd64        image manipulation library -- quantum depth Q16
# make SPHINXDIRS=gpu pdfdocs

Summary
=======
gpu: gpu/pdf/gpu.pdf

All PDF files were built.

# rm -rf Documentation/output/gpu/*
# (dpkg -l |grep -i magick; dpkg -l |grep inkscape)|grep ii
ii  imagemagick                     8:7.1.1.43+dfsg1-1                    amd64        image manipulation programs -- binaries
ii  imagemagick-7-common            8:7.1.1.43+dfsg1-1                    all          image manipulation programs -- infrastructure
ii  imagemagick-7.q16               8:7.1.1.43+dfsg1-1                    amd64        image manipulation programs -- quantum depth Q16
ii  libimage-magick-perl            8:7.1.1.43+dfsg1-1                    all          Perl interface to the ImageMagick graphics routines
ii  libimage-magick-q16-perl        8:7.1.1.43+dfsg1-1                    amd64        Perl interface to the ImageMagick graphics routines -- Q16 version
ii  libmagickcore-7.q16-10:amd64    8:7.1.1.43+dfsg1-1                    amd64        low-level image manipulation library -- quantum depth Q16
ii  libmagickwand-7.q16-10:amd64    8:7.1.1.43+dfsg1-1                    amd64        image manipulation library -- quantum depth Q16
ii  inkscape                   
# rm -rf Documentation/output/gpu/*
# (dpkg -l |grep -i magick; dpkg -l |grep inkscape)|grep ii
ii  inkscape                        1.2.2-8build1                         amd64        vector-based drawing program
# make SPHINXDIRS=gpu pdfdocs

Summary
=======
gpu: gpu/pdf/gpu.pdf

Quoted 8 lines
Quoted 8 lines
    --------------- --------- ----------
    SVG --> PDF     Docker    LXC
    --------------- --------- ----------
    imagemagick     FAIL      FAIL
    inkscape        SUCCESS   ????
    imagemagick [*] FAIL      ????
    --------------- --------- ----------
Quoted 5 lines
Quoted 5 lines

[*] after installing both inkscape and imagemagick, remove inkscape
with all its dependencies kept.

Do you see any difference between Docker and LXC columns in the table? I'm all ears.

Yes. After having texlive dependencies fixed, and addressing the broken conf.py file that is not aligned with modern Sphinx practices, it passed on all three scenarios.

Quoted 8 lines

Please notice that addressing image was not the intent of this series.

The goal was *just* to fix texlive dependencies and fix text font mapping that were causing troubles on Ubuntu and on other distros.

Thanks,
Mauro

Thanks,
Mauro

Hmm.. I ended doing the above tests with this patch on my pile. It could be affecting the results, as it prevents kfigure.py to crash when writing PDF output.

commit df1602df0da3a6254d58a782654e7f2e60512dc8

Author: Mauro Carvalho Chehab <[email protected]>
Date:   Wed Aug 20 09:17:50 2025 +0200

docs: kfigure.py: don't crash during read/write

By default, Python does a very bad job when reading/writing from files, as it tries to enforce that the character is < 128. Nothing prevents a SVG file to contain, for instance, a comment with an utf-8 accented copyright notice - or even an utf-8 invalid char.

While testing PDF and html builds, I recently faced one build that got an error at kfigure.py saying that a char was > 128, crashing PDF output.

To avoid such issues, let's use PEP 383 subrogate escape encoding to prevent read/write errors on such cases.

Documentation/sphinx/kfigure.py +4 -4
index ad495c0da270..8ba07344a1c8 100644
@@ -88,7 +88,7 @@ def mkdir(folder, mode=0o775):
         os.makedirs(folder, mode)
 
 def file2literal(fname):
-    with open(fname, "r") as src:
+    with open(fname, "r", encoding='utf8', errors='surrogateescape') as src:
         data = src.read()
         node = nodes.literal_block(data, data)
     return node
@@ -355,7 +355,7 @@ def dot2format(app, dot_fname, out_fname):
     cmd = [dot_cmd, '-T%s' % out_format, dot_fname]
     exit_code = 42
 
-    with open(out_fname, "w") as out:
+    with open(out_fname, "w", encoding='utf8', errors='surrogateescape') as out:
         exit_code = subprocess.call(cmd, stdout = out)
         if exit_code != 0:
             logger.warning(
@@ -533,7 +533,7 @@ def visit_kernel_render(self, node):
     literal_block = node[0]
 
     code      = literal_block.astext()
-    hashobj   = code.encode('utf-8') #  str(node.attributes)
+    hashobj   = code.encode('utf-8', errors='surrogateescape')) #  str(node.attributes)
     fname     = path.join('%s-%s' % (srclang, sha1(hashobj).hexdigest()))
 
     tmp_fname = path.join(
@@ -541,7 +541,7 @@ def visit_kernel_render(self, node):
 
     if not path.isfile(tmp_fname):
         mkdir(path.dirname(tmp_fname))
-        with open(tmp_fname, "w") as out:
+        with open(tmp_fname, "w", encoding='utf8', errors='surrogateescape') as out:
             out.write(code)
 
     img_node = nodes.image(node.rawsource, **node.attributes)
#39 lore raw

Inkscape - Was: Re: [PATCH 00/11] Fix PDF doc builds on major distros

In reply to Akira Yokosawa

Em Thu, 21 Aug 2025 09:09:41 +0900
Akira Yokosawa <[email protected]> escreveu:

Quoted 35 lines

Hi,

Let me do a quick follow up.
I messed up the table.

Quoted 17 lines · Akira Yokosawa

Hi,

Commenting on your observation quoted below.

On Wed, 20 Aug 2025 18:48:10 +0200, Mauro Carvalho Chehab wrote:
[...]

Quoted 9 lines

If you want a more comprehensive answer:

LaTeX is highly dependent lots of packages, including fonts. The reason why you can't reproduce the font issues with Docker (I wasn't able to reproduce with Docker here as well) is probably due to either packaging differences between the two containers, due to different environment technologies or even due to the way Docker and LXC handles OS virtualization.

Quoted 3 lines

I'm not saying there is no difference between Docker and LXC.

Can you fill in ???? cells in the table below ?

I mean with this series applied

Quoted 4 lines

Docker column is my observation of "FROM ubuntu:plucky" podman runs.

"make SPHINXDIRS=gpu pdfdocs" under Ubuntu Plucky

I meant:

Quoted 21 lines
     --------------- --------- ----------
     SVG --> PDF     Docker    LXC
     --------------- --------- ----------
     imagemagick     FAIL      ????
     inkscape        SUCCESS   ????
     imagemagick [*] FAIL      ????
     --------------- --------- ----------
Quoted 13 lines
    --------------- --------- ----------
    SVG --> PDF     Docker    LXC
    --------------- --------- ----------
    imagemagick     FAIL      FAIL
    inkscape        SUCCESS   ????
    imagemagick [*] FAIL      ????
    --------------- --------- ----------

[*] after installing both inkscape and imagemagick, remove inkscape
with all its dependencies kept.

Do you see any difference between Docker and LXC columns in the table? I'm all ears.

I'm repeating my tests again. This time, it has just this series applied:

	https://lore.kernel.org/linux-doc/[email protected]/T/#t

(without that, not even simple PDF docs build here via Sphinx on Ubuntu)

LXC container created from scratch, with a couple unrelated packages to make life easier (things like ssh server) and with locale-gen executed there.

After its creation, I copied the
relevant files from my machine to the container with:

for ip in 10.0.3.129; do for d in Documentation scripts Makefile arch include tools; do rsync -av --times --delete "$d" "root@$ip:/root" --exclude output/; done; done

Then, at the container (accessed via ssh):

# Sphinx pre-install recommendations
sudo apt-get install dvipng fonts-noto-cjk graphviz imagemagick latexmk librsvg2-bin tex-gyre texlive-fonts-recommended texlive-lang-chinese texlive-xetex sudo apt-get install python3-sphinx

# Needed to avoid sphinx-build crashes
for i in $(set|grep LC|cut -d'=' -f1); do unset $i;done export LC_ALL=C
export LANG=C

with that:

imagemagick: FAIL
inkscape: PASS
imagemagick(*): FAIL

I wonder if this is related to the kfigure.py bug of writing a binary output with a file opened in "w" mode. In Python, "w" crashes for characters > 127. It should instead be "wb".

Thanks,
Mauro

maintainer
#40 lore raw
In reply to Akira Yokosawa

Akira Yokosawa <[email protected]> writes:

Just as an aside:

Quoted 2 lines

It's getting really hard for me to keep up with your pace of changes in doc build scripts, really.

I can relate ... it's been busy lately, and perhaps I haven't helped either. But I do, very much, appreciate your attention to this work and your review effort.

Thanks,

jon

#41 lore raw
In reply to Mauro Carvalho Chehab

(trimmed Ccs)

Hi Mauro,

Thank you for testing on OL. I'm wondering about some of the results, however...

Quoted 8 lines · Mauro Carvalho Chehab

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: 0:06, return code: 0

How is the html PASSED with the build time only 6 seconds, that looks rather odd to me.

Quoted 5 lines

PARTIAL: Build PDF documentation: Test failed (Build time: 0:07, return code: 2)

PDF docs:
---------
PASSED: latex: FAILED (no .tex)

This doesn't seem like it PASSED either if it FAILED.

I tried on OL 9.5 and got:

"""

$ scripts/sphinx-pre-install
...
You should run:

sudo yum install -y ImageMagick graphviz
...
sudo yum install -y python3-sphinx
"""

But I actually need to do this:

sudo yum --enablerepo=ol9_developer_EPEL install -y ImageMagick graphviz

and then

sudo yum --enablrepo=ol9_codeready_builder install -y python3-sphinx

respectively.

After this, I see a bunch of red warnings but 'make htmldocs' succeeds and after 33 minutes.

For pdfdocs and latexdocs, respectively, I get:

$ make pdfdocs
Documentation/Makefile:156: The 'xelatex' command was not found. Make sure you have it installed and in PATH to produce PDF output.
  SKIP    Sphinx pdfdocs target.
$ time make latexdocs
make[3]: Nothing to be done for 'latex'.
Using alabaster theme
Using Python kernel-doc
Documentation/i2c/instantiating-devices.rst:36: WARNING: Could not lex literal_block as "dts". Highlighting skipped.
real    21m12.103s
user    20m58.124s
sys     0m18.567s

Vegard

#42 lore raw

Em Sun, 17 Aug 2025 17:32:24 +0200
Vegard Nossum <[email protected]> escreveu:

Quoted 20 lines

(trimmed Ccs)

Hi Mauro,

Thank you for testing on OL. I'm wondering about some of the results, however...

Quoted 8 lines · Mauro Carvalho Chehab

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: 0:06, return code: 0

How is the html PASSED with the build time only 6 seconds, that looks rather odd to me.

Quoted 7 lines
Quoted 5 lines

PARTIAL: Build PDF documentation: Test failed (Build time: 0:07, return code: 2)

PDF docs:
---------
PASSED: latex: FAILED (no .tex)

This doesn't seem like it PASSED either if it FAILED.

The issue here is actually due to the way my test tool works. It basically runs distros via lxc and use lxc-attach to run a test script (I also use podman for a few containers, when there's no container via lxc).

Well, attaching to a container doesn't set language. If sphinx-build is called without language, it crashes badly: nothing works on it. Even --version crashes:

	$ sphinx-build --version
	Traceback (most recent call last):
	  File "/usr/bin/sphinx-build", line 8, in <module>
	    sys.exit(main())
	             ~~~~^^
	  File "/usr/lib/python3/dist-packages/sphinx/cmd/build.py", line 546, in main
	    locale.setlocale(locale.LC_ALL, '')
	    ~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^
	  File "/usr/lib/python3.13/locale.py", line 615, in setlocale
	    return _setlocale(category, locale)
	locale.Error: unsupported locale setting
	$ LC_ALL=C sphinx-build --version
	sphinx-build 8.1.3

The crash happens at the the main() function for the build command at:
/usr/lib/python3/dist-packages/sphinx/cmd/build.py. It tries to set locale to '', using what it is recommended at
https://docs.python.org/3/library/locale.html, but Python crashes.

An sphinx-build workaround logic would be for it to do:

	def main(argv: Sequence[str] = (), /) -> int:
	    try:
	        locale.setlocale(locale.LC_ALL, '')
	    except:
	        locale.setlocale(locale.LC_ALL, 'C')

Such issue is present on all versions of Sphinx, as far as I'm aware.

Now, as sphinx-build is doing what Python library recommends, IMO, the root cause should be fixed: Python internal library should handle this better, as if one doesn't care about the actual locale, passing just '', it should fallback to "C" instead of crashing.

In any case, as kernel build has to support legacy Python and Sphinx versions, I sent a patch addressing such issue via the new sphinx-build-wrapper I'm proposing:

	https://lore.kernel.org/linux-doc/461e00fe7ce75eaac90d98572bb93910b39361e2.1755258303.git.mchehab+huawei@kernel.org/

It sounds I ended placing the run results before such fix. I'll submit a v2 with the right logs.

Quoted 14 lines

I tried on OL 9.5 and got:

"""

$ scripts/sphinx-pre-install
...
You should run:

sudo yum install -y ImageMagick graphviz
...
sudo yum install -y python3-sphinx
"""

But I actually need to do this:

Quoted 7 lines

sudo yum --enablerepo=ol9_developer_EPEL install -y ImageMagick graphviz

and then

sudo yum --enablrepo=ol9_codeready_builder install -y python3-sphinx

respectively.

The logic at sphinx-pre-install assumes that the needed repositories are enabled. The rationale is that each distro has its own particular way to split packages between repositories, and this varies a from time to time. For instance, up to CentOS 8 and RHEL8, the EPEL repository contained all non-officially supported packages, which includes Sphinx. On version 9 of most of such distros, this was named CRB, although this is not consistent over the variations. So, for instance,

On OpenEuler, it doesn't need to set any extra repository. On Almalinux, CentOS and Rockylinux it does set crb:

- "dnf config-manager --set-enabled crb"

On OL, it sets those:

- "sudo dnf install -y oraclelinux-release-el9 epel-release"
- "dnf config-manager --set-enabled base latest ol9_appstream ol9_developer_EPEL ol9_codeready_builder"

On RHEL using the "redhat/ubi8" docker container, the extra repos are behind a paywall.

Quoted 2 lines

After this, I see a bunch of red warnings but 'make htmldocs' succeeds and after 33 minutes.

Those warnings exist on upstream.

Quoted 7 lines

For pdfdocs and latexdocs, respectively, I get:

$ make pdfdocs
Documentation/Makefile:156: The 'xelatex' command was not found. Make 
sure you have it installed and in PATH to produce PDF output.
   SKIP    Sphinx pdfdocs target.

If you install the needed repositories and all recommentations from sphinx-pre-install, you should be able to build pdfs.

I Just ran it here from a container I re-created from scratch, and got:

Oracle Linux Server release 9.6:
--------------------------------
PASSED: OS detection: Oracle Linux Server release 9.6
PASSED: System packages: Packages installed
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: 3:57, return code: 0
PASSED: Build PDF documentation: Build time: 10: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

Summary
=======
PASSED - Oracle Linux Server release 9.6 (7 tests)

PS.: I'm using both this series and the sphinx-build-wrapper one, as it has a summary at the end which checks what PDF file was actually built.

Btw, I'm enclosing at the end the logs I got from my test toolset.

I dropped several messages from the log, as the full log is 137k lines:

$ wc -l container_tests.log oracle_report.log 
  72107 container_tests.log
  65596 oracle_report.log
 137703 total

but I preserved the most relevant logs.

-

Those are the logs containing the preparation steps done to create the Container

2025-08-18 09:33:23,302 [oracle DEBUG] Executing: sudo lxc-create -n oracle-test -t download -- --dist oracle --release 9 --arch amd64
2025-08-18 09:33:24,021 [oracle DEBUG] Executing: sudo mkdir -p /var/lib/lxc/oracle-test
2025-08-18 09:33:24,061 [oracle DEBUG] Executing: sudo sh -c cat > /var/lib/lxc/oracle-test/config <<EOF

lxc.arch = x86_64
lxc.pty.max = 1024
lxc.tty.max = 4
lxc.net.0.type = veth
lxc.net.0.link = lxcbr0
lxc.net.0.flags = up
lxc.net.0.hwaddr = 00:16:3e:5b:89:e7
lxc.cap.drop = mac_admin mac_override sys_time sys_module sys_rawio lxc.cgroup.devices.allow = a
lxc.cgroup2.devices.allow = a
lxc.mount.auto = proc sys cgroup
lxc.rootfs.path = /var/lib/lxc/oracle-test/rootfs

2025-08-18 09:33:25,398 [oracle DEBUG] Executing: sudo lxc-attach -n oracle-test -- env LANG=C.UTF-8 sh -c sudo dnf install -y oraclelinux-release-el9 epel-release
2025-08-18 09:33:37,730 [oracle DEBUG] Executing: sudo lxc-attach -n oracle-test -- env LANG=C.UTF-8 sh -c dnf config-manager --set-enabled base latest ol9_appstream ol9_developer_EPEL ol9_codeready_builder
2025-08-18 09:33:37,885 [oracle DEBUG] Executing: sudo lxc-attach -n oracle-test -- env LANG=C.UTF-8 sh -c dnf install -y which openssh-server git python3 tar make diffutils

# Here, I'm copying the Kernel from the host via tarball, as this is

# faster than using git clone and transfers less files, as I'm 
# placing there just the files needed for docs build
2025-08-18 09:34:11,001 [oracle DEBUG] Executing: sudo lxc-attach -n oracle-test -- tar xpf - --no-same-owner -C /

# Here, I execute my test script

2025-08-18 09:34:16,322 [oracle DEBUG] Executing: sudo lxc-attach -n oracle-test -- env LANG=C.UTF-8 sh -c cd /root && LC_ALL=C ./docs-build.py

---

This is the output of my docs-build.py test script, which reads the install instructions from sphinx-pre-install, executes them and build html and pdf:

TEST REPORT: ORACLE

Generated: 2025-08-18 09:50:28
Stage: Tests

TEST RESULTS:

Status: SUCCESS
Return Code: 0

STANDARD OUTPUT:

VALIDATE: cd /root && LC_ALL=C ./docs-build.py
---------------------------------------------

 $ ./scripts/sphinx-pre-install
 Python version: 3.9.21
 Detected OS: Oracle Linux Server release 9.6.

Warning: build optional deps missing: ImageMagick graphviz
ERROR: Python mandatory deps missing: python3-pyyaml
ERROR: PDF mandatory deps missing: dejavu-sans-fonts dejavu-sans-mono-fonts dejavu-serif-fonts google-noto-sans-cjk-ttc-fonts latexmk librsvg2-tools texlive-amscls texlive-amsfonts texlive-amsmath texlive-anyfontsize texlive-capt-of texlive-cmap texlive-collection-fontsrecommended texlive-collection-latex texlive-ctex 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

You should run:
sudo dnf install ImageMagick dejavu-sans-fonts dejavu-sans-mono-fonts dejavu-serif-fonts google-noto-sans-cjk-ttc-fonts graphviz latexmk librsvg2-tools python3-pyyaml texlive-amscls texlive-amsfonts texlive-amsmath texlive-anyfontsize texlive-capt-of texlive-cmap texlive-collection-fontsrecommended texlive-collection-latex texlive-ctex 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

Note: RHEL-based distros typically require extra repositories.
For most, enabling epel and crb are enough:
sudo dnf install -y epel-release
sudo dnf config-manager --set-enabled crb
Yet, some may have other required repositories. Those commands could be useful:
sudo dnf repolist all
sudo dnf repoquery --available --info <pkgs>
sudo dnf config-manager --set-enabled '*' # enable all - probably not what you want

Sphinx needs to be installed either:
1) via pip/pypi with:

/usr/bin/python3 -m venv sphinx_latest
. sphinx_latest/bin/activate
pip install -r ./Documentation/sphinx/requirements.txt

If you want to exit the virtualenv, you can use:
deactivate

2) As a package with:

sudo dnf install python3-sphinx

Please note that Sphinx currentlys produce false-positive warnings when the same name is used for more than one type (functions, structs, enums,...). This is known Sphinx bug. For more details, see:
https://github.com/sphinx-doc/sphinx/pull/8313

Installing section: system_install with dnf
===========================================

 $ dnf install -y --setopt=install_weak_deps=False ImageMagick dejavu-sans-fonts dejavu-sans-mono-fonts dejavu-serif-fonts google-noto-sans-cjk-ttc-fonts graphviz latexmk librsvg2-tools python3-pyyaml texlive-amscls texlive-amsfonts texlive-amsmath texlive-anyfontsize texlive-capt-of texlive-cmap texlive-collection-fontsrecommended texlive-collection-latex texlive-ctex 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
 Last metadata expiration check: 0:00:22 ago on Mon Aug 18 07:33:55 2025.
 Dependencies resolved.
 ===================================================================================================
  Package                                Arch    Version                   Repository           Size
 ===================================================================================================
 Installing:
  ImageMagick                            x86_64  6.9.13.25-1.el9           ol9_developer_EPEL  103 k
...
  zziplib                                x86_64  0.13.71-11.el9_4          ol9_appstream        95 k

Transaction Summary
===================================================================================================
Install 428 Packages

Total download size: 598 M
Installed size: 1.2 G
Downloading Packages:
(1/428): dejavu-sans-fonts-2.37-18.el9.noarch.r 4.2 MB/s | 1.3 MB 00:00
...
(428/428): urw-base35-p052-fonts-20200910-6.el9 491 kB/s | 987 kB 00:02
--------------------------------------------------------------------------------
Total 9.8 MB/s | 598 MB 01:01
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Running scriptlet: texlive-base-9:20200406-26.el9_2.noarch 1/1
Preparing : 1/1
Running scriptlet: texlive-base-9:20200406-26.el9_2.noarch 1/428
...
Verifying : zziplib-0.13.71-11.el9_4.x86_64 428/428

Installed:
ImageMagick-6.9.13.25-1.el9.x86_64 ImageMagick-libs-6.9.13.25-1.el9.x86_64 LibRaw-0.21.1-1.el9.x86_64 adobe-mappings-cmap-20171205-12.el9.noarch adobe-mappings-cmap-deprecated-20171205-12.el9.noarch adobe-mappings-pdf-20180407-10.el9.noarch atk-2.36.0-5.el9.x86_64 avahi-libs-0.8-22.el9_6.1.x86_64 cairo-1.17.4-7.el9.x86_64 cairo-gobject-1.17.4-7.el9.x86_64 crypto-policies-scripts-20250128-1.git5269e22.el9.noarch cups-libs-1:2.3.3op2-33.el9.x86_64 dejavu-sans-fonts-2.37-18.el9.noarch dejavu-sans-mono-fonts-2.37-18.el9.noarch dejavu-serif-fonts-2.37-18.el9.noarch desktop-file-utils-0.26-6.el9.x86_64 fontconfig-2.14.0-2.el9_1.x86_64 fonts-filesystem-1:2.0.5-7.el9.1.noarch freetype-2.10.4-10.el9_5.x86_64 fribidi-1.0.10-6.el9.2.x86_64
gd-2.3.2-3.el9.x86_64 gdk-pixbuf2-2.42.6-6.el9_6.x86_64 gdk-pixbuf2-modules-2.42.6-6.el9_6.x86_64 ghostscript-9.54.0-19.el9_6.x86_64 ghostscript-tools-fonts-9.54.0-19.el9_6.x86_64 ghostscript-tools-printing-9.54.0-19.el9_6.x86_64 google-droid-sans-fonts-20200215-11.el9.2.noarch google-noto-cjk-fonts-common-20230817-2.el9.noarch google-noto-sans-cjk-ttc-fonts-20230817-2.el9.noarch graphite2-1.3.14-9.el9.x86_64 graphviz-2.44.0-26.el9.x86_64 gtk-update-icon-cache-3.24.31-5.el9.x86_64 gtk2-2.24.33-8.el9.x86_64 harfbuzz-2.7.4-10.el9.x86_64 hicolor-icon-theme-0.17-13.el9.noarch imath-3.1.2-1.el9.x86_64
info-6.7-15.el9.x86_64 jasper-libs-2.0.28-3.el9.x86_64 jbig2dec-libs-0.19-7.el9.x86_64 jbigkit-libs-2.1-23.el9.x86_64 langpacks-core-font-en-3.0-16.el9.noarch latexmk-4.86a-1.el9.noarch
lcms2-2.12-3.el9.x86_64
libICE-1.0.10-8.el9.x86_64
libSM-1.2.3-10.el9.x86_64
libX11-1.7.0-11.el9.x86_64 libX11-common-1.7.0-11.el9.noarch libXau-1.0.9-8.el9.x86_64 libXaw-1.0.13-19.el9.x86_64 libXcomposite-0.4.5-7.el9.x86_64 libXcursor-1.2.0-7.el9.x86_64 libXdamage-1.1.5-7.el9.x86_64 libXext-1.3.4-8.el9.x86_64 libXfixes-5.0.3-16.el9.x86_64 libXft-2.3.3-8.el9.x86_64
libXi-1.7.10-8.el9.x86_64 libXinerama-1.1.4-10.el9.x86_64 libXmu-1.1.3-8.el9.x86_64 libXpm-3.5.13-10.el9.x86_64 libXrandr-1.5.2-8.el9.x86_64 libXrender-0.9.10-16.el9.x86_64 libXt-1.2.0-6.el9.x86_64 libdatrie-0.2.13-4.el9.x86_64 libfontenc-1.1.3-17.el9.x86_64 libgs-9.54.0-19.el9_6.x86_64 libicu-67.1-10.el9_6.x86_64 libijs-0.35-15.el9.x86_64 libjpeg-turbo-2.0.90-7.el9.x86_64 liblqr-1-0.4.2-19.el9.x86_64 libpaper-1.1.28-4.el9.x86_64 libpng-2:1.6.37-12.el9.x86_64 libraqm-0.8.0-1.el9.x86_64 librsvg2-2.50.7-3.el9.x86_64 librsvg2-tools-2.50.7-3.el9.x86_64 libthai-0.1.28-8.el9.x86_64 libtiff-4.4.0-13.el9.x86_64 libwebp-1.2.0-8.el9_3.x86_64 libwmf-lite-0.2.12-10.el9.x86_64 libxcb-1.13.1-9.el9.x86_64 mailcap-2.1.49-5.el9.noarch mkfontscale-1.2.1-3.el9.x86_64 nspr-4.35.0-17.el9_2.x86_64 nss-3.101.0-10.el9_2.x86_64 nss-softokn-3.101.0-10.el9_2.x86_64 nss-softokn-freebl-3.101.0-10.el9_2.x86_64 nss-sysinit-3.101.0-10.el9_2.x86_64 nss-util-3.101.0-10.el9_2.x86_64 openexr-libs-3.1.1-3.el9.x86_64 openjpeg2-2.4.0-8.el9.x86_64 pango-1.48.7-3.el9.x86_64 perl-Compress-Raw-Bzip2-2.101-5.el9.x86_64 perl-Compress-Raw-Zlib-2.101-5.el9.x86_64 perl-Data-Dump-1.23-18.el9.noarch perl-Digest-HMAC-1.03-29.el9.noarch perl-Digest-SHA-1:6.02-461.el9.x86_64 perl-Encode-Locale-1.05-21.el9.noarch perl-File-Copy-2.34-481.1.el9_6.noarch perl-File-Listing-6.14-4.el9.noarch perl-Filter-2:1.60-4.el9.x86_64 perl-HTML-Parser-3.76-3.el9.x86_64 perl-HTML-Tagset-3.20-47.el9.noarch perl-HTTP-Cookies-6.10-4.el9.noarch perl-HTTP-Date-6.05-7.el9.noarch perl-HTTP-Message-6.29-3.el9.noarch perl-HTTP-Negotiate-6.01-30.el9.noarch perl-I18N-Langinfo-0.19-481.1.el9_6.x86_64 perl-IO-Compress-2.102-4.el9.noarch perl-IO-HTML-1.004-4.el9.noarch perl-LWP-MediaTypes-6.04-9.el9.noarch perl-NTLM-1.09-30.el9.noarch perl-Net-HTTP-6.21-3.el9.noarch perl-Text-Unidecode-1.30-16.el9.noarch perl-Time-HiRes-4:1.9764-462.el9.x86_64 perl-TimeDate-1:2.33-6.el9.noarch perl-Try-Tiny-0.30-13.el9.noarch perl-Unicode-Normalize-1.27-461.el9.x86_64 perl-WWW-RobotRules-6.02-30.el9.noarch perl-XML-Parser-2.46-9.0.1.el9.x86_64 perl-XML-XPath-1.44-11.el9.noarch perl-encoding-4:3.00-462.el9.x86_64 perl-libwww-perl-6.53-4.el9.noarch perl-locale-1.09-481.1.el9_6.noarch perl-meta-notation-5.32.1-481.1.el9_6.noarch perl-open-1.12-481.1.el9_6.noarch perl-sigtrap-1.09-481.1.el9_6.noarch pixman-0.40.0-6.el9_3.x86_64 poppler-21.01.0-21.el9.x86_64 poppler-data-0.4.9-9.el9.noarch python3-pyyaml-5.4.1-6.0.1.el9.x86_64 ruby-3.0.7-165.el9_5.x86_64 ruby-libs-3.0.7-165.el9_5.x86_64 shared-mime-info-2.1-5.el9.x86_64 teckit-2.5.9-8.el9.x86_64 texlive-adobemapping-9:20200406-37.el9.noarch texlive-ae-9:20200406-26.el9_2.noarch texlive-algorithms-9:20200406-26.el9_2.noarch texlive-alphalph-9:20200406-26.el9_2.noarch texlive-amscls-9:20200406-26.el9_2.noarch texlive-amsfonts-9:20200406-26.el9_2.noarch texlive-amsmath-9:20200406-26.el9_2.noarch texlive-anyfontsize-9:20200406-26.el9_2.noarch texlive-arphic-9:20200406-26.el9_2.noarch texlive-ascmac-9:20200406-37.el9.noarch texlive-atbegshi-9:20200406-26.el9_2.noarch texlive-attachfile-9:20200406-26.el9_2.noarch texlive-atveryend-9:20200406-26.el9_2.noarch texlive-auxhook-9:20200406-26.el9_2.noarch texlive-avantgar-9:20200406-26.el9_2.noarch texlive-babel-9:20200406-26.el9_2.noarch texlive-babel-english-9:20200406-26.el9_2.noarch texlive-babelbib-9:20200406-26.el9_2.noarch texlive-base-9:20200406-26.el9_2.noarch texlive-beamer-9:20200406-26.el9_2.noarch texlive-bera-9:20200406-26.el9_2.noarch texlive-beton-9:20200406-26.el9_2.noarch texlive-bibtex-9:20200406-26.el9_2.x86_64 texlive-bidi-9:20200406-26.el9_2.noarch texlive-bigintcalc-9:20200406-26.el9_2.noarch texlive-bitset-9:20200406-26.el9_2.noarch texlive-bookman-9:20200406-26.el9_2.noarch texlive-bookmark-9:20200406-26.el9_2.noarch texlive-booktabs-9:20200406-26.el9_2.noarch texlive-breakurl-9:20200406-26.el9_2.noarch texlive-capt-of-9:20200406-26.el9_2.noarch texlive-caption-9:20200406-26.el9_2.noarch texlive-carlisle-9:20200406-26.el9_2.noarch texlive-catchfile-9:20200406-26.el9_2.noarch texlive-changepage-9:20200406-26.el9_2.noarch texlive-charter-9:20200406-26.el9_2.noarch texlive-chngcntr-9:20200406-26.el9_2.noarch texlive-cjk-9:20200406-26.el9_2.noarch texlive-cjkpunct-9:20200406-37.el9.noarch texlive-cm-9:20200406-26.el9_2.noarch texlive-cm-super-9:20200406-26.el9_2.noarch texlive-cmap-9:20200406-26.el9_2.noarch texlive-cmextra-9:20200406-26.el9_2.noarch texlive-cns-9:20200406-26.el9_2.noarch texlive-collection-basic-9:20200406-26.el9_2.noarch texlive-collection-fontsrecommended-9:20200406-26.el9_2.noarch texlive-collection-latex-9:20200406-26.el9_2.noarch texlive-colorprofiles-9:20200406-26.el9_2.noarch texlive-colortbl-9:20200406-26.el9_2.noarch texlive-convbkmk-9:20200406-37.el9.noarch texlive-courier-9:20200406-26.el9_2.noarch texlive-csquotes-9:20200406-26.el9_2.noarch texlive-ctex-9:20200406-37.el9.noarch texlive-currfile-9:20200406-26.el9_2.noarch texlive-dvipdfmx-9:20200406-26.el9_2.x86_64 texlive-dvips-9:20200406-26.el9_2.x86_64 texlive-ec-9:20200406-26.el9_2.noarch texlive-enctex-9:20200406-26.el9_2.noarch texlive-enumitem-9:20200406-26.el9_2.noarch texlive-environ-9:20200406-26.el9_2.noarch texlive-epstopdf-pkg-9:20200406-26.el9_2.noarch texlive-eqparbox-9:20200406-26.el9_2.noarch texlive-eso-pic-9:20200406-26.el9_2.noarch texlive-etex-9:20200406-26.el9_2.noarch texlive-etex-pkg-9:20200406-26.el9_2.noarch texlive-etexcmds-9:20200406-26.el9_2.noarch texlive-etoolbox-9:20200406-26.el9_2.noarch texlive-euenc-9:20200406-26.el9_2.noarch texlive-euler-9:20200406-26.el9_2.noarch texlive-euro-9:20200406-26.el9_2.noarch texlive-eurosym-9:20200406-26.el9_2.noarch texlive-everyhook-9:20200406-37.el9.noarch texlive-fancybox-9:20200406-26.el9_2.noarch texlive-fancyhdr-9:20200406-26.el9_2.noarch texlive-fancyvrb-9:20200406-26.el9_2.noarch texlive-fandol-9:20200406-37.el9.noarch texlive-filecontents-9:20200406-26.el9_2.noarch texlive-filehook-9:20200406-26.el9_2.noarch texlive-firstaid-9:20200406-37.el9.noarch texlive-fix2col-9:20200406-26.el9_2.noarch texlive-float-9:20200406-26.el9_2.noarch texlive-fncychap-9:20200406-26.el9_2.noarch texlive-fonts-tlwg-9:20200406-26.el9_2.noarch texlive-fontspec-9:20200406-26.el9_2.noarch texlive-footmisc-9:20200406-26.el9_2.noarch texlive-fp-9:20200406-26.el9_2.noarch texlive-fpl-9:20200406-26.el9_2.noarch texlive-framed-9:20200406-26.el9_2.noarch texlive-garuda-c90-9:20200406-26.el9_2.noarch texlive-geometry-9:20200406-26.el9_2.noarch texlive-gettitlestring-9:20200406-26.el9_2.noarch texlive-glyphlist-9:20200406-26.el9_2.noarch texlive-graphics-9:20200406-26.el9_2.noarch texlive-graphics-cfg-9:20200406-26.el9_2.noarch texlive-graphics-def-9:20200406-26.el9_2.noarch texlive-grfext-9:20200406-26.el9_2.noarch texlive-grffile-9:20200406-26.el9_2.noarch texlive-helvetic-9:20200406-26.el9_2.noarch texlive-hobsub-9:20200406-26.el9_2.noarch texlive-hologo-9:20200406-26.el9_2.noarch texlive-hycolor-9:20200406-26.el9_2.noarch texlive-hyperref-9:20200406-26.el9_2.noarch texlive-hyph-utf8-9:20200406-26.el9_2.noarch texlive-hyphen-base-9:20200406-26.el9_2.noarch texlive-hyphenex-9:20200406-26.el9_2.noarch texlive-ifmtarg-9:20200406-26.el9_2.noarch texlive-ifplatform-9:20200406-26.el9_2.noarch texlive-iftex-9:20200406-26.el9_2.noarch texlive-index-9:20200406-26.el9_2.noarch texlive-infwarerr-9:20200406-26.el9_2.noarch texlive-intcalc-9:20200406-26.el9_2.noarch texlive-ipaex-9:20200406-37.el9.noarch texlive-japanese-otf-9:20200406-37.el9.noarch texlive-japanese-otf-uptex-9:20200406-37.el9.noarch texlive-kastrup-9:20200406-26.el9_2.noarch texlive-knuth-lib-9:20200406-26.el9_2.noarch texlive-knuth-local-9:20200406-26.el9_2.noarch texlive-koma-script-9:20200406-26.el9_2.noarch texlive-kpathsea-9:20200406-26.el9_2.x86_64 texlive-kvdefinekeys-9:20200406-26.el9_2.noarch texlive-kvoptions-9:20200406-26.el9_2.noarch texlive-kvsetkeys-9:20200406-26.el9_2.noarch texlive-l3backend-9:20200406-26.el9_2.noarch texlive-l3kernel-9:20200406-26.el9_2.noarch texlive-l3packages-9:20200406-26.el9_2.noarch texlive-latex-9:20200406-26.el9_2.noarch texlive-latex-base-dev-9:20200406-37.el9.noarch texlive-latex-firstaid-dev-9:20200406-37.el9.noarch texlive-latex-fonts-9:20200406-26.el9_2.noarch texlive-latexconfig-9:20200406-26.el9_2.noarch texlive-letltxmacro-9:20200406-26.el9_2.noarch texlive-lib-9:20200406-26.el9_2.x86_64 texlive-listings-9:20200406-26.el9_2.noarch texlive-lm-9:20200406-26.el9_2.noarch texlive-lm-math-9:20200406-26.el9_2.noarch texlive-ltxcmds-9:20200406-26.el9_2.noarch texlive-ltxmisc-9:20200406-26.el9_2.noarch texlive-lua-alt-getopt-9:20200406-26.el9_2.noarch texlive-luahbtex-9:20200406-26.el9_2.x86_64 texlive-lualatex-math-9:20200406-26.el9_2.noarch texlive-lualibs-9:20200406-26.el9_2.noarch texlive-luaotfload-9:20200406-26.el9_2.noarch texlive-luatex-9:20200406-26.el9_2.x86_64 texlive-luatex85-9:20200406-26.el9_2.noarch texlive-luatexbase-9:20200406-26.el9_2.noarch texlive-luatexja-9:20200406-37.el9.noarch texlive-makecmds-9:20200406-26.el9_2.noarch texlive-makeindex-9:20200406-26.el9_2.x86_64 texlive-manfnt-font-9:20200406-26.el9_2.noarch texlive-marginnote-9:20200406-26.el9_2.noarch texlive-marvosym-9:20200406-26.el9_2.noarch texlive-mathpazo-9:20200406-26.el9_2.noarch texlive-mdwtools-9:20200406-26.el9_2.noarch texlive-memoir-9:20200406-26.el9_2.noarch texlive-metafont-9:20200406-26.el9_2.x86_64 texlive-mflogo-9:20200406-26.el9_2.noarch texlive-mflogo-font-9:20200406-26.el9_2.noarch texlive-mfnfss-9:20200406-26.el9_2.noarch texlive-mfware-9:20200406-26.el9_2.x86_64 texlive-minitoc-9:20200406-26.el9_2.noarch texlive-modes-9:20200406-26.el9_2.noarch texlive-mparhack-9:20200406-26.el9_2.noarch texlive-mptopdf-9:20200406-26.el9_2.noarch texlive-ms-9:20200406-26.el9_2.noarch texlive-multido-9:20200406-26.el9_2.noarch texlive-multirow-9:20200406-26.el9_2.noarch texlive-natbib-9:20200406-26.el9_2.noarch texlive-ncntrsbk-9:20200406-26.el9_2.noarch texlive-needspace-9:20200406-26.el9_2.noarch texlive-norasi-c90-9:20200406-26.el9_2.noarch texlive-notoccite-9:20200406-26.el9_2.noarch texlive-oberdiek-9:20200406-26.el9_2.noarch texlive-palatino-9:20200406-26.el9_2.noarch texlive-paralist-9:20200406-26.el9_2.noarch texlive-parallel-9:20200406-26.el9_2.noarch texlive-parskip-9:20200406-26.el9_2.noarch texlive-pdfcolmk-9:20200406-26.el9_2.noarch texlive-pdfescape-9:20200406-26.el9_2.noarch texlive-pdftex-9:20200406-26.el9_2.x86_64 texlive-pdftexcmds-9:20200406-26.el9_2.noarch texlive-pgf-9:20200406-26.el9_2.noarch texlive-placeins-9:20200406-26.el9_2.noarch texlive-plain-9:20200406-26.el9_2.noarch texlive-platex-9:20200406-37.el9.noarch texlive-platex-tools-9:20200406-37.el9.noarch texlive-polyglossia-9:20200406-26.el9_2.noarch texlive-pslatex-9:20200406-26.el9_2.noarch texlive-psnfss-9:20200406-26.el9_2.noarch texlive-pspicture-9:20200406-26.el9_2.noarch texlive-pst-3d-9:20200406-26.el9_2.noarch texlive-pst-arrow-9:20200406-26.el9_2.noarch texlive-pst-coil-9:20200406-26.el9_2.noarch texlive-pst-eps-9:20200406-26.el9_2.noarch texlive-pst-fill-9:20200406-26.el9_2.noarch texlive-pst-grad-9:20200406-26.el9_2.noarch texlive-pst-math-9:20200406-26.el9_2.noarch texlive-pst-node-9:20200406-26.el9_2.noarch texlive-pst-plot-9:20200406-26.el9_2.noarch texlive-pst-text-9:20200406-26.el9_2.noarch texlive-pst-tools-9:20200406-26.el9_2.noarch texlive-pst-tree-9:20200406-26.el9_2.noarch texlive-pstricks-9:20200406-26.el9_2.noarch texlive-pstricks-add-9:20200406-26.el9_2.noarch texlive-ptex-9:20200406-37.el9.x86_64 texlive-ptex-base-9:20200406-37.el9.noarch texlive-ptex-fonts-9:20200406-37.el9.noarch texlive-pxfonts-9:20200406-26.el9_2.noarch texlive-qstest-9:20200406-26.el9_2.noarch texlive-refcount-9:20200406-26.el9_2.noarch texlive-rerunfilecheck-9:20200406-26.el9_2.noarch texlive-rsfs-9:20200406-26.el9_2.noarch texlive-sansmathaccent-9:20200406-26.el9_2.noarch texlive-sauerj-9:20200406-26.el9_2.noarch texlive-setspace-9:20200406-26.el9_2.noarch texlive-showexpl-9:20200406-26.el9_2.noarch texlive-soul-9:20200406-26.el9_2.noarch texlive-stringenc-9:20200406-26.el9_2.noarch texlive-sttools-9:20200406-37.el9.noarch texlive-subfig-9:20200406-26.el9_2.noarch texlive-svn-prov-9:20200406-26.el9_2.noarch texlive-symbol-9:20200406-26.el9_2.noarch texlive-tabulary-9:20200406-26.el9_2.noarch texlive-tex-9:20200406-26.el9_2.x86_64 texlive-tex-gyre-9:20200406-26.el9_2.noarch texlive-tex-gyre-math-9:20200406-26.el9_2.noarch texlive-tex-ini-files-9:20200406-26.el9_2.noarch texlive-texlive-common-doc-9:20200406-26.el9_2.noarch texlive-texlive-docindex-9:20200406-26.el9_2.noarch texlive-texlive-en-9:20200406-26.el9_2.noarch texlive-texlive-msg-translations-9:20200406-26.el9_2.noarch texlive-texlive-scripts-9:20200406-26.el9_2.noarch texlive-texlive.infra-9:20200406-26.el9_2.noarch texlive-threeparttable-9:20200406-26.el9_2.noarch texlive-thumbpdf-9:20200406-26.el9_2.noarch texlive-times-9:20200406-26.el9_2.noarch texlive-tipa-9:20200406-26.el9_2.noarch texlive-titlesec-9:20200406-26.el9_2.noarch texlive-tools-9:20200406-26.el9_2.noarch texlive-translator-9:20200406-26.el9_2.noarch texlive-trimspaces-9:20200406-26.el9_2.noarch texlive-ttfutils-9:20200406-37.el9.x86_64 texlive-txfonts-9:20200406-26.el9_2.noarch texlive-ucs-9:20200406-26.el9_2.noarch texlive-uhc-9:20200406-26.el9_2.noarch texlive-ulem-9:20200406-26.el9_2.noarch texlive-underscore-9:20200406-26.el9_2.noarch texlive-unicode-data-9:20200406-26.el9_2.noarch texlive-unicode-math-9:20200406-26.el9_2.noarch texlive-uniquecounter-9:20200406-26.el9_2.noarch texlive-updmap-map-9:20200406-26.el9_2.noarch texlive-uplatex-9:20200406-37.el9.noarch texlive-upquote-9:20200406-26.el9_2.noarch texlive-uptex-9:20200406-37.el9.x86_64 texlive-uptex-base-9:20200406-37.el9.noarch texlive-uptex-fonts-9:20200406-37.el9.noarch texlive-url-9:20200406-26.el9_2.noarch texlive-utopia-9:20200406-26.el9_2.noarch texlive-varwidth-9:20200406-26.el9_2.noarch texlive-wadalab-9:20200406-26.el9_2.noarch texlive-wasy-9:20200406-26.el9_2.noarch texlive-wasy-type1-9:20200406-26.el9_2.noarch texlive-wasysym-9:20200406-26.el9_2.noarch texlive-wrapfig-9:20200406-26.el9_2.noarch texlive-xcjk2uni-9:20200406-37.el9.noarch texlive-xcolor-9:20200406-26.el9_2.noarch texlive-xdvi-9:20200406-26.el9_2.x86_64 texlive-xecjk-9:20200406-26.el9_2.noarch texlive-xetex-9:20200406-26.el9_2.x86_64 texlive-xetexconfig-9:20200406-26.el9_2.noarch texlive-xifthen-9:20200406-26.el9_2.noarch texlive-xkeyval-9:20200406-26.el9_2.noarch texlive-xpinyin-9:20200406-37.el9.noarch texlive-xunicode-9:20200406-26.el9_2.noarch texlive-zapfchan-9:20200406-26.el9_2.noarch texlive-zapfding-9:20200406-26.el9_2.noarch texlive-zhmetrics-9:20200406-37.el9.noarch texlive-zhmetrics-uptex-9:20200406-37.el9.noarch texlive-zhnumber-9:20200406-37.el9.noarch texlive-zref-9:20200406-26.el9_2.noarch urw-base35-bookman-fonts-20200910-6.el9.noarch urw-base35-c059-fonts-20200910-6.el9.noarch urw-base35-d050000l-fonts-20200910-6.el9.noarch urw-base35-fonts-20200910-6.el9.noarch urw-base35-fonts-common-20200910-6.el9.noarch urw-base35-gothic-fonts-20200910-6.el9.noarch urw-base35-nimbus-mono-ps-fonts-20200910-6.el9.noarch urw-base35-nimbus-roman-fonts-20200910-6.el9.noarch urw-base35-nimbus-sans-fonts-20200910-6.el9.noarch urw-base35-p052-fonts-20200910-6.el9.noarch urw-base35-standard-symbols-ps-fonts-20200910-6.el9.noarch urw-base35-z003-fonts-20200910-6.el9.noarch xdg-utils-1.1.3-13.el9_6.noarch xml-common-0.6.3-58.el9.noarch xorg-x11-fonts-ISO8859-1-100dpi-7.5-33.el9.noarch zziplib-0.13.71-11.el9_4.x86_64

Complete!
Additional packages installed: x86_64, 6
Check for docutils with /usr/bin/python3

 $ /usr/bin/python3 -c try: import docutils; print(docutils.__version__)
except: pass
Python version: 3.9.21
Detected OS: Oracle Linux Server release 9.6.

Note: RHEL-based distros typically require extra repositories. For most, enabling epel and crb are enough:

	sudo dnf install -y epel-release
	sudo dnf config-manager --set-enabled crb

Yet, some may have other required repositories. Those commands could be useful:
sudo dnf repolist all
sudo dnf repoquery --available --info <pkgs>
sudo dnf config-manager --set-enabled '*' # enable all - probably not what you want

Sphinx needs to be installed either:
1) via pip/pypi with:

/usr/bin/python3 -m venv sphinx_latest
. sphinx_latest/bin/activate
pip install -r ./Documentation/sphinx/requirements.txt

If you want to exit the virtualenv, you can use:
deactivate

2) As a package with:

sudo dnf install python3-sphinx

Please note that Sphinx currentlys produce false-positive warnings when the same name is used for more than one type (functions, structs, enums,...). This is known Sphinx bug. For more details, see:

	https://github.com/sphinx-doc/sphinx/pull/8313

All optional dependencies are met.

Can't build as 1 mandatory dependency is missing

Installing section: venv with pip
=================================

 $ /usr/bin/python3 -m venv sphinx_latest
 $ pip install --no-input -r ./Documentation/sphinx/requirements.txt
 Collecting alabaster
   Downloading alabaster-0.7.16-py3-none-any.whl (13 kB)
 Collecting Sphinx
   Downloading sphinx-7.4.7-py3-none-any.whl (3.4 MB)
 Collecting pyyaml
   Downloading PyYAML-6.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (737 kB)
 Collecting sphinxcontrib-htmlhelp>=2.0.0
   Downloading sphinxcontrib_htmlhelp-2.1.0-py3-none-any.whl (98 kB)
 Collecting babel>=2.13
   Downloading babel-2.17.0-py3-none-any.whl (10.2 MB)
 Collecting packaging>=23.0
   Downloading packaging-25.0-py3-none-any.whl (66 kB)
 Collecting Pygments>=2.17
   Downloading pygments-2.19.2-py3-none-any.whl (1.2 MB)
 Collecting sphinxcontrib-qthelp
   Downloading sphinxcontrib_qthelp-2.0.0-py3-none-any.whl (88 kB)
 Collecting snowballstemmer>=2.2
   Downloading snowballstemmer-3.0.1-py3-none-any.whl (103 kB)
 Collecting importlib-metadata>=6.0
   Downloading importlib_metadata-8.7.0-py3-none-any.whl (27 kB)
 Collecting sphinxcontrib-applehelp
   Downloading sphinxcontrib_applehelp-2.0.0-py3-none-any.whl (119 kB)
 Collecting sphinxcontrib-serializinghtml>=1.1.9
   Downloading sphinxcontrib_serializinghtml-2.0.0-py3-none-any.whl (92 kB)
 Collecting sphinxcontrib-devhelp
   Downloading sphinxcontrib_devhelp-2.0.0-py3-none-any.whl (82 kB)
 Collecting requests>=2.30.0
   Downloading requests-2.32.4-py3-none-any.whl (64 kB)
 Collecting docutils<0.22,>=0.20
   Downloading docutils-0.21.2-py3-none-any.whl (587 kB)
 Collecting Jinja2>=3.1
   Downloading jinja2-3.1.6-py3-none-any.whl (134 kB)
 Collecting imagesize>=1.3
   Downloading imagesize-1.4.1-py2.py3-none-any.whl (8.8 kB)
 Collecting sphinxcontrib-jsmath
   Downloading sphinxcontrib_jsmath-1.0.1-py2.py3-none-any.whl (5.1 kB)
 Collecting tomli>=2
   Downloading tomli-2.2.1-py3-none-any.whl (14 kB)
 Collecting zipp>=3.20
   Downloading zipp-3.23.0-py3-none-any.whl (10 kB)
 Collecting MarkupSafe>=2.0
   Downloading MarkupSafe-3.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (20 kB)
 Collecting charset_normalizer<4,>=2
   Downloading charset_normalizer-3.4.3-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (152 kB)
 Collecting certifi>=2017.4.17
   Downloading certifi-2025.8.3-py3-none-any.whl (161 kB)
 Collecting urllib3<3,>=1.21.1
   Downloading urllib3-2.5.0-py3-none-any.whl (129 kB)
 Collecting idna<4,>=2.5
   Downloading idna-3.10-py3-none-any.whl (70 kB)
 Installing collected packages: zipp, urllib3, MarkupSafe, idna, charset-normalizer, certifi, tomli, sphinxcontrib-serializinghtml, sphinxcontrib-qthelp, sphinxcontrib-jsmath, sphinxcontrib-htmlhelp, sphinxcontrib-devhelp, sphinxcontrib-applehelp, snowballstemmer, requests, Pygments, packaging, Jinja2, importlib-metadata, imagesize, docutils, babel, alabaster, Sphinx, pyyaml
 Successfully installed Jinja2-3.1.6 MarkupSafe-3.0.2 Pygments-2.19.2 Sphinx-7.4.7 alabaster-0.7.16 babel-2.17.0 certifi-2025.8.3 charset-normalizer-3.4.3 docutils-0.21.2 idna-3.10 imagesize-1.4.1 importlib-metadata-8.7.0 packaging-25.0 pyyaml-6.0.2 requests-2.32.4 snowballstemmer-3.0.1 sphinxcontrib-applehelp-2.0.0 sphinxcontrib-devhelp-2.0.0 sphinxcontrib-htmlhelp-2.1.0 sphinxcontrib-jsmath-1.0.1 sphinxcontrib-qthelp-2.0.0 sphinxcontrib-serializinghtml-2.0.0 tomli-2.2.1 urllib3-2.5.0 zipp-3.23.0
Additional packages installed: Jinja2-3, 1, 6, MarkupSafe-3, 0, 2, Pygments-2, 19, 2, Sphinx-7, 4, 7, alabaster-0, 7, 16, babel-2, 17, 0, certifi-2025, 8, 3, charset-normalizer-3, 4, 3, docutils-0, 21, 2, idna-3, 10, imagesize-1, 4, 1, importlib-metadata-8, 7, 0, packaging-25, 0, pyyaml-6, 0, 2, requests-2, 32, 4, snowballstemmer-3, 0, 1, sphinxcontrib-applehelp-2, 0, 0, sphinxcontrib-devhelp-2, 0, 0, sphinxcontrib-htmlhelp-2, 1, 0, sphinxcontrib-jsmath-1, 0, 1, sphinxcontrib-qthelp-2, 0, 0, sphinxcontrib-serializinghtml-2, 0, 0, tomli-2, 2, 1, urllib3-2, 5, 0, zipp-3, 23, 0

Installing section: venv with pip
=================================

 $ /usr/bin/python3 -m venv sphinx_latest
 $ pip install --no-input -r ./Documentation/sphinx/requirements.txt
 Requirement already satisfied: alabaster in ./sphinx_latest/lib/python3.9/site-packages (from -r ./Documentation/sphinx/requirements.txt (line 2)) (0.7.16)
 Requirement already satisfied: Sphinx in ./sphinx_latest/lib/python3.9/site-packages (from -r ./Documentation/sphinx/requirements.txt (line 3)) (7.4.7)
 Requirement already satisfied: pyyaml in ./sphinx_latest/lib/python3.9/site-packages (from -r ./Documentation/sphinx/requirements.txt (line 4)) (6.0.2)
 Requirement already satisfied: Pygments>=2.17 in ./sphinx_latest/lib/python3.9/site-packages (from Sphinx->-r ./Documentation/sphinx/requirements.txt (line 3)) (2.19.2)
 Requirement already satisfied: Jinja2>=3.1 in ./sphinx_latest/lib/python3.9/site-packages (from Sphinx->-r ./Documentation/sphinx/requirements.txt (line 3)) (3.1.6)
 Requirement already satisfied: babel>=2.13 in ./sphinx_latest/lib/python3.9/site-packages (from Sphinx->-r ./Documentation/sphinx/requirements.txt (line 3)) (2.17.0)
 Requirement already satisfied: sphinxcontrib-serializinghtml>=1.1.9 in ./sphinx_latest/lib/python3.9/site-packages (from Sphinx->-r ./Documentation/sphinx/requirements.txt (line 3)) (2.0.0)
 Requirement already satisfied: sphinxcontrib-devhelp in ./sphinx_latest/lib/python3.9/site-packages (from Sphinx->-r ./Documentation/sphinx/requirements.txt (line 3)) (2.0.0)
 Requirement already satisfied: tomli>=2 in ./sphinx_latest/lib/python3.9/site-packages (from Sphinx->-r ./Documentation/sphinx/requirements.txt (line 3)) (2.2.1)
 Requirement already satisfied: sphinxcontrib-qthelp in ./sphinx_latest/lib/python3.9/site-packages (from Sphinx->-r ./Documentation/sphinx/requirements.txt (line 3)) (2.0.0)
 Requirement already satisfied: importlib-metadata>=6.0 in ./sphinx_latest/lib/python3.9/site-packages (from Sphinx->-r ./Documentation/sphinx/requirements.txt (line 3)) (8.7.0)
 Requirement already satisfied: snowballstemmer>=2.2 in ./sphinx_latest/lib/python3.9/site-packages (from Sphinx->-r ./Documentation/sphinx/requirements.txt (line 3)) (3.0.1)
 Requirement already satisfied: sphinxcontrib-applehelp in ./sphinx_latest/lib/python3.9/site-packages (from Sphinx->-r ./Documentation/sphinx/requirements.txt (line 3)) (2.0.0)
 Requirement already satisfied: imagesize>=1.3 in ./sphinx_latest/lib/python3.9/site-packages (from Sphinx->-r ./Documentation/sphinx/requirements.txt (line 3)) (1.4.1)
 Requirement already satisfied: sphinxcontrib-htmlhelp>=2.0.0 in ./sphinx_latest/lib/python3.9/site-packages (from Sphinx->-r ./Documentation/sphinx/requirements.txt (line 3)) (2.1.0)
 Requirement already satisfied: requests>=2.30.0 in ./sphinx_latest/lib/python3.9/site-packages (from Sphinx->-r ./Documentation/sphinx/requirements.txt (line 3)) (2.32.4)
 Requirement already satisfied: packaging>=23.0 in ./sphinx_latest/lib/python3.9/site-packages (from Sphinx->-r ./Documentation/sphinx/requirements.txt (line 3)) (25.0)
 Requirement already satisfied: docutils<0.22,>=0.20 in ./sphinx_latest/lib/python3.9/site-packages (from Sphinx->-r ./Documentation/sphinx/requirements.txt (line 3)) (0.21.2)
 Requirement already satisfied: sphinxcontrib-jsmath in ./sphinx_latest/lib/python3.9/site-packages (from Sphinx->-r ./Documentation/sphinx/requirements.txt (line 3)) (1.0.1)
 Requirement already satisfied: zipp>=3.20 in ./sphinx_latest/lib/python3.9/site-packages (from importlib-metadata>=6.0->Sphinx->-r ./Documentation/sphinx/requirements.txt (line 3)) (3.23.0)
 Requirement already satisfied: MarkupSafe>=2.0 in ./sphinx_latest/lib/python3.9/site-packages (from Jinja2>=3.1->Sphinx->-r ./Documentation/sphinx/requirements.txt (line 3)) (3.0.2)
 Requirement already satisfied: certifi>=2017.4.17 in ./sphinx_latest/lib/python3.9/site-packages (from requests>=2.30.0->Sphinx->-r ./Documentation/sphinx/requirements.txt (line 3)) (2025.8.3)
 Requirement already satisfied: urllib3<3,>=1.21.1 in ./sphinx_latest/lib/python3.9/site-packages (from requests>=2.30.0->Sphinx->-r ./Documentation/sphinx/requirements.txt (line 3)) (2.5.0)
 Requirement already satisfied: charset_normalizer<4,>=2 in ./sphinx_latest/lib/python3.9/site-packages (from requests>=2.30.0->Sphinx->-r ./Documentation/sphinx/requirements.txt (line 3)) (3.4.3)
 Requirement already satisfied: idna<4,>=2.5 in ./sphinx_latest/lib/python3.9/site-packages (from requests>=2.30.0->Sphinx->-r ./Documentation/sphinx/requirements.txt (line 3)) (3.10)
Check for docutils on venv with sphinx_latest/bin/python
 $ sphinx_latest/bin/python -c try: import docutils; print(docutils.__version__)
except: pass
 0.21.2
 $ sphinx-build --version
 sphinx-build 7.4.7

Installing section: package_install with dnf
============================================

 $ dnf install -y --setopt=install_weak_deps=False python3-sphinx
 Last metadata expiration check: 0:02:20 ago on Mon Aug 18 07:33:55 2025.
 Dependencies resolved.
 ================================================================================================
  Package                                 Arch    Version            Repository              Size
 ================================================================================================
 Installing:
  python3-sphinx                          noarch  1:3.4.3-8.el9      ol9_codeready_builder  2.9 M
 Installing dependencies:
  python3-babel                           noarch  2.9.1-2.el9        ol9_appstream          6.6 M
  python3-chardet                         noarch  4.0.0-5.0.1.el9    base                   350 k
  python3-docutils                        noarch  0.16-6.el9         ol9_appstream          2.0 M
  python3-idna                            noarch  2.10-7.0.1.el9_4.1 base                   129 k
  python3-imagesize                       noarch  1.2.0-6.el9        ol9_codeready_builder   27 k
  python3-jinja2                          noarch  2.11.3-8.el9_5     ol9_appstream          329 k
  python3-markupsafe                      x86_64  1.1.1-12.el9       ol9_appstream           52 k
  python3-packaging                       noarch  20.9-5.0.1.el9     ol9_appstream          117 k
  python3-pygments                        noarch  2.7.4-4.el9        ol9_codeready_builder  2.6 M
  python3-pyparsing                       noarch  2.4.7-9.el9        base                   163 k
  python3-pysocks                         noarch  1.7.1-12.0.1.el9   base                    46 k
  python3-pytz                            noarch  2021.1-5.el9       ol9_appstream           73 k
  python3-requests                        noarch  2.25.1-10.el9_6    latest                 179 k
  python3-setuptools                      noarch  53.0.0-13.el9_6.1  latest                 1.3 M
  python3-snowballstemmer                 noarch  1.9.0-10.el9       ol9_codeready_builder  231 k
  python3-sphinx-theme-alabaster          noarch  0.7.12-13.el9      ol9_codeready_builder   48 k
  python3-sphinxcontrib-applehelp         noarch  1.0.2-5.el9        ol9_codeready_builder  103 k
  python3-sphinxcontrib-devhelp           noarch  1.0.2-5.el9        ol9_codeready_builder   95 k
  python3-sphinxcontrib-htmlhelp          noarch  1.0.3-6.el9        ol9_codeready_builder  109 k
  python3-sphinxcontrib-jsmath            noarch  1.0.1-12.el9       ol9_codeready_builder   33 k
  python3-sphinxcontrib-qthelp            noarch  1.0.3-5.el9        ol9_codeready_builder  101 k
  python3-sphinxcontrib-serializinghtml   noarch  1.1.4-5.el9        ol9_codeready_builder  103 k
  python3-urllib3                         noarch  1.26.5-6.el9       base                   310 k

Transaction Summary
================================================================================================
Install 24 Packages

Total download size: 18 M
Installed size: 61 M
Downloading Packages:

 (1/24): python3-idna-2.10-7.0.1.el9_4.1.noarch. 831 kB/s | 129 kB     00:00    
 (2/24): python3-pyparsing-2.4.7-9.el9.noarch.rp 901 kB/s | 163 kB     00:00    
 (3/24): python3-chardet-4.0.0-5.0.1.el9.noarch. 1.5 MB/s | 350 kB     00:00    
 (4/24): python3-pysocks-1.7.1-12.0.1.el9.noarch 611 kB/s |  46 kB     00:00    
 (5/24): python3-requests-2.25.1-10.el9_6.noarch 7.3 MB/s | 179 kB     00:00    
 (6/24): python3-urllib3-1.26.5-6.el9.noarch.rpm 3.9 MB/s | 310 kB     00:00    
 (7/24): python3-setuptools-53.0.0-13.el9_6.1.no  15 MB/s | 1.3 MB     00:00    
 (8/24): python3-docutils-0.16-6.el9.noarch.rpm   20 MB/s | 2.0 MB     00:00    
 (9/24): python3-babel-2.9.1-2.el9.noarch.rpm     37 MB/s | 6.6 MB     00:00    
 (10/24): python3-jinja2-2.11.3-8.el9_5.noarch.r 2.3 MB/s | 329 kB     00:00    
 (11/24): python3-packaging-20.9-5.0.1.el9.noarc 1.7 MB/s | 117 kB     00:00    
 (12/24): python3-pytz-2021.1-5.el9.noarch.rpm   1.6 MB/s |  73 kB     00:00    
 (13/24): python3-markupsafe-1.1.1-12.el9.x86_64 304 kB/s |  52 kB     00:00    
 (14/24): python3-snowballstemmer-1.9.0-10.el9.n 3.9 MB/s | 231 kB     00:00    
 (15/24): python3-pygments-2.7.4-4.el9.noarch.rp  25 MB/s | 2.6 MB     00:00    
 (16/24): python3-imagesize-1.2.0-6.el9.noarch.r 214 kB/s |  27 kB     00:00    
 (17/24): python3-sphinx-theme-alabaster-0.7.12- 939 kB/s |  48 kB     00:00    
 (18/24): python3-sphinxcontrib-devhelp-1.0.2-5. 1.9 MB/s |  95 kB     00:00    
 (19/24): python3-sphinx-3.4.3-8.el9.noarch.rpm   23 MB/s | 2.9 MB     00:00    
 (20/24): python3-sphinxcontrib-htmlhelp-1.0.3-6 1.4 MB/s | 109 kB     00:00    
 (21/24): python3-sphinxcontrib-jsmath-1.0.1-12. 412 kB/s |  33 kB     00:00    
 (22/24): python3-sphinxcontrib-serializinghtml- 1.7 MB/s | 103 kB     00:00    
 (23/24): python3-sphinxcontrib-qthelp-1.0.3-5.e 1.2 MB/s | 101 kB     00:00    
 (24/24): python3-sphinxcontrib-applehelp-1.0.2-  51 kB/s | 103 kB     00:02    
 --------------------------------------------------------------------------------
 Total                                           6.8 MB/s |  18 MB     00:02     
 Running transaction check
 Transaction check succeeded.
 Running transaction test
 Transaction test succeeded.
 Running transaction
   Preparing        :                                                        1/1 
   Installing       : python3-setuptools-53.0.0-13.el9_6.1.noarch           1/24 
   Installing       : python3-idna-2.10-7.0.1.el9_4.1.noarch                2/24 
   Installing       : python3-sphinxcontrib-serializinghtml-1.1.4-5.el9.    3/24 
   Installing       : python3-sphinxcontrib-qthelp-1.0.3-5.el9.noarch       4/24 
   Installing       : python3-sphinxcontrib-jsmath-1.0.1-12.el9.noarch      5/24 
   Installing       : python3-sphinxcontrib-htmlhelp-1.0.3-6.el9.noarch     6/24 
   Installing       : python3-sphinxcontrib-devhelp-1.0.2-5.el9.noarch      7/24 
   Installing       : python3-sphinxcontrib-applehelp-1.0.2-5.el9.noarch    8/24 
   Installing       : python3-sphinx-theme-alabaster-0.7.12-13.el9.noarc    9/24 
   Installing       : python3-snowballstemmer-1.9.0-10.el9.noarch          10/24 
   Installing       : python3-pygments-2.7.4-4.el9.noarch                  11/24 
   Installing       : python3-imagesize-1.2.0-6.el9.noarch                 12/24 
   Installing       : python3-pytz-2021.1-5.el9.noarch                     13/24 
   Installing       : python3-babel-2.9.1-2.el9.noarch                     14/24 
   Installing       : python3-markupsafe-1.1.1-12.el9.x86_64               15/24 
   Installing       : python3-jinja2-2.11.3-8.el9_5.noarch                 16/24 
   Installing       : python3-docutils-0.16-6.el9.noarch                   17/24 
   Installing       : python3-pysocks-1.7.1-12.0.1.el9.noarch              18/24 
   Installing       : python3-urllib3-1.26.5-6.el9.noarch                  19/24 
   Installing       : python3-pyparsing-2.4.7-9.el9.noarch                 20/24 
   Installing       : python3-packaging-20.9-5.0.1.el9.noarch              21/24 
   Installing       : python3-chardet-4.0.0-5.0.1.el9.noarch               22/24 
   Installing       : python3-requests-2.25.1-10.el9_6.noarch              23/24 
   Installing       : python3-sphinx-1:3.4.3-8.el9.noarch                  24/24 
   Running scriptlet: python3-sphinx-1:3.4.3-8.el9.noarch                  24/24 
   Verifying        : python3-chardet-4.0.0-5.0.1.el9.noarch                1/24 
   Verifying        : python3-idna-2.10-7.0.1.el9_4.1.noarch                2/24 
   Verifying        : python3-pyparsing-2.4.7-9.el9.noarch                  3/24 
   Verifying        : python3-pysocks-1.7.1-12.0.1.el9.noarch               4/24 
   Verifying        : python3-urllib3-1.26.5-6.el9.noarch                   5/24 
   Verifying        : python3-requests-2.25.1-10.el9_6.noarch               6/24 
   Verifying        : python3-setuptools-53.0.0-13.el9_6.1.noarch           7/24 
   Verifying        : python3-babel-2.9.1-2.el9.noarch                      8/24 
   Verifying        : python3-docutils-0.16-6.el9.noarch                    9/24 
   Verifying        : python3-jinja2-2.11.3-8.el9_5.noarch                 10/24 
   Verifying        : python3-markupsafe-1.1.1-12.el9.x86_64               11/24 
   Verifying        : python3-packaging-20.9-5.0.1.el9.noarch              12/24 
   Verifying        : python3-pytz-2021.1-5.el9.noarch                     13/24 
   Verifying        : python3-imagesize-1.2.0-6.el9.noarch                 14/24 
   Verifying        : python3-pygments-2.7.4-4.el9.noarch                  15/24 
   Verifying        : python3-snowballstemmer-1.9.0-10.el9.noarch          16/24 
   Verifying        : python3-sphinx-1:3.4.3-8.el9.noarch                  17/24 
   Verifying        : python3-sphinx-theme-alabaster-0.7.12-13.el9.noarc   18/24 
   Verifying        : python3-sphinxcontrib-applehelp-1.0.2-5.el9.noarch   19/24 
   Verifying        : python3-sphinxcontrib-devhelp-1.0.2-5.el9.noarch     20/24 
   Verifying        : python3-sphinxcontrib-htmlhelp-1.0.3-6.el9.noarch    21/24 
   Verifying        : python3-sphinxcontrib-jsmath-1.0.1-12.el9.noarch     22/24 
   Verifying        : python3-sphinxcontrib-qthelp-1.0.3-5.el9.noarch      23/24 
   Verifying        : python3-sphinxcontrib-serializinghtml-1.1.4-5.el9.   24/24 

Installed:
python3-babel-2.9.1-2.el9.noarch python3-chardet-4.0.0-5.0.1.el9.noarch python3-docutils-0.16-6.el9.noarch python3-idna-2.10-7.0.1.el9_4.1.noarch python3-imagesize-1.2.0-6.el9.noarch python3-jinja2-2.11.3-8.el9_5.noarch python3-markupsafe-1.1.1-12.el9.x86_64 python3-packaging-20.9-5.0.1.el9.noarch python3-pygments-2.7.4-4.el9.noarch python3-pyparsing-2.4.7-9.el9.noarch python3-pysocks-1.7.1-12.0.1.el9.noarch python3-pytz-2021.1-5.el9.noarch python3-requests-2.25.1-10.el9_6.noarch python3-setuptools-53.0.0-13.el9_6.1.noarch python3-snowballstemmer-1.9.0-10.el9.noarch python3-sphinx-1:3.4.3-8.el9.noarch python3-sphinx-theme-alabaster-0.7.12-13.el9.noarch python3-sphinxcontrib-applehelp-1.0.2-5.el9.noarch python3-sphinxcontrib-devhelp-1.0.2-5.el9.noarch python3-sphinxcontrib-htmlhelp-1.0.3-6.el9.noarch python3-sphinxcontrib-jsmath-1.0.1-12.el9.noarch python3-sphinxcontrib-qthelp-1.0.3-5.el9.noarch python3-sphinxcontrib-serializinghtml-1.1.4-5.el9.noarch python3-urllib3-1.26.5-6.el9.noarch

Complete!
Additional packages installed: noarch, 1

Installing section: package_install with dnf
============================================

 $ dnf install -y --setopt=install_weak_deps=False python3-sphinx
 Last metadata expiration check: 0:02:25 ago on Mon Aug 18 07:33:55 2025.
 Package python3-sphinx-1:3.4.3-8.el9.noarch is already installed.
 Dependencies resolved.
 Nothing to do.
 Complete!
Check for docutils with /usr/bin/python3
 $ /usr/bin/python3 -c try: import docutils; print(docutils.__version__)
except: pass
 0.16
 $ sphinx-build --version
 sphinx-build 3.4.3
Default subset: Oracle Linux Server release 9.6
 $ hostname

Installation commands processed
TAP version 14
1..1
# Subtest: Oracle Linux Server release 9.6
1..7
ok 1 - OS detection: Oracle Linux Server release 9.6 ok 2 - System packages: Packages installed
ok 3 - Sphinx on venv: Sphinx Sphinx 7.4.7
ok 4 - Sphinx package: Sphinx Sphinx 3.4.3
ok 5 - Clean documentation: Build time: 0:00, return code: 0 ok 6 - Build HTML documentation: Build time: 3:57, return code: 0 ok 7 - Build PDF documentation: Build time: 10:09, return code: 0 # Subtest: PDF docs
1..65
ok 1 - dev-tools: pdf/dev-tools.pdf
ok 2 - tools: pdf/tools.pdf
ok 3 - filesystems: pdf/filesystems.pdf
ok 4 - w1: pdf/w1.pdf
ok 5 - maintainer: pdf/maintainer.pdf
ok 6 - process: pdf/process.pdf
ok 7 - isdn: pdf/isdn.pdf
ok 8 - fault-injection: pdf/fault-injection.pdf
ok 9 - iio: pdf/iio.pdf
ok 10 - scheduler: pdf/scheduler.pdf
ok 11 - staging: pdf/staging.pdf
ok 12 - fpga: pdf/fpga.pdf
ok 13 - power: pdf/power.pdf
ok 14 - leds: pdf/leds.pdf
ok 15 - edac: pdf/edac.pdf
ok 16 - PCI: pdf/PCI.pdf
ok 17 - firmware-guide: pdf/firmware-guide.pdf
ok 18 - cpu-freq: pdf/cpu-freq.pdf
ok 19 - mhi: pdf/mhi.pdf
ok 20 - wmi: pdf/wmi.pdf
ok 21 - timers: pdf/timers.pdf
ok 22 - accel: pdf/accel.pdf
ok 23 - hid: pdf/hid.pdf
ok 24 - userspace-api: pdf/userspace-api.pdf
ok 25 - spi: pdf/spi.pdf
ok 26 - networking: pdf/networking.pdf
ok 27 - virt: pdf/virt.pdf
ok 28 - nvme: pdf/nvme.pdf
ok 29 - translations: pdf/translations.pdf
ok 30 - input: pdf/input.pdf
ok 31 - tee: pdf/tee.pdf
ok 32 - doc-guide: pdf/doc-guide.pdf
ok 33 - cdrom: pdf/cdrom.pdf
ok 34 - gpu: pdf/gpu.pdf
ok 35 - i2c: pdf/i2c.pdf
ok 36 - RCU: pdf/RCU.pdf
ok 37 - watchdog: pdf/watchdog.pdf
ok 38 - usb: pdf/usb.pdf
ok 39 - rust: pdf/rust.pdf
ok 40 - crypto: pdf/crypto.pdf
ok 41 - kbuild: pdf/kbuild.pdf
ok 42 - livepatch: pdf/livepatch.pdf
ok 43 - mm: pdf/mm.pdf
ok 44 - locking: pdf/locking.pdf
ok 45 - infiniband: pdf/infiniband.pdf
ok 46 - driver-api: pdf/driver-api.pdf
ok 47 - bpf: pdf/bpf.pdf
ok 48 - devicetree: pdf/devicetree.pdf
ok 49 - block: pdf/block.pdf
ok 50 - target: pdf/target.pdf
ok 51 - arch: pdf/arch.pdf
ok 52 - pcmcia: pdf/pcmcia.pdf
ok 53 - scsi: pdf/scsi.pdf
ok 54 - netlabel: pdf/netlabel.pdf
ok 55 - sound: pdf/sound.pdf
ok 56 - security: pdf/security.pdf
ok 57 - accounting: pdf/accounting.pdf
ok 58 - admin-guide: pdf/admin-guide.pdf
ok 59 - core-api: pdf/core-api.pdf
ok 60 - fb: pdf/fb.pdf
ok 61 - peci: pdf/peci.pdf
ok 62 - trace: pdf/trace.pdf
ok 63 - misc-devices: pdf/misc-devices.pdf
ok 64 - kernel-hacking: pdf/kernel-hacking.pdf
ok 65 - hwmon: pdf/hwmon.pdf
ok 1 - Oracle Linux Server release 9.6

-

Here, I dropped the full logs for html and pdf, as they were a way too bigger>

That's the end of the pdfdocs build target:

Summary
=======
Oracle Linux Server release 9.6:

    OS detection             : PASSED: Oracle Linux Server release 9.6
    System packages          : PASSED: Packages installed
    Sphinx on venv           : PASSED: Sphinx Sphinx 7.4.7
    Sphinx package           : PASSED: Sphinx Sphinx 3.4.3
    Clean documentation      : PASSED: Build time: 0:00, return code: 0

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

/root/sphinx_latest/bin/python3 sphinx_latest/bin/sphinx-build -j4 -b latex -c /root/Documentation -D latex_elements.papersize=a4paper -d /root/Documentation/output/.doctrees -D kerneldoc_bin=scripts/kernel-doc.py -D version=6.17.0-rc1 -D release= -D kerne ldoc_srctree=. /root/Documentation /root/Documentation/output/latex

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

All PDF files were built.

1 of 1 validate commands succeeded