[PATCH] kunit: tool: Build GDB scripts

Brendan Jackman posted 1 patch 11 months ago
tools/testing/kunit/kunit_kernel.py | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
[PATCH] kunit: tool: Build GDB scripts
Posted by Brendan Jackman 11 months ago
Following a similar rationale as commit e4835f1da425f ("kunit: tool:
Build compile_commands.json"), make a common developer tool available by
default for KUnit users.

Compared to compile_commands.json, there is a little more work to be
done to build the GDB scripts. Is it enough to affect development cycle
duration? Unscientific evaluation:

rm -rf .kunit; time tools/testing/kunit/kunit.py build --kunitconfig ./lib/kunit/.kunitconfig --jobs 96

Without this patch it took 14.77s, with this patch it took 14.83. So,
although `make scripts_gdb` is pretty slow, presumably most of that is
just the overhead of running Kbuild at all, actually building the
scripts is approximately free.

Note also, to actually get the GDB scripts the user needs to enable
CONFIG_SCRIPTS_GDB, but building the scripts_gdb target without that is
still harmless.

Signed-off-by: Brendan Jackman <jackmanb@google.com>
---
 tools/testing/kunit/kunit_kernel.py | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/tools/testing/kunit/kunit_kernel.py b/tools/testing/kunit/kunit_kernel.py
index e76d7894b6c5195ece49f0d8c7ac35130df428a9..33b5f7351cbb5d0be240cb52db2bc1fa94aeb75e 100644
--- a/tools/testing/kunit/kunit_kernel.py
+++ b/tools/testing/kunit/kunit_kernel.py
@@ -72,8 +72,8 @@ class LinuxSourceTreeOperations:
 			raise ConfigError(e.output.decode())
 
 	def make(self, jobs: int, build_dir: str, make_options: Optional[List[str]]) -> None:
-		command = ['make', 'all', 'compile_commands.json', 'ARCH=' + self._linux_arch,
-			   'O=' + build_dir, '--jobs=' + str(jobs)]
+		command = ['make', 'all', 'compile_commands.json', 'scripts_gdb',
+			   'ARCH=' + self._linux_arch, 'O=' + build_dir, '--jobs=' + str(jobs)]
 		if make_options:
 			command.extend(make_options)
 		if self._cross_compile:

---
base-commit: 521d60e196ecb215f425e04e9ab33e02beaffbe3
change-id: 20250121-kunit-gdb-b27315b4f2d8

Best regards,
-- 
Brendan Jackman <jackmanb@google.com>
Re: [PATCH] kunit: tool: Build GDB scripts
Posted by David Gow 10 months ago
On Tue, 21 Jan 2025 at 21:01, Brendan Jackman <jackmanb@google.com> wrote:
>
> Following a similar rationale as commit e4835f1da425f ("kunit: tool:
> Build compile_commands.json"), make a common developer tool available by
> default for KUnit users.
>
> Compared to compile_commands.json, there is a little more work to be
> done to build the GDB scripts. Is it enough to affect development cycle
> duration? Unscientific evaluation:
>
> rm -rf .kunit; time tools/testing/kunit/kunit.py build --kunitconfig ./lib/kunit/.kunitconfig --jobs 96
>
> Without this patch it took 14.77s, with this patch it took 14.83. So,
> although `make scripts_gdb` is pretty slow, presumably most of that is
> just the overhead of running Kbuild at all, actually building the
> scripts is approximately free.
>
> Note also, to actually get the GDB scripts the user needs to enable
> CONFIG_SCRIPTS_GDB, but building the scripts_gdb target without that is
> still harmless.
>
> Signed-off-by: Brendan Jackman <jackmanb@google.com>
> ---

I'm happy with this for now, particularly since we're already doing
this for compile_commands.json, but I also think that this is a
symptom of the KUnit configuration story being insufficient. Not
really a problem for scripts_gdb, for which (as you mention)
CONFIG_SCRIPTS_GDB still needs to be set, but it'd be nice to support
this in a more generic way going forward. (The qemu_config python
scripts come close, but the .kunitconfig files definitely won't.)

Regardless, this is a distinct improvement for now, so:

Reviewed-by: David Gow <davidgow@google.com>

Cheers,
-- David

>  tools/testing/kunit/kunit_kernel.py | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/tools/testing/kunit/kunit_kernel.py b/tools/testing/kunit/kunit_kernel.py
> index e76d7894b6c5195ece49f0d8c7ac35130df428a9..33b5f7351cbb5d0be240cb52db2bc1fa94aeb75e 100644
> --- a/tools/testing/kunit/kunit_kernel.py
> +++ b/tools/testing/kunit/kunit_kernel.py
> @@ -72,8 +72,8 @@ class LinuxSourceTreeOperations:
>                         raise ConfigError(e.output.decode())
>
>         def make(self, jobs: int, build_dir: str, make_options: Optional[List[str]]) -> None:
> -               command = ['make', 'all', 'compile_commands.json', 'ARCH=' + self._linux_arch,
> -                          'O=' + build_dir, '--jobs=' + str(jobs)]
> +               command = ['make', 'all', 'compile_commands.json', 'scripts_gdb',
> +                          'ARCH=' + self._linux_arch, 'O=' + build_dir, '--jobs=' + str(jobs)]
>                 if make_options:
>                         command.extend(make_options)
>                 if self._cross_compile:
>
> ---
> base-commit: 521d60e196ecb215f425e04e9ab33e02beaffbe3
> change-id: 20250121-kunit-gdb-b27315b4f2d8
>
> Best regards,
> --
> Brendan Jackman <jackmanb@google.com>
>