linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 00/11] Fix PDF doc builds on major distros
@ 2025-08-15 11:36 Mauro Carvalho Chehab
  2025-08-15 11:36 ` [PATCH 01/11] docs: Makefile: Fix LaTeX paper size settings Mauro Carvalho Chehab
                   ` (12 more replies)
  0 siblings, 13 replies; 42+ messages in thread
From: Mauro Carvalho Chehab @ 2025-08-15 11:36 UTC (permalink / raw)
  To: Jonathan Corbet, Linux Doc Mailing List
  Cc: Mauro Carvalho Chehab, Mauro Carvalho Chehab, linux-kernel,
	Björn Roy Baron, Alex Gaynor, Alice Ryhl, Andreas Hindborg,
	Benno Lossin, Boqun Feng, Danilo Krummrich, Gary Guo,
	Miguel Ojeda, Trevor Gross, bpf, rust-for-linux

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(-)

-- 
2.50.1



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

* [PATCH 01/11] docs: Makefile: Fix LaTeX paper size settings
  2025-08-15 11:36 [PATCH 00/11] Fix PDF doc builds on major distros Mauro Carvalho Chehab
@ 2025-08-15 11:36 ` Mauro Carvalho Chehab
  2025-08-15 11:36 ` [PATCH 02/11] docs: conf.py: better handle latex documents Mauro Carvalho Chehab
                   ` (11 subsequent siblings)
  12 siblings, 0 replies; 42+ messages in thread
From: Mauro Carvalho Chehab @ 2025-08-15 11:36 UTC (permalink / raw)
  To: Jonathan Corbet, Linux Doc Mailing List
  Cc: Mauro Carvalho Chehab, Mauro Carvalho Chehab, linux-kernel

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

Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
---
 Documentation/Makefile | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/Documentation/Makefile b/Documentation/Makefile
index 820f07e0afe6..2ed334971acd 100644
--- a/Documentation/Makefile
+++ b/Documentation/Makefile
@@ -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),)
-- 
2.50.1


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

* [PATCH 02/11] docs: conf.py: better handle latex documents
  2025-08-15 11:36 [PATCH 00/11] Fix PDF doc builds on major distros Mauro Carvalho Chehab
  2025-08-15 11:36 ` [PATCH 01/11] docs: Makefile: Fix LaTeX paper size settings Mauro Carvalho Chehab
@ 2025-08-15 11:36 ` Mauro Carvalho Chehab
  2025-08-15 11:36 ` [PATCH 03/11] docs: conf.py: fix doc name with SPHINXDIRS Mauro Carvalho Chehab
                   ` (10 subsequent siblings)
  12 siblings, 0 replies; 42+ messages in thread
From: Mauro Carvalho Chehab @ 2025-08-15 11:36 UTC (permalink / raw)
  To: Jonathan Corbet, Linux Doc Mailing List
  Cc: Mauro Carvalho Chehab, Mauro Carvalho Chehab, linux-kernel

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.

Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
---
 Documentation/conf.py | 54 +++++++++++++++++++++----------------------
 1 file changed, 26 insertions(+), 28 deletions(-)

diff --git a/Documentation/conf.py b/Documentation/conf.py
index f9828f3862f9..2c1be59fd54b 100644
--- a/Documentation/conf.py
+++ b/Documentation/conf.py
@@ -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)
-- 
2.50.1


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

* [PATCH 03/11] docs: conf.py: fix doc name with SPHINXDIRS
  2025-08-15 11:36 [PATCH 00/11] Fix PDF doc builds on major distros Mauro Carvalho Chehab
  2025-08-15 11:36 ` [PATCH 01/11] docs: Makefile: Fix LaTeX paper size settings Mauro Carvalho Chehab
  2025-08-15 11:36 ` [PATCH 02/11] docs: conf.py: better handle latex documents Mauro Carvalho Chehab
@ 2025-08-15 11:36 ` Mauro Carvalho Chehab
  2025-08-15 11:36 ` [PATCH 04/11] docs: conf.py: rename some vars at latex_documents logic Mauro Carvalho Chehab
                   ` (9 subsequent siblings)
  12 siblings, 0 replies; 42+ messages in thread
From: Mauro Carvalho Chehab @ 2025-08-15 11:36 UTC (permalink / raw)
  To: Jonathan Corbet, Linux Doc Mailing List
  Cc: Mauro Carvalho Chehab, Mauro Carvalho Chehab, linux-kernel

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.

Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
---
 Documentation/conf.py | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/Documentation/conf.py b/Documentation/conf.py
index 2c1be59fd54b..c8401ed75402 100644
--- a/Documentation/conf.py
+++ b/Documentation/conf.py
@@ -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")):
-- 
2.50.1


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

* [PATCH 04/11] docs: conf.py: rename some vars at latex_documents logic
  2025-08-15 11:36 [PATCH 00/11] Fix PDF doc builds on major distros Mauro Carvalho Chehab
                   ` (2 preceding siblings ...)
  2025-08-15 11:36 ` [PATCH 03/11] docs: conf.py: fix doc name with SPHINXDIRS Mauro Carvalho Chehab
@ 2025-08-15 11:36 ` Mauro Carvalho Chehab
  2025-08-15 11:36 ` [PATCH 05/11] docs: conf.py: fix some troubles for LaTeX output Mauro Carvalho Chehab
                   ` (8 subsequent siblings)
  12 siblings, 0 replies; 42+ messages in thread
From: Mauro Carvalho Chehab @ 2025-08-15 11:36 UTC (permalink / raw)
  To: Jonathan Corbet, Linux Doc Mailing List
  Cc: Mauro Carvalho Chehab, Mauro Carvalho Chehab, linux-kernel

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.

Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
---
 Documentation/conf.py | 22 +++++++++++-----------
 1 file changed, 11 insertions(+), 11 deletions(-)

diff --git a/Documentation/conf.py b/Documentation/conf.py
index c8401ed75402..6e12c7d8e07e 100644
--- a/Documentation/conf.py
+++ b/Documentation/conf.py
@@ -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"))
 
-- 
2.50.1


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

* [PATCH 05/11] docs: conf.py: fix some troubles for LaTeX output
  2025-08-15 11:36 [PATCH 00/11] Fix PDF doc builds on major distros Mauro Carvalho Chehab
                   ` (3 preceding siblings ...)
  2025-08-15 11:36 ` [PATCH 04/11] docs: conf.py: rename some vars at latex_documents logic Mauro Carvalho Chehab
@ 2025-08-15 11:36 ` Mauro Carvalho Chehab
  2025-08-20  8:16   ` Akira Yokosawa
  2025-08-15 11:36 ` [PATCH 06/11] scripts: sphinx-pre-install: fix PDF build issues on Ubuntu Mauro Carvalho Chehab
                   ` (7 subsequent siblings)
  12 siblings, 1 reply; 42+ messages in thread
From: Mauro Carvalho Chehab @ 2025-08-15 11:36 UTC (permalink / raw)
  To: Jonathan Corbet, Linux Doc Mailing List
  Cc: Mauro Carvalho Chehab, Mauro Carvalho Chehab, linux-kernel

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

Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
---
 Documentation/conf.py | 39 +++++++++++++++++++++++----------------
 1 file changed, 23 insertions(+), 16 deletions(-)

diff --git a/Documentation/conf.py b/Documentation/conf.py
index 6e12c7d8e07e..712e0a016727 100644
--- a/Documentation/conf.py
+++ b/Documentation/conf.py
@@ -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 = []
 
-- 
2.50.1


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

* [PATCH 06/11] scripts: sphinx-pre-install: fix PDF build issues on Ubuntu
  2025-08-15 11:36 [PATCH 00/11] Fix PDF doc builds on major distros Mauro Carvalho Chehab
                   ` (4 preceding siblings ...)
  2025-08-15 11:36 ` [PATCH 05/11] docs: conf.py: fix some troubles for LaTeX output Mauro Carvalho Chehab
@ 2025-08-15 11:36 ` Mauro Carvalho Chehab
  2025-08-15 11:36 ` [PATCH 07/11] scripts: sphinx-pre-install: add missing gentoo pdf dependencies Mauro Carvalho Chehab
                   ` (6 subsequent siblings)
  12 siblings, 0 replies; 42+ messages in thread
From: Mauro Carvalho Chehab @ 2025-08-15 11:36 UTC (permalink / raw)
  To: Jonathan Corbet, Linux Doc Mailing List
  Cc: Mauro Carvalho Chehab, Björn Roy Baron,
	Mauro Carvalho Chehab, Alex Gaynor, Alice Ryhl, Andreas Hindborg,
	Benno Lossin, Boqun Feng, Danilo Krummrich, Gary Guo,
	Miguel Ojeda, Trevor Gross, bpf, linux-kernel, rust-for-linux,
	Akira Yokosawa

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

Reported-by: Akira Yokosawa <akiyks@gmail.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
---
 scripts/sphinx-pre-install | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

diff --git a/scripts/sphinx-pre-install b/scripts/sphinx-pre-install
index b8474848df4e..b24a6f91ec0a 100755
--- a/scripts/sphinx-pre-install
+++ b/scripts/sphinx-pre-install
@@ -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():
-- 
2.50.1


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

* [PATCH 07/11] scripts: sphinx-pre-install: add missing gentoo pdf dependencies
  2025-08-15 11:36 [PATCH 00/11] Fix PDF doc builds on major distros Mauro Carvalho Chehab
                   ` (5 preceding siblings ...)
  2025-08-15 11:36 ` [PATCH 06/11] scripts: sphinx-pre-install: fix PDF build issues on Ubuntu Mauro Carvalho Chehab
@ 2025-08-15 11:36 ` Mauro Carvalho Chehab
  2025-08-15 11:36 ` [PATCH 08/11] scripts: sphinx-pre-install: fix PDF dependencies for openSuse Mauro Carvalho Chehab
                   ` (5 subsequent siblings)
  12 siblings, 0 replies; 42+ messages in thread
From: Mauro Carvalho Chehab @ 2025-08-15 11:36 UTC (permalink / raw)
  To: Jonathan Corbet, Linux Doc Mailing List
  Cc: Mauro Carvalho Chehab, Björn Roy Baron,
	Mauro Carvalho Chehab, Alex Gaynor, Alice Ryhl, Andreas Hindborg,
	Benno Lossin, Boqun Feng, Danilo Krummrich, Gary Guo,
	Miguel Ojeda, Trevor Gross, bpf, linux-kernel, rust-for-linux

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

Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
---
 scripts/sphinx-pre-install | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/scripts/sphinx-pre-install b/scripts/sphinx-pre-install
index b24a6f91ec0a..f987abfec802 100755
--- a/scripts/sphinx-pre-install
+++ b/scripts/sphinx-pre-install
@@ -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",
         }
-- 
2.50.1


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

* [PATCH 08/11] scripts: sphinx-pre-install: fix PDF dependencies for openSuse
  2025-08-15 11:36 [PATCH 00/11] Fix PDF doc builds on major distros Mauro Carvalho Chehab
                   ` (6 preceding siblings ...)
  2025-08-15 11:36 ` [PATCH 07/11] scripts: sphinx-pre-install: add missing gentoo pdf dependencies Mauro Carvalho Chehab
@ 2025-08-15 11:36 ` Mauro Carvalho Chehab
  2025-08-15 11:36 ` [PATCH 09/11] scripts: sphinx-pre-install: fix dependencies for OpenMandriva Mauro Carvalho Chehab
                   ` (4 subsequent siblings)
  12 siblings, 0 replies; 42+ messages in thread
From: Mauro Carvalho Chehab @ 2025-08-15 11:36 UTC (permalink / raw)
  To: Jonathan Corbet, Linux Doc Mailing List
  Cc: Mauro Carvalho Chehab, Mauro Carvalho Chehab, linux-kernel

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)

Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
---
 scripts/sphinx-pre-install | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/scripts/sphinx-pre-install b/scripts/sphinx-pre-install
index f987abfec802..86f129c76ecd 100755
--- a/scripts/sphinx-pre-install
+++ b/scripts/sphinx-pre-install
@@ -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",
             })
-- 
2.50.1


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

* [PATCH 09/11] scripts: sphinx-pre-install: fix dependencies for OpenMandriva
  2025-08-15 11:36 [PATCH 00/11] Fix PDF doc builds on major distros Mauro Carvalho Chehab
                   ` (7 preceding siblings ...)
  2025-08-15 11:36 ` [PATCH 08/11] scripts: sphinx-pre-install: fix PDF dependencies for openSuse Mauro Carvalho Chehab
