Re: linux-next: build failure after upgrading sphinx
From: Markus Heiser
Date: Tue Sep 01 2020 - 09:39:40 EST
Am 31.08.20 um 21:03 schrieb Jonathan Corbet:
On Thu, 27 Aug 2020 14:50:17 +1000
Stephen Rothwell <sfr@xxxxxxxxxxxxxxxx> wrote:
Today I upgraded ot sphinx v3.2.1 and got the following error from
"make htmldocs":
Running Sphinx v3.2.1
enabling CJK for LaTeX builder
Extension error:
Could not import extension cdomain (exception: cannot import name 'c_funcptr_sig_re' from 'sphinx.domains.c' (/usr/lib/python3/dist-packages/sphinx/domains/c.py))
I have downgraded to version 2.4.3 and await suggestions/patches :-)
[Adding Markus]
Markus, this looks like an issue with the "handle function-like macros"
code that has your name on it. The Sphinx folks think that functionality
can just be removed:
https://github.com/sphinx-doc/sphinx/issues/7421
Do you agree? We need to look at what they're saying about the :name:
directive as well; somehow I missed that when it first went in.
Thanks,
jon
Hi Jon, thanks for taking me into CC.
I guess you refer this post:
https://github.com/sphinx-doc/sphinx/issues/7421#issuecomment-609830660
What I know is: The Sphinx >= v3.0 includes a "C, initial
rewrite" which is not downward compatible.
https://github.com/sphinx-doc/sphinx/commit/0f49e30c#diff-59e33b0
---
To give an short answer to opener's question:
Our Sphinx-build is not Sphinx >= v3.0 ready. We recommend
to follow our installation instructions [1] and install
requirements by::
(virtualenv) $ pip install -r Documentation/sphinx/requirements.txt
In the requirements.txt we stick Sphinx at 'Sphinx==2.4.4'.
In my personal opinion there are more problems than just the
C-domain when using other Sphinx Versions (e.g. PDF is most
often problematic).
[1] https://www.kernel.org/doc/html/latest/doc-guide/sphinx.html#sphinx-install
---
I can't say if this *rewrite* has a better "handle
function-like macros" or not.
Since the changes are not downward compatible,
Documentation/sphinx/cdomain.py needs a rewrite
(Unfortunately, I hadn't had the time to do this).
TL;DR;
In my linuxdoc [2] project I use the same cdomain.py
implementation and split cdomain into v2 and v3 [3]. ATM
linuxdoc/cdomainv3.py is just a skeleton which is used in
Sphinx >= v3.0 installations. My experience is, that it
spits out more noise, but I haven't had time to look closer
right now.
[2] https://return42.github.io/linuxdoc
[3] https://github.com/return42/linuxdoc/commit/70673dc
-- Markus --