From: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
To: Jonathan Corbet <corbet@lwn.net>
Cc: linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org,
Akira Yokosawa <akiyks@gmail.com>,
Randy Dunlap <rdunlap@infradead.org>
Subject: Re: [PATCH 07/13] docs: move sphinx-pre-install to tools/doc
Date: Fri, 15 Aug 2025 17:13:42 +0200 [thread overview]
Message-ID: <20250815171342.3006f30a@sal.lan> (raw)
In-Reply-To: <87sehsen9g.fsf@trenco.lwn.net>
Em Fri, 15 Aug 2025 07:18:51 -0600
Jonathan Corbet <corbet@lwn.net> escreveu:
> Mauro Carvalho Chehab <mchehab+huawei@kernel.org> writes:
>
> >> Between "tools/doc" and "tools/docs" I don't really have overly strong
> >> feelings; if you work has the latter we can just stick with that. If
> >> you propose "tools/Documentation", though, expect resistance :)
> >
> > <joke>
> > Heh, I'm tempted to propose:
> > /Documentation -> /docs
> > or
> > /Documentation -> /Docs
> > </joke>
>
> I proposed the former at a maintainers summit a few years ago ... the
> response was less than fully positive. I guess the fact that docs have
> the longest and only capitalized top-level directory name shows their
> relative importance :)
:-)
> > Ok, so let's keep tools/docs then. We need to decide about python
> > lib. On my series, I'm placing at tools/docs/lib, but I guess we
> > can change it later.
> >
> > From my side, I would prefer to have a single directory for tools,
> > as we may place there things that aren't specific to docs.
> >
> > For instance, I have my own class that I use for command execution,
> > using asyncio. The rationale is that it allows output messages in
> > real time without needing to wait for the entire process to end(*).
> >
> > (*) I recently discovered a way to do that without needing asyncio,
> > which makes the code a little bit simpler.
>
> This is just flushing the output buffer? Asyncio seems like a heavy
> tool for that; I guess I'm missing something.
Yes, flushing output as they arrive while storing results from stdout and
stderr and handling "stdin", eventually dynamically printing stdin when
debug is enabled. The problem sounds simple, and this is really easy to
implement in Perl. However, on Python, this ends to be a very complex
problem that one can only get all the caveats after implementing unit
tests and then discovering, for instance, that, if stdin is bigger than
32KB, Python read logic freezes forever (or until gather() timeout, and
the stdin was incomplete.
To fix it, one needs to implement a different stdin function that can't
wait anymore for the end of a read operation, but instead needs to pick
buffers in small chunks. Plus, the subprocess execution method requires
some unusual buffering parameters.
> > Either using asyncio or not, a class for such purpose is something
> > that multiple tools could use. So, a generic dir like tools/lib,
> > lib/python, ... IMO makes sense.
>
> I agree with this, anyway. "tools/python" might end up as the winning
> suggestion.
>
> >> As I said, my series was an RFC to see what it would look like; it did't
> >> take all that long the first time around, and will be even quicker to
> >> redo on top of a new base, whatever that turns out to be.
> >
> > With regards to the RFC, IMO we still may need to discuss how we'll end
> > placing libraries under a LIBDIR. IMO, your RFC should also propose
> > a directory structure. I mean, we could have something like:
> >
> > LIBDIR # either tools/docs/lib, tools/lib, lib/python or whatever
> > |
> > +---> common
> > \---> docs
> > |
> > +---> kdoc
> > \---> abi
> >
> > We could instead do:
> > - flatten "common" to LIBDIR; or:
> > - flatten "docs" to LIBDIR; or:
> > - flatten both but keeping kdoc, abi, ... directories inside
> > LIBDIR; or:
> > - have a completely flatten directory with everything
> > under LIBDIR.
>
> I'm not sure we need the common/docs intermediate directory.
>
> Meanwhile, I had a related, possibly unpopular idea... Start with
> .../tools/python/kernel and put a basic __init__.py file there;
> everything else would go into that directory or before. The imports
> would then read something like:
>
> from kernel import abi_parser
Not against something similar to it, but IMO "kernel" is a bad
name as it sounds something that runs in kernel stace or for Kernel
build. It could be, instead:
from lib import abi_parser
Yet, I guess it may still need to add something at PATH, depending from
where current working dir the script was called (but tests required).
For instance Documentation/sphinx would need to pick lib from
"../../tools/python". So, I guess Sphinx extensions need first to
do:
sys.path.insert(0, "../../tools/python")
and then:
from lib import abi_parser # or:
from lib.abi import abi_parser # or:
import .abi_parser
Btw, nothing prevents moving extensions from Documentation/sphinx
into tools/sphinx_extensions. We just need to add the path insert
at conf.py.
> That would make it clear which modules are ours and which come from
> elsewhere.
>
> I was planning to toss together another RFC with that scheme, again to
> see what it would look like in practice.
> Thoughts?
Fine from my side.
Regards,
Mauro
next prev parent reply other threads:[~2025-08-15 15:13 UTC|newest]
Thread overview: 47+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-08-13 21:31 [PATCH RFC 00/13] Collect documention-related tools under tools/doc Jonathan Corbet
2025-08-13 21:32 ` [PATCH 01/13] docs: Move the "features" tools to tools/doc Jonathan Corbet
2025-08-13 23:38 ` Mauro Carvalho Chehab
2025-08-13 23:42 ` Randy Dunlap
2025-08-14 5:56 ` Mauro Carvalho Chehab
2025-08-14 5:57 ` Randy Dunlap
2025-08-13 21:32 ` [PATCH 02/13] docs: move checktransupdate.py " Jonathan Corbet
2025-08-13 23:51 ` Mauro Carvalho Chehab
2025-08-13 21:32 ` [PATCH 03/13] docs: move scripts/check-variable-fonts.sh " Jonathan Corbet
2025-08-13 23:46 ` Mauro Carvalho Chehab
2025-08-13 21:32 ` [PATCH 04/13] docs: move scripts/documentation-file-ref-check " Jonathan Corbet
2025-08-13 23:47 ` Mauro Carvalho Chehab
2025-08-13 21:32 ` [PATCH 05/13] docs: move parallel-wrapper.sh to tools/doc/ Jonathan Corbet
2025-08-13 23:31 ` Mauro Carvalho Chehab
2025-08-13 21:32 ` [PATCH 06/13] docs: move get_abi.py to tools/doc Jonathan Corbet
2025-08-13 23:43 ` Mauro Carvalho Chehab
2025-08-13 21:32 ` [PATCH 07/13] docs: move sphinx-pre-install " Jonathan Corbet
2025-08-13 23:36 ` Mauro Carvalho Chehab
2025-08-14 2:14 ` Jonathan Corbet
2025-08-14 6:21 ` Mauro Carvalho Chehab
2025-08-14 13:52 ` Jonathan Corbet
2025-08-15 5:18 ` Mauro Carvalho Chehab
2025-08-15 13:18 ` Jonathan Corbet
2025-08-15 15:13 ` Mauro Carvalho Chehab [this message]
2025-08-15 19:31 ` Jonathan Corbet
2025-08-16 9:34 ` Mauro Carvalho Chehab
2025-08-13 21:32 ` [PATCH 08/13] docs: move test_doc_build.py " Jonathan Corbet
2025-08-13 23:36 ` Mauro Carvalho Chehab
2025-08-13 21:32 ` [PATCH 09/13] docs: move parse-headers.pl " Jonathan Corbet
2025-08-13 23:32 ` Mauro Carvalho Chehab
2025-08-13 21:32 ` [PATCH 10/13] docs: move kernel-doc " Jonathan Corbet
2025-08-13 23:33 ` Mauro Carvalho Chehab
2025-08-13 23:48 ` Mauro Carvalho Chehab
2025-08-14 12:13 ` kernel test robot
2025-08-13 21:32 ` [PATCH 11/13] docs: move split-man.pl " Jonathan Corbet
2025-08-13 23:50 ` Mauro Carvalho Chehab
2025-08-13 21:32 ` [PATCH 12/13] docs: move find-unused-docs.sh " Jonathan Corbet
2025-08-13 23:50 ` Mauro Carvalho Chehab
2025-08-13 21:32 ` [PATCH 13/13] docs: remove kernel-doc.pl Jonathan Corbet
2025-08-13 23:33 ` Mauro Carvalho Chehab
2025-08-15 2:43 ` Randy Dunlap
2025-08-15 4:45 ` Mauro Carvalho Chehab
2025-08-13 21:38 ` [PATCH RFC 00/13] Collect documention-related tools under tools/doc Jonathan Corbet
2025-08-13 23:29 ` Mauro Carvalho Chehab
2025-08-14 14:59 ` Jani Nikula
2025-08-15 2:53 ` Randy Dunlap
2025-08-15 8:29 ` Jani Nikula
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=20250815171342.3006f30a@sal.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 \
--cc=rdunlap@infradead.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 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).