@ 2025-08-15 11:36 ` Mauro Carvalho Chehab
  2025-08-15 11:36 ` [PATCH 10/11] scripts: sphinx-pre-install: fix pdf dependencies for Mageia 9 Mauro Carvalho Chehab
                   ` (3 subsequent siblings)
  12 siblings, 0 replies; 42+ messages in thread
From: Mauro Carvalho Chehab @ 2025-08-15 11:36 UTC (permalink / raw)
  To: Jonathan Corbet, Linux Doc Mailing List
  Cc: Mauro Carvalho Chehab, Mauro Carvalho Chehab, linux-kernel

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.

Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
---
 scripts/sphinx-pre-install | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

diff --git a/scripts/sphinx-pre-install b/scripts/sphinx-pre-install
index 86f129c76ecd..224db3af17db 100755
--- a/scripts/sphinx-pre-install
+++ b/scripts/sphinx-pre-install
@@ -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"
-- 
2.50.1


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

* [PATCH 10/11] scripts: sphinx-pre-install: fix pdf dependencies for Mageia 9
  2025-08-15 11:36 [PATCH 00/11] Fix PDF doc builds on major distros Mauro Carvalho Chehab
                   ` (8 preceding siblings ...)
  2025-08-15 11:36 ` [PATCH 09/11] scripts: sphinx-pre-install: fix dependencies for OpenMandriva Mauro Carvalho Chehab
@ 2025-08-15 11:36 ` Mauro Carvalho Chehab
  2025-08-15 11:36 ` [PATCH 11/11] scripts: sphinx-pre-install: fix PDF dependencies for gentoo Mauro Carvalho Chehab
                   ` (2 subsequent siblings)
  12 siblings, 0 replies; 42+ messages in thread
From: Mauro Carvalho Chehab @ 2025-08-15 11:36 UTC (permalink / raw)
  To: Jonathan Corbet, Linux Doc Mailing List
  Cc: Mauro Carvalho Chehab, Björn Roy Baron,
	Mauro Carvalho Chehab, Alex Gaynor, Alice Ryhl, Andreas Hindborg,
	Benno Lossin, Boqun Feng, Danilo Krummrich, Gary Guo,
	Miguel Ojeda, Trevor Gross, bpf, linux-kernel, rust-for-linux

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)

Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
---
 scripts/sphinx-pre-install | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/scripts/sphinx-pre-install b/scripts/sphinx-pre-install
index 224db3af17db..758a84ae6347 100755
--- a/scripts/sphinx-pre-install
+++ b/scripts/sphinx-pre-install
@@ -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):
-- 
2.50.1


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

* [PATCH 11/11] scripts: sphinx-pre-install: fix PDF dependencies for gentoo
  2025-08-15 11:36 [PATCH 00/11] Fix PDF doc builds on major distros Mauro Carvalho Chehab
                   ` (9 preceding siblings ...)
  2025-08-15 11:36 ` [PATCH 10/11] scripts: sphinx-pre-install: fix pdf dependencies for Mageia 9 Mauro Carvalho Chehab
@ 2025-08-15 11:36 ` Mauro Carvalho Chehab
  2025-08-16  5:06 ` [PATCH 00/11] Fix PDF doc builds on major distros Akira Yokosawa
  2025-08-17 15:32 ` Vegard Nossum
  12 siblings, 0 replies; 42+ messages in thread
From: Mauro Carvalho Chehab @ 2025-08-15 11:36 UTC (permalink / raw)
  To: Jonathan Corbet, Linux Doc Mailing List
  Cc: Mauro Carvalho Chehab, Björn Roy Baron,
	Mauro Carvalho Chehab, Alex Gaynor, Alice Ryhl, Andreas Hindborg,
	Benno Lossin, Boqun Feng, Danilo Krummrich, Gary Guo,
	Miguel Ojeda, Trevor Gross, bpf, linux-kernel, rust-for-linux

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

Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
---
 scripts/sphinx-pre-install | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/scripts/sphinx-pre-install b/scripts/sphinx-pre-install
index 758a84ae6347..c46d7b76f93c 100755
--- a/scripts/sphinx-pre-install
+++ b/scripts/sphinx-pre-install
@@ -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 = {
-- 
2.50.1


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

* Re: [PATCH 00/11] Fix PDF doc builds on major distros
  2025-08-15 11:36 [PATCH 00/11] Fix PDF doc builds on major distros Mauro Carvalho Chehab
                   ` (10 preceding siblings ...)
  2025-08-15 11:36 ` [PATCH 11/11] scripts: sphinx-pre-install: fix PDF dependencies for gentoo Mauro Carvalho Chehab
@ 2025-08-16  5:06 ` Akira Yokosawa
  2025-08-16 11:55   ` Mauro Carvalho Chehab
  2025-08-17 15:32 ` Vegard Nossum
  12 siblings, 1 reply; 42+ messages in thread
From: Akira Yokosawa @ 2025-08-16  5:06 UTC (permalink / raw)
  To: mchehab+huawei; +Cc: bpf, corbet, linux-doc, linux-kernel, Akira Yokosawa

[-CC most folks]

Hi Mauro,

On Fri, 15 Aug 2025 13:36:16 +0200, Mauro Carvalho Chehab wrote:
> 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.

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?

> 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


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

* Re: [PATCH 00/11] Fix PDF doc builds on major distros
  2025-08-16  5:06 ` [PATCH 00/11] Fix PDF doc builds on major distros Akira Yokosawa
@ 2025-08-16 11:55   ` Mauro Carvalho Chehab
  2025-08-17  9:46     ` Akira Yokosawa
  0 siblings, 1 reply; 42+ messages in thread
From: Mauro Carvalho Chehab @ 2025-08-16 11:55 UTC (permalink / raw)
  To: Akira Yokosawa; +Cc: bpf, corbet, linux-doc, linux-kernel

Em Sat, 16 Aug 2025 14:06:43 +0900
Akira Yokosawa <akiyks@gmail.com> escreveu:

> [-CC most folks]
> 
> Hi Mauro,
> 
> On Fri, 15 Aug 2025 13:36:16 +0200, Mauro Carvalho Chehab wrote:
> > 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.  
> 
> 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.

> 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.

> > 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.

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

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

* Re: [PATCH 00/11] Fix PDF doc builds on major distros
  2025-08-16 11:55   ` Mauro Carvalho Chehab
