[PATCH 1/3] perf jevents: Fix build when there are other json files in the tree

James Clark posted 3 patches 3 months, 3 weeks ago
[PATCH 1/3] perf jevents: Fix build when there are other json files in the tree
Posted by James Clark 3 months, 3 weeks ago
The unquoted glob *.json will expand to a real file if, for example,
there is any file in the Perf source ending in .json. This can happen
when using tools like Bear and clangd which generate a
compile_commands.json file. With the glob already expanded by the shell,
the find command will fail to wildcard any real json events files.

Fix it by wrapping the star in quotes so it's passed to find rather than
the shell.

This fixes the following build error (most of the diff output omitted):

  $ make V=1 -C tools/perf O=/tmp/perf_build_with_json

  TEST    /tmp/perf_build_with_json/pmu-events/empty-pmu-events.log
  ...
   /* offset=121053 */ "node-access\000legacy cache\000Local memory read accesses\000legacy-cache-config=6\000\00010\000\000\000\000\000"
   /* offset=121135 */ "node-misses\000legacy cache\000Local memory read misses\000legacy-cache-config=0x10006\000\00010\000\000\000\000\000"
   /* offset=121221 */ "node-miss\000legacy cache\000Local memory read misses\000legacy-cache-config=0x10006\000\00010\000\000\000\000\000"
  ...
  -       {
                  .event_table = { 0, 0 },
                  .metric_table = { 0, 0 },
          },
  make[3]: *** [pmu-events/Build:54: /tmp/perf_build_with_json/pmu-events/empty-pmu-events.log] Error 1

Fixes: 4bb55de4ff03 ("perf jevents: Support copying the source json files to OUTPUT")
Signed-off-by: James Clark <james.clark@linaro.org>
---
 tools/perf/pmu-events/Build | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tools/perf/pmu-events/Build b/tools/perf/pmu-events/Build
index 4ebf37c14978..ee8ba74f82de 100644
--- a/tools/perf/pmu-events/Build
+++ b/tools/perf/pmu-events/Build
@@ -1,6 +1,6 @@
 pmu-events-y	+= pmu-events.o
 JDIR		=  pmu-events/arch/$(SRCARCH)
-JSON		=  $(shell find pmu-events/arch -name *.json -o -name *.csv)
+JSON		=  $(shell find pmu-events/arch -name '*.json' -o -name '*.csv')
 JDIR_TEST	=  pmu-events/arch/test
 JSON_TEST	=  $(shell [ -d $(JDIR_TEST) ] &&			\
 			find $(JDIR_TEST) -name '*.json')

-- 
2.34.1
Re: [PATCH 1/3] perf jevents: Fix build when there are other json files in the tree
Posted by Leo Yan 3 months, 3 weeks ago
On Mon, Oct 20, 2025 at 05:08:26PM +0100, James Clark wrote:
> The unquoted glob *.json will expand to a real file if, for example,
> there is any file in the Perf source ending in .json. This can happen
> when using tools like Bear and clangd which generate a
> compile_commands.json file. With the glob already expanded by the shell,
> the find command will fail to wildcard any real json events files.
> 
> Fix it by wrapping the star in quotes so it's passed to find rather than
> the shell.
> 
> This fixes the following build error (most of the diff output omitted):
> 
>   $ make V=1 -C tools/perf O=/tmp/perf_build_with_json
> 
>   TEST    /tmp/perf_build_with_json/pmu-events/empty-pmu-events.log
>   ...
>    /* offset=121053 */ "node-access\000legacy cache\000Local memory read accesses\000legacy-cache-config=6\000\00010\000\000\000\000\000"
>    /* offset=121135 */ "node-misses\000legacy cache\000Local memory read misses\000legacy-cache-config=0x10006\000\00010\000\000\000\000\000"
>    /* offset=121221 */ "node-miss\000legacy cache\000Local memory read misses\000legacy-cache-config=0x10006\000\00010\000\000\000\000\000"
>   ...
>   -       {
>                   .event_table = { 0, 0 },
>                   .metric_table = { 0, 0 },
>           },
>   make[3]: *** [pmu-events/Build:54: /tmp/perf_build_with_json/pmu-events/empty-pmu-events.log] Error 1
> 
> Fixes: 4bb55de4ff03 ("perf jevents: Support copying the source json files to OUTPUT")
> Signed-off-by: James Clark <james.clark@linaro.org>

Searched a bit, if without quotes, the wildcard will be expanded by make
but not by shell.  It makes sense for me to fix it with quotes.

Reviewed-by: Leo Yan <leo.yan@arm.com>
Re: [PATCH 1/3] perf jevents: Fix build when there are other json files in the tree
Posted by James Clark 3 months, 3 weeks ago

On 20/10/2025 5:38 pm, Leo Yan wrote:
> On Mon, Oct 20, 2025 at 05:08:26PM +0100, James Clark wrote:
>> The unquoted glob *.json will expand to a real file if, for example,
>> there is any file in the Perf source ending in .json. This can happen
>> when using tools like Bear and clangd which generate a
>> compile_commands.json file. With the glob already expanded by the shell,
>> the find command will fail to wildcard any real json events files.
>>
>> Fix it by wrapping the star in quotes so it's passed to find rather than
>> the shell.
>>
>> This fixes the following build error (most of the diff output omitted):
>>
>>    $ make V=1 -C tools/perf O=/tmp/perf_build_with_json
>>
>>    TEST    /tmp/perf_build_with_json/pmu-events/empty-pmu-events.log
>>    ...
>>     /* offset=121053 */ "node-access\000legacy cache\000Local memory read accesses\000legacy-cache-config=6\000\00010\000\000\000\000\000"
>>     /* offset=121135 */ "node-misses\000legacy cache\000Local memory read misses\000legacy-cache-config=0x10006\000\00010\000\000\000\000\000"
>>     /* offset=121221 */ "node-miss\000legacy cache\000Local memory read misses\000legacy-cache-config=0x10006\000\00010\000\000\000\000\000"
>>    ...
>>    -       {
>>                    .event_table = { 0, 0 },
>>                    .metric_table = { 0, 0 },
>>            },
>>    make[3]: *** [pmu-events/Build:54: /tmp/perf_build_with_json/pmu-events/empty-pmu-events.log] Error 1
>>
>> Fixes: 4bb55de4ff03 ("perf jevents: Support copying the source json files to OUTPUT")
>> Signed-off-by: James Clark <james.clark@linaro.org>
> 
> Searched a bit, if without quotes, the wildcard will be expanded by make
> but not by shell.  It makes sense for me to fix it with quotes.
> 

I think it is the shell. The only * expanded by make is file names on 
the right hand side of rules. Either way it only makes a difference to 
the commit message.

> Reviewed-by: Leo Yan <leo.yan@arm.com>

Thanks for the review.