From: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
To: Akira Yokosawa <akiyks@gmail.com>
Cc: Jonathan Corbet <corbet@lwn.net>,
linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH 00/11] Fix PDF doc builds on major distros
Date: Thu, 21 Aug 2025 09:56:37 +0200 [thread overview]
Message-ID: <20250821095637.5dbe9533@foz.lan> (raw)
In-Reply-To: <20250821095221.5e6510f5@foz.lan>
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)
next prev parent reply other threads:[~2025-08-21 7:56 UTC|newest]
Thread overview: 43+ messages / expand[flat|nested] mbox.gz Atom feed top
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-10-02 16:30 ` ChaosEsque Team
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 [this message]
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
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20250821095637.5dbe9533@foz.lan \
--to=mchehab+huawei@kernel.org \
--cc=akiyks@gmail.com \
--cc=corbet@lwn.net \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.