@ 2025-08-17  9:46     ` Akira Yokosawa
  2025-08-17 11:36       ` Mauro Carvalho Chehab
  2025-08-18 16:59       ` Jonathan Corbet
  0 siblings, 2 replies; 42+ messages in thread
From: Akira Yokosawa @ 2025-08-17  9:46 UTC (permalink / raw)
  To: Mauro Carvalho Chehab; +Cc: corbet, linux-doc, linux-kernel, Akira Yokosawa

[-CC: bpf@vger]

On Sat, 16 Aug 2025 13:55:38 +0200, Mauro Carvalho Chehab wrote:
> Em Sat, 16 Aug 2025 14:06:43 +0900
> Akira Yokosawa <akiyks@gmail.com> escreveu:
> 

[...]

> 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.

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

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

* Re: [PATCH 00/11] Fix PDF doc builds on major distros
  2025-08-17  9:46     ` Akira Yokosawa
@ 2025-08-17 11:36       ` Mauro Carvalho Chehab
  2025-08-17 12:24         ` Akira Yokosawa
  2025-08-18 16:59       ` Jonathan Corbet
  1 sibling, 1 reply; 42+ messages in thread
From: Mauro Carvalho Chehab @ 2025-08-17 11:36 UTC (permalink / raw)
  To: Akira Yokosawa; +Cc: corbet, linux-doc, linux-kernel

Em Sun, 17 Aug 2025 18:46:35 +0900
Akira Yokosawa <akiyks@gmail.com> escreveu:

> [-CC: bpf@vger]
> 
> On Sat, 16 Aug 2025 13:55:38 +0200, Mauro Carvalho Chehab wrote:
> > Em Sat, 16 Aug 2025 14:06:43 +0900
> > Akira Yokosawa <akiyks@gmail.com> escreveu:
> >   
> 
> [...]
> 
> > 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.  
> 
> 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.

> 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.

> 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

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

* Re: [PATCH 00/11] Fix PDF doc builds on major distros
  2025-08-17 11:36       ` Mauro Carvalho Chehab
@ 2025-08-17 12:24         ` Akira Yokosawa
  2025-08-17 13:45           ` Mauro Carvalho Chehab
  0 siblings, 1 reply; 42+ messages in thread
From: Akira Yokosawa @ 2025-08-17 12:24 UTC (permalink / raw)
  To: Mauro Carvalho Chehab; +Cc: corbet, linux-doc, linux-kernel, Akira Yokosawa

On Sun, 17 Aug 2025 13:36:06 +0200, Mauro Carvalho Chehab wrote:
> Em Sun, 17 Aug 2025 18:46:35 +0900
> Akira Yokosawa <akiyks@gmail.com> escreveu:
> 
>> [-CC: bpf@vger]
>>

[...]

>> 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.
> 
>> 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.
> 

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


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

* Re: [PATCH 00/11] Fix PDF doc builds on major distros
  2025-08-17 12:24         ` Akira Yokosawa
@ 2025-08-17 13:45           ` Mauro Carvalho Chehab
  2025-08-17 16:07             ` Akira Yokosawa
  0 siblings, 1 reply; 42+ messages in thread
From: Mauro Carvalho Chehab @ 2025-08-17 13:45 UTC (permalink / raw)
  To: Akira Yokosawa; +Cc: corbet, linux-doc, linux-kernel

Em Sun, 17 Aug 2025 21:24:49 +0900
Akira Yokosawa <akiyks@gmail.com> escreveu:

> On Sun, 17 Aug 2025 13:36:06 +0200, Mauro Carvalho Chehab wrote:
> > Em Sun, 17 Aug 2025 18:46:35 +0900
> > Akira Yokosawa <akiyks@gmail.com> escreveu:
> >   
> >> [-CC: bpf@vger]
> >>  
> 
> [...]
> 
> >> 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.
> >   
> >> 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.
> >   
> 
> 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.

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

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

* Re: [PATCH 00/11] Fix PDF doc builds on major distros
  2025-08-15 11:36 [PATCH 00/11] Fix PDF doc builds on major distros Mauro Carvalho Chehab
                   ` (11 preceding siblings ...)
  2025-08-16  5:06 ` [PATCH 00/11] Fix PDF doc builds on major distros Akira Yokosawa
@ 2025-08-17 15:32 ` Vegard Nossum
  2025-08-18  8:33   ` Mauro Carvalho Chehab
  12 siblings, 1 reply; 42+ messages in thread
From: Vegard Nossum @ 2025-08-17 15:32 UTC (permalink / raw)
  To: Mauro Carvalho Chehab, Jonathan Corbet, Linux Doc Mailing List
  Cc: linux-kernel

(trimmed Ccs)

Hi Mauro,

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

On 15/08/2025 13:36, Mauro Carvalho Chehab wrote:
> 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.

>      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

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

* Re: [PATCH 00/11] Fix PDF doc builds on major distros
  2025-08-17 13:45           ` Mauro Carvalho Chehab
@ 2025-08-17 16:07             ` Akira Yokosawa
  2025-08-18  0:44               ` Akira Yokosawa
  2025-08-18 17:07               ` Jonathan Corbet
  0 siblings, 2 replies; 42+ messages in thread
From: Akira Yokosawa @ 2025-08-17 16:07 UTC (permalink / raw)
  To: Mauro Carvalho Chehab; +Cc: corbet, linux-doc, linux-kernel, Akira Yokosawa

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

[...]

> 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).

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

Reviewed-by: Akira Yokosawa <akiyks@gmail.com>

        Thanks, Akira



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

* Re: [PATCH 00/11] Fix PDF doc builds on major distros
  2025-08-17 16:07             ` Akira Yokosawa
@ 2025-08-18  0:44               ` Akira Yokosawa
  2025-08-18  9:42                 ` Mauro Carvalho Chehab
  2025-08-18 17:07               ` Jonathan Corbet
  1 sibling, 1 reply; 42+ messages in thread
From: Akira Yokosawa @ 2025-08-18  0:44 UTC (permalink / raw)
  To: Mauro Carvalho Chehab; +Cc: corbet, linux-doc, linux-kernel, Akira Yokosawa

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

> 
> 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


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

* Re: [PATCH 00/11] Fix PDF doc builds on major distros
  2025-08-17 15:32 ` Vegard Nossum
