Commit 61439c4a authored by Mauro Carvalho Chehab's avatar Mauro Carvalho Chehab Committed by Greg Kroah-Hartman

scripts: get_abi.pl: Allow optionally record from where a line came from

The get_abi.pl reads a lot of files and can join them on a
single output file. Store where each "What:" output came from,
in order to be able to optionally display it.

This is useful for the Sphinx extension, with can now be
able to blame what ABI file has issues, and on what line
the What: description with problems begin.
Acked-by: default avatarJonathan Corbet <corbet@lwn.net>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab+huawei@kernel.org>
Link: https://lore.kernel.org/r/befc387011c5e3c6febd285b7f27610e41c90260.1604042072.git.mchehab+huawei@kernel.orgSigned-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent e9bca891
...@@ -10,6 +10,7 @@ use Fcntl ':mode'; ...@@ -10,6 +10,7 @@ use Fcntl ':mode';
my $help; my $help;
my $man; my $man;
my $debug; my $debug;
my $enable_lineno;
my $prefix="Documentation/ABI"; my $prefix="Documentation/ABI";
# #
...@@ -19,6 +20,7 @@ my $description_is_rst = 0; ...@@ -19,6 +20,7 @@ my $description_is_rst = 0;
GetOptions( GetOptions(
"debug|d+" => \$debug, "debug|d+" => \$debug,
"enable-lineno" => \$enable_lineno,
"rst-source!" => \$description_is_rst, "rst-source!" => \$description_is_rst,
"dir=s" => \$prefix, "dir=s" => \$prefix,
'help|?' => \$help, 'help|?' => \$help,
...@@ -67,6 +69,7 @@ sub parse_abi { ...@@ -67,6 +69,7 @@ sub parse_abi {
$data{$nametag}->{file} = $name; $data{$nametag}->{file} = $name;
$data{$nametag}->{filepath} = $file; $data{$nametag}->{filepath} = $file;
$data{$nametag}->{is_file} = 1; $data{$nametag}->{is_file} = 1;
$data{$nametag}->{line_no} = 1;
my $type = $file; my $type = $file;
$type =~ s,.*/(.*)/.*,$1,; $type =~ s,.*/(.*)/.*,$1,;
...@@ -126,6 +129,8 @@ sub parse_abi { ...@@ -126,6 +129,8 @@ sub parse_abi {
if ($tag ne "" && $new_tag) { if ($tag ne "" && $new_tag) {
$tag = $new_tag; $tag = $new_tag;
$data{$what}->{line_no} = $ln;
if ($new_what) { if ($new_what) {
@{$data{$what}->{label}} = @labels if ($data{$nametag}->{what}); @{$data{$what}->{label}} = @labels if ($data{$nametag}->{what});
@labels = (); @labels = ();
...@@ -221,6 +226,12 @@ sub output_rest { ...@@ -221,6 +226,12 @@ sub output_rest {
my $file = $data{$what}->{file}; my $file = $data{$what}->{file};
my $filepath = $data{$what}->{filepath}; my $filepath = $data{$what}->{filepath};
if ($enable_lineno) {
printf "#define LINENO %s%s#%s\n\n",
$prefix, $data{$what}->{file},
$data{$what}->{line_no};
}
my $w = $what; my $w = $what;
$w =~ s/([\(\)\_\-\*\=\^\~\\])/\\$1/g; $w =~ s/([\(\)\_\-\*\=\^\~\\])/\\$1/g;
...@@ -369,6 +380,10 @@ sub search_symbols { ...@@ -369,6 +380,10 @@ sub search_symbols {
} }
} }
# Ensure that the prefix will always end with a slash
# While this is not needed for find, it makes the patch nicer
# with --enable-lineno
$prefix =~ s,/?$,/,;
# #
# Parses all ABI files located at $prefix dir # Parses all ABI files located at $prefix dir
...@@ -395,7 +410,8 @@ abi_book.pl - parse the Linux ABI files and produce a ReST book. ...@@ -395,7 +410,8 @@ abi_book.pl - parse the Linux ABI files and produce a ReST book.
=head1 SYNOPSIS =head1 SYNOPSIS
B<abi_book.pl> [--debug] [--man] [--help] --[(no-)rst-source] [--dir=<dir>] <COMAND> [<ARGUMENT>] B<abi_book.pl> [--debug] [--enable-lineno] [--man] [--help]
[--(no-)rst-source] [--dir=<dir>] <COMAND> [<ARGUMENT>]
Where <COMMAND> can be: Where <COMMAND> can be:
...@@ -425,6 +441,10 @@ selecting between a rst-compliant source ABI (--rst-source), or a ...@@ -425,6 +441,10 @@ selecting between a rst-compliant source ABI (--rst-source), or a
plain text that may be violating ReST spec, so it requres some escaping plain text that may be violating ReST spec, so it requres some escaping
logic (--no-rst-source). logic (--no-rst-source).
=item B<--enable-lineno>
Enable output of #define LINENO lines.
=item B<--debug> =item B<--debug>
Put the script in verbose mode, useful for debugging. Can be called multiple Put the script in verbose mode, useful for debugging. Can be called multiple
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment