Re: [PATCH] gen_compile_command: Add support for separate KBUILD_OUTPUT directory

From: Matthias Kaehlcke
Date: Thu Jun 20 2019 - 16:47:06 EST


On Thu, Jun 20, 2019 at 12:23:45PM -0700, Tom Roeder wrote:
> I can confirm that I can still run clang-tidy on the kernel using this
> new version of the script; it generates a version of
> compile_commands.json that works in my case.
>
> On Thu, Jun 20, 2019 at 11:45:23AM -0700, Matthias Kaehlcke wrote:
> > gen_compile_command.py currently assumes that the .cmd files and the
> > source code live in the same directory, which is not the case when
> > a separate KBUILD_OUTPUT directory is used.
> >
> > Add a new option to specify the kbuild output directory. If the
> > option is not set the kernel source directory is used.
> >
> > Signed-off-by: Matthias Kaehlcke <mka@xxxxxxxxxxxx>
> Reviewed-by: Tom Roeder <tmroeder@xxxxxxxxxx>
> Tested-by: Tom Roeder <tmroeder@xxxxxxxxxx>

Thanks!

> > scripts/gen_compile_commands.py | 28 +++++++++++++++++++---------
> > 1 file changed, 19 insertions(+), 9 deletions(-)
> >
> > diff --git a/scripts/gen_compile_commands.py b/scripts/gen_compile_commands.py
> > index 7915823b92a5..5a738ec66cc7 100755
> > --- a/scripts/gen_compile_commands.py
> > +++ b/scripts/gen_compile_commands.py
> > @@ -31,15 +31,21 @@ def parse_arguments():
> >
> > Returns:
> > log_level: A logging level to filter log output.
> > - directory: The directory to search for .cmd files.
> > + source_directory: The kernel source directory.
> > + kbuild_output_directory: The directory to search for .cmd files.
> > output: Where to write the compile-commands JSON file.
> > """
> > usage = 'Creates a compile_commands.json database from kernel .cmd files'
> > parser = argparse.ArgumentParser(description=usage)
> >
> > - directory_help = ('Path to the kernel source directory to search '
> > + directory_help = ('Path to the kernel source directory'
> Minor detail: this needs a space after "directory" so that it reads
> "directory '". Otherwise, the output doesn't have a space before the
> parenthesis.
>
> > '(defaults to the working directory)')
> > parser.add_argument('-d', '--directory', type=str, help=directory_help)
> > + kbuild_output_directory_help = ('Path to the directory to search for '
> > + '.cmd files'
> Same comment here: this should be "files '", with a space before the
> ending quote character.

Ok, I'll wait a bit for it there are other comments and send out a new
version with the spaces added.