@ 2025-08-18  8:33   ` Mauro Carvalho Chehab
  0 siblings, 0 replies; 42+ messages in thread
From: Mauro Carvalho Chehab @ 2025-08-18  8:33 UTC (permalink / raw)
  To: Vegard Nossum; +Cc: Jonathan Corbet, Linux Doc Mailing List, linux-kernel

Em Sun, 17 Aug 2025 17:32:24 +0200
Vegard Nossum <vegard.nossum@oracle.com> escreveu:

> (trimmed Ccs)
> 
> Hi Mauro,
> 
> Thank you for testing on OL. I'm wondering about some of the results,
> however...
> 
> On 15/08/2025 13:36, Mauro Carvalho Chehab wrote:
> > 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.
> 
> >      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.

> 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.

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.

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

Those warnings exist on upstream.

> 
> 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





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

* Re: [PATCH 00/11] Fix PDF doc builds on major distros
  2025-08-18  0:44               ` Akira Yokosawa
@ 2025-08-18  9:42                 ` Mauro Carvalho Chehab
  2025-08-18 10:06                   ` Akira Yokosawa
  0 siblings, 1 reply; 42+ messages in thread
From: Mauro Carvalho Chehab @ 2025-08-18  9:42 UTC (permalink / raw)
  To: Akira Yokosawa; +Cc: corbet, linux-doc, linux-kernel

Em Mon, 18 Aug 2025 09:44:39 +0900
Akira Yokosawa <akiyks@gmail.com> escreveu:

> On Mon, 18 Aug 2025 01:07:24 +0900, Akira Yokosawa wrote:
> [...]
> 
> > 
> > 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.

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.

> 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

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

* Re: [PATCH 00/11] Fix PDF doc builds on major distros
  2025-08-18  9:42                 ` Mauro Carvalho Chehab
@ 2025-08-18 10:06                   ` Akira Yokosawa
  2025-08-18 11:35                     ` Mauro Carvalho Chehab
  0 siblings, 1 reply; 42+ messages in thread
From: Akira Yokosawa @ 2025-08-18 10:06 UTC (permalink / raw)
  To: Mauro Carvalho Chehab; +Cc: corbet, linux-doc, linux-kernel, Akira Yokosawa

On Mon, 18 Aug 2025 11:42:20 +0200, Mauro Carvalho Chehab wrote:
> Em Mon, 18 Aug 2025 09:44:39 +0900
> Akira Yokosawa <akiyks@gmail.com> escreveu:
>> 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


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

* Re: [PATCH 00/11] Fix PDF doc builds on major distros
  2025-08-18 10:06                   ` Akira Yokosawa
@ 2025-08-18 11:35                     ` Mauro Carvalho Chehab
  2025-08-18 12:00                       ` Akira Yokosawa
  0 siblings, 1 reply; 42+ messages in thread
From: Mauro Carvalho Chehab @ 2025-08-18 11:35 UTC (permalink / raw)
  To: Akira Yokosawa; +Cc: corbet, linux-doc, linux-kernel

Em Mon, 18 Aug 2025 19:06:03 +0900
Akira Yokosawa <akiyks@gmail.com> escreveu:

> On Mon, 18 Aug 2025 11:42:20 +0200, Mauro Carvalho Chehab wrote:
> > Em Mon, 18 Aug 2025 09:44:39 +0900
> > Akira Yokosawa <akiyks@gmail.com> escreveu:  
> >> 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?

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

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

* Re: [PATCH 00/11] Fix PDF doc builds on major distros
  2025-08-18 11:35                     ` Mauro Carvalho Chehab
@ 2025-08-18 12:00                       ` Akira Yokosawa
  0 siblings, 0 replies; 42+ messages in thread
From: Akira Yokosawa @ 2025-08-18 12:00 UTC (permalink / raw)
  To: Mauro Carvalho Chehab; +Cc: corbet, linux-doc, linux-kernel, Akira Yokosawa

On Mon, 18 Aug 2025 13:35:33 +0200, Mauro Carvalho Chehab wrote:
> Em Mon, 18 Aug 2025 19:06:03 +0900
> Akira Yokosawa <akiyks@gmail.com> escreveu:
> 
>> 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:

Ah, xindy is optional then.  

Got it!

Sorry for the noise.

Akira


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

* Re: [PATCH 00/11] Fix PDF doc builds on major distros
  2025-08-17  9:46     ` Akira Yokosawa
  2025-08-17 11:36       ` Mauro Carvalho Chehab
@ 2025-08-18 16:59       ` Jonathan Corbet
  1 sibling, 0 replies; 42+ messages in thread
From: Jonathan Corbet @ 2025-08-18 16:59 UTC (permalink / raw)
  To: Akira Yokosawa, Mauro Carvalho Chehab
  Cc: linux-doc, linux-kernel, Akira Yokosawa

Akira Yokosawa <akiyks@gmail.com> writes:

Just as an aside:

> 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

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

* Re: [PATCH 00/11] Fix PDF doc builds on major distros
  2025-08-17 16:07             ` Akira Yokosawa
  2025-08-18  0:44               ` Akira Yokosawa
@ 2025-08-18 17:07               ` Jonathan Corbet
  2025-08-18 23:26                 ` Akira Yokosawa
  1 sibling, 1 reply; 42+ messages in thread
From: Jonathan Corbet @ 2025-08-18 17:07 UTC (permalink / raw)
  To: Akira Yokosawa, Mauro Carvalho Chehab
  Cc: linux-doc, linux-kernel, Akira Yokosawa

Akira Yokosawa <akiyks@gmail.com> writes:

> 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
>
> Reviewed-by: Akira Yokosawa <akiyks@gmail.com>

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

Thanks,

jon

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

* Re: [PATCH 00/11] Fix PDF doc builds on major distros
  2025-08-18 17:07               ` Jonathan Corbet
@ 2025-08-18 23:26                 ` Akira Yokosawa
  2025-08-19  1:02                   ` Mauro Carvalho Chehab
  0 siblings, 1 reply; 42+ messages in thread
From: Akira Yokosawa @ 2025-08-18 23:26 UTC (permalink / raw)
  To: Jonathan Corbet, Mauro Carvalho Chehab
  Cc: linux-doc, linux-kernel, Akira Yokosawa

