lkml.org 
[lkml]   [2020]   [Oct]   [28]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 25/33] docs: Kconfig/Makefile: add a check for broken ABI files
    Date
    From: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>

    The files under Documentation/ABI should follow the syntax
    as defined at Documentation/ABI/README.

    Allow checking if they're following the syntax by running
    the ABI parser script on COMPILE_TEST.

    With that, when there's a problem with a file under
    Documentation/ABI, it would produce a warning like:

    Warning: file ./Documentation/ABI/testing/sysfs-bus-pci-devices-aer_stats#14:
    What '/sys/bus/pci/devices/<dev>/aer_stats/aer_rootport_total_err_cor' doesn't have a description
    Warning: file ./Documentation/ABI/testing/sysfs-bus-pci-devices-aer_stats#21:
    What '/sys/bus/pci/devices/<dev>/aer_stats/aer_rootport_total_err_fatal' doesn't have a description

    Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
    ---
    Documentation/Kconfig | 10 ++++++++++
    Documentation/Makefile | 5 +++++
    lib/Kconfig.debug | 2 ++
    scripts/get_abi.pl | 14 +++++++++++---
    4 files changed, 28 insertions(+), 3 deletions(-)

    diff --git a/Documentation/Kconfig b/Documentation/Kconfig
    index 66046fa1c341..e549a61f4d96 100644
    --- a/Documentation/Kconfig
    +++ b/Documentation/Kconfig
    @@ -10,4 +10,14 @@ config WARN_MISSING_DOCUMENTS

    If unsure, select 'N'.

    +config WARN_ABI_ERRORS
    + bool "Warn if there are errors at ABI files"
    + depends on COMPILE_TEST
    + help
    + The files under Documentation/ABI should follow what's
    + described at Documentation/ABI/README. Yet, as they're manually
    + written, it would be possible that some of those files would
    + have errors that would break them for being parsed by
    + scripts/get_abi.pl. Add a check to verify them.

    + If unsure, select 'N'.
    diff --git a/Documentation/Makefile b/Documentation/Makefile
    index 4e47dff8b315..61a7310b49e0 100644
    --- a/Documentation/Makefile
    +++ b/Documentation/Makefile
    @@ -10,6 +10,11 @@ ifeq ($(CONFIG_WARN_MISSING_DOCUMENTS),y)
    $(shell $(srctree)/scripts/documentation-file-ref-check --warn)
    endif

    +# Check for broken ABI files
    +ifeq ($(CONFIG_WARN_ABI_ERRORS),y)
    +$(shell $(srctree)/scripts/get_abi.pl validate --dir $(srctree)/Documentation/ABI)
    +endif
    +
    # You can set these variables from the command line.
    SPHINXBUILD = sphinx-build
    SPHINXOPTS =
    diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug
    index d7a7bc3b6098..c789b39ed527 100644
    --- a/lib/Kconfig.debug
    +++ b/lib/Kconfig.debug
    @@ -2446,4 +2446,6 @@ config HYPERV_TESTING

    endmenu # "Kernel Testing and Coverage"

    +source "Documentation/Kconfig"
    +
    endmenu # Kernel hacking
    diff --git a/scripts/get_abi.pl b/scripts/get_abi.pl
    index 3cff7cdf1397..413349789145 100755
    --- a/scripts/get_abi.pl
    +++ b/scripts/get_abi.pl
    @@ -50,7 +50,15 @@ my %symbols;
    sub parse_error($$$$) {
    my ($file, $ln, $msg, $data) = @_;

    - print STDERR "file $file#$ln: $msg at\n\t$data";
    + $data =~ s/\s+$/\n/;
    +
    + print STDERR "Warning: file $file#$ln:\n\t$msg";
    +
    + if ($data ne "") {
    + print STDERR ". Line\n\t\t$data";
    + } else {
    + print STDERR "\n";
    + }
    }

    #
    @@ -110,7 +118,7 @@ sub parse_abi {

    # Invalid, but it is a common mistake
    if ($new_tag eq "where") {
    - parse_error($file, $ln, "tag 'Where' is invalid. Should be 'What:' instead", $_);
    + parse_error($file, $ln, "tag 'Where' is invalid. Should be 'What:' instead", "");
    $new_tag = "what";
    }

    @@ -225,7 +233,7 @@ sub parse_abi {
    }

    # Everything else is error
    - parse_error($file, $ln, "Unexpected line:", $_);
    + parse_error($file, $ln, "Unexpected content", $_);
    }
    $data{$nametag}->{description} =~ s/^\n+// if ($data{$nametag}->{description});
    if ($what) {
    --
    2.26.2
    \
     
     \ /
      Last update: 2020-10-29 02:02    [W:3.043 / U:0.020 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site