Re: [PATCH] perf tools: Do not show trace command if it's not compiled in

From: Ingo Molnar
Date: Tue Jan 12 2016 - 06:23:51 EST

* Jiri Olsa <jolsa@xxxxxxxxxx> wrote:

> The trace command still appears in help message when you
> run simple 'perf' command.
> It's because the does not care about the
> HAVE_LIBAUDIT_SUPPORT dependency of trace command and puts
> it into generated common_cmds array.
> Wrapping trace command under HAVE_LIBAUDIT_SUPPORT dependency,
> which will exclude it from common_cmds array if HAVE_LIBAUDIT_SUPPORT
> is not set.

Btw., would it make sense to still list them, but denote them as '[NOT BUILT IN]':

The most commonly used perf commands are:
annotate Read (created by perf record) and display annotated code
archive Create archive with object files with build-ids found in file
bench General framework for benchmark suites
buildid-cache Manage build-id cache.
buildid-list List the buildids in a file
config Get and set variables in a configuration file.
data Data file related processing
diff Read files and display the differential profile
evlist List the event names in a file
inject Filter to augment the events stream with additional information
kmem Tool to trace/measure kernel memory properties
kvm Tool to trace/measure kvm guest os
list List all symbolic event types
lock Analyze lock events
mem Profile memory accesses
record Run a command and record its profile into
report Read (created by perf record) and display the profile
sched Tool to trace/measure scheduler properties (latencies)
script Read (created by perf record) and display trace output
stat Run a command and gather performance counter statistics
test Runs sanity tests.
timechart Tool to visualize total system behavior during a workload
top System profiling tool.
probe Define new dynamic tracepoints
trace [NOT BUILT IN] strace inspired tool


... and print something informative if someone tries to use it:

triton:~/tip> perf trace
Error: The 'trace' subcommand is not built into this version of perf.
Solution: You can enable it by rebuilding perf with all required libraries installed.

Instead of the rather misleading:

triton:~/tip> perf trace
perf: 'trace' is not a perf-command. See 'perf --help'.

(Plus once we grow a 'perf upgrade' command, we can suggest rebuilding via that