On Mon, 18 Aug 2025 11:07:58 -0600, Jonathan Corbet wrote:
> Akira Yokosawa <akiyks@gmail.com> writes:
> 
>> 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
>>
>> Reviewed-by: Akira Yokosawa <akiyks@gmail.com>
> 
> 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


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

* Re: [PATCH 00/11] Fix PDF doc builds on major distros
  2025-08-18 23:26                 ` Akira Yokosawa
@ 2025-08-19  1:02                   ` Mauro Carvalho Chehab
  2025-08-19  2:16                     ` Akira Yokosawa
  0 siblings, 1 reply; 42+ messages in thread
From: Mauro Carvalho Chehab @ 2025-08-19  1:02 UTC (permalink / raw)
  To: Akira Yokosawa; +Cc: Jonathan Corbet, linux-doc, linux-kernel

Em Tue, 19 Aug 2025 08:26:31 +0900
Akira Yokosawa <akiyks@gmail.com> escreveu:

> On Mon, 18 Aug 2025 11:07:58 -0600, Jonathan Corbet wrote:
> > Akira Yokosawa <akiyks@gmail.com> writes:
> >   
> >> 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
> >>
> >> Reviewed-by: Akira Yokosawa <akiyks@gmail.com>  
> > 
> > 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.

See below.

> 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?

> 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.

> 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.

> 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

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

* Re: [PATCH 00/11] Fix PDF doc builds on major distros
  2025-08-19  1:02                   ` Mauro Carvalho Chehab
@ 2025-08-19  2:16                     ` Akira Yokosawa
  2025-08-19 13:32                       ` Mauro Carvalho Chehab
  0 siblings, 1 reply; 42+ messages in thread
From: Akira Yokosawa @ 2025-08-19  2:16 UTC (permalink / raw)
  To: Mauro Carvalho Chehab
  Cc: Jonathan Corbet, linux-doc, linux-kernel, Akira Yokosawa

Hi Mauro,

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

On Tue, 19 Aug 2025 03:02:39 +0200, Mauro Carvalho Chehab wrote:
> Em Tue, 19 Aug 2025 08:26:31 +0900
> Akira Yokosawa <akiyks@gmail.com> escreveu:

[...]

>> 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.
> 
>> 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.

[...]

> 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


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

* Re: [PATCH 00/11] Fix PDF doc builds on major distros
  2025-08-19  2:16                     ` Akira Yokosawa
@ 2025-08-19 13:32                       ` Mauro Carvalho Chehab
  2025-08-19 23:54                         ` Akira Yokosawa
  0 siblings, 1 reply; 42+ messages in thread
From: Mauro Carvalho Chehab @ 2025-08-19 13:32 UTC (permalink / raw)
  To: Akira Yokosawa; +Cc: Jonathan Corbet, linux-doc, linux-kernel

Em Tue, 19 Aug 2025 11:16:29 +0900
Akira Yokosawa <akiyks@gmail.com> escreveu:

> Hi Mauro,
> 
> Please calm down.
> Apologizes if my wording has annoyed you.
> 
> On Tue, 19 Aug 2025 03:02:39 +0200, Mauro Carvalho Chehab wrote:
> > Em Tue, 19 Aug 2025 08:26:31 +0900
> > Akira Yokosawa <akiyks@gmail.com> escreveu:  
> 
> [...]
> 
> >> 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.
> >   
> >> 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.
> 
> [...]
> 
> > 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'm assuming you're referring to patch 5/11, e.g.:

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

> 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 <mchehab+huawei@kernel.org>
  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

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

* Re: [PATCH 00/11] Fix PDF doc builds on major distros
  2025-08-19 13:32                       ` Mauro Carvalho Chehab
@ 2025-08-19 23:54                         ` Akira Yokosawa
  2025-08-20  7:15                           ` Mauro Carvalho Chehab
  0 siblings, 1 reply; 42+ messages in thread
From: Akira Yokosawa @ 2025-08-19 23:54 UTC (permalink / raw)
  To: Mauro Carvalho Chehab
  Cc: Jonathan Corbet, linux-doc, linux-kernel, Akira Yokosawa

On Tue, 19 Aug 2025 15:32:00 +0200, Mauro Carvalho Chehab wrote:
> Em Tue, 19 Aug 2025 11:16:29 +0900
> Akira Yokosawa <akiyks@gmail.com> escreveu:

[...]

>> 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:
>

[...]

> 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


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

* Re: [PATCH 00/11] Fix PDF doc builds on major distros
  2025-08-19 23:54                         ` Akira Yokosawa
@ 2025-08-20  7:15                           ` Mauro Carvalho Chehab
  2025-08-20 11:41                             ` Akira Yokosawa
  0 siblings, 1 reply; 42+ messages in thread
From: Mauro Carvalho Chehab @ 2025-08-20  7:15 UTC (permalink / raw)
  To: Akira Yokosawa; +Cc: Jonathan Corbet, linux-doc, linux-kernel

Em Wed, 20 Aug 2025 08:54:52 +0900
Akira Yokosawa <akiyks@gmail.com> escreveu:

> On Tue, 19 Aug 2025 15:32:00 +0200, Mauro Carvalho Chehab wrote:
> > Em Tue, 19 Aug 2025 11:16:29 +0900
> > Akira Yokosawa <akiyks@gmail.com> escreveu:  
> 
> [...]
> 
> >> 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:
> >  
> 
> [...]
> 
> > 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.

> 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.

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

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

* Re: [PATCH 05/11] docs: conf.py: fix some troubles for LaTeX output
  2025-08-15 11:36 ` [PATCH 05/11] docs: conf.py: fix some troubles for LaTeX output Mauro Carvalho Chehab
@ 2025-08-20  8:16   ` Akira Yokosawa
  0 siblings, 0 replies; 42+ messages in thread
From: Akira Yokosawa @ 2025-08-20  8:16 UTC (permalink / raw)
  To: mchehab+huawei; +Cc: corbet, linux-doc, linux-kernel, 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.

On Fri, 15 Aug 2025 13:36:21 +0200, Mauro Carvalho Chehab wrote:
> 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
> 

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

> Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
> ---
>  Documentation/conf.py | 39 +++++++++++++++++++++++----------------
>  1 file changed, 23 insertions(+), 16 deletions(-)
> 
> diff --git a/Documentation/conf.py b/Documentation/conf.py
> index 6e12c7d8e07e..712e0a016727 100644
> --- a/Documentation/conf.py
> +++ b/Documentation/conf.py
> @@ -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}
> +    """),

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.

>      # 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

>      # 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 = []
>  

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

* Re: [PATCH 00/11] Fix PDF doc builds on major distros
  2025-08-20  7:15                           ` Mauro Carvalho Chehab
