Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp2829059pxj; Sun, 6 Jun 2021 15:55:06 -0700 (PDT) X-Google-Smtp-Source: ABdhPJz7Z8w4pbj8PwKJIGyxhYZRAPa22RWkGvoUYNo+jh6q8VPffeLZNyCjrlYR6wQn+R8O1ESd X-Received: by 2002:aa7:cb92:: with SMTP id r18mr17421686edt.246.1623020106795; Sun, 06 Jun 2021 15:55:06 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1623020106; cv=none; d=google.com; s=arc-20160816; b=vAzZN4I6eJuLdmYo3VMhsjRi9lgzdUfeo0NaNLm5vsN4QSYyE8ngbI+EAIS3wN/Xsl FtlpMFHGP+088JITIMcwR4F5OOjL4t4GT5DU3IGTzSQJNsMfYjD8cFpN+uFUcLqaJ7cr qrpd9ZANik2PpWesEo0VrBSu7TgSYv6xca1WCpdXfQsi1ERFATdPXdQA/WpebFRCVY9v EK0ADW5tp7y0/U3r4HZOyjVI6Iqjm/xMPKSJBKnjtvGKePesPZwCuBcL1+1M4qxfJj8U pxwKsbDFtUhADqAhEAm1pPWULCNn5sDduSEB3wyiKPELtKAA0QEfYZvZ0NjYE/2DPDbB mGLA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:in-reply-to:content-transfer-encoding :content-disposition:mime-version:references:message-id:subject:cc :to:from:date:dkim-signature; bh=LEITmbgA+ypfFiT6sDRv13/uCob4oKC9Sq9src0AzZE=; b=T0SvkdRYOKPK/aeoH1eYV0Tsv2CQC4t4osvDjf1fX1yajHzO/2VYQsqDtPqrVbxTI2 n4Lo8sVwLmS1k1KkGPLX/oHUOVTNyGQDPmVoqPIHjybj9ZEAjzerMknSxwxmsuH2Nbhf P8NCHiEDmVvYjJZHKseOv5mhS3nLn/pXkfaje51BDUeGNHmxCXiWlzPmlqysRKgRzmNj kbgTZ6uzQuO+9SmvPOUuomBrWYiFsQN/ijYKTsRj7OGR1f0efN7gu6LXKQyngOczoqTE cgyPFNvQNuIZ2nVwwk9EadCw3rp8XropiygFahKcKeLiTNhkF5J4x2Qnk2qBXrSNwnLu r4+A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@nfraprado.net header.s=gm1 header.b=chA+i0Rm; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id m25si8688938ejb.570.2021.06.06.15.54.44; Sun, 06 Jun 2021 15:55:06 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@nfraprado.net header.s=gm1 header.b=chA+i0Rm; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231283AbhFFWzM (ORCPT + 99 others); Sun, 6 Jun 2021 18:55:12 -0400 Received: from relay8-d.mail.gandi.net ([217.70.183.201]:53791 "EHLO relay8-d.mail.gandi.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230368AbhFFWzK (ORCPT ); Sun, 6 Jun 2021 18:55:10 -0400 Received: (Authenticated sender: n@nfraprado.net) by relay8-d.mail.gandi.net (Postfix) with ESMTPSA id 861051BF203; Sun, 6 Jun 2021 22:53:07 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nfraprado.net; s=gm1; t=1623019997; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=LEITmbgA+ypfFiT6sDRv13/uCob4oKC9Sq9src0AzZE=; b=chA+i0RmfXwj/WF8vUQcsG8LWn2bONkphlI9FxGByy3xXZzQ3/zHKFPGJxmKXuKUW335J7 jYK4CRJ9+UN7xZA7RoqojnjXZW+0cqiNSJEER76idFul1Hmyyid+LU7eBwqw4Yf6VUnAAy EO/oCOnOkrJSrla2lWMUer63YFPTS6rPVGC6R5VJrg9wTSN5B9e0Ariq05tQnFO7ePJjQo bl4pkIEG3/A5X1Ubh0QT5mRcrGJQ8WehYjr1NfQyPqrYiwulB4ynbpB9vRe3MCb4L15B0r jLNt083VPjq8mnz5SK6VyymWvFVmHAPrKBJPANhNFdLyuGqe1sYaP2/+H+QnUQ== Date: Sun, 6 Jun 2021 19:52:25 -0300 From: =?utf-8?B?TsOtY29sYXMgRi4gUi4gQS4=?= Prado To: Mauro Carvalho Chehab Cc: Jonathan Corbet , Linux Doc Mailing List , linux-kernel@vger.kernel.org, bpf@vger.kernel.org, coresight@lists.linaro.org, devicetree@vger.kernel.org, kunit-dev@googlegroups.com, kvm@vger.kernel.org, linux-acpi@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-gpio@vger.kernel.org, linux-hwmon@vger.kernel.org, linux-i2c@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-media@vger.kernel.org, linux-pci@vger.kernel.org, linux-pm@vger.kernel.org, linux-security-module@vger.kernel.org, netdev@vger.kernel.org Subject: Re: [PATCH 00/34] docs: avoid using ReST :doc:`foo` tag Message-ID: <20210606225225.fz4dsyz6im4bqena@notapiano> References: <20210605151109.axm3wzbcstsyxczp@notapiano> <20210605210836.540577d4@coco.lan> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20210605210836.540577d4@coco.lan> Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Sat, Jun 05, 2021 at 09:08:36PM +0200, Mauro Carvalho Chehab wrote: > Em Sat, 5 Jun 2021 12:11:09 -0300 > N?colas F. R. A. Prado escreveu: > > > Hi Mauro, > > > > On Sat, Jun 05, 2021 at 03:17:59PM +0200, Mauro Carvalho Chehab wrote: > > > As discussed at: > > > https://lore.kernel.org/linux-doc/871r9k6rmy.fsf@meer.lwn.net/ > > > > > > It is better to avoid using :doc:`foo` to refer to Documentation/foo.rst, as the > > > automarkup.py extension should handle it automatically, on most cases. > > > > > > There are a couple of exceptions to this rule: > > > > > > 1. when :doc: tag is used to point to a kernel-doc DOC: markup; > > > 2. when it is used with a named tag, e. g. :doc:`some name `; > > > > > > It should also be noticed that automarkup.py has currently an issue: > > > if one use a markup like: > > > > > > Documentation/dev-tools/kunit/api/test.rst > > > - documents all of the standard testing API excluding mocking > > > or mocking related features. > > > > > > or, even: > > > > > > Documentation/dev-tools/kunit/api/test.rst > > > documents all of the standard testing API excluding mocking > > > or mocking related features. > > > > > > The automarkup.py will simply ignore it. Not sure why. This patch series > > > avoid the above patterns (which is present only on 4 files), but it would be > > > nice to have a followup patch fixing the issue at automarkup.py. > > > > What I think is happening here is that we're using rST's syntax for definition > > lists [1]. automarkup.py ignores literal nodes, and perhaps a definition is > > considered a literal by Sphinx. Adding a blank line after the Documentation/... > > or removing the additional indentation makes it work, like you did in your > > 2nd and 3rd patch, since then it's not a definition anymore, although then the > > visual output is different as well. > > A literal has a different output. I think that this is not the case, but I > didn't check the python code from docutils/Sphinx. Okay, I went in deeper to understand the issue and indeed it wasn't what I thought. The reason definitions are ignored by automarkup.py is because the main loop iterates only over nodes that are of type paragraph: for para in doctree.traverse(nodes.paragraph): for node in para.traverse(nodes.Text): if not isinstance(node.parent, nodes.literal): node.parent.replace(node, markup_refs(name, app, node)) And inspecting the HTML output from your example, the definition name is inside a
tag, and it doesn't have a

inside. So in summary, automarkup.py will only work on elements which are inside a

in the output. Only applying the automarkup inside paragraphs seems like a good decision (which covers text in lists and tables as well), so unless there are other types of elements without paragraphs where automarkup should work, I think we should just avoid using definition lists pointing to documents like that. > > > I'm not sure this is something we need to fix. Does it make sense to use > > definition lists for links like that? If it does, I guess one option would be to > > whitelist definition lists so they aren't ignored by automarkup, but I feel > > this could get ugly really quickly. > > Yes, we should avoid handling literal blocks, as this can be a nightmare. > > > FWIW note that it's also possible to use relative paths to docs with automarkup. > > Not sure if you meant to say using something like ../driver-api/foo.rst. > If so, relative paths are a problem, as it will pass unnoticed by this script: > > ./scripts/documentation-file-ref-check > > which is meant to warn when a file is moved to be elsewhere. Ok, it > could be taught to use "../" to identify paths, but I suspect that this > could lead to false positives, like here: > > Documentation/usb/gadget-testing.rst: # ln -s ../../uncompressed/u > Documentation/usb/gadget-testing.rst: # cd ../../class/fs > Documentation/usb/gadget-testing.rst: # ln -s ../../header/h Yes, that's what I meant. Ok, that makes sense. Although after automarkup.py starts printing warnings on missing references to files (which is a patch I still need to resend), it would work out-of-the-box with relative paths. automarkup wouldn't face that false positives issue since it ignores literal blocks, which isn't as easy for a standalone script. But that's still in the future, we can discuss what to do then after it is implemented, so full paths seem better for now. Thanks, N?colas > > If you meant, instead, :doc:`../foo`, this series address those too. > > Regards, > Mauro