lkml.org 
[lkml]   [2020]   [Sep]   [25]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH RFC] scripts: kernel-doc: use a less pedantic markup for funcs on Sphinx 3.x
    Date
    Unfortunately, Sphinx 3.x parser for c functions is too pedantic:

    https://github.com/sphinx-doc/sphinx/issues/8241

    Making impossible to use it at the Kernel, as otherwise we would
    need to add thousands of macros to conf.py, with would require
    lots of maintainance.

    So, let's instead use the :c:macro notation. This will
    produce a worse result, but should provide cross-references and
    will remove thousands of warnings when building with newer
    versions of Sphinx.

    Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
    ---

    Jon,

    With this patch, the html doc builds with Sphinx 3.2.1 reduced from
    1705 warnings to 624 ones.

    The markup is not as nice as with Sphinx 1.x/2.x, but, IMHO, it is still
    decent.

    What do you think?

    Please notice that this patch will affect the automarkup type used for
    functions (with is currently broken anyway, with Sphinx 3.x)

    scripts/kernel-doc | 36 +++++++++++++++++++++++++++---------
    1 file changed, 27 insertions(+), 9 deletions(-)

    diff --git a/scripts/kernel-doc b/scripts/kernel-doc
    index 48301ff41ec5..5b891e5c6338 100755
    --- a/scripts/kernel-doc
    +++ b/scripts/kernel-doc
    @@ -886,15 +886,29 @@ sub output_function_rst(%) {
    my $oldprefix = $lineprefix;
    my $start = "";

    - if ($args{'typedef'}) {
    - print ".. c:function:: ". $args{'function'} . "\n\n";
    - print_lineno($declaration_start_line);
    - print " **Typedef**: ";
    - $lineprefix = "";
    - output_highlight_rst($args{'purpose'});
    - $start = "\n\n**Syntax**\n\n ``";
    + if ($sphinx_major < 3) {
    + if ($args{'typedef'}) {
    + print ".. c:function:: ". $args{'function'} . "\n\n";
    + print_lineno($declaration_start_line);
    + print " **Typedef**: ";
    + $lineprefix = "";
    + output_highlight_rst($args{'purpose'});
    + $start = "\n\n**Syntax**\n\n ``";
    + } else {
    + print ".. c:function:: ";
    + }
    } else {
    - print ".. c:function:: ";
    + print ".. c:macro:: ". $args{'function'} . "\n\n";
    +
    + if ($args{'typedef'}) {
    + print_lineno($declaration_start_line);
    + print " **Typedef**: ";
    + $lineprefix = "";
    + output_highlight_rst($args{'purpose'});
    + $start = "\n\n**Syntax**\n\n ``";
    + } else {
    + print "``";
    + }
    }
    if ($args{'functiontype'} ne "") {
    $start .= $args{'functiontype'} . " " . $args{'function'} . " (";
    @@ -921,7 +935,11 @@ sub output_function_rst(%) {
    if ($args{'typedef'}) {
    print ");``\n\n";
    } else {
    - print ")\n\n";
    + if ($sphinx_major < 3) {
    + print ")\n";
    + } else {
    + print ")``\n\n";
    + }
    print_lineno($declaration_start_line);
    $lineprefix = " ";
    output_highlight_rst($args{'purpose'});
    --
    2.26.2

    \
     
     \ /
      Last update: 2020-09-25 10:39    [W:6.056 / U:0.028 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site