@ 2025-08-20 11:41                             ` Akira Yokosawa
  2025-08-20 16:48                               ` Mauro Carvalho Chehab
  0 siblings, 1 reply; 42+ messages in thread
From: Akira Yokosawa @ 2025-08-20 11:41 UTC (permalink / raw)
  To: Mauro Carvalho Chehab
  Cc: Jonathan Corbet, linux-doc, linux-kernel, Akira Yokosawa

Hi,

On Wed, 20 Aug 2025 09:15:30 +0200, Mauro Carvalho Chehab wrote:
> Em Wed, 20 Aug 2025 08:54:52 +0900
> Akira Yokosawa <akiyks@gmail.com> escreveu:
> 
>> On Tue, 19 Aug 2025 15:32:00 +0200, Mauro Carvalho Chehab wrote:

[...]

>> 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


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

* Re: [PATCH 00/11] Fix PDF doc builds on major distros
  2025-08-20 11:41                             ` Akira Yokosawa
@ 2025-08-20 16:48                               ` Mauro Carvalho Chehab
  2025-08-20 23:53                                 ` Akira Yokosawa
  0 siblings, 1 reply; 42+ messages in thread
From: Mauro Carvalho Chehab @ 2025-08-20 16:48 UTC (permalink / raw)
  To: Akira Yokosawa
  Cc: Mauro Carvalho Chehab, Jonathan Corbet, linux-doc, linux-kernel

On Wed, Aug 20, 2025 at 08:41:05PM +0900, Akira Yokosawa wrote:
> Hi,
> 
> On Wed, 20 Aug 2025 09:15:30 +0200, Mauro Carvalho Chehab wrote:
> > Em Wed, 20 Aug 2025 08:54:52 +0900
> > Akira Yokosawa <akiyks@gmail.com> escreveu:
> > 
> >> On Tue, 19 Aug 2025 15:32:00 +0200, Mauro Carvalho Chehab wrote:
> 
> [...]
> 
> >> 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.

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.

> 
> 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:

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.
               ================

> -----------------------------------------------------------------------------------
> 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.

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

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

* Re: [PATCH 00/11] Fix PDF doc builds on major distros
  2025-08-20 16:48                               ` Mauro Carvalho Chehab
@ 2025-08-20 23:53                                 ` Akira Yokosawa
  2025-08-21  0:09                                   ` Akira Yokosawa
  0 siblings, 1 reply; 42+ messages in thread
From: Akira Yokosawa @ 2025-08-20 23:53 UTC (permalink / raw)
  To: Mauro Carvalho Chehab
  Cc: Jonathan Corbet, Akira Yokosawa, linux-doc, linux-kernel

Hi,

Commenting on your observation quoted below.

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

> 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


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

* Re: [PATCH 00/11] Fix PDF doc builds on major distros
  2025-08-20 23:53                                 ` Akira Yokosawa
@ 2025-08-21  0:09                                   ` Akira Yokosawa
  2025-08-21  7:52                                     ` Mauro Carvalho Chehab
  2025-08-21  9:12                                     ` Inkscape - Was: " Mauro Carvalho Chehab
  0 siblings, 2 replies; 42+ messages in thread
From: Akira Yokosawa @ 2025-08-21  0:09 UTC (permalink / raw)
  To: Mauro Carvalho Chehab
  Cc: Jonathan Corbet, linux-doc, linux-kernel, Akira Yokosawa

Hi,

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

On Thu, 21 Aug 2025 08:53:04 +0900, Akira Yokosawa wrote:
> Hi,
> 
> Commenting on your observation quoted below.
> 
> On Wed, 20 Aug 2025 18:48:10 +0200, Mauro Carvalho Chehab wrote:
> [...]
> 
>> 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 ?
I mean                                          with this series applied

> 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      ????
     --------------- --------- ----------

>     --------------- --------- ----------
>     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
> 


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

* Re: [PATCH 00/11] Fix PDF doc builds on major distros
  2025-08-21  0:09                                   ` Akira Yokosawa
@ 2025-08-21  7:52                                     ` Mauro Carvalho Chehab
  2025-08-21  7:56                                       ` Mauro Carvalho Chehab
  2025-08-21  9:12                                     ` Inkscape - Was: " Mauro Carvalho Chehab
  1 sibling, 1 reply; 42+ messages in thread
From: Mauro Carvalho Chehab @ 2025-08-21  7:52 UTC (permalink / raw)
  To: Akira Yokosawa; +Cc: Jonathan Corbet, linux-doc, linux-kernel

Em Thu, 21 Aug 2025 09:09:41 +0900
Akira Yokosawa <akiyks@gmail.com> escreveu:

> Hi,
> 
> Let me do a quick follow up.
> I messed up the table.
> 
> On Thu, 21 Aug 2025 08:53:04 +0900, Akira Yokosawa wrote:
> > Hi,
> > 
> > Commenting on your observation quoted below.
> > 
> > On Wed, 20 Aug 2025 18:48:10 +0200, Mauro Carvalho Chehab wrote:
> > [...]
> >   
> >> 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 ?  
> I mean                                          with this series applied
> 
> > 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      ????
>      --------------- --------- ----------

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

> >     --------------- --------- ----------
> >     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.

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

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

* Re: [PATCH 00/11] Fix PDF doc builds on major distros
  2025-08-21  7:52                                     ` Mauro Carvalho Chehab
@ 2025-08-21  7:56                                       ` Mauro Carvalho Chehab
  0 siblings, 0 replies; 42+ messages in thread
From: Mauro Carvalho Chehab @ 2025-08-21  7:56 UTC (permalink / raw)
  To: Akira Yokosawa; +Cc: Jonathan Corbet, linux-doc, linux-kernel

Em Thu, 21 Aug 2025 09:52:21 +0200
Mauro Carvalho Chehab <mchehab+huawei@kernel.org> escreveu:

