docs: Kconfig/Makefile: add a check for broken ABI files
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 Acked-by: Jonathan Corbet <corbet@lwn.net> Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org> Link: https://lore.kernel.org/r/57a38de85cb4b548857207cf1fc1bf1ee08613c9.1604042072.git.mchehab+huawei@kernel.org Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
Родитель
50865d041e
Коммит
75442fb0cc
|
@ -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'.
|
||||
|
|
|
@ -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 =
|
||||
|
|
|
@ -2446,4 +2446,6 @@ config HYPERV_TESTING
|
|||
|
||||
endmenu # "Kernel Testing and Coverage"
|
||||
|
||||
source "Documentation/Kconfig"
|
||||
|
||||
endmenu # Kernel hacking
|
||||
|
|
|
@ -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) {
|
||||
|
|
Загрузка…
Ссылка в новой задаче