* Path troubles when using SPHINXDIRS option @ 2020-04-21 8:38 Mauro Carvalho Chehab 2020-04-21 10:35 ` Mauro Carvalho Chehab 2020-04-21 10:52 ` Markus Heiser 0 siblings, 2 replies; 8+ messages in thread From: Mauro Carvalho Chehab @ 2020-04-21 8:38 UTC (permalink / raw) To: Linux Doc Mailing List, Markus Heiser, Jonathan Corbet Hi, While building from v5.7-rc2 + media, I noticed that SPHINXDIRS option stopped working. What happens is that, if we don't pass this option, Sphinx assumes that the "absolute" path is "Documentation/". So, include options like this: .. include:: /ABI/stable/firewire-cdev :literal: would be evaluated as Documentation/ABI/stable/firewire-cdev if built without SPHINXDIRS. However, if we do SPHINXDIRS=driver-api, then the "absolute" patch would be "Documentation/driver-api", causing this error: Sphinx parallel build error: docutils.utils.SystemMessage: /devel/v4l/patchwork/Documentation/driver-api/firewire.rst:22: (SEVERE/4) Problems with "include" directive path: This is specially bad for build jobs (like one we have on jenkins that is meant to test media patches), as, due to some Sphinx bug, prevents sphinx-build to stop, making the toolset to run forever. I suspect that some change at conf.py could address the path issue. I'll try to investigate further. Just to be 100% sure that this is not some version-specific bad behavior, I tested (using the latest patch version) Sphinx from version 1.7.9 up to 2.4.4. The same two errors happen on all versions. Markus, Maybe you may have some idea about how to fix those issues. The parallel build error would likely require fixing something inside Sphinx code, making it abort if it gets a "SEVERE" error. Regards, Mauro ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: Path troubles when using SPHINXDIRS option 2020-04-21 8:38 Path troubles when using SPHINXDIRS option Mauro Carvalho Chehab @ 2020-04-21 10:35 ` Mauro Carvalho Chehab 2020-04-21 10:52 ` Markus Heiser 1 sibling, 0 replies; 8+ messages in thread From: Mauro Carvalho Chehab @ 2020-04-21 10:35 UTC (permalink / raw) To: Linux Doc Mailing List, Markus Heiser, Jonathan Corbet Em Tue, 21 Apr 2020 10:38:14 +0200 Mauro Carvalho Chehab <mchehab+huawei@kernel.org> escreveu: > Hi, > > While building from v5.7-rc2 + media, I noticed that SPHINXDIRS option > stopped working. > > What happens is that, if we don't pass this option, Sphinx assumes that > the "absolute" path is "Documentation/". So, include options like this: > > .. include:: /ABI/stable/firewire-cdev > :literal: > > > would be evaluated as Documentation/ABI/stable/firewire-cdev if built > without SPHINXDIRS. However, if we do SPHINXDIRS=driver-api, then > the "absolute" patch would be "Documentation/driver-api", causing this > error: > > Sphinx parallel build error: > docutils.utils.SystemMessage: /devel/v4l/patchwork/Documentation/driver-api/firewire.rst:22: (SEVERE/4) Problems with "include" directive path: > > This is specially bad for build jobs (like one we have on jenkins that > is meant to test media patches), as, due to some Sphinx bug, prevents > sphinx-build to stop, making the toolset to run forever. > > I suspect that some change at conf.py could address the path issue. > > I'll try to investigate further. More updates on it: It seems that the main issue is that Sphinx passes Documentation/foo to docutils, when SPHINXDIRS=foo is used, and docutils prevent access anything outside Documentation/foo on its include and toctree directives. So, even trying to use "../ABI/some_doc" would fail. - The other issue is that SphinxParallelError doesn't stop the build multithreading tasks. As Documentation/docutils.conf is set to abort on severe errors, this causes Sphinx to keep running forever, doing nothing. I did already a workaround to prevent media Jenkins job to hang due to those issues. So, I'm moving on. Hopefully, someone with more experience with Sphinx, docutils and python multithreading can work on some fixes for it. Thanks, Mauro ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: Path troubles when using SPHINXDIRS option 2020-04-21 8:38 Path troubles when using SPHINXDIRS option Mauro Carvalho Chehab 2020-04-21 10:35 ` Mauro Carvalho Chehab @ 2020-04-21 10:52 ` Markus Heiser 2020-04-21 12:42 ` Markus Heiser 2020-04-22 8:57 ` Mauro Carvalho Chehab 1 sibling, 2 replies; 8+ messages in thread From: Markus Heiser @ 2020-04-21 10:52 UTC (permalink / raw) To: Mauro Carvalho Chehab, Linux Doc Mailing List, Jonathan Corbet Hi Mauro, Am 21.04.20 um 10:38 schrieb Mauro Carvalho Chehab: > > Hi, > > While building from v5.7-rc2 + media, I noticed that SPHINXDIRS option > stopped working. > > What happens is that, if we don't pass this option, Sphinx assumes that > the "absolute" path is "Documentation/". So, include options like this: > > .. include:: /ABI/stable/firewire-cdev > :literal: > > > would be evaluated as Documentation/ABI/stable/firewire-cdev if built > without SPHINXDIRS. However, if we do SPHINXDIRS=driver-api, then > the "absolute" patch would be "Documentation/driver-api", causing this > error: > > Sphinx parallel build error: > docutils.utils.SystemMessage: /devel/v4l/patchwork/Documentation/driver-api/firewire.rst:22: (SEVERE/4) Problems with "include" directive path: > > This is specially bad for build jobs (like one we have on jenkins that > is meant to test media patches), as, due to some Sphinx bug, prevents > sphinx-build to stop, making the toolset to run forever. > > I suspect that some change at conf.py could address the path issue. > > I'll try to investigate further. > > Just to be 100% sure that this is not some version-specific bad > behavior, I tested (using the latest patch version) Sphinx from > version 1.7.9 up to 2.4.4. The same two errors happen on all > versions. > > Markus, > > Maybe you may have some idea about how to fix those issues. > > The parallel build error would likely require fixing something > inside Sphinx code, making it abort if it gets a "SEVERE" error. > > Regards, > Mauro > I fixed it with the patch shown below. Some words about: The use of the :doc: rule should be replaced by a :ref:. The path names of include directives should always relative to the .rst file. To go further ... with patch below: $ make SPHINXDIRS="driver-api" htmldocs shows some " WARNING: undefined label: ..." messages. To close such links (addressing objects outside of the SPHINXDIR) we need to activate intersphinx [1]. If we activate intersphinx we have to wait one release cycle to get a objects.inv file at: https://www.kernel.org/doc/html/latest/ When the objects.inv file is available, the warnings are disappear. If the process of intersphinx is unclear, please ask. -- Markus -- [1] https://www.sphinx-doc.org/en/master/usage/extensions/intersphinx.html ---- diff --git a/Documentation/driver-api/firewire.rst b/Documentation/driver-api/firewire.rst index 94a2d7f01d99..67741aeae5e8 100644 --- a/Documentation/driver-api/firewire.rst +++ b/Documentation/driver-api/firewire.rst @@ -19,16 +19,16 @@ of kernel interfaces is available via exported symbols in `firewire-core` module Firewire char device data structures ==================================== -.. include:: /ABI/stable/firewire-cdev +.. include:: ../ABI/stable/firewire-cdev :literal: -.. kernel-doc:: include/uapi/linux/firewire-cdev.h +.. kernel-doc:: /include/uapi/linux/firewire-cdev.h :internal: Firewire device probing and sysfs interfaces ============================================ -.. include:: /ABI/stable/sysfs-bus-firewire +.. include:: ../ABI/stable/sysfs-bus-firewire :literal: .. kernel-doc:: drivers/firewire/core-device.c diff --git a/Documentation/driver-api/gpio/using-gpio.rst b/Documentation/driver-api/gpio/using-gpio.rst index dda069444032..f2bd1e72af4e 100644 --- a/Documentation/driver-api/gpio/using-gpio.rst +++ b/Documentation/driver-api/gpio/using-gpio.rst @@ -15,7 +15,7 @@ For any kind of mass produced system you want to support, such as servers, laptops, phones, tablets, routers, and any consumer or office or business goods using appropriate kernel drivers is paramount. Submit your code for inclusion in the upstream Linux kernel when you feel it is mature enough and you will get -help to refine it, see :doc:`../../process/submitting-patches`. +help to refine it, see :ref:`submittingpatches`. In Linux GPIO lines also have a userspace ABI. diff --git a/Documentation/driver-api/ioctl.rst b/Documentation/driver-api/ioctl.rst index c455db0e1627..ad91db68ba89 100644 --- a/Documentation/driver-api/ioctl.rst +++ b/Documentation/driver-api/ioctl.rst @@ -34,7 +34,7 @@ _IO/_IOR/_IOW/_IOWR type An 8-bit number, often a character literal, specific to a subsystem - or driver, and listed in :doc:`../userspace-api/ioctl/ioctl-number` + or driver, and listed in :ref:`ioctl numbers` nr An 8-bit number identifying the specific command, unique for a give diff --git a/Documentation/userspace-api/ioctl/ioctl-number.rst b/Documentation/userspace-api/ioctl/ioctl-number.rst index 52bf58417653..09647516ca52 100644 --- a/Documentation/userspace-api/ioctl/ioctl-number.rst +++ b/Documentation/userspace-api/ioctl/ioctl-number.rst @@ -1,3 +1,5 @@ +.. _ioctl numbers: + ============= Ioctl Numbers ============= ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: Path troubles when using SPHINXDIRS option 2020-04-21 10:52 ` Markus Heiser @ 2020-04-21 12:42 ` Markus Heiser 2020-04-22 8:57 ` Mauro Carvalho Chehab 1 sibling, 0 replies; 8+ messages in thread From: Markus Heiser @ 2020-04-21 12:42 UTC (permalink / raw) To: Mauro Carvalho Chehab, Linux Doc Mailing List, Jonathan Corbet Hi Mauro, one more addition: in patch 9fc3a18a94 docs: remove extra conf.py files the conf.py from SPHINXDIRS has been removed since some latex stuff was no longer needed. IMO this is not a really good idea, this patch also remove the individual project titles like: project = "Core-API Documentation" and it also removes the: tags.add("subproject") which is widly used, e.g.: .. only:: subproject and html Indices ======= * :ref:`genindex` Anyway: if we do so we can also remove such directives and we can also remove the 'loadConfig' which was added in 606b9ac81a doc-rst: generic way to build only sphinx sub-folders Sorry, that I do not have time to prepare a well formed patch. But I maintain my opinion that we'd better not do that. -- Markus -- Am 21.04.20 um 12:52 schrieb Markus Heiser: > Hi Mauro, > > Am 21.04.20 um 10:38 schrieb Mauro Carvalho Chehab: >> >> Hi, >> >> While building from v5.7-rc2 + media, I noticed that SPHINXDIRS option >> stopped working. >> >> What happens is that, if we don't pass this option, Sphinx assumes that >> the "absolute" path is "Documentation/". So, include options like this: >> >> .. include:: /ABI/stable/firewire-cdev >> :literal: >> >> >> would be evaluated as Documentation/ABI/stable/firewire-cdev if built >> without SPHINXDIRS. However, if we do SPHINXDIRS=driver-api, then >> the "absolute" patch would be "Documentation/driver-api", causing this >> error: >> >> Sphinx parallel build error: >> docutils.utils.SystemMessage: /devel/v4l/patchwork/Documentation/driver-api/firewire.rst:22: (SEVERE/4) Problems with "include" directive path: >> >> This is specially bad for build jobs (like one we have on jenkins that >> is meant to test media patches), as, due to some Sphinx bug, prevents >> sphinx-build to stop, making the toolset to run forever. >> >> I suspect that some change at conf.py could address the path issue. >> >> I'll try to investigate further. >> >> Just to be 100% sure that this is not some version-specific bad >> behavior, I tested (using the latest patch version) Sphinx from >> version 1.7.9 up to 2.4.4. The same two errors happen on all >> versions. >> >> Markus, >> >> Maybe you may have some idea about how to fix those issues. >> >> The parallel build error would likely require fixing something >> inside Sphinx code, making it abort if it gets a "SEVERE" error. >> >> Regards, >> Mauro >> > > I fixed it with the patch shown below. Some words about: The use > of the :doc: rule should be replaced by a :ref:. The path names > of include directives should always relative to the .rst file. > > To go further ... with patch below: > > $ make SPHINXDIRS="driver-api" htmldocs > > shows some " WARNING: undefined label: ..." messages. To close > such links (addressing objects outside of the SPHINXDIR) we need > to activate intersphinx [1]. > > If we activate intersphinx we have to wait one release cycle to > get a objects.inv file at: > > https://www.kernel.org/doc/html/latest/ > > When the objects.inv file is available, the warnings are > disappear. > > If the process of intersphinx is unclear, please ask. > > > -- Markus -- > > [1] https://www.sphinx-doc.org/en/master/usage/extensions/intersphinx.html > > ---- > > diff --git a/Documentation/driver-api/firewire.rst b/Documentation/driver-api/firewire.rst > index 94a2d7f01d99..67741aeae5e8 100644 > --- a/Documentation/driver-api/firewire.rst > +++ b/Documentation/driver-api/firewire.rst > @@ -19,16 +19,16 @@ of kernel interfaces is available via exported symbols in `firewire-core` module > Firewire char device data structures > ==================================== > > -.. include:: /ABI/stable/firewire-cdev > +.. include:: ../ABI/stable/firewire-cdev > :literal: > > -.. kernel-doc:: include/uapi/linux/firewire-cdev.h > +.. kernel-doc:: /include/uapi/linux/firewire-cdev.h > :internal: > > Firewire device probing and sysfs interfaces > ============================================ > > -.. include:: /ABI/stable/sysfs-bus-firewire > +.. include:: ../ABI/stable/sysfs-bus-firewire > :literal: > > .. kernel-doc:: drivers/firewire/core-device.c > diff --git a/Documentation/driver-api/gpio/using-gpio.rst b/Documentation/driver-api/gpio/using-gpio.rst > index dda069444032..f2bd1e72af4e 100644 > --- a/Documentation/driver-api/gpio/using-gpio.rst > +++ b/Documentation/driver-api/gpio/using-gpio.rst > @@ -15,7 +15,7 @@ For any kind of mass produced system you want to support, such as servers, > laptops, phones, tablets, routers, and any consumer or office or business goods > using appropriate kernel drivers is paramount. Submit your code for inclusion > in the upstream Linux kernel when you feel it is mature enough and you will get > -help to refine it, see :doc:`../../process/submitting-patches`. > +help to refine it, see :ref:`submittingpatches`. > > In Linux GPIO lines also have a userspace ABI. > > diff --git a/Documentation/driver-api/ioctl.rst b/Documentation/driver-api/ioctl.rst > index c455db0e1627..ad91db68ba89 100644 > --- a/Documentation/driver-api/ioctl.rst > +++ b/Documentation/driver-api/ioctl.rst > @@ -34,7 +34,7 @@ _IO/_IOR/_IOW/_IOWR > > type > An 8-bit number, often a character literal, specific to a subsystem > - or driver, and listed in :doc:`../userspace-api/ioctl/ioctl-number` > + or driver, and listed in :ref:`ioctl numbers` > > nr > An 8-bit number identifying the specific command, unique for a give > diff --git a/Documentation/userspace-api/ioctl/ioctl-number.rst b/Documentation/userspace-api/ioctl/ioctl-number.rst > index 52bf58417653..09647516ca52 100644 > --- a/Documentation/userspace-api/ioctl/ioctl-number.rst > +++ b/Documentation/userspace-api/ioctl/ioctl-number.rst > @@ -1,3 +1,5 @@ > +.. _ioctl numbers: > + > ============= > Ioctl Numbers > ============= > ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: Path troubles when using SPHINXDIRS option 2020-04-21 10:52 ` Markus Heiser 2020-04-21 12:42 ` Markus Heiser @ 2020-04-22 8:57 ` Mauro Carvalho Chehab 2020-04-22 9:27 ` Markus Heiser 1 sibling, 1 reply; 8+ messages in thread From: Mauro Carvalho Chehab @ 2020-04-22 8:57 UTC (permalink / raw) To: Markus Heiser; +Cc: Linux Doc Mailing List, Jonathan Corbet Em Tue, 21 Apr 2020 12:52:42 +0200 Markus Heiser <markus.heiser@darmarit.de> escreveu: > Hi Mauro, > > Am 21.04.20 um 10:38 schrieb Mauro Carvalho Chehab: > > > > Hi, > > > > While building from v5.7-rc2 + media, I noticed that SPHINXDIRS option > > stopped working. > > > > What happens is that, if we don't pass this option, Sphinx assumes that > > the "absolute" path is "Documentation/". So, include options like this: > > > > .. include:: /ABI/stable/firewire-cdev > > :literal: > > > > > > would be evaluated as Documentation/ABI/stable/firewire-cdev if built > > without SPHINXDIRS. However, if we do SPHINXDIRS=driver-api, then > > the "absolute" patch would be "Documentation/driver-api", causing this > > error: > > > > Sphinx parallel build error: > > docutils.utils.SystemMessage: /devel/v4l/patchwork/Documentation/driver-api/firewire.rst:22: (SEVERE/4) Problems with "include" directive path: > > > > This is specially bad for build jobs (like one we have on jenkins that > > is meant to test media patches), as, due to some Sphinx bug, prevents > > sphinx-build to stop, making the toolset to run forever. > > > > I suspect that some change at conf.py could address the path issue. > > > > I'll try to investigate further. > > > > Just to be 100% sure that this is not some version-specific bad > > behavior, I tested (using the latest patch version) Sphinx from > > version 1.7.9 up to 2.4.4. The same two errors happen on all > > versions. > > > > Markus, > > > > Maybe you may have some idea about how to fix those issues. > > > > The parallel build error would likely require fixing something > > inside Sphinx code, making it abort if it gets a "SEVERE" error. > > > > Regards, > > Mauro > > > > I fixed it with the patch shown below. Some words about: The use > of the :doc: rule should be replaced by a :ref:. The path names > of include directives should always relative to the .rst file. There are lots of place already using :doc: directive, on both relative and absolute ways: $ git grep ':doc:'|wc -l 382 Replacing all of them to :ref: will be painful. Also, IMHO, :doc: fits better on most needs, as it makes easier for people working with just plain texts to find to what file a ref points. Btw, not sure why, but, when doing some conversions I got broken references when using :ref:. So, I ended using :doc: instead. > > To go further ... with patch below: > > $ make SPHINXDIRS="driver-api" htmldocs > > shows some " WARNING: undefined label: ..." messages. To close > such links (addressing objects outside of the SPHINXDIR) we need > to activate intersphinx [1]. > > If we activate intersphinx we have to wait one release cycle to > get a objects.inv file at: > > https://www.kernel.org/doc/html/latest/ > > When the objects.inv file is available, the warnings are > disappear. Yeah, interphinx would help a lot to solve broken references. Not sure, however, if it is worth using it (at least for html). I mean, IMHO, the big reason why someone would use SPHINXDIRS is to speedup the process of testing if a documentation patch did the right thing. Anyway, it is up to Jon to decide about enabling intersphinx or not. > > If the process of intersphinx is unclear, please ask. > > > -- Markus -- > > [1] https://www.sphinx-doc.org/en/master/usage/extensions/intersphinx.html > > ---- > > diff --git a/Documentation/driver-api/firewire.rst b/Documentation/driver-api/firewire.rst > index 94a2d7f01d99..67741aeae5e8 100644 > --- a/Documentation/driver-api/firewire.rst > +++ b/Documentation/driver-api/firewire.rst > @@ -19,16 +19,16 @@ of kernel interfaces is available via exported symbols in `firewire-core` module > Firewire char device data structures > ==================================== > > -.. include:: /ABI/stable/firewire-cdev > +.. include:: ../ABI/stable/firewire-cdev > :literal: Hmm... I remember I tried that. It worked now on my local machine. Yet, the big issue here is that we can't ensure that developers will always use relative paths. We need somehow convince Sphinx to always use a fixed base path (/Documentation), even when building part of a big document. > -.. kernel-doc:: include/uapi/linux/firewire-cdev.h > +.. kernel-doc:: /include/uapi/linux/firewire-cdev.h > :internal: This is not needed. Probably because both conf.py and Makefile passes a kerneldoc source directory: $ grep kerneldoc_ Documentation/conf.py kerneldoc_bin = '../scripts/kernel-doc' kerneldoc_srctree = '..' $ grep kerneldoc_ Documentation/Makefile KERNELDOC_CONF = -D kerneldoc_srctree=$(srctree) -D kerneldoc_bin=$(KERNELDOC) > > Firewire device probing and sysfs interfaces > ============================================ > > -.. include:: /ABI/stable/sysfs-bus-firewire > +.. include:: ../ABI/stable/sysfs-bus-firewire > :literal: > > .. kernel-doc:: drivers/firewire/core-device.c > diff --git a/Documentation/driver-api/gpio/using-gpio.rst b/Documentation/driver-api/gpio/using-gpio.rst > index dda069444032..f2bd1e72af4e 100644 > --- a/Documentation/driver-api/gpio/using-gpio.rst > +++ b/Documentation/driver-api/gpio/using-gpio.rst > @@ -15,7 +15,7 @@ For any kind of mass produced system you want to support, such as servers, > laptops, phones, tablets, routers, and any consumer or office or business goods > using appropriate kernel drivers is paramount. Submit your code for inclusion > in the upstream Linux kernel when you feel it is mature enough and you will get > -help to refine it, see :doc:`../../process/submitting-patches`. > +help to refine it, see :ref:`submittingpatches`. > > In Linux GPIO lines also have a userspace ABI. > > diff --git a/Documentation/driver-api/ioctl.rst b/Documentation/driver-api/ioctl.rst > index c455db0e1627..ad91db68ba89 100644 > --- a/Documentation/driver-api/ioctl.rst > +++ b/Documentation/driver-api/ioctl.rst > @@ -34,7 +34,7 @@ _IO/_IOR/_IOW/_IOWR > > type > An 8-bit number, often a character literal, specific to a subsystem > - or driver, and listed in :doc:`../userspace-api/ioctl/ioctl-number` > + or driver, and listed in :ref:`ioctl numbers` > > nr > An 8-bit number identifying the specific command, unique for a give > diff --git a/Documentation/userspace-api/ioctl/ioctl-number.rst b/Documentation/userspace-api/ioctl/ioctl-number.rst > index 52bf58417653..09647516ca52 100644 > --- a/Documentation/userspace-api/ioctl/ioctl-number.rst > +++ b/Documentation/userspace-api/ioctl/ioctl-number.rst > @@ -1,3 +1,5 @@ > +.. _ioctl numbers: > + > ============= > Ioctl Numbers > ============= > Thanks, Mauro ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: Path troubles when using SPHINXDIRS option 2020-04-22 8:57 ` Mauro Carvalho Chehab @ 2020-04-22 9:27 ` Markus Heiser 2020-04-22 10:05 ` Mauro Carvalho Chehab 0 siblings, 1 reply; 8+ messages in thread From: Markus Heiser @ 2020-04-22 9:27 UTC (permalink / raw) To: Mauro Carvalho Chehab, Jonathan Corbet; +Cc: Linux Doc Mailing List Hi Mauro, about wording: I will use the term "book" for a SPHINXDIR and "bookshelf" for the whole kernel documentation .. Am 22.04.20 um 10:57 schrieb Mauro Carvalho Chehab: > Em Tue, 21 Apr 2020 12:52:42 +0200 > Markus Heiser <markus.heiser@darmarit.de> escreveu: > >> Hi Mauro, >> >> Am 21.04.20 um 10:38 schrieb Mauro Carvalho Chehab: >>> >>> Hi, >>> >>> While building from v5.7-rc2 + media, I noticed that SPHINXDIRS option >>> stopped working. >>> >>> What happens is that, if we don't pass this option, Sphinx assumes that >>> the "absolute" path is "Documentation/". So, include options like this: >>> >>> .. include:: /ABI/stable/firewire-cdev >>> :literal: >>> >>> >>> would be evaluated as Documentation/ABI/stable/firewire-cdev if built >>> without SPHINXDIRS. However, if we do SPHINXDIRS=driver-api, then >>> the "absolute" patch would be "Documentation/driver-api", causing this >>> error: >>> >>> Sphinx parallel build error: >>> docutils.utils.SystemMessage: /devel/v4l/patchwork/Documentation/driver-api/firewire.rst:22: (SEVERE/4) Problems with "include" directive path: >>> >>> This is specially bad for build jobs (like one we have on jenkins that >>> is meant to test media patches), as, due to some Sphinx bug, prevents >>> sphinx-build to stop, making the toolset to run forever. >>> >>> I suspect that some change at conf.py could address the path issue. >>> >>> I'll try to investigate further. >>> >>> Just to be 100% sure that this is not some version-specific bad >>> behavior, I tested (using the latest patch version) Sphinx from >>> version 1.7.9 up to 2.4.4. The same two errors happen on all >>> versions. >>> >>> Markus, >>> >>> Maybe you may have some idea about how to fix those issues. >>> >>> The parallel build error would likely require fixing something >>> inside Sphinx code, making it abort if it gets a "SEVERE" error. >>> >>> Regards, >>> Mauro >>> >> >> I fixed it with the patch shown below. Some words about: The use >> of the :doc: rule should be replaced by a :ref:. The path names >> of include directives should always relative to the .rst file. > > There are lots of place already using :doc: directive, on both > relative and absolute ways: > > $ git grep ':doc:'|wc -l > 382 Your grep is wrong (it also matches the :doc: from kernel-include), use: $ git grep ':doc:`'|wc -l 83 > > Replacing all of them to :ref: will be painful. Also, IMHO, :doc: fits > better on most needs, as it makes easier for people working with > just plain texts to find to what file a ref points. The opposite of pointing to a file is, that we can only point the file not a content in the file and we lost the flexibility of dynamical referencing by target's name: If the target is moved, the refs has to be changed also. Not used right now, but we also lost the ability to link from one "book" to another "book" in the "bookshelf" or even into other books available in the WEB (this is what intersphinx can do). Its a decission what counts more. > Btw, not sure why, but, when doing some conversions I got broken > references when using :ref:. So, I ended using :doc: instead. Can't believe, there must have been other reasons. >> >> To go further ... with patch below: >> >> $ make SPHINXDIRS="driver-api" htmldocs >> >> shows some " WARNING: undefined label: ..." messages. To close >> such links (addressing objects outside of the SPHINXDIR) we need >> to activate intersphinx [1]. >> >> If we activate intersphinx we have to wait one release cycle to >> get a objects.inv file at: >> >> https://www.kernel.org/doc/html/latest/ >> >> When the objects.inv file is available, the warnings are >> disappear. > > Yeah, interphinx would help a lot to solve broken references. > > Not sure, however, if it is worth using it (at least for html). Why should a http link does not work in a PDF file? .. I mean, its just inserting HTTP links. > I mean, IMHO, the big reason why someone would use SPHINXDIRS is to > speedup the process of testing if a documentation patch did the right > thing. I can't speak for other, but I often prefer a book with links in over a complete bookshelf holding in my hands ;) > Anyway, it is up to Jon to decide about enabling intersphinx or not. -- Markus -- ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: Path troubles when using SPHINXDIRS option 2020-04-22 9:27 ` Markus Heiser @ 2020-04-22 10:05 ` Mauro Carvalho Chehab 2020-04-22 10:26 ` Markus Heiser 0 siblings, 1 reply; 8+ messages in thread From: Mauro Carvalho Chehab @ 2020-04-22 10:05 UTC (permalink / raw) To: Markus Heiser; +Cc: Jonathan Corbet, Linux Doc Mailing List Em Wed, 22 Apr 2020 11:27:50 +0200 Markus Heiser <markus.heiser@darmarit.de> escreveu: > Hi Mauro, > > about wording: I will use the term "book" for a SPHINXDIR and "bookshelf" > for the whole kernel documentation .. > > Am 22.04.20 um 10:57 schrieb Mauro Carvalho Chehab: > > Em Tue, 21 Apr 2020 12:52:42 +0200 > > Markus Heiser <markus.heiser@darmarit.de> escreveu: > > > >> Hi Mauro, > >> > >> Am 21.04.20 um 10:38 schrieb Mauro Carvalho Chehab: > >>> > >>> Hi, > >>> > >>> While building from v5.7-rc2 + media, I noticed that SPHINXDIRS option > >>> stopped working. > >>> > >>> What happens is that, if we don't pass this option, Sphinx assumes that > >>> the "absolute" path is "Documentation/". So, include options like this: > >>> > >>> .. include:: /ABI/stable/firewire-cdev > >>> :literal: > >>> > >>> > >>> would be evaluated as Documentation/ABI/stable/firewire-cdev if built > >>> without SPHINXDIRS. However, if we do SPHINXDIRS=driver-api, then > >>> the "absolute" patch would be "Documentation/driver-api", causing this > >>> error: > >>> > >>> Sphinx parallel build error: > >>> docutils.utils.SystemMessage: /devel/v4l/patchwork/Documentation/driver-api/firewire.rst:22: (SEVERE/4) Problems with "include" directive path: > >>> > >>> This is specially bad for build jobs (like one we have on jenkins that > >>> is meant to test media patches), as, due to some Sphinx bug, prevents > >>> sphinx-build to stop, making the toolset to run forever. > >>> > >>> I suspect that some change at conf.py could address the path issue. > >>> > >>> I'll try to investigate further. > >>> > >>> Just to be 100% sure that this is not some version-specific bad > >>> behavior, I tested (using the latest patch version) Sphinx from > >>> version 1.7.9 up to 2.4.4. The same two errors happen on all > >>> versions. > >>> > >>> Markus, > >>> > >>> Maybe you may have some idea about how to fix those issues. > >>> > >>> The parallel build error would likely require fixing something > >>> inside Sphinx code, making it abort if it gets a "SEVERE" error. > >>> > >>> Regards, > >>> Mauro > >>> > >> > >> I fixed it with the patch shown below. Some words about: The use > >> of the :doc: rule should be replaced by a :ref:. The path names > >> of include directives should always relative to the .rst file. > > > > There are lots of place already using :doc: directive, on both > > relative and absolute ways: > > > > $ git grep ':doc:'|wc -l > > 382 > > Your grep is wrong (it also matches the :doc: from kernel-include), use: > > $ git grep ':doc:`'|wc -l > 83 Ah, true. > > Replacing all of them to :ref: will be painful. Also, IMHO, :doc: fits > > better on most needs, as it makes easier for people working with > > just plain texts to find to what file a ref points. > > The opposite of pointing to a file is, that we can only point the > file not a content in the file and we lost the flexibility of > dynamical referencing by target's name: If the target is moved, > the refs has to be changed also. True, but we have a script that tracks those problems and even auto-correct most of such broken references. Right now, there are *lots* of references to a /Documentation.* file, without any sphinx tags: $ git grep Documentation/ Documentation/|grep -v ':doc:`'|grep -v ABI|grep -v binding|wc -l 1515 An extension like Documentation/sphinx/automarkup.py could easily replace them by :doc:`Documentation/foo`, creating links on all those places at no cost. Adding explicit :ref: would require manual work, and I bet some maintainers will reject adding extra markups on some files. > Not used right now, but we also > lost the ability to link from one "book" to another "book" in > the "bookshelf" or even into other books available in the WEB > (this is what intersphinx can do). As currently we don't use intersphinx, I'm not too much concerned about what it could provide in the future. In any case, maybe one day intersphinx will have support for :doc: types added there as well. Without looking into the dirty details, it doesn't sound too hard to add support for it: intersphinx could simply create a :ref: type of reference for all files (like, __doc_driver_api__media__drivers__tuners). Then, any place with a :doc:`/driver-api/media/drivers/tuner` would be dynamically replaced by a :ref:`__doc_driver_api__media__drivers__tuners` at runtime. > Its a decission what counts more. > > > Btw, not sure why, but, when doing some conversions I got broken > > references when using :ref:. So, I ended using :doc: instead. > > Can't believe, there must have been other reasons. Maybe. I tried several times on some documents, but it caused sphinx warnings about unknown cross references. Not sure why, and didn't investigated it further. > >> To go further ... with patch below: > >> > >> $ make SPHINXDIRS="driver-api" htmldocs > >> > >> shows some " WARNING: undefined label: ..." messages. To close > >> such links (addressing objects outside of the SPHINXDIR) we need > >> to activate intersphinx [1]. > >> > >> If we activate intersphinx we have to wait one release cycle to > >> get a objects.inv file at: > >> > >> https://www.kernel.org/doc/html/latest/ > >> > >> When the objects.inv file is available, the warnings are > >> disappear. > > > > Yeah, interphinx would help a lot to solve broken references. > > > > Not sure, however, if it is worth using it (at least for html). > > Why should a http link does not work in a PDF file? .. I mean, its > just inserting HTTP links. The thing with PDF is that not many developers (I know) are using it. Maybe now that we have a separate directory with just the PDF books, without the other temporary files people may start using it more. > > I mean, IMHO, the big reason why someone would use SPHINXDIRS is to > > speedup the process of testing if a documentation patch did the right > > thing. > > I can't speak for other, but I often prefer a book with links in over > a complete bookshelf holding in my hands ;) Well, I also often prefer reading a PDF book, when it provides a good comprehensive documentation. On most places, we're not there yet: there are too many gaps inside the documentation for it to be used as a real book. I hope someday this will change. Thanks, Mauro ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: Path troubles when using SPHINXDIRS option 2020-04-22 10:05 ` Mauro Carvalho Chehab @ 2020-04-22 10:26 ` Markus Heiser 0 siblings, 0 replies; 8+ messages in thread From: Markus Heiser @ 2020-04-22 10:26 UTC (permalink / raw) To: Mauro Carvalho Chehab; +Cc: Jonathan Corbet, Linux Doc Mailing List Am 22.04.20 um 12:05 schrieb Mauro Carvalho Chehab: [...] >> The opposite of pointing to a file is, that we can only point the >> file not a content in the file and we lost the flexibility of >> dynamical referencing by target's name: If the target is moved, >> the refs has to be changed also. > > True, but we have a script that tracks those problems and even > auto-correct most of such broken references. [...] > An extension like Documentation/sphinx/automarkup.py could > easily replace them by :doc:`Documentation/foo`, creating > links on all those places at no cost. [...] > Adding explicit :ref: would require manual work, and I bet some > maintainers will reject adding extra markups on some files. [...] > In any case, maybe one day intersphinx will have support for :doc: > types added there as well. > > Without looking into the dirty details, it doesn't sound too hard to add > support for it: intersphinx could simply create a :ref: type of reference > for all files (like, __doc_driver_api__media__drivers__tuners). Then, > any place with a :doc:`/driver-api/media/drivers/tuner` would be > dynamically replaced by a :ref:`__doc_driver_api__media__drivers__tuners` > at runtime. Yes, hack over hack .. sometimes I feel back in the "DocBook century". We now have a very confusing build process and I have to admit that I am also to blame. I also believe that everyone has good reasons. For one solution or for the other solution. _Hack_ or _standard_, it is always a compromise that the Kernel community has to find. I cannot rate that. -- Markus -- ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2020-04-22 10:57 UTC | newest] Thread overview: 8+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2020-04-21 8:38 Path troubles when using SPHINXDIRS option Mauro Carvalho Chehab 2020-04-21 10:35 ` Mauro Carvalho Chehab 2020-04-21 10:52 ` Markus Heiser 2020-04-21 12:42 ` Markus Heiser 2020-04-22 8:57 ` Mauro Carvalho Chehab 2020-04-22 9:27 ` Markus Heiser 2020-04-22 10:05 ` Mauro Carvalho Chehab 2020-04-22 10:26 ` Markus Heiser
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).