> Em Thu, 21 Aug 2025 09:09:41 +0900
> Akira Yokosawa <akiyks@gmail.com> escreveu:
> 
> > Hi,
> > 
> > Let me do a quick follow up.
> > I messed up the table.
> > 
> > On Thu, 21 Aug 2025 08:53:04 +0900, Akira Yokosawa wrote:
> > > Hi,
> > > 
> > > Commenting on your observation quoted below.
> > > 
> > > On Wed, 20 Aug 2025 18:48:10 +0200, Mauro Carvalho Chehab wrote:
> > > [...]
> > >   
> > >> 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 ?  
> > I mean                                          with this series applied
> > 
> > > 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      ????
> >      --------------- --------- ----------
> 
> 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
> 
> > >     --------------- --------- ----------
> > >     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.
> 
> 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

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 <mchehab+huawei@kernel.org>
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.
    
    Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>

diff --git a/Documentation/sphinx/kfigure.py b/Documentation/sphinx/kfigure.py
index ad495c0da270..8ba07344a1c8 100644
--- a/Documentation/sphinx/kfigure.py
+++ b/Documentation/sphinx/kfigure.py
@@ -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)



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

* Inkscape - Was: Re: [PATCH 00/11] Fix PDF doc builds on major distros
  2025-08-21  0:09                                   ` Akira Yokosawa
  2025-08-21  7:52                                     ` Mauro Carvalho Chehab
@ 2025-08-21  9:12                                     ` Mauro Carvalho Chehab
  1 sibling, 0 replies; 42+ messages in thread
From: Mauro Carvalho Chehab @ 2025-08-21  9:12 UTC (permalink / raw)
  To: Akira Yokosawa; +Cc: Jonathan Corbet, linux-doc, linux-kernel

Em Thu, 21 Aug 2025 09:09:41 +0900
Akira Yokosawa <akiyks@gmail.com> escreveu:

> Hi,
> 
> Let me do a quick follow up.
> I messed up the table.
> 
> On Thu, 21 Aug 2025 08:53:04 +0900, Akira Yokosawa wrote:
> > Hi,
> > 
> > Commenting on your observation quoted below.
> > 
> > On Wed, 20 Aug 2025 18:48:10 +0200, Mauro Carvalho Chehab wrote:
> > [...]
> >   
> >> 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 ?  
> I mean                                          with this series applied
> 
> > 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      ????
>      --------------- --------- ----------
> 
> >     --------------- --------- ----------
> >     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/cover.1755763127.git.mchehab+huawei@kernel.org/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

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

end of thread, other threads:[~2025-08-21  9:12 UTC | newest]

Thread overview: 42+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-08-15 11:36 [PATCH 00/11] Fix PDF doc builds on major distros Mauro Carvalho Chehab
2025-08-15 11:36 ` [PATCH 01/11] docs: Makefile: Fix LaTeX paper size settings Mauro Carvalho Chehab
2025-08-15 11:36 ` [PATCH 02/11] docs: conf.py: better handle latex documents Mauro Carvalho Chehab
2025-08-15 11:36 ` [PATCH 03/11] docs: conf.py: fix doc name with SPHINXDIRS Mauro Carvalho Chehab
2025-08-15 11:36 ` [PATCH 04/11] docs: conf.py: rename some vars at latex_documents logic Mauro Carvalho Chehab
2025-08-15 11:36 ` [PATCH 05/11] docs: conf.py: fix some troubles for LaTeX output Mauro Carvalho Chehab
2025-08-20  8:16   ` Akira Yokosawa
2025-08-15 11:36 ` [PATCH 06/11] scripts: sphinx-pre-install: fix PDF build issues on Ubuntu Mauro Carvalho Chehab
2025-08-15 11:36 ` [PATCH 07/11] scripts: sphinx-pre-install: add missing gentoo pdf dependencies Mauro Carvalho Chehab
2025-08-15 11:36 ` [PATCH 08/11] scripts: sphinx-pre-install: fix PDF dependencies for openSuse Mauro Carvalho Chehab
2025-08-15 11:36 ` [PATCH 09/11] scripts: sphinx-pre-install: fix dependencies for OpenMandriva Mauro Carvalho Chehab
2025-08-15 11:36 ` [PATCH 10/11] scripts: sphinx-pre-install: fix pdf dependencies for Mageia 9 Mauro Carvalho Chehab
2025-08-15 11:36 ` [PATCH 11/11] scripts: sphinx-pre-install: fix PDF dependencies for gentoo Mauro Carvalho Chehab
2025-08-16  5:06 ` [PATCH 00/11] Fix PDF doc builds on major distros Akira Yokosawa
2025-08-16 11:55   ` Mauro Carvalho Chehab
2025-08-17  9:46     ` Akira Yokosawa
2025-08-17 11:36       ` Mauro Carvalho Chehab
2025-08-17 12:24         ` Akira Yokosawa
2025-08-17 13:45           ` Mauro Carvalho Chehab
2025-08-17 16:07             ` Akira Yokosawa
2025-08-18  0:44               ` Akira Yokosawa
2025-08-18  9:42                 ` Mauro Carvalho Chehab
2025-08-18 10:06                   ` Akira Yokosawa
2025-08-18 11:35                     ` Mauro Carvalho Chehab
2025-08-18 12:00                       ` Akira Yokosawa
2025-08-18 17:07               ` Jonathan Corbet
2025-08-18 23:26                 ` Akira Yokosawa
2025-08-19  1:02                   ` Mauro Carvalho Chehab
2025-08-19  2:16                     ` Akira Yokosawa
2025-08-19 13:32                       ` Mauro Carvalho Chehab
2025-08-19 23:54                         ` Akira Yokosawa
2025-08-20  7:15                           ` Mauro Carvalho Chehab
2025-08-20 11:41                             ` Akira Yokosawa
2025-08-20 16:48                               ` Mauro Carvalho Chehab
2025-08-20 23:53                                 ` Akira Yokosawa
2025-08-21  0:09                                   ` Akira Yokosawa
2025-08-21  7:52                                     ` Mauro Carvalho Chehab
2025-08-21  7:56                                       ` Mauro Carvalho Chehab
2025-08-21  9:12                                     ` Inkscape - Was: " Mauro Carvalho Chehab
2025-08-18 16:59       ` Jonathan Corbet
2025-08-17 15:32 ` Vegard Nossum
2025-08-18  8:33   ` Mauro Carvalho Chehab

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).