Re: [PATCH V2] rtla: Fix Makefile when called from -C tools/

From: Sedat Dilek
Date: Thu Jul 14 2022 - 05:07:58 EST


On Wed, Jul 13, 2022 at 11:32 PM Daniel Bristot de Oliveira
<bristot@xxxxxxxxxx> wrote:
>
> Sedat Dilek reported an error on rtla Makefile when running:
>
> $ make -C tools/ clean
> [...]
> make[2]: Entering directory
> '/home/dileks/src/linux-kernel/git/tools/tracing/rtla'
> [...]
> '/home/dileks/src/linux-kernel/git/Documentation/tools/rtla'
> /bin/sh: 1: test: rtla-make[2]:: unexpected operator <------ The problem
> rm: cannot remove '/home/dileks/src/linux-kernel/git': Is a directory
> make[2]: *** [Makefile:120: clean] Error 1
> make[2]: Leaving directory
>
> This occurred because the rtla calls kernel's Makefile to get the
> version in silence mode, e.g.,
>
> $ make -sC ../../.. kernelversion
> 5.19.0-rc4
>
> But the -s is being ignored when rtla's makefile is called indirectly,
> so the output looks like this:
>
> $ make -C ../../.. kernelversion
> make: Entering directory '/root/linux'
> 5.19.0-rc4
> make: Leaving directory '/root/linux'
>
> Using 'grep -v make' avoids this problem, e.g.,
>
> $ make -C ../../.. kernelversion | grep -v make
> 5.19.0-rc4
>
> Thus, add | grep -v make.
>
> Cc: Steven Rostedt <rostedt@xxxxxxxxxxx>
> Fixes: 8619e32825fd ("rtla: Follow kernel version")
> Reported-by: Sedat Dilek <sedat.dilek@xxxxxxxxx>
> Tested-by: Sedat Dilek <sedat.dilek@xxxxxxxxx>
> Signed-off-by: Daniel Bristot de Oliveira <bristot@xxxxxxxxxx>
> ---

Thanks for v2.
That looks good to me.

Daniel, you are right that not passing -s to make-line will not show
the grep output.

Formally and again my...

Reported-by: Sedat Dilek <sedat.dilek@xxxxxxxxx>
Tested-by: Sedat Dilek <sedat.dilek@xxxxxxxxx>

-Sedat-

> tools/tracing/rtla/Makefile | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/tools/tracing/rtla/Makefile b/tools/tracing/rtla/Makefile
> index 3822f4ea5f49..1bea2d16d4c1 100644
> --- a/tools/tracing/rtla/Makefile
> +++ b/tools/tracing/rtla/Makefile
> @@ -1,6 +1,6 @@
> NAME := rtla
> # Follow the kernel version
> -VERSION := $(shell cat VERSION 2> /dev/null || make -sC ../../.. kernelversion)
> +VERSION := $(shell cat VERSION 2> /dev/null || make -sC ../../.. kernelversion | grep -v make)
>
> # From libtracefs:
> # Makefiles suck: This macro sets a default value of $(2) for the
> --
> 2.32.0
>