perf tools: Move perf subcommand framework to a library
Subsystems (5)
v3 cover perf tools: Move perf subcommand framework to a library
Ingo suggested that I factor out the perf subcommand functionality (originally copied from git) into tools/lib so that it can be used by stacktool[*] and possibly others.
All the subcommand option handling files have been moved into a new library named libsubcmd.a, including parse-options.c, run-command.c, exec_cmd.c, help.c, usage.c, and pager.c.
Patches 1-6 are some assorted cleanups I discovered in the process of making the patch set. They're completely separate from the rest of the patches and can be merged independently.
Patches 7-15 are some cleanups and splitting up of the code related to the creation of the new library.
Patch 16 does the actual moving of the files and creation of the new libsubcmd.a library in tools/lib/subcmd.
Patch 17 updates the header guards for the moved .h files.
Based on acme/perf/core.
These patches can also be found in the 'perf-subcmd-v3' branch in the following repo:
https://github.com/jpoimboe/linux
[*] https://lkml.kernel.org/r/[email protected]
v3:
- Remove dependencies on util.h, cache.h, abspath, ctype, strbuf, term, usage, wrapper
- Move to a new 'libsubcmd' library in tools/lib/subcmd
- Rebase onto Namhyung's patches which remove the browser dependency from parse-options.c
- Get rid of the util_cfg struct in favor of file-specific init functions
- Split up the patches better
- Document the fact that parse_options*() can exit
- Convert parse-options.c internal functions to static
- Rename exec_cmd.* to exec-cmd.*
- Add new astrcat() and astrcatf() functions to replace strbuf
- Add some more fixes related to 'make O=' and 'make clean' (though a 'make clean' is no longer required and these patches are now unrelated to libsubcmd)
v2:
- Fix 'make clean' to remove tests/llvm-src-*.c and other leftover files
- Fix description for second-to-last patch
Josh Poimboeuf (17):
perf build: Remove unnecessary line in Makefile.feature tools build: Fix feature Makefile dependencies for 'O=' perf test: Add Build file to dependencies for llvm-src-*.c perf test: remove tarpkg at end of test
perf build: Fix 'make clean'
perf build: Rename LIB_PATH -> API_PATH
perf: Create pager.h
perf: Remove check for unused PERF_PAGER_IN_USE
perf: Move help_unknown_cmd() to its own file
perf: Provide subcmd configuration at runtime
perf: Remove 'perf' from subcmd function and variable names
perf: Convert parse-options.c internal functions to static
perf: Document the fact that parse_options*() may exit
perf: Remove subcmd dependencies on strbuf
perf: Finalize subcmd independence
perf subcmd: Create subcmd library
tools subcmd: Rename subcmd header include guards
tools/build/Makefile.feature | 3 +-
tools/build/feature/Makefile | 95 +++++-----
tools/lib/subcmd/Build | 6 +
tools/lib/subcmd/Makefile | 48 +++++
tools/lib/subcmd/exec-cmd.c | 227 ++++++++++++++++++++++++
tools/lib/subcmd/exec-cmd.h | 16 ++
tools/{perf/util => lib/subcmd}/help.c | 170 ++++++------------
tools/{perf/util => lib/subcmd}/help.h | 13 +-
tools/{perf/util => lib/subcmd}/pager.c | 24 ++-
tools/lib/subcmd/pager.h | 9 +
tools/{perf/util => lib/subcmd}/parse-options.c | 134 ++++++++------
tools/{perf/util => lib/subcmd}/parse-options.h | 23 ++-
tools/{perf/util => lib/subcmd}/run-command.c | 24 ++-
tools/{perf/util => lib/subcmd}/run-command.h | 12 +-
tools/{perf/util => lib/subcmd}/sigchain.c | 3 +-
tools/{perf/util => lib/subcmd}/sigchain.h | 6 +-
tools/lib/subcmd/subcmd-util.h | 91 ++++++++++
tools/perf/Build | 5 +-
tools/perf/MANIFEST | 1 +
tools/perf/Makefile.perf | 35 ++--
tools/perf/arch/x86/util/intel-pt.c | 2 +-
tools/perf/bench/futex-hash.c | 2 +-
tools/perf/bench/futex-lock-pi.c | 2 +-
tools/perf/bench/futex-requeue.c | 2 +-
tools/perf/bench/futex-wake-parallel.c | 2 +-
tools/perf/bench/futex-wake.c | 2 +-
tools/perf/bench/mem-functions.c | 2 +-
tools/perf/bench/numa.c | 2 +-
tools/perf/bench/sched-messaging.c | 2 +-
tools/perf/bench/sched-pipe.c | 2 +-
tools/perf/builtin-annotate.c | 2 +-
tools/perf/builtin-bench.c | 2 +-
tools/perf/builtin-buildid-cache.c | 2 +-
tools/perf/builtin-buildid-list.c | 2 +-
tools/perf/builtin-config.c | 2 +-
tools/perf/builtin-data.c | 2 +-
tools/perf/builtin-evlist.c | 2 +-
tools/perf/builtin-help.c | 10 +-
tools/perf/builtin-inject.c | 2 +-
tools/perf/builtin-kmem.c | 2 +-
tools/perf/builtin-kvm.c | 2 +-
tools/perf/builtin-list.c | 2 +-
tools/perf/builtin-lock.c | 2 +-
tools/perf/builtin-mem.c | 2 +-
tools/perf/builtin-probe.c | 2 +-
tools/perf/builtin-record.c | 2 +-
tools/perf/builtin-report.c | 2 +-
tools/perf/builtin-sched.c | 2 +-
tools/perf/builtin-script.c | 12 +-
tools/perf/builtin-stat.c | 2 +-
tools/perf/builtin-timechart.c | 2 +-
tools/perf/builtin-top.c | 2 +-
tools/perf/builtin-trace.c | 4 +-
tools/perf/perf.c | 19 +-
tools/perf/tests/Build | 6 +-
tools/perf/tests/attr.c | 4 +-
tools/perf/tests/builtin-test.c | 2 +-
tools/perf/tests/make | 3 +-
tools/perf/util/Build | 8 +-
tools/perf/util/auxtrace.c | 2 +-
tools/perf/util/cache.h | 6 +-
tools/perf/util/cgroup.c | 2 +-
tools/perf/util/config.c | 2 +-
tools/perf/util/evlist.c | 2 +-
tools/perf/util/exec_cmd.c | 149 ----------------
tools/perf/util/exec_cmd.h | 13 --
tools/perf/util/help-unknown-cmd.c | 103 +++++++++++
tools/perf/util/help-unknown-cmd.h | 0
tools/perf/util/parse-branch-options.c | 2 +-
tools/perf/util/parse-events.c | 4 +-
tools/perf/util/parse-regs-options.c | 2 +-
tools/perf/util/sort.h | 2 +-
tools/perf/util/util.h | 14 --
73 files changed, 848 insertions(+), 528 deletions(-)
create mode 100644 tools/lib/subcmd/Build
create mode 100644 tools/lib/subcmd/Makefile
create mode 100644 tools/lib/subcmd/exec-cmd.c
create mode 100644 tools/lib/subcmd/exec-cmd.h
rename tools/{perf/util => lib/subcmd}/help.c (58%)
rename tools/{perf/util => lib/subcmd}/help.h (73%)
rename tools/{perf/util => lib/subcmd}/pager.c (84%)
create mode 100644 tools/lib/subcmd/pager.h
rename tools/{perf/util => lib/subcmd}/parse-options.c (87%)
rename tools/{perf/util => lib/subcmd}/parse-options.h (95%)
rename tools/{perf/util => lib/subcmd}/run-command.c (90%)
rename tools/{perf/util => lib/subcmd}/run-command.h (86%)
rename tools/{perf/util => lib/subcmd}/sigchain.c (95%)
rename tools/{perf/util => lib/subcmd}/sigchain.h (55%)
create mode 100644 tools/lib/subcmd/subcmd-util.h
delete mode 100644 tools/perf/util/exec_cmd.c
delete mode 100644 tools/perf/util/exec_cmd.h
create mode 100644 tools/perf/util/help-unknown-cmd.c
create mode 100644 tools/perf/util/help-unknown-cmd.hSignature · 1 line
2.4.3
PATCH v3 1/17 perf build: Remove unnecessary line in Makefile.feature
This line always silently fails because it doesn't add the 'test-' prefix to the .bin file.
And it seems to be unnecessary anyway: the line immediately after it does all the individual feature checks.
--- tools/build/Makefile.feature | 1 - 1 file changed, 1 deletion(-)
tools/build/Makefile.feature +0 -1
@@ -101,7 +101,6 @@ ifeq ($(feature-all), 1) # $(foreach feat,$(FEATURE_TESTS),$(call feature_set,$(feat))) else - $(shell $(MAKE) OUTPUT=$(OUTPUT_FEATURES) CFLAGS="$(EXTRA_CFLAGS)" LDFLAGS=$(LDFLAGS) -i -j -C $(feature_dir) $(addsuffix .bin,$(FEATURE_TESTS)) >/dev/null 2>&1) $(foreach feat,$(FEATURE_TESTS),$(call feature_check,$(feat))) endif
Signature · 1 line
2.4.3
Re: [PATCH v3 01/17] perf build: Remove unnecessary line in Makefile.feature
Quoted 16 lines · Josh Poimboeuf
This line always silently fails because it doesn't add the 'test-' prefix to the .bin file.
And it seems to be unnecessary anyway: the line immediately after it does all the individual feature checks.
Signed-off-by Josh Poimboeuf <[email protected]>--- tools/build/Makefile.feature | 1 - 1 file changed, 1 deletion(-)tools/build/Makefile.feature +0
-0
tools/build/Makefile.feature ifeq ($(feature-all), 1) · line 104
Quoted 5 lines
tools/build/Makefile.feature +0
-1@@ -101,7 +101,6 @@ ifeq ($(feature-all), 1) # $(foreach feat,$(FEATURE_TESTS),$(call feature_set,$(feat))) else - $(shell $(MAKE) OUTPUT=$(OUTPUT_FEATURES) CFLAGS="$(EXTRA_CFLAGS)" LDFLAGS=$(LDFLAGS) -i -j -C $(feature_dir) $(addsuffix .bin,$(FEATURE_TESTS)) >/dev/null 2>&1) $(foreach feat,$(FEATURE_TESTS),$(call feature_check,$(feat)))
ugh, nice ;-)
thanks,
jirka
Re: [PATCH v3 01/17] perf build: Remove unnecessary line in Makefile.feature
Em Mon, Dec 14, 2015 at 11:05:07AM +0100, Jiri Olsa escreveu:
Quoted 25 lines · Josh Poimboeuf
Quoted 16 lines
This line always silently fails because it doesn't add the 'test-' prefix to the .bin file.
And it seems to be unnecessary anyway: the line immediately after it does all the individual feature checks.
Signed-off-by Josh Poimboeuf <[email protected]>--- tools/build/Makefile.feature | 1 - 1 file changed, 1 deletion(-)tools/build/Makefile.feature +0
-0tools/build/Makefile.feature ifeq ($(feature-all), 1) · line 104
Quoted 5 lines
tools/build/Makefile.feature +0
-1@@ -101,7 +101,6 @@ ifeq ($(feature-all), 1) # $(foreach feat,$(FEATURE_TESTS),$(call feature_set,$(feat))) else - $(shell $(MAKE) OUTPUT=$(OUTPUT_FEATURES) CFLAGS="$(EXTRA_CFLAGS)" LDFLAGS=$(LDFLAGS) -i -j -C $(feature_dir) $(addsuffix .bin,$(FEATURE_TESTS)) >/dev/null 2>&1) $(foreach feat,$(FEATURE_TESTS),$(call feature_check,$(feat)))ugh, nice ;-)
Quoted 1 line
Acked-by Jiri Olsa <[email protected]>
Thanks, applied.
tip-bot for Josh Poimboeuf
merge bot[tip:perf/core] perf build: Remove unnecessary line in Makefile.feature
In reply to Josh Poimboeufperf build: Remove unnecessary line in Makefile.feature
Commit-ID: 26bc9b2df1f38536cdfd58df94bf8b5601eb894a Gitweb: http://git.kernel.org/tip/26bc9b2df1f38536cdfd58df94bf8b5601eb894a Author: Josh Poimboeuf <[email protected]> AuthorDate: Sun, 13 Dec 2015 22:18:01 -0600 Committer: Arnaldo Carvalho de Melo <[email protected]> CommitDate: Mon, 14 Dec 2015 12:16:15 -0300
perf build: Remove unnecessary line in Makefile.feature
This line always silently fails because it doesn't add the 'test-' prefix to the .bin file.
And it seems to be unnecessary anyway: the line immediately after it does all the individual feature checks.
--- tools/build/Makefile.feature | 1 - 1 file changed, 1 deletion(-)
tools/build/Makefile.feature +0 -1
@@ -101,7 +101,6 @@ ifeq ($(feature-all), 1) # $(foreach feat,$(FEATURE_TESTS),$(call feature_set,$(feat))) else - $(shell $(MAKE) OUTPUT=$(OUTPUT_FEATURES) CFLAGS="$(EXTRA_CFLAGS)" LDFLAGS=$(LDFLAGS) -i -j -C $(feature_dir) $(addsuffix .bin,$(FEATURE_TESTS)) >/dev/null 2>&1) $(foreach feat,$(FEATURE_TESTS),$(call feature_check,$(feat))) endif
PATCH v3 2/17 tools build: Fix feature Makefile dependencies for 'O='
In reply to Josh Poimboeuf--- tools/build/Makefile.feature | 2 +- tools/build/feature/Makefile | 95 ++++++++++++++++++++++---------------------- 2 files changed, 49 insertions(+), 48 deletions(-)
tools/build/Makefile.feature +1 -1
@@ -7,7 +7,7 @@ endif feature_check = $(eval $(feature_check_code)) define feature_check_code - feature-$(1) := $(shell $(MAKE) OUTPUT=$(OUTPUT_FEATURES) CFLAGS="$(EXTRA_CFLAGS) $(FEATURE_CHECK_CFLAGS-$(1))" LDFLAGS="$(LDFLAGS) $(FEATURE_CHECK_LDFLAGS-$(1))" -C $(feature_dir) test-$1.bin >/dev/null 2>/dev/null && echo 1 || echo 0) + feature-$(1) := $(shell $(MAKE) OUTPUT=$(OUTPUT_FEATURES) CFLAGS="$(EXTRA_CFLAGS) $(FEATURE_CHECK_CFLAGS-$(1))" LDFLAGS="$(LDFLAGS) $(FEATURE_CHECK_LDFLAGS-$(1))" -C $(feature_dir) $(OUTPUT_FEATURES)test-$1.bin >/dev/null 2>/dev/null && echo 1 || echo 0) endef feature_set = $(eval $(feature_set_code))
tools/build/feature/Makefile +48 -47
190 lines not on this page · raw message
Signature · 1 line
2.4.3
Re: [PATCH v3 02/17] tools build: Fix feature Makefile dependencies for 'O='
Quoted 29 lines · Josh Poimboeuf
Signed-off-by Josh Poimboeuf <[email protected]>--- tools/build/Makefile.feature | 2 +- tools/build/feature/Makefile | 95 ++++++++++++++++++++++---------------------- 2 files changed, 49 insertions(+), 48 deletions(-)tools/build/Makefile.feature +1
-1@@ -7,7 +7,7 @@ endif feature_check = $(eval $(feature_check_code)) define feature_check_code - feature-$(1) := $(shell $(MAKE) OUTPUT=$(OUTPUT_FEATURES) CFLAGS="$(EXTRA_CFLAGS) $(FEATURE_CHECK_CFLAGS-$(1))" LDFLAGS="$(LDFLAGS) $(FEATURE_CHECK_LDFLAGS-$(1))" -C $(feature_dir) test-$1.bin >/dev/null 2>/dev/null && echo 1 || echo 0) + feature-$(1) := $(shell $(MAKE) OUTPUT=$(OUTPUT_FEATURES) CFLAGS="$(EXTRA_CFLAGS) $(FEATURE_CHECK_CFLAGS-$(1))" LDFLAGS="$(LDFLAGS) $(FEATURE_CHECK_LDFLAGS-$(1))" -C $(feature_dir) $(OUTPUT_FEATURES)test-$1.bin >/dev/null 2>/dev/null && echo 1 || echo 0) endef feature_set = $(eval $(feature_set_code))tools/build/feature/Makefile +0
-1@@ -1,4 +1,3 @@ - FILES= \ test-all.bin \ test-backtrace.bin \
tools/build/feature/Makefile FILES= \ · line 40
Quoted 4 lines
tools/build/feature/Makefile +1
-0@@ -38,38 +37,40 @@ FILES= \ test-bpf.bin \ test-get_cpuid.bin +OUTPUT_FILES = $(addprefix $(OUTPUT),$(FILES))
seems there's no need to introduce new variable, you could use FILES:
FILES := $(addprefix $(OUTPUT),$(FILES))
jirka
Re: [PATCH v3 02/17] tools build: Fix feature Makefile dependencies for 'O='
Quoted 33 lines · Jiri Olsa
Quoted 32 lines · Josh Poimboeuf
Signed-off-by Josh Poimboeuf <[email protected]>--- tools/build/Makefile.feature | 2 +- tools/build/feature/Makefile | 95 ++++++++++++++++++++++---------------------- 2 files changed, 49 insertions(+), 48 deletions(-)tools/build/Makefile.feature +1
-1@@ -7,7 +7,7 @@ endif feature_check = $(eval $(feature_check_code)) define feature_check_code - feature-$(1) := $(shell $(MAKE) OUTPUT=$(OUTPUT_FEATURES) CFLAGS="$(EXTRA_CFLAGS) $(FEATURE_CHECK_CFLAGS-$(1))" LDFLAGS="$(LDFLAGS) $(FEATURE_CHECK_LDFLAGS-$(1))" -C $(feature_dir) test-$1.bin >/dev/null 2>/dev/null && echo 1 || echo 0) + feature-$(1) := $(shell $(MAKE) OUTPUT=$(OUTPUT_FEATURES) CFLAGS="$(EXTRA_CFLAGS) $(FEATURE_CHECK_CFLAGS-$(1))" LDFLAGS="$(LDFLAGS) $(FEATURE_CHECK_LDFLAGS-$(1))" -C $(feature_dir) $(OUTPUT_FEATURES)test-$1.bin >/dev/null 2>/dev/null && echo 1 || echo 0) endef feature_set = $(eval $(feature_set_code))tools/build/feature/Makefile +0
-1@@ -1,4 +1,3 @@ - FILES= \ test-all.bin \ test-backtrace.bin \@@ -38,38 +37,40 @@ FILES= \ test-bpf.bin \ test-get_cpuid.bin
Quoted 5 lines
tools/build/feature/Makefile FILES= \ · line 40
Quoted 1 line
tools/build/feature/Makefile +1
-0+OUTPUT_FILES = $(addprefix $(OUTPUT),$(FILES))seems there's no need to introduce new variable, you could use FILES:
FILES := $(addprefix $(OUTPUT),$(FILES))
Sure, will do that.
Signature · 1 line
Josh
PATCH v3 2/17 tools build: Fix feature Makefile dependencies for 'O='
--- tools/build/Makefile.feature | 2 +- tools/build/feature/Makefile | 93 ++++++++++++++++++++++---------------------- 2 files changed, 48 insertions(+), 47 deletions(-)
tools/build/Makefile.feature +1 -1
@@ -7,7 +7,7 @@ endif feature_check = $(eval $(feature_check_code)) define feature_check_code - feature-$(1) := $(shell $(MAKE) OUTPUT=$(OUTPUT_FEATURES) CFLAGS="$(EXTRA_CFLAGS) $(FEATURE_CHECK_CFLAGS-$(1))" LDFLAGS="$(LDFLAGS) $(FEATURE_CHECK_LDFLAGS-$(1))" -C $(feature_dir) test-$1.bin >/dev/null 2>/dev/null && echo 1 || echo 0) + feature-$(1) := $(shell $(MAKE) OUTPUT=$(OUTPUT_FEATURES) CFLAGS="$(EXTRA_CFLAGS) $(FEATURE_CHECK_CFLAGS-$(1))" LDFLAGS="$(LDFLAGS) $(FEATURE_CHECK_LDFLAGS-$(1))" -C $(feature_dir) $(OUTPUT_FEATURES)test-$1.bin >/dev/null 2>/dev/null && echo 1 || echo 0) endef feature_set = $(eval $(feature_set_code))
tools/build/feature/Makefile +47 -46
189 lines not on this page · raw message
Signature · 1 line
2.4.3
Arnaldo Carvalho de Melo
maintainerRe: [PATCH v3.1 02/17] tools build: Fix feature Makefile dependencies for 'O='
Em Mon, Dec 14, 2015 at 08:29:07AM -0600, Josh Poimboeuf escreveu:
Quoted 5 lines
Signed-off-by Josh Poimboeuf <[email protected]>--- tools/build/Makefile.feature | 2 +- tools/build/feature/Makefile | 93 ++++++++++++++++++++++---------------------- 2 files changed, 48 insertions(+), 47 deletions(-)
Jiri, Ok now?
- Arnaldo
Quoted 212 lines
tools/build/Makefile.feature +1
-1@@ -7,7 +7,7 @@ endif feature_check = $(eval $(feature_check_code)) define feature_check_code - feature-$(1) := $(shell $(MAKE) OUTPUT=$(OUTPUT_FEATURES) CFLAGS="$(EXTRA_CFLAGS) $(FEATURE_CHECK_CFLAGS-$(1))" LDFLAGS="$(LDFLAGS) $(FEATURE_CHECK_LDFLAGS-$(1))" -C $(feature_dir) test-$1.bin >/dev/null 2>/dev/null && echo 1 || echo 0) + feature-$(1) := $(shell $(MAKE) OUTPUT=$(OUTPUT_FEATURES) CFLAGS="$(EXTRA_CFLAGS) $(FEATURE_CHECK_CFLAGS-$(1))" LDFLAGS="$(LDFLAGS) $(FEATURE_CHECK_LDFLAGS-$(1))" -C $(feature_dir) $(OUTPUT_FEATURES)test-$1.bin >/dev/null 2>/dev/null && echo 1 || echo 0) endef feature_set = $(eval $(feature_set_code))tools/build/feature/Makefile +47
-46@@ -1,4 +1,3 @@ - FILES= \ test-all.bin \ test-backtrace.bin \@@ -38,38 +37,40 @@ FILES= \ test-bpf.bin \ test-get_cpuid.bin +FILES := $(addprefix $(OUTPUT),$(FILES)) + CC := $(CROSS_COMPILE)gcc -MD PKG_CONFIG := $(CROSS_COMPILE)pkg-config all: $(FILES) -__BUILD = $(CC) $(CFLAGS) -Wall -Werror -o $(OUTPUT)$@ $(patsubst %.bin,%.c,$@) $(LDFLAGS) - BUILD = $(__BUILD) > $(OUTPUT)$(@:.bin=.make.output) 2>&1 +__BUILD = $(CC) $(CFLAGS) -Wall -Werror -o $@ $(patsubst %.bin,%.c,$(@F)) $(LDFLAGS) + BUILD = $(__BUILD) > $(@:.bin=.make.output) 2>&1 ############################### -test-all.bin: +$(OUTPUT)test-all.bin: $(BUILD) -fstack-protector-all -O2 -D_FORTIFY_SOURCE=2 -ldw -lelf -lnuma -lelf -laudit -I/usr/include/slang -lslang $(shell $(PKG_CONFIG) --libs --cflags gtk+-2.0 2>/dev/null) $(FLAGS_PERL_EMBED) $(FLAGS_PYTHON_EMBED) -DPACKAGE='"perf"' -lbfd -ldl -lz -llzma -test-hello.bin: +$(OUTPUT)test-hello.bin: $(BUILD) -test-pthread-attr-setaffinity-np.bin: +$(OUTPUT)test-pthread-attr-setaffinity-np.bin: $(BUILD) -D_GNU_SOURCE -lpthread -test-stackprotector-all.bin: +$(OUTPUT)test-stackprotector-all.bin: $(BUILD) -fstack-protector-all -test-fortify-source.bin: +$(OUTPUT)test-fortify-source.bin: $(BUILD) -O2 -D_FORTIFY_SOURCE=2 -test-bionic.bin: +$(OUTPUT)test-bionic.bin: $(BUILD) -test-libelf.bin: +$(OUTPUT)test-libelf.bin: $(BUILD) -lelf -test-glibc.bin: +$(OUTPUT)test-glibc.bin: $(BUILD) DWARFLIBS := -ldw@@ -77,37 +78,37 @@ ifeq ($(findstring -static,${LDFLAGS}),-static) DWARFLIBS += -lelf -lebl -lz -llzma -lbz2 endif -test-dwarf.bin: +$(OUTPUT)test-dwarf.bin: $(BUILD) $(DWARFLIBS) -test-libelf-mmap.bin: +$(OUTPUT)test-libelf-mmap.bin: $(BUILD) -lelf -test-libelf-getphdrnum.bin: +$(OUTPUT)test-libelf-getphdrnum.bin: $(BUILD) -lelf -test-libnuma.bin: +$(OUTPUT)test-libnuma.bin: $(BUILD) -lnuma -test-numa_num_possible_cpus.bin: +$(OUTPUT)test-numa_num_possible_cpus.bin: $(BUILD) -lnuma -test-libunwind.bin: +$(OUTPUT)test-libunwind.bin: $(BUILD) -lelf -test-libunwind-debug-frame.bin: +$(OUTPUT)test-libunwind-debug-frame.bin: $(BUILD) -lelf -test-libaudit.bin: +$(OUTPUT)test-libaudit.bin: $(BUILD) -laudit -test-libslang.bin: +$(OUTPUT)test-libslang.bin: $(BUILD) -I/usr/include/slang -lslang -test-gtk2.bin: +$(OUTPUT)test-gtk2.bin: $(BUILD) $(shell $(PKG_CONFIG) --libs --cflags gtk+-2.0 2>/dev/null) -test-gtk2-infobar.bin: +$(OUTPUT)test-gtk2-infobar.bin: $(BUILD) $(shell $(PKG_CONFIG) --libs --cflags gtk+-2.0 2>/dev/null) grep-libs = $(filter -l%,$(1))@@ -119,63 +120,63 @@ PERL_EMBED_LIBADD = $(call grep-libs,$(PERL_EMBED_LDOPTS)) PERL_EMBED_CCOPTS = `perl -MExtUtils::Embed -e ccopts 2>/dev/null` FLAGS_PERL_EMBED=$(PERL_EMBED_CCOPTS) $(PERL_EMBED_LDOPTS) -test-libperl.bin: +$(OUTPUT)test-libperl.bin: $(BUILD) $(FLAGS_PERL_EMBED) -test-libpython.bin: +$(OUTPUT)test-libpython.bin: $(BUILD) -test-libpython-version.bin: +$(OUTPUT)test-libpython-version.bin: $(BUILD) -test-libbfd.bin: +$(OUTPUT)test-libbfd.bin: $(BUILD) -DPACKAGE='"perf"' -lbfd -lz -liberty -ldl -test-liberty.bin: - $(CC) $(CFLAGS) -Wall -Werror -o $(OUTPUT)$@ test-libbfd.c -DPACKAGE='"perf"' $(LDFLAGS) -lbfd -ldl -liberty +$(OUTPUT)test-liberty.bin: + $(CC) $(CFLAGS) -Wall -Werror -o $@ test-libbfd.c -DPACKAGE='"perf"' $(LDFLAGS) -lbfd -ldl -liberty -test-liberty-z.bin: - $(CC) $(CFLAGS) -Wall -Werror -o $(OUTPUT)$@ test-libbfd.c -DPACKAGE='"perf"' $(LDFLAGS) -lbfd -ldl -liberty -lz +$(OUTPUT)test-liberty-z.bin: + $(CC) $(CFLAGS) -Wall -Werror -o $@ test-libbfd.c -DPACKAGE='"perf"' $(LDFLAGS) -lbfd -ldl -liberty -lz -test-cplus-demangle.bin: +$(OUTPUT)test-cplus-demangle.bin: $(BUILD) -liberty -test-backtrace.bin: +$(OUTPUT)test-backtrace.bin: $(BUILD) -test-timerfd.bin: +$(OUTPUT)test-timerfd.bin: $(BUILD) -test-libdw-dwarf-unwind.bin: +$(OUTPUT)test-libdw-dwarf-unwind.bin: $(BUILD) # -ldw provided by $(FEATURE_CHECK_LDFLAGS-libdw-dwarf-unwind) -test-libbabeltrace.bin: +$(OUTPUT)test-libbabeltrace.bin: $(BUILD) # -lbabeltrace provided by $(FEATURE_CHECK_LDFLAGS-libbabeltrace) -test-sync-compare-and-swap.bin: +$(OUTPUT)test-sync-compare-and-swap.bin: $(BUILD) -test-compile-32.bin: - $(CC) -m32 -o $(OUTPUT)$@ test-compile.c +$(OUTPUT)test-compile-32.bin: + $(CC) -m32 -o $@ test-compile.c -test-compile-x32.bin: - $(CC) -mx32 -o $(OUTPUT)$@ test-compile.c +$(OUTPUT)test-compile-x32.bin: + $(CC) -mx32 -o $@ test-compile.c -test-zlib.bin: +$(OUTPUT)test-zlib.bin: $(BUILD) -lz -test-lzma.bin: +$(OUTPUT)test-lzma.bin: $(BUILD) -llzma -test-get_cpuid.bin: +$(OUTPUT)test-get_cpuid.bin: $(BUILD) -test-bpf.bin: +$(OUTPUT)test-bpf.bin: $(BUILD) --include *.d +-include $(OUTPUT)*.d ############################### clean: - rm -f $(FILES) *.d $(FILES:.bin=.make.output) + rm -f $(FILES) $(OUTPUT)*.d $(FILES:.bin=.make.output)Signature · 1 line
2.4.3
Re: [PATCH v3.1 02/17] tools build: Fix feature Makefile dependencies for 'O='
In reply to Josh PoimboeufQuoted 1 line · Josh Poimboeuf
Signed-off-by Josh Poimboeuf <[email protected]>
you might want to work on your changelogs
a little.. aaand actually include some ;-)
did you update your branch with this change?
jirka
Quoted 218 lines
--- tools/build/Makefile.feature | 2 +- tools/build/feature/Makefile | 93 ++++++++++++++++++++++---------------------- 2 files changed, 48 insertions(+), 47 deletions(-)tools/build/Makefile.feature +1
-1@@ -7,7 +7,7 @@ endif feature_check = $(eval $(feature_check_code)) define feature_check_code - feature-$(1) := $(shell $(MAKE) OUTPUT=$(OUTPUT_FEATURES) CFLAGS="$(EXTRA_CFLAGS) $(FEATURE_CHECK_CFLAGS-$(1))" LDFLAGS="$(LDFLAGS) $(FEATURE_CHECK_LDFLAGS-$(1))" -C $(feature_dir) test-$1.bin >/dev/null 2>/dev/null && echo 1 || echo 0) + feature-$(1) := $(shell $(MAKE) OUTPUT=$(OUTPUT_FEATURES) CFLAGS="$(EXTRA_CFLAGS) $(FEATURE_CHECK_CFLAGS-$(1))" LDFLAGS="$(LDFLAGS) $(FEATURE_CHECK_LDFLAGS-$(1))" -C $(feature_dir) $(OUTPUT_FEATURES)test-$1.bin >/dev/null 2>/dev/null && echo 1 || echo 0) endef feature_set = $(eval $(feature_set_code))tools/build/feature/Makefile +47
-46@@ -1,4 +1,3 @@ - FILES= \ test-all.bin \ test-backtrace.bin \@@ -38,38 +37,40 @@ FILES= \ test-bpf.bin \ test-get_cpuid.bin +FILES := $(addprefix $(OUTPUT),$(FILES)) + CC := $(CROSS_COMPILE)gcc -MD PKG_CONFIG := $(CROSS_COMPILE)pkg-config all: $(FILES) -__BUILD = $(CC) $(CFLAGS) -Wall -Werror -o $(OUTPUT)$@ $(patsubst %.bin,%.c,$@) $(LDFLAGS) - BUILD = $(__BUILD) > $(OUTPUT)$(@:.bin=.make.output) 2>&1 +__BUILD = $(CC) $(CFLAGS) -Wall -Werror -o $@ $(patsubst %.bin,%.c,$(@F)) $(LDFLAGS) + BUILD = $(__BUILD) > $(@:.bin=.make.output) 2>&1 ############################### -test-all.bin: +$(OUTPUT)test-all.bin: $(BUILD) -fstack-protector-all -O2 -D_FORTIFY_SOURCE=2 -ldw -lelf -lnuma -lelf -laudit -I/usr/include/slang -lslang $(shell $(PKG_CONFIG) --libs --cflags gtk+-2.0 2>/dev/null) $(FLAGS_PERL_EMBED) $(FLAGS_PYTHON_EMBED) -DPACKAGE='"perf"' -lbfd -ldl -lz -llzma -test-hello.bin: +$(OUTPUT)test-hello.bin: $(BUILD) -test-pthread-attr-setaffinity-np.bin: +$(OUTPUT)test-pthread-attr-setaffinity-np.bin: $(BUILD) -D_GNU_SOURCE -lpthread -test-stackprotector-all.bin: +$(OUTPUT)test-stackprotector-all.bin: $(BUILD) -fstack-protector-all -test-fortify-source.bin: +$(OUTPUT)test-fortify-source.bin: $(BUILD) -O2 -D_FORTIFY_SOURCE=2 -test-bionic.bin: +$(OUTPUT)test-bionic.bin: $(BUILD) -test-libelf.bin: +$(OUTPUT)test-libelf.bin: $(BUILD) -lelf -test-glibc.bin: +$(OUTPUT)test-glibc.bin: $(BUILD) DWARFLIBS := -ldw@@ -77,37 +78,37 @@ ifeq ($(findstring -static,${LDFLAGS}),-static) DWARFLIBS += -lelf -lebl -lz -llzma -lbz2 endif -test-dwarf.bin: +$(OUTPUT)test-dwarf.bin: $(BUILD) $(DWARFLIBS) -test-libelf-mmap.bin: +$(OUTPUT)test-libelf-mmap.bin: $(BUILD) -lelf -test-libelf-getphdrnum.bin: +$(OUTPUT)test-libelf-getphdrnum.bin: $(BUILD) -lelf -test-libnuma.bin: +$(OUTPUT)test-libnuma.bin: $(BUILD) -lnuma -test-numa_num_possible_cpus.bin: +$(OUTPUT)test-numa_num_possible_cpus.bin: $(BUILD) -lnuma -test-libunwind.bin: +$(OUTPUT)test-libunwind.bin: $(BUILD) -lelf -test-libunwind-debug-frame.bin: +$(OUTPUT)test-libunwind-debug-frame.bin: $(BUILD) -lelf -test-libaudit.bin: +$(OUTPUT)test-libaudit.bin: $(BUILD) -laudit -test-libslang.bin: +$(OUTPUT)test-libslang.bin: $(BUILD) -I/usr/include/slang -lslang -test-gtk2.bin: +$(OUTPUT)test-gtk2.bin: $(BUILD) $(shell $(PKG_CONFIG) --libs --cflags gtk+-2.0 2>/dev/null) -test-gtk2-infobar.bin: +$(OUTPUT)test-gtk2-infobar.bin: $(BUILD) $(shell $(PKG_CONFIG) --libs --cflags gtk+-2.0 2>/dev/null) grep-libs = $(filter -l%,$(1))@@ -119,63 +120,63 @@ PERL_EMBED_LIBADD = $(call grep-libs,$(PERL_EMBED_LDOPTS)) PERL_EMBED_CCOPTS = `perl -MExtUtils::Embed -e ccopts 2>/dev/null` FLAGS_PERL_EMBED=$(PERL_EMBED_CCOPTS) $(PERL_EMBED_LDOPTS) -test-libperl.bin: +$(OUTPUT)test-libperl.bin: $(BUILD) $(FLAGS_PERL_EMBED) -test-libpython.bin: +$(OUTPUT)test-libpython.bin: $(BUILD) -test-libpython-version.bin: +$(OUTPUT)test-libpython-version.bin: $(BUILD) -test-libbfd.bin: +$(OUTPUT)test-libbfd.bin: $(BUILD) -DPACKAGE='"perf"' -lbfd -lz -liberty -ldl -test-liberty.bin: - $(CC) $(CFLAGS) -Wall -Werror -o $(OUTPUT)$@ test-libbfd.c -DPACKAGE='"perf"' $(LDFLAGS) -lbfd -ldl -liberty +$(OUTPUT)test-liberty.bin: + $(CC) $(CFLAGS) -Wall -Werror -o $@ test-libbfd.c -DPACKAGE='"perf"' $(LDFLAGS) -lbfd -ldl -liberty -test-liberty-z.bin: - $(CC) $(CFLAGS) -Wall -Werror -o $(OUTPUT)$@ test-libbfd.c -DPACKAGE='"perf"' $(LDFLAGS) -lbfd -ldl -liberty -lz +$(OUTPUT)test-liberty-z.bin: + $(CC) $(CFLAGS) -Wall -Werror -o $@ test-libbfd.c -DPACKAGE='"perf"' $(LDFLAGS) -lbfd -ldl -liberty -lz -test-cplus-demangle.bin: +$(OUTPUT)test-cplus-demangle.bin: $(BUILD) -liberty -test-backtrace.bin: +$(OUTPUT)test-backtrace.bin: $(BUILD) -test-timerfd.bin: +$(OUTPUT)test-timerfd.bin: $(BUILD) -test-libdw-dwarf-unwind.bin: +$(OUTPUT)test-libdw-dwarf-unwind.bin: $(BUILD) # -ldw provided by $(FEATURE_CHECK_LDFLAGS-libdw-dwarf-unwind) -test-libbabeltrace.bin: +$(OUTPUT)test-libbabeltrace.bin: $(BUILD) # -lbabeltrace provided by $(FEATURE_CHECK_LDFLAGS-libbabeltrace) -test-sync-compare-and-swap.bin: +$(OUTPUT)test-sync-compare-and-swap.bin: $(BUILD) -test-compile-32.bin: - $(CC) -m32 -o $(OUTPUT)$@ test-compile.c +$(OUTPUT)test-compile-32.bin: + $(CC) -m32 -o $@ test-compile.c -test-compile-x32.bin: - $(CC) -mx32 -o $(OUTPUT)$@ test-compile.c +$(OUTPUT)test-compile-x32.bin: + $(CC) -mx32 -o $@ test-compile.c -test-zlib.bin: +$(OUTPUT)test-zlib.bin: $(BUILD) -lz -test-lzma.bin: +$(OUTPUT)test-lzma.bin: $(BUILD) -llzma -test-get_cpuid.bin: +$(OUTPUT)test-get_cpuid.bin: $(BUILD) -test-bpf.bin: +$(OUTPUT)test-bpf.bin: $(BUILD) --include *.d +-include $(OUTPUT)*.d ############################### clean: - rm -f $(FILES) *.d $(FILES:.bin=.make.output) + rm -f $(FILES) $(OUTPUT)*.d $(FILES:.bin=.make.output)Signature · 1 line
2.4.3
Re: [PATCH v3.1 02/17] tools build: Fix feature Makefile dependencies for 'O='
Quoted 5 lines · Jiri Olsa
Quoted 1 line · Josh Poimboeuf
Signed-off-by Josh Poimboeuf <[email protected]>you might want to work on your changelogs
a little.. aaand actually include some ;-)
Well, I thought the subject said it all :-)
Quoted 1 line
did you update your branch with this change?
Sure, see branch 'perf-subcmd-v3.1':
https://github.com/jpoimboe/linux
Quoted 221 lines
jirka
Quoted 218 lines
--- tools/build/Makefile.feature | 2 +- tools/build/feature/Makefile | 93 ++++++++++++++++++++++---------------------- 2 files changed, 48 insertions(+), 47 deletions(-)tools/build/Makefile.feature +1
-1@@ -7,7 +7,7 @@ endif feature_check = $(eval $(feature_check_code)) define feature_check_code - feature-$(1) := $(shell $(MAKE) OUTPUT=$(OUTPUT_FEATURES) CFLAGS="$(EXTRA_CFLAGS) $(FEATURE_CHECK_CFLAGS-$(1))" LDFLAGS="$(LDFLAGS) $(FEATURE_CHECK_LDFLAGS-$(1))" -C $(feature_dir) test-$1.bin >/dev/null 2>/dev/null && echo 1 || echo 0) + feature-$(1) := $(shell $(MAKE) OUTPUT=$(OUTPUT_FEATURES) CFLAGS="$(EXTRA_CFLAGS) $(FEATURE_CHECK_CFLAGS-$(1))" LDFLAGS="$(LDFLAGS) $(FEATURE_CHECK_LDFLAGS-$(1))" -C $(feature_dir) $(OUTPUT_FEATURES)test-$1.bin >/dev/null 2>/dev/null && echo 1 || echo 0) endef feature_set = $(eval $(feature_set_code))tools/build/feature/Makefile +47
-46@@ -1,4 +1,3 @@ - FILES= \ test-all.bin \ test-backtrace.bin \@@ -38,38 +37,40 @@ FILES= \ test-bpf.bin \ test-get_cpuid.bin +FILES := $(addprefix $(OUTPUT),$(FILES)) + CC := $(CROSS_COMPILE)gcc -MD PKG_CONFIG := $(CROSS_COMPILE)pkg-config all: $(FILES) -__BUILD = $(CC) $(CFLAGS) -Wall -Werror -o $(OUTPUT)$@ $(patsubst %.bin,%.c,$@) $(LDFLAGS) - BUILD = $(__BUILD) > $(OUTPUT)$(@:.bin=.make.output) 2>&1 +__BUILD = $(CC) $(CFLAGS) -Wall -Werror -o $@ $(patsubst %.bin,%.c,$(@F)) $(LDFLAGS) + BUILD = $(__BUILD) > $(@:.bin=.make.output) 2>&1 ############################### -test-all.bin: +$(OUTPUT)test-all.bin: $(BUILD) -fstack-protector-all -O2 -D_FORTIFY_SOURCE=2 -ldw -lelf -lnuma -lelf -laudit -I/usr/include/slang -lslang $(shell $(PKG_CONFIG) --libs --cflags gtk+-2.0 2>/dev/null) $(FLAGS_PERL_EMBED) $(FLAGS_PYTHON_EMBED) -DPACKAGE='"perf"' -lbfd -ldl -lz -llzma -test-hello.bin: +$(OUTPUT)test-hello.bin: $(BUILD) -test-pthread-attr-setaffinity-np.bin: +$(OUTPUT)test-pthread-attr-setaffinity-np.bin: $(BUILD) -D_GNU_SOURCE -lpthread -test-stackprotector-all.bin: +$(OUTPUT)test-stackprotector-all.bin: $(BUILD) -fstack-protector-all -test-fortify-source.bin: +$(OUTPUT)test-fortify-source.bin: $(BUILD) -O2 -D_FORTIFY_SOURCE=2 -test-bionic.bin: +$(OUTPUT)test-bionic.bin: $(BUILD) -test-libelf.bin: +$(OUTPUT)test-libelf.bin: $(BUILD) -lelf -test-glibc.bin: +$(OUTPUT)test-glibc.bin: $(BUILD) DWARFLIBS := -ldw@@ -77,37 +78,37 @@ ifeq ($(findstring -static,${LDFLAGS}),-static) DWARFLIBS += -lelf -lebl -lz -llzma -lbz2 endif -test-dwarf.bin: +$(OUTPUT)test-dwarf.bin: $(BUILD) $(DWARFLIBS) -test-libelf-mmap.bin: +$(OUTPUT)test-libelf-mmap.bin: $(BUILD) -lelf -test-libelf-getphdrnum.bin: +$(OUTPUT)test-libelf-getphdrnum.bin: $(BUILD) -lelf -test-libnuma.bin: +$(OUTPUT)test-libnuma.bin: $(BUILD) -lnuma -test-numa_num_possible_cpus.bin: +$(OUTPUT)test-numa_num_possible_cpus.bin: $(BUILD) -lnuma -test-libunwind.bin: +$(OUTPUT)test-libunwind.bin: $(BUILD) -lelf -test-libunwind-debug-frame.bin: +$(OUTPUT)test-libunwind-debug-frame.bin: $(BUILD) -lelf -test-libaudit.bin: +$(OUTPUT)test-libaudit.bin: $(BUILD) -laudit -test-libslang.bin: +$(OUTPUT)test-libslang.bin: $(BUILD) -I/usr/include/slang -lslang -test-gtk2.bin: +$(OUTPUT)test-gtk2.bin: $(BUILD) $(shell $(PKG_CONFIG) --libs --cflags gtk+-2.0 2>/dev/null) -test-gtk2-infobar.bin: +$(OUTPUT)test-gtk2-infobar.bin: $(BUILD) $(shell $(PKG_CONFIG) --libs --cflags gtk+-2.0 2>/dev/null) grep-libs = $(filter -l%,$(1))@@ -119,63 +120,63 @@ PERL_EMBED_LIBADD = $(call grep-libs,$(PERL_EMBED_LDOPTS)) PERL_EMBED_CCOPTS = `perl -MExtUtils::Embed -e ccopts 2>/dev/null` FLAGS_PERL_EMBED=$(PERL_EMBED_CCOPTS) $(PERL_EMBED_LDOPTS) -test-libperl.bin: +$(OUTPUT)test-libperl.bin: $(BUILD) $(FLAGS_PERL_EMBED) -test-libpython.bin: +$(OUTPUT)test-libpython.bin: $(BUILD) -test-libpython-version.bin: +$(OUTPUT)test-libpython-version.bin: $(BUILD) -test-libbfd.bin: +$(OUTPUT)test-libbfd.bin: $(BUILD) -DPACKAGE='"perf"' -lbfd -lz -liberty -ldl -test-liberty.bin: - $(CC) $(CFLAGS) -Wall -Werror -o $(OUTPUT)$@ test-libbfd.c -DPACKAGE='"perf"' $(LDFLAGS) -lbfd -ldl -liberty +$(OUTPUT)test-liberty.bin: + $(CC) $(CFLAGS) -Wall -Werror -o $@ test-libbfd.c -DPACKAGE='"perf"' $(LDFLAGS) -lbfd -ldl -liberty -test-liberty-z.bin: - $(CC) $(CFLAGS) -Wall -Werror -o $(OUTPUT)$@ test-libbfd.c -DPACKAGE='"perf"' $(LDFLAGS) -lbfd -ldl -liberty -lz +$(OUTPUT)test-liberty-z.bin: + $(CC) $(CFLAGS) -Wall -Werror -o $@ test-libbfd.c -DPACKAGE='"perf"' $(LDFLAGS) -lbfd -ldl -liberty -lz -test-cplus-demangle.bin: +$(OUTPUT)test-cplus-demangle.bin: $(BUILD) -liberty -test-backtrace.bin: +$(OUTPUT)test-backtrace.bin: $(BUILD) -test-timerfd.bin: +$(OUTPUT)test-timerfd.bin: $(BUILD) -test-libdw-dwarf-unwind.bin: +$(OUTPUT)test-libdw-dwarf-unwind.bin: $(BUILD) # -ldw provided by $(FEATURE_CHECK_LDFLAGS-libdw-dwarf-unwind) -test-libbabeltrace.bin: +$(OUTPUT)test-libbabeltrace.bin: $(BUILD) # -lbabeltrace provided by $(FEATURE_CHECK_LDFLAGS-libbabeltrace) -test-sync-compare-and-swap.bin: +$(OUTPUT)test-sync-compare-and-swap.bin: $(BUILD) -test-compile-32.bin: - $(CC) -m32 -o $(OUTPUT)$@ test-compile.c +$(OUTPUT)test-compile-32.bin: + $(CC) -m32 -o $@ test-compile.c -test-compile-x32.bin: - $(CC) -mx32 -o $(OUTPUT)$@ test-compile.c +$(OUTPUT)test-compile-x32.bin: + $(CC) -mx32 -o $@ test-compile.c -test-zlib.bin: +$(OUTPUT)test-zlib.bin: $(BUILD) -lz -test-lzma.bin: +$(OUTPUT)test-lzma.bin: $(BUILD) -llzma -test-get_cpuid.bin: +$(OUTPUT)test-get_cpuid.bin: $(BUILD) -test-bpf.bin: +$(OUTPUT)test-bpf.bin: $(BUILD) --include *.d +-include $(OUTPUT)*.d ############################### clean: - rm -f $(FILES) *.d $(FILES:.bin=.make.output) + rm -f $(FILES) $(OUTPUT)*.d $(FILES:.bin=.make.output)Signature · 1 line
2.4.3
Signature · 1 line
Josh
Jiri Olsa
Acked-byRe: [PATCH v3.1 02/17] tools build: Fix feature Makefile dependencies for 'O='
Quoted 8 lines · Josh Poimboeuf
Quoted 5 lines · Jiri Olsa
Quoted 1 line · Josh Poimboeuf
Signed-off-by Josh Poimboeuf <[email protected]>you might want to work on your changelogs
a little.. aaand actually include some ;-)Well, I thought the subject said it all :-)
well, you could be more specific, like:
- how was it broken before
- what did you do to fix it
- how you added a test case to ensure this will never happen again ;-)
it makes the life of reviewer a bit easier, anyway:
thanks,
jirka
Quoted 233 lines
Quoted 2 lines
did you update your branch with this change?
Sure, see branch 'perf-subcmd-v3.1':
https://github.com/jpoimboe/linux
Quoted 223 lines
jirka
Quoted 220 lines
--- tools/build/Makefile.feature | 2 +- tools/build/feature/Makefile | 93 ++++++++++++++++++++++---------------------- 2 files changed, 48 insertions(+), 47 deletions(-)tools/build/Makefile.feature +1
-1@@ -7,7 +7,7 @@ endif feature_check = $(eval $(feature_check_code)) define feature_check_code - feature-$(1) := $(shell $(MAKE) OUTPUT=$(OUTPUT_FEATURES) CFLAGS="$(EXTRA_CFLAGS) $(FEATURE_CHECK_CFLAGS-$(1))" LDFLAGS="$(LDFLAGS) $(FEATURE_CHECK_LDFLAGS-$(1))" -C $(feature_dir) test-$1.bin >/dev/null 2>/dev/null && echo 1 || echo 0) + feature-$(1) := $(shell $(MAKE) OUTPUT=$(OUTPUT_FEATURES) CFLAGS="$(EXTRA_CFLAGS) $(FEATURE_CHECK_CFLAGS-$(1))" LDFLAGS="$(LDFLAGS) $(FEATURE_CHECK_LDFLAGS-$(1))" -C $(feature_dir) $(OUTPUT_FEATURES)test-$1.bin >/dev/null 2>/dev/null && echo 1 || echo 0) endef feature_set = $(eval $(feature_set_code))tools/build/feature/Makefile +47
-46@@ -1,4 +1,3 @@ - FILES= \ test-all.bin \ test-backtrace.bin \@@ -38,38 +37,40 @@ FILES= \ test-bpf.bin \ test-get_cpuid.bin +FILES := $(addprefix $(OUTPUT),$(FILES)) + CC := $(CROSS_COMPILE)gcc -MD PKG_CONFIG := $(CROSS_COMPILE)pkg-config all: $(FILES) -__BUILD = $(CC) $(CFLAGS) -Wall -Werror -o $(OUTPUT)$@ $(patsubst %.bin,%.c,$@) $(LDFLAGS) - BUILD = $(__BUILD) > $(OUTPUT)$(@:.bin=.make.output) 2>&1 +__BUILD = $(CC) $(CFLAGS) -Wall -Werror -o $@ $(patsubst %.bin,%.c,$(@F)) $(LDFLAGS) + BUILD = $(__BUILD) > $(@:.bin=.make.output) 2>&1 ############################### -test-all.bin: +$(OUTPUT)test-all.bin: $(BUILD) -fstack-protector-all -O2 -D_FORTIFY_SOURCE=2 -ldw -lelf -lnuma -lelf -laudit -I/usr/include/slang -lslang $(shell $(PKG_CONFIG) --libs --cflags gtk+-2.0 2>/dev/null) $(FLAGS_PERL_EMBED) $(FLAGS_PYTHON_EMBED) -DPACKAGE='"perf"' -lbfd -ldl -lz -llzma -test-hello.bin: +$(OUTPUT)test-hello.bin: $(BUILD) -test-pthread-attr-setaffinity-np.bin: +$(OUTPUT)test-pthread-attr-setaffinity-np.bin: $(BUILD) -D_GNU_SOURCE -lpthread -test-stackprotector-all.bin: +$(OUTPUT)test-stackprotector-all.bin: $(BUILD) -fstack-protector-all -test-fortify-source.bin: +$(OUTPUT)test-fortify-source.bin: $(BUILD) -O2 -D_FORTIFY_SOURCE=2 -test-bionic.bin: +$(OUTPUT)test-bionic.bin: $(BUILD) -test-libelf.bin: +$(OUTPUT)test-libelf.bin: $(BUILD) -lelf -test-glibc.bin: +$(OUTPUT)test-glibc.bin: $(BUILD) DWARFLIBS := -ldw@@ -77,37 +78,37 @@ ifeq ($(findstring -static,${LDFLAGS}),-static) DWARFLIBS += -lelf -lebl -lz -llzma -lbz2 endif -test-dwarf.bin: +$(OUTPUT)test-dwarf.bin: $(BUILD) $(DWARFLIBS) -test-libelf-mmap.bin: +$(OUTPUT)test-libelf-mmap.bin: $(BUILD) -lelf -test-libelf-getphdrnum.bin: +$(OUTPUT)test-libelf-getphdrnum.bin: $(BUILD) -lelf -test-libnuma.bin: +$(OUTPUT)test-libnuma.bin: $(BUILD) -lnuma -test-numa_num_possible_cpus.bin: +$(OUTPUT)test-numa_num_possible_cpus.bin: $(BUILD) -lnuma -test-libunwind.bin: +$(OUTPUT)test-libunwind.bin: $(BUILD) -lelf -test-libunwind-debug-frame.bin: +$(OUTPUT)test-libunwind-debug-frame.bin: $(BUILD) -lelf -test-libaudit.bin: +$(OUTPUT)test-libaudit.bin: $(BUILD) -laudit -test-libslang.bin: +$(OUTPUT)test-libslang.bin: $(BUILD) -I/usr/include/slang -lslang -test-gtk2.bin: +$(OUTPUT)test-gtk2.bin: $(BUILD) $(shell $(PKG_CONFIG) --libs --cflags gtk+-2.0 2>/dev/null) -test-gtk2-infobar.bin: +$(OUTPUT)test-gtk2-infobar.bin: $(BUILD) $(shell $(PKG_CONFIG) --libs --cflags gtk+-2.0 2>/dev/null) grep-libs = $(filter -l%,$(1))@@ -119,63 +120,63 @@ PERL_EMBED_LIBADD = $(call grep-libs,$(PERL_EMBED_LDOPTS)) PERL_EMBED_CCOPTS = `perl -MExtUtils::Embed -e ccopts 2>/dev/null` FLAGS_PERL_EMBED=$(PERL_EMBED_CCOPTS) $(PERL_EMBED_LDOPTS) -test-libperl.bin: +$(OUTPUT)test-libperl.bin: $(BUILD) $(FLAGS_PERL_EMBED) -test-libpython.bin: +$(OUTPUT)test-libpython.bin: $(BUILD) -test-libpython-version.bin: +$(OUTPUT)test-libpython-version.bin: $(BUILD) -test-libbfd.bin: +$(OUTPUT)test-libbfd.bin: $(BUILD) -DPACKAGE='"perf"' -lbfd -lz -liberty -ldl -test-liberty.bin: - $(CC) $(CFLAGS) -Wall -Werror -o $(OUTPUT)$@ test-libbfd.c -DPACKAGE='"perf"' $(LDFLAGS) -lbfd -ldl -liberty +$(OUTPUT)test-liberty.bin: + $(CC) $(CFLAGS) -Wall -Werror -o $@ test-libbfd.c -DPACKAGE='"perf"' $(LDFLAGS) -lbfd -ldl -liberty -test-liberty-z.bin: - $(CC) $(CFLAGS) -Wall -Werror -o $(OUTPUT)$@ test-libbfd.c -DPACKAGE='"perf"' $(LDFLAGS) -lbfd -ldl -liberty -lz +$(OUTPUT)test-liberty-z.bin: + $(CC) $(CFLAGS) -Wall -Werror -o $@ test-libbfd.c -DPACKAGE='"perf"' $(LDFLAGS) -lbfd -ldl -liberty -lz -test-cplus-demangle.bin: +$(OUTPUT)test-cplus-demangle.bin: $(BUILD) -liberty -test-backtrace.bin: +$(OUTPUT)test-backtrace.bin: $(BUILD) -test-timerfd.bin: +$(OUTPUT)test-timerfd.bin: $(BUILD) -test-libdw-dwarf-unwind.bin: +$(OUTPUT)test-libdw-dwarf-unwind.bin: $(BUILD) # -ldw provided by $(FEATURE_CHECK_LDFLAGS-libdw-dwarf-unwind) -test-libbabeltrace.bin: +$(OUTPUT)test-libbabeltrace.bin: $(BUILD) # -lbabeltrace provided by $(FEATURE_CHECK_LDFLAGS-libbabeltrace) -test-sync-compare-and-swap.bin: +$(OUTPUT)test-sync-compare-and-swap.bin: $(BUILD) -test-compile-32.bin: - $(CC) -m32 -o $(OUTPUT)$@ test-compile.c +$(OUTPUT)test-compile-32.bin: + $(CC) -m32 -o $@ test-compile.c -test-compile-x32.bin: - $(CC) -mx32 -o $(OUTPUT)$@ test-compile.c +$(OUTPUT)test-compile-x32.bin: + $(CC) -mx32 -o $@ test-compile.c -test-zlib.bin: +$(OUTPUT)test-zlib.bin: $(BUILD) -lz -test-lzma.bin: +$(OUTPUT)test-lzma.bin: $(BUILD) -llzma -test-get_cpuid.bin: +$(OUTPUT)test-get_cpuid.bin: $(BUILD) -test-bpf.bin: +$(OUTPUT)test-bpf.bin: $(BUILD) --include *.d +-include $(OUTPUT)*.d ############################### clean: - rm -f $(FILES) *.d $(FILES:.bin=.make.output) + rm -f $(FILES) $(OUTPUT)*.d $(FILES:.bin=.make.output)Signature · 1 line
2.4.3Signature · 1 line
Josh
Re: [PATCH v3.1 02/17] tools build: Fix feature Makefile dependencies for 'O='
Quoted 10 lines · Jiri Olsa
Quoted 8 lines · Josh Poimboeuf
Quoted 5 lines · Jiri Olsa
Quoted 1 line · Josh Poimboeuf
Signed-off-by Josh Poimboeuf <[email protected]>you might want to work on your changelogs
a little.. aaand actually include some ;-)Well, I thought the subject said it all :-)
Quoted 8 lines
well, you could be more specific, like:
- how was it broken before
- what did you do to fix it
- how you added a test case to ensure this will never happen again ;-)it makes the life of reviewer a bit easier, anyway:
Acked-by Jiri Olsa <[email protected]>
Thanks. I'll try to be more verbose in future changelogs.
Signature · 1 line
Josh
PATCH 1/1 tools build: Fix feature Makefile issues with 'O='
In reply to Jiri OlsaWhen building perf binaries outside the source tree with 'make O=<dir>', the auto-detected features get re-tested for every build, which is unnecessary and inconsistent with the behavior seen when building directly in the source tree.
Another issue is that 'make O=<dir> clean' doesn't remove the feature files from the object tree.
Fix these problems by looking for the binaries in the $(OUTPUT) directory.
---
v3.2: add changelog
tools/build/Makefile.feature | 2 +- tools/build/feature/Makefile | 93 ++++++++++++++++++++++---------------------- 2 files changed, 48 insertions(+), 47 deletions(-)
tools/build/Makefile.feature +1 -1
@@ -7,7 +7,7 @@ endif feature_check = $(eval $(feature_check_code)) define feature_check_code - feature-$(1) := $(shell $(MAKE) OUTPUT=$(OUTPUT_FEATURES) CFLAGS="$(EXTRA_CFLAGS) $(FEATURE_CHECK_CFLAGS-$(1))" LDFLAGS="$(LDFLAGS) $(FEATURE_CHECK_LDFLAGS-$(1))" -C $(feature_dir) test-$1.bin >/dev/null 2>/dev/null && echo 1 || echo 0) + feature-$(1) := $(shell $(MAKE) OUTPUT=$(OUTPUT_FEATURES) CFLAGS="$(EXTRA_CFLAGS) $(FEATURE_CHECK_CFLAGS-$(1))" LDFLAGS="$(LDFLAGS) $(FEATURE_CHECK_LDFLAGS-$(1))" -C $(feature_dir) $(OUTPUT_FEATURES)test-$1.bin >/dev/null 2>/dev/null && echo 1 || echo 0) endef feature_set = $(eval $(feature_set_code))
tools/build/feature/Makefile +47 -46
189 lines not on this page · raw message
Signature · 1 line
2.4.3
PATCH v3 3/17 perf test: Add Build file to dependencies for llvm-src-*.c
In reply to Josh PoimboeufBecause the Build file writes source code to the generated llvm-src-*.c files, it should be listed as one of the dependencies, so that any future changes to the code being echoed won't require a 'make clean'.
--- tools/perf/tests/Build | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)
tools/perf/tests/Build +3 -3
@@ -35,21 +35,21 @@ perf-y += llvm.o llvm-src-base.o llvm-src-kbuild.o llvm-src-prologue.o perf-y += bpf.o perf-y += topology.o -$(OUTPUT)tests/llvm-src-base.c: tests/bpf-script-example.c +$(OUTPUT)tests/llvm-src-base.c: tests/bpf-script-example.c tests/Build $(call rule_mkdir) $(Q)echo '#include <tests/llvm.h>' > $@ $(Q)echo 'const char test_llvm__bpf_base_prog[] =' >> $@ $(Q)sed -e 's/"/\\"/g' -e 's/\(.*\)/"\1\\n"/g' $< >> $@ $(Q)echo ';' >> $@ -$(OUTPUT)tests/llvm-src-kbuild.c: tests/bpf-script-test-kbuild.c +$(OUTPUT)tests/llvm-src-kbuild.c: tests/bpf-script-test-kbuild.c tests/Build $(call rule_mkdir) $(Q)echo '#include <tests/llvm.h>' > $@ $(Q)echo 'const char test_llvm__bpf_test_kbuild_prog[] =' >> $@ $(Q)sed -e 's/"/\\"/g' -e 's/\(.*\)/"\1\\n"/g' $< >> $@ $(Q)echo ';' >> $@ -$(OUTPUT)tests/llvm-src-prologue.c: tests/bpf-script-test-prologue.c +$(OUTPUT)tests/llvm-src-prologue.c: tests/bpf-script-test-prologue.c tests/Build $(call rule_mkdir) $(Q)echo '#include <tests/llvm.h>' > $@ $(Q)echo 'const char test_llvm__bpf_test_prologue_prog[] =' >> $@
Signature · 1 line
2.4.3
Re: [PATCH v3 03/17] perf test: Add Build file to dependencies for llvm-src-*.c
Quoted 3 lines · Josh Poimboeuf
Because the Build file writes source code to the generated llvm-src-*.c files, it should be listed as one of the dependencies, so that any future changes to the code being echoed won't require a 'make clean'.
thanks,
jirka
Quoted 38 lines
Signed-off-by Josh Poimboeuf <[email protected]>--- tools/perf/tests/Build | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)tools/perf/tests/Build +3
-3@@ -35,21 +35,21 @@ perf-y += llvm.o llvm-src-base.o llvm-src-kbuild.o llvm-src-prologue.o perf-y += bpf.o perf-y += topology.o -$(OUTPUT)tests/llvm-src-base.c: tests/bpf-script-example.c +$(OUTPUT)tests/llvm-src-base.c: tests/bpf-script-example.c tests/Build $(call rule_mkdir) $(Q)echo '#include <tests/llvm.h>' > $@ $(Q)echo 'const char test_llvm__bpf_base_prog[] =' >> $@ $(Q)sed -e 's/"/\\"/g' -e 's/\(.*\)/"\1\\n"/g' $< >> $@ $(Q)echo ';' >> $@ -$(OUTPUT)tests/llvm-src-kbuild.c: tests/bpf-script-test-kbuild.c +$(OUTPUT)tests/llvm-src-kbuild.c: tests/bpf-script-test-kbuild.c tests/Build $(call rule_mkdir) $(Q)echo '#include <tests/llvm.h>' > $@ $(Q)echo 'const char test_llvm__bpf_test_kbuild_prog[] =' >> $@ $(Q)sed -e 's/"/\\"/g' -e 's/\(.*\)/"\1\\n"/g' $< >> $@ $(Q)echo ';' >> $@ -$(OUTPUT)tests/llvm-src-prologue.c: tests/bpf-script-test-prologue.c +$(OUTPUT)tests/llvm-src-prologue.c: tests/bpf-script-test-prologue.c tests/Build $(call rule_mkdir) $(Q)echo '#include <tests/llvm.h>' > $@ $(Q)echo 'const char test_llvm__bpf_test_prologue_prog[] =' >> $@Signature · 1 line
2.4.3
Re: [PATCH v3 03/17] perf test: Add Build file to dependencies for llvm-src-*.c
Em Mon, Dec 14, 2015 at 11:10:43AM +0100, Jiri Olsa escreveu:
Quoted 6 lines · Josh Poimboeuf
Quoted 3 lines
Because the Build file writes source code to the generated llvm-src-*.c files, it should be listed as one of the dependencies, so that any future changes to the code being echoed won't require a 'make clean'.
Acked-by Jiri Olsa <[email protected]>
Thanks, applied.
Quoted 41 lines
thanks,
jirkaQuoted 38 lines
Signed-off-by Josh Poimboeuf <[email protected]>--- tools/perf/tests/Build | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)tools/perf/tests/Build +3
-3@@ -35,21 +35,21 @@ perf-y += llvm.o llvm-src-base.o llvm-src-kbuild.o llvm-src-prologue.o perf-y += bpf.o perf-y += topology.o -$(OUTPUT)tests/llvm-src-base.c: tests/bpf-script-example.c +$(OUTPUT)tests/llvm-src-base.c: tests/bpf-script-example.c tests/Build $(call rule_mkdir) $(Q)echo '#include <tests/llvm.h>' > $@ $(Q)echo 'const char test_llvm__bpf_base_prog[] =' >> $@ $(Q)sed -e 's/"/\\"/g' -e 's/\(.*\)/"\1\\n"/g' $< >> $@ $(Q)echo ';' >> $@ -$(OUTPUT)tests/llvm-src-kbuild.c: tests/bpf-script-test-kbuild.c +$(OUTPUT)tests/llvm-src-kbuild.c: tests/bpf-script-test-kbuild.c tests/Build $(call rule_mkdir) $(Q)echo '#include <tests/llvm.h>' > $@ $(Q)echo 'const char test_llvm__bpf_test_kbuild_prog[] =' >> $@ $(Q)sed -e 's/"/\\"/g' -e 's/\(.*\)/"\1\\n"/g' $< >> $@ $(Q)echo ';' >> $@ -$(OUTPUT)tests/llvm-src-prologue.c: tests/bpf-script-test-prologue.c +$(OUTPUT)tests/llvm-src-prologue.c: tests/bpf-script-test-prologue.c tests/Build $(call rule_mkdir) $(Q)echo '#include <tests/llvm.h>' > $@ $(Q)echo 'const char test_llvm__bpf_test_prologue_prog[] =' >> $@Signature · 1 line
2.4.3
tip-bot for Josh Poimboeuf
merge bot[tip:perf/core] perf test: Add Build file to dependencies for llvm-src-*.c
In reply to Josh Poimboeufperf test: Add Build file to dependencies for llvm-src-*.c
Commit-ID: 8bda6a63a049caee4f8ddf2dd99055794df96e4f Gitweb: http://git.kernel.org/tip/8bda6a63a049caee4f8ddf2dd99055794df96e4f Author: Josh Poimboeuf <[email protected]> AuthorDate: Sun, 13 Dec 2015 22:18:03 -0600 Committer: Arnaldo Carvalho de Melo <[email protected]> CommitDate: Mon, 14 Dec 2015 12:17:09 -0300
perf test: Add Build file to dependencies for llvm-src-*.c
Because the Build file writes source code to the generated llvm-src-*.c files, it should be listed as one of the dependencies, so that any future changes to the code being echoed won't require a 'make clean'.
--- tools/perf/tests/Build | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)
tools/perf/tests/Build +3 -3
@@ -35,21 +35,21 @@ perf-y += llvm.o llvm-src-base.o llvm-src-kbuild.o llvm-src-prologue.o perf-y += bpf.o perf-y += topology.o -$(OUTPUT)tests/llvm-src-base.c: tests/bpf-script-example.c +$(OUTPUT)tests/llvm-src-base.c: tests/bpf-script-example.c tests/Build $(call rule_mkdir) $(Q)echo '#include <tests/llvm.h>' > $@ $(Q)echo 'const char test_llvm__bpf_base_prog[] =' >> $@ $(Q)sed -e 's/"/\\"/g' -e 's/\(.*\)/"\1\\n"/g' $< >> $@ $(Q)echo ';' >> $@ -$(OUTPUT)tests/llvm-src-kbuild.c: tests/bpf-script-test-kbuild.c +$(OUTPUT)tests/llvm-src-kbuild.c: tests/bpf-script-test-kbuild.c tests/Build $(call rule_mkdir) $(Q)echo '#include <tests/llvm.h>' > $@ $(Q)echo 'const char test_llvm__bpf_test_kbuild_prog[] =' >> $@ $(Q)sed -e 's/"/\\"/g' -e 's/\(.*\)/"\1\\n"/g' $< >> $@ $(Q)echo ';' >> $@ -$(OUTPUT)tests/llvm-src-prologue.c: tests/bpf-script-test-prologue.c +$(OUTPUT)tests/llvm-src-prologue.c: tests/bpf-script-test-prologue.c tests/Build $(call rule_mkdir) $(Q)echo '#include <tests/llvm.h>' > $@ $(Q)echo 'const char test_llvm__bpf_test_prologue_prog[] =' >> $@
PATCH v3 4/17 perf test: remove tarpkg at end of test
In reply to Josh Poimboeuf--- tools/perf/tests/make | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
tools/perf/tests/make +2 -1
@@ -259,7 +259,8 @@ $(run_O): tarpkg: @cmd="$(PERF)/tests/perf-targz-src-pkg $(PERF)"; \ echo "- $@: $$cmd" && echo $$cmd > $@ && \ - ( eval $$cmd ) >> $@ 2>&1 + ( eval $$cmd ) >> $@ 2>&1 && \ + rm -f $@ make_kernelsrc: @echo "- make -C <kernelsrc> tools/perf"
Signature · 1 line
2.4.3
tip-bot for Josh Poimboeuf
merge bot[tip:perf/core] perf test: Remove tarpkg at end of test
perf test: Remove tarpkg at end of test
Commit-ID: 004bd89da8c8e7df87e951bf88e34af67348e4e9 Gitweb: http://git.kernel.org/tip/004bd89da8c8e7df87e951bf88e34af67348e4e9 Author: Josh Poimboeuf <[email protected]> AuthorDate: Sun, 13 Dec 2015 22:18:04 -0600 Committer: Arnaldo Carvalho de Melo <[email protected]> CommitDate: Mon, 14 Dec 2015 12:17:58 -0300
perf test: Remove tarpkg at end of test
--- tools/perf/tests/make | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
tools/perf/tests/make +2 -1
@@ -259,7 +259,8 @@ $(run_O): tarpkg: @cmd="$(PERF)/tests/perf-targz-src-pkg $(PERF)"; \ echo "- $@: $$cmd" && echo $$cmd > $@ && \ - ( eval $$cmd ) >> $@ 2>&1 + ( eval $$cmd ) >> $@ 2>&1 && \ + rm -f $@ make_kernelsrc: @echo "- make -C <kernelsrc> tools/perf"
PATCH v3 5/17 perf build: Fix 'make clean'
In reply to Josh PoimboeufAdd some missing files to the 'make clean' target.
--- tools/perf/Makefile.perf | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-)
tools/perf/Makefile.perf +4 -3
@@ -582,15 +582,16 @@ $(INSTALL_DOC_TARGETS): # config-clean: $(call QUIET_CLEAN, config) - $(Q)$(MAKE) -C $(srctree)/tools/build/feature/ clean >/dev/null + $(Q)$(MAKE) -C $(srctree)/tools/build/feature/ $(if $(OUTPUT),OUTPUT=$(OUTPUT)feature/,) clean >/dev/null clean: $(LIBTRACEEVENT)-clean $(LIBAPI)-clean $(LIBBPF)-clean config-clean $(call QUIET_CLEAN, core-objs) $(RM) $(LIB_FILE) $(OUTPUT)perf-archive $(OUTPUT)perf-with-kcore $(LANG_BINDINGS) - $(Q)find . -name '*.o' -delete -o -name '\.*.cmd' -delete -o -name '\.*.d' -delete + $(Q)find $(if $(OUTPUT),$(OUTPUT),.) -name '*.o' -delete -o -name '\.*.cmd' -delete -o -name '\.*.d' -delete $(Q)$(RM) $(OUTPUT).config-detected $(call QUIET_CLEAN, core-progs) $(RM) $(ALL_PROGRAMS) perf perf-read-vdso32 perf-read-vdsox32 $(call QUIET_CLEAN, core-gen) $(RM) *.spec *.pyc *.pyo */*.pyc */*.pyo $(OUTPUT)common-cmds.h TAGS tags cscope* $(OUTPUT)PERF-VERSION-FILE $(OUTPUT)FEATURE-DUMP $(OUTPUT)util/*-bison* $(OUTPUT)util/*-flex* \ - $(OUTPUT)util/intel-pt-decoder/inat-tables.c + $(OUTPUT)util/intel-pt-decoder/inat-tables.c $(OUTPUT)fixdep \ + $(OUTPUT)tests/llvm-src-{base,kbuild,prologue}.c $(QUIET_SUBDIR0)Documentation $(QUIET_SUBDIR1) clean $(python-clean)
Signature · 1 line
2.4.3
Re: [PATCH v3 05/17] perf build: Fix 'make clean'
Quoted 3 lines · Josh Poimboeuf
Add some missing files to the 'make clean' target.
Reported-by Jiri Olsa <[email protected]>
thanks,
jirka
Quoted 32 lines
Signed-off-by Josh Poimboeuf <[email protected]>--- tools/perf/Makefile.perf | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-)tools/perf/Makefile.perf +4
-3@@ -582,15 +582,16 @@ $(INSTALL_DOC_TARGETS): # config-clean: $(call QUIET_CLEAN, config) - $(Q)$(MAKE) -C $(srctree)/tools/build/feature/ clean >/dev/null + $(Q)$(MAKE) -C $(srctree)/tools/build/feature/ $(if $(OUTPUT),OUTPUT=$(OUTPUT)feature/,) clean >/dev/null clean: $(LIBTRACEEVENT)-clean $(LIBAPI)-clean $(LIBBPF)-clean config-clean $(call QUIET_CLEAN, core-objs) $(RM) $(LIB_FILE) $(OUTPUT)perf-archive $(OUTPUT)perf-with-kcore $(LANG_BINDINGS) - $(Q)find . -name '*.o' -delete -o -name '\.*.cmd' -delete -o -name '\.*.d' -delete + $(Q)find $(if $(OUTPUT),$(OUTPUT),.) -name '*.o' -delete -o -name '\.*.cmd' -delete -o -name '\.*.d' -delete $(Q)$(RM) $(OUTPUT).config-detected $(call QUIET_CLEAN, core-progs) $(RM) $(ALL_PROGRAMS) perf perf-read-vdso32 perf-read-vdsox32 $(call QUIET_CLEAN, core-gen) $(RM) *.spec *.pyc *.pyo */*.pyc */*.pyo $(OUTPUT)common-cmds.h TAGS tags cscope* $(OUTPUT)PERF-VERSION-FILE $(OUTPUT)FEATURE-DUMP $(OUTPUT)util/*-bison* $(OUTPUT)util/*-flex* \ - $(OUTPUT)util/intel-pt-decoder/inat-tables.c + $(OUTPUT)util/intel-pt-decoder/inat-tables.c $(OUTPUT)fixdep \ + $(OUTPUT)tests/llvm-src-{base,kbuild,prologue}.c $(QUIET_SUBDIR0)Documentation $(QUIET_SUBDIR1) clean $(python-clean)Signature · 1 line
2.4.3
Re: [PATCH v3 05/17] perf build: Fix 'make clean'
Em Mon, Dec 14, 2015 at 11:14:21AM +0100, Jiri Olsa escreveu:
Quoted 6 lines · Josh Poimboeuf
Quoted 3 lines
Add some missing files to the 'make clean' target.
Reported-by Jiri Olsa <[email protected]>Acked-by Jiri Olsa <[email protected]>
Applied.
Quoted 35 lines
thanks,
jirkaQuoted 32 lines
Signed-off-by Josh Poimboeuf <[email protected]>--- tools/perf/Makefile.perf | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-)tools/perf/Makefile.perf +4
-3@@ -582,15 +582,16 @@ $(INSTALL_DOC_TARGETS): # config-clean: $(call QUIET_CLEAN, config) - $(Q)$(MAKE) -C $(srctree)/tools/build/feature/ clean >/dev/null + $(Q)$(MAKE) -C $(srctree)/tools/build/feature/ $(if $(OUTPUT),OUTPUT=$(OUTPUT)feature/,) clean >/dev/null clean: $(LIBTRACEEVENT)-clean $(LIBAPI)-clean $(LIBBPF)-clean config-clean $(call QUIET_CLEAN, core-objs) $(RM) $(LIB_FILE) $(OUTPUT)perf-archive $(OUTPUT)perf-with-kcore $(LANG_BINDINGS) - $(Q)find . -name '*.o' -delete -o -name '\.*.cmd' -delete -o -name '\.*.d' -delete + $(Q)find $(if $(OUTPUT),$(OUTPUT),.) -name '*.o' -delete -o -name '\.*.cmd' -delete -o -name '\.*.d' -delete $(Q)$(RM) $(OUTPUT).config-detected $(call QUIET_CLEAN, core-progs) $(RM) $(ALL_PROGRAMS) perf perf-read-vdso32 perf-read-vdsox32 $(call QUIET_CLEAN, core-gen) $(RM) *.spec *.pyc *.pyo */*.pyc */*.pyo $(OUTPUT)common-cmds.h TAGS tags cscope* $(OUTPUT)PERF-VERSION-FILE $(OUTPUT)FEATURE-DUMP $(OUTPUT)util/*-bison* $(OUTPUT)util/*-flex* \ - $(OUTPUT)util/intel-pt-decoder/inat-tables.c + $(OUTPUT)util/intel-pt-decoder/inat-tables.c $(OUTPUT)fixdep \ + $(OUTPUT)tests/llvm-src-{base,kbuild,prologue}.c $(QUIET_SUBDIR0)Documentation $(QUIET_SUBDIR1) clean $(python-clean)Signature · 1 line
2.4.3
tip-bot for Josh Poimboeuf
merge bot[tip:perf/core] perf build: Fix 'make clean'
In reply to Josh Poimboeufperf build: Fix 'make clean'
Commit-ID: 8f46dfd73e5378909834bd32a4e7710cd5522506 Gitweb: http://git.kernel.org/tip/8f46dfd73e5378909834bd32a4e7710cd5522506 Author: Josh Poimboeuf <[email protected]> AuthorDate: Sun, 13 Dec 2015 22:18:05 -0600 Committer: Arnaldo Carvalho de Melo <[email protected]> CommitDate: Mon, 14 Dec 2015 12:18:16 -0300
perf build: Fix 'make clean'
Add some missing files to the 'make clean' target.
--- tools/perf/Makefile.perf | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-)
tools/perf/Makefile.perf +4 -3
@@ -582,15 +582,16 @@ $(INSTALL_DOC_TARGETS): # config-clean: $(call QUIET_CLEAN, config) - $(Q)$(MAKE) -C $(srctree)/tools/build/feature/ clean >/dev/null + $(Q)$(MAKE) -C $(srctree)/tools/build/feature/ $(if $(OUTPUT),OUTPUT=$(OUTPUT)feature/,) clean >/dev/null clean: $(LIBTRACEEVENT)-clean $(LIBAPI)-clean $(LIBBPF)-clean config-clean $(call QUIET_CLEAN, core-objs) $(RM) $(LIB_FILE) $(OUTPUT)perf-archive $(OUTPUT)perf-with-kcore $(LANG_BINDINGS) - $(Q)find . -name '*.o' -delete -o -name '\.*.cmd' -delete -o -name '\.*.d' -delete + $(Q)find $(if $(OUTPUT),$(OUTPUT),.) -name '*.o' -delete -o -name '\.*.cmd' -delete -o -name '\.*.d' -delete $(Q)$(RM) $(OUTPUT).config-detected $(call QUIET_CLEAN, core-progs) $(RM) $(ALL_PROGRAMS) perf perf-read-vdso32 perf-read-vdsox32 $(call QUIET_CLEAN, core-gen) $(RM) *.spec *.pyc *.pyo */*.pyc */*.pyo $(OUTPUT)common-cmds.h TAGS tags cscope* $(OUTPUT)PERF-VERSION-FILE $(OUTPUT)FEATURE-DUMP $(OUTPUT)util/*-bison* $(OUTPUT)util/*-flex* \ - $(OUTPUT)util/intel-pt-decoder/inat-tables.c + $(OUTPUT)util/intel-pt-decoder/inat-tables.c $(OUTPUT)fixdep \ + $(OUTPUT)tests/llvm-src-{base,kbuild,prologue}.c $(QUIET_SUBDIR0)Documentation $(QUIET_SUBDIR1) clean $(python-clean)
PATCH v3 6/17 perf build: Rename LIB_PATH -> API_PATH
In reply to Josh Poimboeuf'LIB_PATH' is a misnomer because there are multiple library paths.
--- tools/perf/Makefile.perf | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-)
tools/perf/Makefile.perf +4 -4
@@ -185,13 +185,13 @@ ifneq ($(OUTPUT),) TE_PATH=$(OUTPUT) BPF_PATH=$(OUTPUT) ifneq ($(subdir),) - LIB_PATH=$(OUTPUT)/../lib/api/ + API_PATH=$(OUTPUT)/../lib/api/ else - LIB_PATH=$(OUTPUT) + API_PATH=$(OUTPUT) endif else TE_PATH=$(TRACE_EVENT_DIR) - LIB_PATH=$(LIB_DIR) + API_PATH=$(LIB_DIR) BPF_PATH=$(BPF_DIR) endif
@@ -201,7 +201,7 @@ export LIBTRACEEVENT LIBTRACEEVENT_DYNAMIC_LIST = $(TE_PATH)libtraceevent-dynamic-list LIBTRACEEVENT_DYNAMIC_LIST_LDFLAGS = -Xlinker --dynamic-list=$(LIBTRACEEVENT_DYNAMIC_LIST) -LIBAPI = $(LIB_PATH)libapi.a +LIBAPI = $(API_PATH)libapi.a export LIBAPI LIBBPF = $(BPF_PATH)libbpf.a
Signature · 1 line
2.4.3
Re: [PATCH v3 06/17] perf build: Rename LIB_PATH -> API_PATH
Quoted 3 lines · Josh Poimboeuf
'
LIB_PATH' is a misnomer because there are multiple library paths.Signed-off-by Josh Poimboeuf <[email protected]>
thanks,
jirka
Quoted 37 lines
--- tools/perf/Makefile.perf | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-)tools/perf/Makefile.perf +4
-4@@ -185,13 +185,13 @@ ifneq ($(OUTPUT),) TE_PATH=$(OUTPUT) BPF_PATH=$(OUTPUT) ifneq ($(subdir),) - LIB_PATH=$(OUTPUT)/../lib/api/ + API_PATH=$(OUTPUT)/../lib/api/ else - LIB_PATH=$(OUTPUT) + API_PATH=$(OUTPUT) endif else TE_PATH=$(TRACE_EVENT_DIR) - LIB_PATH=$(LIB_DIR) + API_PATH=$(LIB_DIR) BPF_PATH=$(BPF_DIR) endif@@ -201,7 +201,7 @@ export LIBTRACEEVENT LIBTRACEEVENT_DYNAMIC_LIST = $(TE_PATH)libtraceevent-dynamic-list LIBTRACEEVENT_DYNAMIC_LIST_LDFLAGS = -Xlinker --dynamic-list=$(LIBTRACEEVENT_DYNAMIC_LIST) -LIBAPI = $(LIB_PATH)libapi.a +LIBAPI = $(API_PATH)libapi.a export LIBAPI LIBBPF = $(BPF_PATH)libbpf.aSignature · 1 line
2.4.3
Re: [PATCH v3 06/17] perf build: Rename LIB_PATH -> API_PATH
Em Mon, Dec 14, 2015 at 11:34:42AM +0100, Jiri Olsa escreveu:
Quoted 6 lines · Josh Poimboeuf
Quoted 3 lines
'
LIB_PATH' is a misnomer because there are multiple library paths.Signed-off-by Josh Poimboeuf <[email protected]>Acked-by Jiri Olsa <[email protected]>
Applied.
Quoted 40 lines
thanks,
jirkaQuoted 37 lines
--- tools/perf/Makefile.perf | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-)tools/perf/Makefile.perf +4
-4@@ -185,13 +185,13 @@ ifneq ($(OUTPUT),) TE_PATH=$(OUTPUT) BPF_PATH=$(OUTPUT) ifneq ($(subdir),) - LIB_PATH=$(OUTPUT)/../lib/api/ + API_PATH=$(OUTPUT)/../lib/api/ else - LIB_PATH=$(OUTPUT) + API_PATH=$(OUTPUT) endif else TE_PATH=$(TRACE_EVENT_DIR) - LIB_PATH=$(LIB_DIR) + API_PATH=$(LIB_DIR) BPF_PATH=$(BPF_DIR) endif@@ -201,7 +201,7 @@ export LIBTRACEEVENT LIBTRACEEVENT_DYNAMIC_LIST = $(TE_PATH)libtraceevent-dynamic-list LIBTRACEEVENT_DYNAMIC_LIST_LDFLAGS = -Xlinker --dynamic-list=$(LIBTRACEEVENT_DYNAMIC_LIST) -LIBAPI = $(LIB_PATH)libapi.a +LIBAPI = $(API_PATH)libapi.a export LIBAPI LIBBPF = $(BPF_PATH)libbpf.aSignature · 1 line
2.4.3
tip-bot for Josh Poimboeuf
merge bot[tip:perf/core] perf build: Rename LIB_PATH -> API_PATH
In reply to Josh Poimboeufperf build: Rename LIB_PATH -> API_PATH
Commit-ID: 212e984a07d19c2e6b83da4ebac4e965dd92efd3 Gitweb: http://git.kernel.org/tip/212e984a07d19c2e6b83da4ebac4e965dd92efd3 Author: Josh Poimboeuf <[email protected]> AuthorDate: Sun, 13 Dec 2015 22:18:06 -0600 Committer: Arnaldo Carvalho de Melo <[email protected]> CommitDate: Mon, 14 Dec 2015 12:19:03 -0300
perf build: Rename LIB_PATH -> API_PATH
'LIB_PATH' is a misnomer because there are multiple library paths.
--- tools/perf/Makefile.perf | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-)
tools/perf/Makefile.perf +4 -4
@@ -185,13 +185,13 @@ ifneq ($(OUTPUT),) TE_PATH=$(OUTPUT) BPF_PATH=$(OUTPUT) ifneq ($(subdir),) - LIB_PATH=$(OUTPUT)/../lib/api/ + API_PATH=$(OUTPUT)/../lib/api/ else - LIB_PATH=$(OUTPUT) + API_PATH=$(OUTPUT) endif else TE_PATH=$(TRACE_EVENT_DIR) - LIB_PATH=$(LIB_DIR) + API_PATH=$(LIB_DIR) BPF_PATH=$(BPF_DIR) endif
@@ -201,7 +201,7 @@ export LIBTRACEEVENT LIBTRACEEVENT_DYNAMIC_LIST = $(TE_PATH)libtraceevent-dynamic-list LIBTRACEEVENT_DYNAMIC_LIST_LDFLAGS = -Xlinker --dynamic-list=$(LIBTRACEEVENT_DYNAMIC_LIST) -LIBAPI = $(LIB_PATH)libapi.a +LIBAPI = $(API_PATH)libapi.a export LIBAPI LIBBPF = $(BPF_PATH)libbpf.a
PATCH v3 7/17 perf: Create pager.h
In reply to Josh PoimboeufMove the 'pager' function prototypes into a new pager.h so that the pager code can be moved out to a library.
--- tools/perf/util/cache.h | 5 +---- tools/perf/util/pager.h | 7 +++++++ 2 files changed, 8 insertions(+), 4 deletions(-) create mode 100644 tools/perf/util/pager.h
tools/perf/util/cache.h +1 -4
@@ -4,6 +4,7 @@#include <stdbool.h> #include "util.h" #include "strbuf.h" +#include "pager.h" #include "../perf.h" #include "../ui/ui.h"
@@ -28,10 +29,6 @@ extern int perf_config_bool(const char *, const char *);extern int config_error_nonbool (const char *);extern const char *perf_config_dirname (const char *,const char *); -/* pager.c */ -extern void setup_pager (void ); -extern int pager_in_use (void ); -char *alias_lookup (const char *alias);int split_cmdline (char *cmdline,const char ***argv);
tools/perf/util/pager.h new file +7 -0
@@ -0,0 +1,7 @@ +#ifndef __PERF_PAGER_H +#define __PERF_PAGER_H + +extern void setup_pager (void ); +extern int pager_in_use (void ); + +#endif /* __PERF_PAGER_H */
Signature · 1 line
2.4.3
tip-bot for Josh Poimboeuf
merge bot[tip:perf/core] perf tools: Create pager.h
perf tools: Create pager.h
Commit-ID: 32a56bd438ab3023d08874e2770aa0675364b8ab Gitweb: http://git.kernel.org/tip/32a56bd438ab3023d08874e2770aa0675364b8ab Author: Josh Poimboeuf <[email protected]> AuthorDate: Sun, 13 Dec 2015 22:18:07 -0600 Committer: Arnaldo Carvalho de Melo <[email protected]> CommitDate: Mon, 14 Dec 2015 12:19:40 -0300
perf tools: Create pager.h
Move the 'pager' function prototypes into a new pager.h so that the pager code can be moved out to a library.
--- tools/perf/util/cache.h | 5 +---- tools/perf/util/pager.h | 7 +++++++ 2 files changed, 8 insertions(+), 4 deletions(-)
tools/perf/util/cache.h +1 -4
@@ -4,6 +4,7 @@#include <stdbool.h> #include "util.h" #include "strbuf.h" +#include "pager.h" #include "../perf.h" #include "../ui/ui.h"
@@ -28,10 +29,6 @@ extern int perf_config_bool(const char *, const char *);extern int config_error_nonbool (const char *);extern const char *perf_config_dirname (const char *,const char *); -/* pager.c */ -extern void setup_pager (void ); -extern int pager_in_use (void ); -char *alias_lookup (const char *alias);int split_cmdline (char *cmdline,const char ***argv);
tools/perf/util/pager.h new file +7 -0
@@ -0,0 +1,7 @@ +#ifndef __PERF_PAGER_H +#define __PERF_PAGER_H + +extern void setup_pager (void ); +extern int pager_in_use (void ); + +#endif /* __PERF_PAGER_H */
PATCH v3 8/17 perf: Remove check for unused PERF_PAGER_IN_USE
In reply to Josh PoimboeufPERF_PAGER_IN_USE doesn't seem to be used anywhere, so let's remove it.
This will also make it easier to move pager.c into a separate library.
--- tools/perf/util/pager.c | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-)
tools/perf/util/pager.c +1 -7
@@ -85,11 +85,5 @@ void setup_pager(void)int pager_in_use (void ) { -const char *env; - -if (spawned_pager) -return 1 ; - - env =getenv ("PERF_PAGER_IN_USE" ); -return env ?perf_config_bool ("PERF_PAGER_IN_USE" , env) :0 ; +return spawned_pager; }
Signature · 1 line
2.4.3
tip-bot for Josh Poimboeuf
merge bot[tip:perf/core] perf tools: Remove check for unused PERF_PAGER_IN_USE
perf tools: Remove check for unused PERF_PAGER_IN_USE
Commit-ID: a871a775172ac586b76199fd158e2843971bd052 Gitweb: http://git.kernel.org/tip/a871a775172ac586b76199fd158e2843971bd052 Author: Josh Poimboeuf <[email protected]> AuthorDate: Sun, 13 Dec 2015 22:18:08 -0600 Committer: Arnaldo Carvalho de Melo <[email protected]> CommitDate: Mon, 14 Dec 2015 12:30:18 -0300
perf tools: Remove check for unused PERF_PAGER_IN_USE
PERF_PAGER_IN_USE doesn't seem to be used anywhere, so let's remove it.
This will also make it easier to move pager.c into a separate library.
--- tools/perf/util/pager.c | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-)
tools/perf/util/pager.c +1 -7
@@ -85,11 +85,5 @@ void setup_pager(void)int pager_in_use (void ) { -const char *env; - -if (spawned_pager) -return 1 ; - - env =getenv ("PERF_PAGER_IN_USE" ); -return env ?perf_config_bool ("PERF_PAGER_IN_USE" , env) :0 ; +return spawned_pager; }
PATCH v3 9/17 perf: Move help_unknown_cmd() to its own file
In reply to Josh Poimboeufhelp_unknown_cmd() is quite perf-specific because it relies on some perf_config*() functions. Move it and its supporting functions out into a separate file so that help.c can be moved to a library.
--- tools/perf/util/Build | 1 + tools/perf/util/help-unknown-cmd.c | 103 +++++++++++++++++++++++++++++++++++ tools/perf/util/help-unknown-cmd.h | 0 tools/perf/util/help.c | 107 ++----------------------------------- tools/perf/util/help.h | 3 ++ 5 files changed, 110 insertions(+), 104 deletions(-) create mode 100644 tools/perf/util/help-unknown-cmd.c create mode 100644 tools/perf/util/help-unknown-cmd.h
tools/perf/util/Build +1 -0
@@ -87,6 +87,7 @@ libperf-$(CONFIG_AUXTRACE) += intel-bts.o libperf-y += parse-branch-options.o libperf-y += parse-regs-options.o libperf-y += term.o +libperf-y += help-unknown-cmd.o libperf-$(CONFIG_LIBBPF) += bpf-loader.o libperf-$(CONFIG_BPF_PROLOGUE) += bpf-prologue.o
tools/perf/util/help-unknown-cmd.c new file +103 -0
103 lines not on this page · raw message
tools/perf/util/help-unknown-cmd.h new file +0 -0
tools/perf/util/help.c +3 -104
135 lines not on this page · raw message
tools/perf/util/help.h +3 -0
@@ -20,6 +20,9 @@ void load_command_list(const char *prefix,struct cmdnames *main_cmds, struct cmdnames *other_cmds);void add_cmdname (struct cmdnames *cmds,const char *name,size_t len); +void clean_cmdnames (struct cmdnames *cmds); +int cmdname_compare (const void *a,const void *b); +void uniq (struct cmdnames *cmds);/* Here we require that excludes is a sorted list. */ void exclude_cmds (struct cmdnames *cmds,struct cmdnames *excludes);int is_in_cmdlist (struct cmdnames *c,const char *s);
Signature · 1 line
2.4.3
tip-bot for Josh Poimboeuf
merge bot[tip:perf/core] perf tools: Move help_unknown_cmd() to its own file
perf tools: Move help_unknown_cmd() to its own file
Commit-ID: 5feaac248a46dd5f9876c4ae45c4bbbde5472e90 Gitweb: http://git.kernel.org/tip/5feaac248a46dd5f9876c4ae45c4bbbde5472e90 Author: Josh Poimboeuf <[email protected]> AuthorDate: Sun, 13 Dec 2015 22:18:09 -0600 Committer: Arnaldo Carvalho de Melo <[email protected]> CommitDate: Mon, 14 Dec 2015 12:30:37 -0300
perf tools: Move help_unknown_cmd() to its own file
help_unknown_cmd() is quite perf-specific because it relies on some perf_config*() functions. Move it and its supporting functions out into a separate file so that help.c can be moved to a library.
--- tools/perf/util/Build | 1 + tools/perf/util/help-unknown-cmd.c | 103 ++++++++++++++++++++ .../perf/util/help-unknown-cmd.h | 0 tools/perf/util/help.c | 107 +-------------------- tools/perf/util/help.h | 3 + 5 files changed, 110 insertions(+), 104 deletions(-)
tools/perf/util/Build +1 -0
@@ -87,6 +87,7 @@ libperf-$(CONFIG_AUXTRACE) += intel-bts.o libperf-y += parse-branch-options.o libperf-y += parse-regs-options.o libperf-y += term.o +libperf-y += help-unknown-cmd.o libperf-$(CONFIG_LIBBPF) += bpf-loader.o libperf-$(CONFIG_BPF_PROLOGUE) += bpf-prologue.o
tools/perf/util/help-unknown-cmd.c new file +103 -0
103 lines not on this page · raw message
tools/perf/util/help-unknown-cmd.h renamed from arch/arm/mach-imx/Makefile.boot +0 -0
tools/perf/util/help.c +3 -104
135 lines not on this page · raw message
tools/perf/util/help.h +3 -0
@@ -20,6 +20,9 @@ void load_command_list(const char *prefix,struct cmdnames *main_cmds, struct cmdnames *other_cmds);void add_cmdname (struct cmdnames *cmds,const char *name,size_t len); +void clean_cmdnames (struct cmdnames *cmds); +int cmdname_compare (const void *a,const void *b); +void uniq (struct cmdnames *cmds);/* Here we require that excludes is a sorted list. */ void exclude_cmds (struct cmdnames *cmds,struct cmdnames *excludes);int is_in_cmdlist (struct cmdnames *c,const char *s);
PATCH v3 10/17 perf: Provide subcmd configuration at runtime
In reply to Josh PoimboeufCreate init functions for exec_cmd.c, parse-option.c, and pager.c. This allows their configuration to be specified at runtime so they can be split out into a separate library which can be used by other programs.
--- tools/perf/Build | 5 ++++- tools/perf/perf.c | 7 ++++++- tools/perf/util/Build | 1 - tools/perf/util/cache.h | 1 + tools/perf/util/exec_cmd.c | 28 +++++++++++++++++++++------- tools/perf/util/exec_cmd.h | 3 +++ tools/perf/util/pager.c | 9 ++++++++- tools/perf/util/pager.h | 2 ++ tools/perf/util/parse-options.c | 10 +++++++++- tools/perf/util/parse-options.h | 2 ++ 10 files changed, 56 insertions(+), 12 deletions(-)
tools/perf/Build +4 -1
@@ -36,7 +36,10 @@ paths += -DPERF_MAN_PATH="BUILD_STR($(mandir_SQ))" CFLAGS_builtin-help.o += $(paths) CFLAGS_builtin-timechart.o += $(paths) -CFLAGS_perf.o += -DPERF_HTML_PATH="BUILD_STR($(htmldir_SQ))" -include $(OUTPUT)PERF-VERSION-FILE +CFLAGS_perf.o += -DPERF_HTML_PATH="BUILD_STR($(htmldir_SQ))" \ + -DPERF_EXEC_PATH="BUILD_STR($(perfexecdir_SQ))" \ + -DPREFIX="BUILD_STR($(prefix_SQ))" \ + -include $(OUTPUT)PERF-VERSION-FILE CFLAGS_builtin-trace.o += -DSTRACE_GROUPS_DIR="BUILD_STR($(STRACE_GROUPS_DIR_SQ))" libperf-y += util/
tools/perf/perf.c +6 -1
@@ -119,7 +119,7 @@ static void commit_pager_choice(void) {switch (use_pager) {case 0 : -setenv ("PERF_PAGER" ,"cat" ,1 ); +setenv (PERF_PAGER_ENVIRONMENT ,"cat" ,1 );break ;case 1 :/* setup_pager(); */
@@ -530,6 +530,11 @@ int main(int argc, const char **argv)const char *cmd;char sbuf[STRERR_BUFSIZE ]; +/* libsubcmd init */ +exec_cmd_init ("perf" ,PREFIX ,PERF_EXEC_PATH ,EXEC_PATH_ENVIRONMENT ); +parse_options_init ("perf" ); +pager_init (PERF_PAGER_ENVIRONMENT ); +/* The page_size is placed in util object. */ page_size =sysconf (_SC_PAGE_SIZE); cacheline_size =sysconf (_SC_LEVEL1_DCACHE_LINESIZE);
tools/perf/util/Build +0 -1
@@ -113,7 +113,6 @@ libperf-$(CONFIG_ZLIB) += zlib.o libperf-$(CONFIG_LZMA) += lzma.o CFLAGS_config.o += -DETC_PERFCONFIG="BUILD_STR($(ETC_PERFCONFIG_SQ))" -CFLAGS_exec_cmd.o += -DPERF_EXEC_PATH="BUILD_STR($(perfexecdir_SQ))" -DPREFIX="BUILD_STR($(prefix_SQ))" $(OUTPUT)util/parse-events-flex.c: util/parse-events.l $(OUTPUT)util/parse-events-bison.c $(call rule_mkdir)
tools/perf/util/cache.h +1 -0
@@ -19,6 +19,7 @@#define DEFAULT_PERF_DIR_ENVIRONMENT ".perf"#define PERF_DEBUGFS_ENVIRONMENT "PERF_DEBUGFS_DIR"#define PERF_TRACEFS_ENVIRONMENT "PERF_TRACEFS_DIR" +#define PERF_PAGER_ENVIRONMENT "PERF_PAGER"typedef int (*config_fn_t )(const char *,const char *,void *);extern int perf_default_config (const char *,const char *,void *);
tools/perf/util/exec_cmd.c +21 -7
@@ -5,19 +5,33 @@#include <string.h> #define MAX_ARGS 32 +#define UNDEFINED "UNDEFINED"static const char *argv_exec_path;static const char *argv0_path; +static const char *cfg_exec_name =UNDEFINED ; +static const char *cfg_prefix =UNDEFINED ; +static const char *cfg_exec_path =UNDEFINED ; +static const char *cfg_exec_path_env =UNDEFINED ; + +void exec_cmd_init (const char *exec_name,const char *prefix, +const char *exec_path,const char *exec_path_env) +{ + cfg_exec_name = exec_name; + cfg_prefix = prefix; + cfg_exec_path = exec_path; + cfg_exec_path_env = exec_path_env; +} +char *system_path (const char *path) { -static const char *prefix =PREFIX ;struct strbuf d =STRBUF_INIT ;if (is_absolute_path (path))return strdup (path); -strbuf_addf (&d,"%s/%s" , prefix, path); +strbuf_addf (&d,"%s/%s" , cfg_prefix, path); path =strbuf_detach (&d,NULL );return (char *)path; }
@@ -47,7 +61,7 @@ void perf_set_argv_exec_path(const char *exec_path)/* * Propagate this setting to external programs. */ -setenv (EXEC_PATH_ENVIRONMENT , exec_path,1 ); +setenv (cfg_exec_path_env, exec_path,1 ); }
@@ -59,11 +73,11 @@ char *perf_exec_path(void)if (argv_exec_path)return strdup (argv_exec_path); - env =getenv (EXEC_PATH_ENVIRONMENT ); + env =getenv (cfg_exec_path_env);if (env && *env)return strdup (env); -return system_path (PERF_EXEC_PATH ); +return system_path (cfg_exec_path); }static void add_path (struct strbuf *out,const char *path)
@@ -107,7 +121,7 @@ static const char **prepare_perf_cmd(const char **argv) ;/* just counting */ nargv =malloc (sizeof (*nargv) * (argc +2 )); - nargv[0 ] ="perf" ; + nargv[0 ] = cfg_exec_name;for (argc =0 ; argv[argc]; argc++) nargv[argc +1 ] = argv[argc]; nargv[argc +1 ] =NULL ;
@@ -118,7 +132,7 @@ int execv_perf_cmd(const char **argv) {const char **nargv =prepare_perf_cmd (argv);/* execvp() can only ever return if it fails */ -execvp ("perf" , (char **)nargv); +execvp (cfg_exec_name, (char **)nargv);free (nargv);return -1 ;
tools/perf/util/exec_cmd.h +3 -0
@@ -1,6 +1,9 @@#ifndef __PERF_EXEC_CMD_H#define __PERF_EXEC_CMD_H +extern void exec_cmd_init (const char *exec_name,const char *prefix, +const char *exec_path,const char *exec_path_env); +extern void perf_set_argv_exec_path (const char *exec_path);extern const char *perf_extract_argv0_path (const char *path);extern void setup_path (void );
tools/perf/util/pager.c +8 -1
@@ -9,6 +9,13 @@static int spawned_pager; +static const char *cfg_pager_env ="UNDEFINED" ; + +void pager_init (const char *pager_env) +{ + cfg_pager_env = pager_env; +} +static void pager_preexec (void ) {/*
@@ -46,7 +53,7 @@ static void wait_for_pager_signal(int signo)void setup_pager (void ) { -const char *pager =getenv ("PERF_PAGER" ); +const char *pager =getenv (cfg_pager_env);if (!isatty (1 ))return ;
tools/perf/util/pager.h +2 -0
@@ -1,6 +1,8 @@#ifndef __PERF_PAGER_H#define __PERF_PAGER_H +extern void pager_init (const char *pager_env); +extern void setup_pager (void );extern int pager_in_use (void );
tools/perf/util/parse-options.c +9 -1
@@ -9,6 +9,13 @@static struct strbuf error_buf =STRBUF_INIT ; +static const char *cfg_exec_name ="UNDEFINED" ; + +void parse_options_init (const char *exec_name) +{ + cfg_exec_name = exec_name; +} +static int opterror (const struct option *opt,const char *reason,int flags) {if (flags &OPT_SHORT )
@@ -505,7 +512,8 @@ int parse_options_subcommand(int argc, const char **argv, const struct option *oif (subcommands && !usagestr[0 ]) {struct strbuf buf =STRBUF_INIT ; -strbuf_addf (&buf,"perf %s [<options>] {" , argv[0 ]); +strbuf_addf (&buf,"%s %s [<options>] {" , + cfg_exec_name, argv[0 ]);for (int i =0 ; subcommands[i]; i++) {if (i)strbuf_addstr (&buf,"|" );
tools/perf/util/parse-options.h +2 -0
@@ -4,6 +4,8 @@#include <linux/kernel.h> #include <stdbool.h> +extern void parse_options_init (const char *exec_name); +enum parse_opt_type {/* special types */ OPTION_END ,
Signature · 1 line
2.4.3
Re: [PATCH v3 10/17] perf: Provide subcmd configuration at runtime
On Sun, Dec 13, 2015 at 10:18:10PM -0600, Josh Poimboeuf wrote:
SNIP
Quoted 10 lines
typedef int (*config_fn_t)(const char *, const char *, void *); extern int
perf_default_config(const char *, const char *, void *);tools/perf/util/exec_cmd.c +0
-0@@ -5,19 +5,33 @@#include <string.h>
tools/perf/util/exec_cmd.c line 16
Quoted 10 lines
tools/perf/util/exec_cmd.c +5
-0#define MAX_ARGS 32 +#define UNDEFINED "UNDEFINED"static const char *argv_exec_path;static const char *argv0_path; +static const char *cfg_exec_name =UNDEFINED ; +static const char *cfg_prefix =UNDEFINED ; +static const char *cfg_exec_path =UNDEFINED ; +static const char *cfg_exec_path_env =UNDEFINED ;
so instead of forcing each object to hold some subset of cfg_* configuration, why not create global cfg object that would carry this data.. cfg_path or so ;-)
jirka
Re: [PATCH v3 10/17] perf: Provide subcmd configuration at runtime
Quoted 20 lines · Jiri Olsa
On Sun, Dec 13, 2015 at 10:18:10PM -0600, Josh Poimboeuf wrote:
SNIP
Quoted 16 lines
typedef int (*config_fn_t)(const char *, const char *, void *); extern int
perf_default_config(const char *, const char *, void *);tools/perf/util/exec_cmd.c +1
-0@@ -5,19 +5,33 @@#include <string.h> #define MAX_ARGS 32 +#define UNDEFINED "UNDEFINED"static const char *argv_exec_path;static const char *argv0_path;
Quoted 8 lines
tools/perf/util/exec_cmd.c line 16
Quoted 4 lines
tools/perf/util/exec_cmd.c +4
-0+static const char *cfg_exec_name =UNDEFINED ; +static const char *cfg_prefix =UNDEFINED ; +static const char *cfg_exec_path =UNDEFINED ; +static const char *cfg_exec_path_env =UNDEFINED ;so instead of forcing each object to hold some subset of cfg_* configuration, why not create global cfg object that would carry this data..
cfg_pathor so ;-)
Sure, though if it has the config for the entire library, I'd propose a broader name like 'subcmd_cfg'.
Signature · 1 line
Josh
PATCH v3 11/17 perf: Remove 'perf' from subcmd function and variable names
In reply to Josh PoimboeufIn preparation for moving exec_cmd.c and run-command.c out of perf and into a library, remove 'perf' from all the symbol names.
--- tools/perf/builtin-help.c | 2 +- tools/perf/builtin-script.c | 8 ++++---- tools/perf/perf.c | 6 +++--- tools/perf/tests/attr.c | 2 +- tools/perf/util/exec_cmd.c | 20 ++++++++++---------- tools/perf/util/exec_cmd.h | 12 ++++++------ tools/perf/util/help.c | 4 ++-- tools/perf/util/run-command.c | 6 +++--- tools/perf/util/run-command.h | 4 ++-- 9 files changed, 32 insertions(+), 32 deletions(-)
tools/perf/builtin-help.c +1 -1
@@ -407,7 +407,7 @@ static int get_html_page_path(struct strbuf *page_path, const char *page)#ifndef open_htmlstatic void open_html (const char *path) { -execl_perf_cmd ("web--browse" ,"-c" ,"help.browser" , path,NULL ); +execl_cmd ("web--browse" ,"-c" ,"help.browser" , path,NULL ); }#endif
tools/perf/builtin-script.c +4 -4
@@ -1408,7 +1408,7 @@ static int list_available_scripts(const struct option *opt __maybe_unused,char first_half[BUFSIZ ];char *script_root; -snprintf (scripts_path,MAXPATHLEN ,"%s/scripts" ,perf_exec_path ()); +snprintf (scripts_path,MAXPATHLEN ,"%s/scripts" ,get_argv_exec_path ()); scripts_dir =opendir (scripts_path);if (!scripts_dir)
@@ -1529,7 +1529,7 @@ int find_scripts(char **scripts_array, char **scripts_path_array)if (!session)return -1 ; -snprintf (scripts_path,MAXPATHLEN ,"%s/scripts" ,perf_exec_path ()); +snprintf (scripts_path,MAXPATHLEN ,"%s/scripts" ,get_argv_exec_path ()); scripts_dir =opendir (scripts_path);if (!scripts_dir) {
@@ -1587,7 +1587,7 @@ static char *get_script_path(const char *script_root, const char *suffix)char lang_path[MAXPATHLEN ];char *__script_root; -snprintf (scripts_path,MAXPATHLEN ,"%s/scripts" ,perf_exec_path ()); +snprintf (scripts_path,MAXPATHLEN ,"%s/scripts" ,get_argv_exec_path ()); scripts_dir =opendir (scripts_path);if (!scripts_dir)
@@ -1823,7 +1823,7 @@ int cmd_script(int argc, const char **argv, const char *prefix __maybe_unused) scripting_max_stack = itrace_synth_opts.callchain_sz;/* make sure PERF_EXEC_PATH is set for scripts */ -perf_set_argv_exec_path (perf_exec_path ()); +set_argv_exec_path (get_argv_exec_path ());if (argc && !script_name && !rec_script_path && !rep_script_path) {int live_pipe[2 ];
tools/perf/perf.c +3 -3
@@ -183,9 +183,9 @@ static int handle_options(const char ***argv, int *argc, int *envchanged)if (!prefixcmp (cmd,CMD_EXEC_PATH )) { cmd +=strlen (CMD_EXEC_PATH );if (*cmd =='=' ) -perf_set_argv_exec_path (cmd +1 ); +set_argv_exec_path (cmd +1 );else { -puts (perf_exec_path ()); +puts (get_argv_exec_path ());exit (0 ); } }else if (!strcmp (cmd,"--html-path" )) {
@@ -539,7 +539,7 @@ int main(int argc, const char **argv) page_size =sysconf (_SC_PAGE_SIZE); cacheline_size =sysconf (_SC_LEVEL1_DCACHE_LINESIZE); - cmd =perf_extract_argv0_path (argv[0 ]); + cmd =extract_argv0_path (argv[0 ]);if (!cmd) cmd ="perf-help" ;
tools/perf/tests/attr.c +1 -1
@@ -164,7 +164,7 @@ int test__attr(int subtest __maybe_unused)return run_dir ("./tests" ,"./perf" );/* Then installed path. */ -snprintf (path_dir,PATH_MAX ,"%s/tests" ,perf_exec_path ()); +snprintf (path_dir,PATH_MAX ,"%s/tests" ,get_argv_exec_path ());snprintf (path_perf,PATH_MAX ,"%s/perf" ,BINDIR ); if (!lstat(path_dir, &st) &&
tools/perf/util/exec_cmd.c +10 -10
@@ -36,7 +36,7 @@ char *system_path(const char *path)return (char *)path; } -const char *perf_extract_argv0_path (const char *argv0) +const char *extract_argv0_path (const char *argv0) {const char *slash;
@@ -55,7 +55,7 @@ const char *perf_extract_argv0_path(const char *argv0)return argv0; } -void perf_set_argv_exec_path (const char *exec_path) +void set_argv_exec_path (const char *exec_path) { argv_exec_path = exec_path;/*
@@ -65,8 +65,8 @@ void perf_set_argv_exec_path(const char *exec_path) } -/* Returns the highest-priority, location to look for perf programs. */ -char *perf_exec_path (void ) +/* Returns the highest-priority location to look for subprograms. */ +char *get_argv_exec_path (void ) {char *env;
@@ -96,7 +96,7 @@ void setup_path(void) {const char *old_path =getenv ("PATH" );struct strbuf new_path =STRBUF_INIT ; -char *tmp =perf_exec_path (); +char *tmp =get_argv_exec_path ();add_path (&new_path, tmp);add_path (&new_path, argv0_path);
@@ -112,7 +112,7 @@ void setup_path(void)strbuf_release (&new_path); } -static const char **prepare_perf_cmd (const char **argv) +static const char **prepare_exec_cmd (const char **argv) {int argc;const char **nargv;
@@ -128,8 +128,8 @@ static const char **prepare_perf_cmd(const char **argv)return nargv; } -int execv_perf_cmd (const char **argv) { -const char **nargv =prepare_perf_cmd (argv); +int execv_cmd (const char **argv) { +const char **nargv =prepare_exec_cmd (argv);/* execvp() can only ever return if it fails */ execvp (cfg_exec_name, (char **)nargv);
@@ -139,7 +139,7 @@ int execv_perf_cmd(const char **argv) { } -int execl_perf_cmd (const char *cmd,...) +int execl_cmd (const char *cmd,...) {int argc;const char *argv[MAX_ARGS +1 ];
@@ -159,5 +159,5 @@ int execl_perf_cmd(const char *cmd,...)return error ("too many args to run %s" , cmd); argv[argc] =NULL ; -return execv_perf_cmd (argv); +return execv_cmd (argv); }
tools/perf/util/exec_cmd.h +6 -6
@@ -4,13 +4,13 @@extern void exec_cmd_init (const char *exec_name,const char *prefix,const char *exec_path,const char *exec_path_env); -extern void perf_set_argv_exec_path (const char *exec_path); -extern const char *perf_extract_argv0_path (const char *path); +extern void set_argv_exec_path (const char *exec_path); +extern const char *extract_argv0_path (const char *path);extern void setup_path (void ); -extern int execv_perf_cmd (const char **argv);/* NULL terminated */ -extern int execl_perf_cmd (const char *cmd, ...); -/* perf_exec_path and system_path return malloc'd string, caller must free it */ -extern char *perf_exec_path (void ); +extern int execv_cmd (const char **argv);/* NULL terminated */ +extern int execl_cmd (const char *cmd, ...); +/* get_argv_exec_path and system_path return malloc'd string, caller must free it */ +extern char *get_argv_exec_path (void );extern char *system_path (const char *path);#endif /* __PERF_EXEC_CMD_H */
tools/perf/util/help.c +2 -2
@@ -157,7 +157,7 @@ void load_command_list(const char *prefix, struct cmdnames *other_cmds) {const char *env_path =getenv ("PATH" ); -char *exec_path =perf_exec_path (); +char *exec_path =get_argv_exec_path ();if (exec_path) {list_commands_in_dir (main_cmds, exec_path, prefix);
@@ -202,7 +202,7 @@ void list_commands(const char *title, struct cmdnames *main_cmds, longest = other_cmds->names[i]->len;if (main_cmds->cnt) { -char *exec_path =perf_exec_path (); +char *exec_path =get_argv_exec_path ();printf ("available %s in '%s'\n" , title, exec_path);printf ("----------------" );mput_char ('-' ,strlen (title) +strlen (exec_path));
tools/perf/util/run-command.c +3 -3
@@ -112,8 +112,8 @@ int start_command(struct child_process *cmd) }if (cmd->preexec_cb) cmd->preexec_cb (); -if (cmd->perf_cmd) { -execv_perf_cmd (cmd->argv); +if (cmd->exec_cmd) { +execv_cmd (cmd->argv); }else {execvp (cmd->argv[0 ], (char *const *) cmd->argv); }
@@ -207,7 +207,7 @@ static void prepare_run_command_v_opt(struct child_process *cmd,memset (cmd,0 ,sizeof (*cmd)); cmd->argv = argv; cmd->no_stdin = opt &RUN_COMMAND_NO_STDIN ?1 :0 ; - cmd->perf_cmd = opt &RUN_PERF_CMD ?1 :0 ; + cmd->exec_cmd = opt &RUN_EXEC_CMD ?1 :0 ; cmd->stdout_to_stderr = opt &RUN_COMMAND_STDOUT_TO_STDERR ?1 :0 ; }
tools/perf/util/run-command.h +2 -2
@@ -41,7 +41,7 @@ struct child_process { unsigned no_stdin:1; unsigned no_stdout:1; unsigned no_stderr:1; - unsigned perf_cmd:1; /* if this is to be perf sub-command */ + unsigned exec_cmd:1; /* if this is to be external sub-command */ unsigned stdout_to_stderr:1;void (*preexec_cb)(void ); };
@@ -51,7 +51,7 @@ int finish_command(struct child_process *);int run_command (struct child_process *);#define RUN_COMMAND_NO_STDIN 1 -#define RUN_PERF_CMD 2/*If this is to be perf sub-command */ +#define RUN_EXEC_CMD 2/*If this is to be external sub-command */ #define RUN_COMMAND_STDOUT_TO_STDERR 4int run_command_v_opt (const char **argv,int opt);
Signature · 1 line
2.4.3
PATCH v3 12/17 perf: Convert parse-options.c internal functions to static
In reply to Josh Poimboeuf--- tools/perf/util/parse-options.c | 18 +++++++++--------- tools/perf/util/parse-options.h | 9 --------- 2 files changed, 9 insertions(+), 18 deletions(-)
tools/perf/util/parse-options.c +9 -9
@@ -367,8 +367,8 @@ static void check_typos(const char *arg, const struct option *options) } } -void parse_options_start (struct parse_opt_ctx_t *ctx, -int argc,const char **argv,int flags) +static void parse_options_start (struct parse_opt_ctx_t *ctx, +int argc,const char **argv,int flags) {memset (ctx,0 ,sizeof (*ctx)); ctx->argc = argc -1 ;
@@ -385,9 +385,9 @@ static int usage_with_options_internal(const char * const *, const struct option *, int, struct parse_opt_ctx_t *); -int parse_options_step (struct parse_opt_ctx_t *ctx, -const struct option *options, -const char *const usagestr[]) +static int parse_options_step (struct parse_opt_ctx_t *ctx, +const struct option *options, +const char *const usagestr[]) {int internal_help = !(ctx->flags &PARSE_OPT_NO_INTERNAL_HELP );int excl_short_opt =1 ;
@@ -496,7 +496,7 @@ exclusive:return PARSE_OPT_HELP ; } -int parse_options_end (struct parse_opt_ctx_t *ctx) +static int parse_options_end (struct parse_opt_ctx_t *ctx) {memmove (ctx->out + ctx->cpidx, ctx->argv, ctx->argc *sizeof (*ctx->out)); ctx->out[ctx->cpidx + ctx->argc] =NULL ;
@@ -725,9 +725,9 @@ static bool option__in_argv(const struct option *opt, const struct parse_opt_ctxreturn false; } -int usage_with_options_internal (const char *const *usagestr, -const struct option *opts,int full, -struct parse_opt_ctx_t *ctx) +static int usage_with_options_internal (const char *const *usagestr, +const struct option *opts,int full, +struct parse_opt_ctx_t *ctx) {struct option *ordered;
tools/perf/util/parse-options.h +0 -9
@@ -197,15 +197,6 @@ extern int parse_options_usage(const char * const *usagestr,const char *optstr, bool short_opt); -extern void parse_options_start (struct parse_opt_ctx_t *ctx, -int argc,const char **argv,int flags); - -extern int parse_options_step (struct parse_opt_ctx_t *ctx, -const struct option *options, -const char *const usagestr[]); - -extern int parse_options_end (struct parse_opt_ctx_t *ctx); -/*----- some often used options -----*/ extern int parse_opt_abbrev_cb (const struct option *,const char *,int );
Signature · 1 line
2.4.3
tip-bot for Josh Poimboeuf
merge bot[tip:perf/core] perf tools: Convert parse-options.c internal functions to static
perf tools: Convert parse-options.c internal functions to static
Commit-ID: 408cf34c176e1832bc2f9f68033a55a765484f93 Gitweb: http://git.kernel.org/tip/408cf34c176e1832bc2f9f68033a55a765484f93 Author: Josh Poimboeuf <[email protected]> AuthorDate: Sun, 13 Dec 2015 22:18:12 -0600 Committer: Arnaldo Carvalho de Melo <[email protected]> CommitDate: Mon, 14 Dec 2015 12:33:01 -0300
perf tools: Convert parse-options.c internal functions to static
--- tools/perf/util/parse-options.c | 18 +++++++++--------- tools/perf/util/parse-options.h | 9 --------- 2 files changed, 9 insertions(+), 18 deletions(-)
tools/perf/util/parse-options.c +9 -9
@@ -360,8 +360,8 @@ static void check_typos(const char *arg, const struct option *options) } } -void parse_options_start (struct parse_opt_ctx_t *ctx, -int argc,const char **argv,int flags) +static void parse_options_start (struct parse_opt_ctx_t *ctx, +int argc,const char **argv,int flags) {memset (ctx,0 ,sizeof (*ctx)); ctx->argc = argc -1 ;
@@ -378,9 +378,9 @@ static int usage_with_options_internal(const char * const *, const struct option *, int, struct parse_opt_ctx_t *); -int parse_options_step (struct parse_opt_ctx_t *ctx, -const struct option *options, -const char *const usagestr[]) +static int parse_options_step (struct parse_opt_ctx_t *ctx, +const struct option *options, +const char *const usagestr[]) {int internal_help = !(ctx->flags &PARSE_OPT_NO_INTERNAL_HELP );int excl_short_opt =1 ;
@@ -489,7 +489,7 @@ exclusive:return PARSE_OPT_HELP ; } -int parse_options_end (struct parse_opt_ctx_t *ctx) +static int parse_options_end (struct parse_opt_ctx_t *ctx) {memmove (ctx->out + ctx->cpidx, ctx->argv, ctx->argc *sizeof (*ctx->out)); ctx->out[ctx->cpidx + ctx->argc] =NULL ;
@@ -717,9 +717,9 @@ static bool option__in_argv(const struct option *opt, const struct parse_opt_ctxreturn false; } -int usage_with_options_internal (const char *const *usagestr, -const struct option *opts,int full, -struct parse_opt_ctx_t *ctx) +static int usage_with_options_internal (const char *const *usagestr, +const struct option *opts,int full, +struct parse_opt_ctx_t *ctx) {struct option *ordered;
tools/perf/util/parse-options.h +0 -9
@@ -195,15 +195,6 @@ extern int parse_options_usage(const char * const *usagestr,const char *optstr, bool short_opt); -extern void parse_options_start (struct parse_opt_ctx_t *ctx, -int argc,const char **argv,int flags); - -extern int parse_options_step (struct parse_opt_ctx_t *ctx, -const struct option *options, -const char *const usagestr[]); - -extern int parse_options_end (struct parse_opt_ctx_t *ctx); -/*----- some often used options -----*/ extern int parse_opt_abbrev_cb (const struct option *,const char *,int );
PATCH v3 13/17 perf: Document the fact that parse_options*() may exit
In reply to Josh Poimboeuf--- tools/perf/util/parse-options.h | 3 +++ 1 file changed, 3 insertions(+)
tools/perf/util/parse-options.h +3 -0
@@ -151,6 +151,9 @@ struct option {/* parse_options() will filter out the processed options and leave the * non-option argments in argv[]. * Returns the number of arguments left in argv[]. +* +* NOTE: parse_options() and parse_options_subcommand() may call exit() in the +* case of an error (or for 'special' options like --list-cmds or --list-opts). */ extern int parse_options(int argc, const char **argv, const struct option *options,
Signature · 1 line
2.4.3
PATCH v3 14/17 perf: Remove subcmd dependencies on strbuf
In reply to Josh PoimboeufIntroduce and use new astrcat() and astrcatf() functions which replace the strbuf functionality for subcmd.
--- tools/perf/util/exec_cmd.c | 27 +++++++++++++------------- tools/perf/util/help.c | 14 ++++++-------- tools/perf/util/parse-options.c | 42 +++++++++++++++++++++-------------------- tools/perf/util/subcmd-util.h | 24 +++++++++++++++++++++++ 4 files changed, 66 insertions(+), 41 deletions(-) create mode 100644 tools/perf/util/subcmd-util.h
tools/perf/util/exec_cmd.c +14 -13
@@ -3,6 +3,7 @@#include "quote.h" #include <string.h> +#include "subcmd-util.h" #define MAX_ARGS 32#define UNDEFINED "UNDEFINED"
@@ -26,14 +27,14 @@ void exec_cmd_init(const char *exec_name, const char *prefix,char *system_path (const char *path) { -struct strbuf d =STRBUF_INIT ; +char *buf =NULL ;if (is_absolute_path (path))return strdup (path); -strbuf_addf (&d,"%s/%s" , cfg_prefix, path); - path =strbuf_detach (&d,NULL ); -return (char *)path; +astrcatf (&buf,"%s/%s" , cfg_prefix, path); + +return buf; }const char *extract_argv0_path (const char *argv0)
@@ -80,22 +81,22 @@ char *get_argv_exec_path(void)return system_path (cfg_exec_path); } -static void add_path (struct strbuf *out,const char *path) +static void add_path (char **out,const char *path) {if (path && *path) {if (is_absolute_path (path)) -strbuf_addstr (out, path); +astrcat (out, path);else -strbuf_addstr (out,make_nonrelative_path (path)); +astrcat (out,make_nonrelative_path (path)); -strbuf_addch (out,PATH_SEP ); +astrcat (out,":" ); } }void setup_path (void ) {const char *old_path =getenv ("PATH" ); -struct strbuf new_path =STRBUF_INIT ; +char *new_path =NULL ;char *tmp =get_argv_exec_path ();add_path (&new_path, tmp);
@@ -103,13 +104,13 @@ void setup_path(void)free (tmp);if (old_path) -strbuf_addstr (&new_path, old_path); +astrcat (&new_path, old_path);else -strbuf_addstr (&new_path,"/usr/local/bin:/usr/bin:/bin" ); +astrcat (&new_path,"/usr/local/bin:/usr/bin:/bin" ); -setenv ("PATH" , new_path.buf,1 ); +setenv ("PATH" , new_path,1 ); -strbuf_release (&new_path); +free (new_path); }static const char **prepare_exec_cmd (const char **argv)
tools/perf/util/help.c +6 -8
@@ -2,6 +2,7 @@#include "../builtin.h" #include "exec_cmd.h" #include "help.h" +#include "subcmd-util.h" void add_cmdname (struct cmdnames *cmds,const char *name,size_t len) {
@@ -119,8 +120,7 @@ static void list_commands_in_dir(struct cmdnames *cmds,int prefix_len;DIR *dir =opendir (path);struct dirent *de; -struct strbuf buf =STRBUF_INIT ; -int len; +char *buf =NULL ;if (!dir)return ;
@@ -128,8 +128,7 @@ static void list_commands_in_dir(struct cmdnames *cmds, prefix ="perf-" ; prefix_len =strlen (prefix); -strbuf_addf (&buf,"%s/" , path); - len = buf.len; +astrcatf (&buf,"%s/" , path);while ((de =readdir (dir)) !=NULL ) {int entlen;
@@ -137,9 +136,8 @@ static void list_commands_in_dir(struct cmdnames *cmds,if (prefixcmp (de->d_name, prefix))continue ; -strbuf_setlen (&buf, len); -strbuf_addstr (&buf, de->d_name); -if (!is_executable (buf.buf)) +astrcat (&buf, de->d_name); +if (!is_executable (buf))continue ; entlen =strlen (de->d_name) - prefix_len;
@@ -149,7 +147,7 @@ static void list_commands_in_dir(struct cmdnames *cmds,add_cmdname (cmds, de->d_name + prefix_len, entlen); }closedir (dir); -strbuf_release (&buf); +free (buf); } void load_command_list(const char *prefix,
tools/perf/util/parse-options.c +22 -20
85 lines not on this page · raw message
tools/perf/util/subcmd-util.h new file +24 -0
@@ -0,0 +1,24 @@ +#ifndef __PERF_SUBCMD_UTIL_H +#define __PERF_SUBCMD_UTIL_H + +#include <stdio.h> + +#define astrcatf (out, fmt, ...) \ +({ \ + char *tmp = *(out); \ + if (asprintf((out), "%s" fmt, tmp ?: "", ## __VA_ARGS__) == -1) \ + die("asprintf failed"); \ + free(tmp); \ +}) + +static inline void astrcat (char **out,const char *add) +{ +char *tmp = *out; + +if (asprintf (out,"%s%s" , tmp ?:"" , add) ==-1 ) +die ("asprintf failed" ); + +free (tmp); +} + +#endif /* __PERF_SUBCMD_UTIL_H */
Signature · 1 line
2.4.3
Re: [PATCH v3 14/17] perf: Remove subcmd dependencies on strbuf
Quoted 2 lines · Josh Poimboeuf
Introduce and use new
astrcat()andastrcatf()functions which replace the strbuf functionality for subcmd.
hum, would it be better then to put strbuf into lib as well?
jirka
Re: [PATCH v3 14/17] perf: Remove subcmd dependencies on strbuf
Quoted 5 lines · Jiri Olsa
Quoted 2 lines · Josh Poimboeuf
Introduce and use new
astrcat()andastrcatf()functions which replace the strbuf functionality for subcmd.hum, would it be better then to put strbuf into lib as well?
Based on the v2 discussion, I think we don't want to move it to lib, because it's also used by perf, and it's outside the scope of 'subcmd'.
But we could certainly duplicate it for internal use by the library.
Arnaldo, what do you think?
Signature · 1 line
Josh
Arnaldo Carvalho de Melo
maintainerRe: [PATCH v3 14/17] perf: Remove subcmd dependencies on strbuf
In reply to Josh PoimboeufEm Sun, Dec 13, 2015 at 10:18:14PM -0600, Josh Poimboeuf escreveu:
Quoted 2 lines
Introduce and use new
astrcat()andastrcatf()functions which replace the strbuf functionality for subcmd.
<SNIP>
Quoted 8 lines
tools/perf/util/subcmd-util.h new file +2
-0@@ -0,0 +1,24 @@ +#ifndef __PERF_SUBCMD_UTIL_H +#define __PERF_SUBCMD_UTIL_H
tools/perf/util/subcmd-util.h line 12
Quoted 10 lines
tools/perf/util/subcmd-util.h new file +10
-0+ +#include <stdio.h> + +#define astrcatf (out, fmt, ...) \ +({ \ + char *tmp = *(out); \ + if (asprintf((out), "%s" fmt, tmp ?: "", ## __VA_ARGS__) == -1) \ + die("asprintf failed"); \ + free(tmp); \ +})
Hey, don't add die() calls, please.
tools/perf/util/subcmd-util.h line 21
Quoted 9 lines
tools/perf/util/subcmd-util.h new file +9
-0+ +static inline void astrcat (char **out,const char *add) +{ +char *tmp = *out; + +if (asprintf (out,"%s%s" , tmp ?:"" , add) ==-1 ) +die ("asprintf failed" ); + +free (tmp);
Ditto.
And I think that this should go into tools/include/string.h and tools/lib/string.c, no?
We should try to look at the kernel and try to follow naming, semantics, etc as much as possible. The kernel doesn't have a astrcat, just kasprintf() (that is in linux/kernel.h, perhaps because in userland asprintf is in stdio.h, not in string.h) , wonder how something like astrcat is done there... Doing some research now.
- Arnaldo
Quoted 5 lines
tools/perf/util/subcmd-util.h new file +3
-0+} + +#endif /* __PERF_SUBCMD_UTIL_H */ Signature · 1 line
2.4.3
Re: [PATCH v3 14/17] perf: Remove subcmd dependencies on strbuf
Quoted 27 lines · Arnaldo Carvalho de Melo
Em Sun, Dec 13, 2015 at 10:18:14PM -0600, Josh Poimboeuf escreveu:
Quoted 2 lines
Introduce and use new
astrcat()andastrcatf()functions which replace the strbuf functionality for subcmd.<SNIP>
Quoted 8 lines
tools/perf/util/subcmd-util.h new file +2
-0@@ -0,0 +1,24 @@ +#ifndef __PERF_SUBCMD_UTIL_H +#define __PERF_SUBCMD_UTIL_Htools/perf/util/subcmd-util.h line 12
Quoted 10 lines
tools/perf/util/subcmd-util.h new file +10
-0+ +#include <stdio.h> + +#define astrcatf (out, fmt, ...) \ +({ \ + char *tmp = *(out); \ + if (asprintf((out), "%s" fmt, tmp ?: "", ## __VA_ARGS__) == -1) \ + die("asprintf failed"); \ + free(tmp); \ +})Hey, don't add
die()calls, please.
Quoted 11 lines
tools/perf/util/subcmd-util.h line 21
Quoted 9 lines
tools/perf/util/subcmd-util.h new file +9
-0+ +static inline void astrcat (char **out,const char *add) +{ +char *tmp = *out; + +if (asprintf (out,"%s%s" , tmp ?:"" , add) ==-1 ) +die ("asprintf failed" ); + +free (tmp);Ditto.
This replaces strbuf, which also calls die() when allocations fail. So this duplicates the existing die-on-allocation-error functionality and is nothing "new" from my perspective.
Do you want me to change all the callers (and callers' callers, etc) of these functions to check for errors?
Quoted 2 lines
And I think that this should go into
tools/include/string.handtools/lib/string.c, no?
If these functions simply duplicate some of strbuf's functionality and they aren't used outside of libsubcmd then I don't see any reason to do that.
Quoted 5 lines
We should try to look at the kernel and try to follow naming, semantics, etc as much as possible. The kernel doesn't have a astrcat, just
kasprintf()(that is inlinux/kernel.h, perhaps because in userland asprintf is instdio.h, not instring.h) , wonder how something like astrcat is done there... Doing some research now.
Ok.
Signature · 1 line
Josh
Arnaldo Carvalho de Melo
maintainerRe: [PATCH v3 14/17] perf: Remove subcmd dependencies on strbuf
Em Mon, Dec 14, 2015 at 10:05:37AM -0600, Josh Poimboeuf escreveu:
Quoted 40 lines · Arnaldo Carvalho de Melo
Quoted 27 lines
Em Sun, Dec 13, 2015 at 10:18:14PM -0600, Josh Poimboeuf escreveu:
Quoted 2 lines
Introduce and use new
astrcat()andastrcatf()functions which replace the strbuf functionality for subcmd.<SNIP>
Quoted 8 lines
tools/perf/util/subcmd-util.h new file +2
-0@@ -0,0 +1,24 @@ +#ifndef __PERF_SUBCMD_UTIL_H +#define __PERF_SUBCMD_UTIL_Htools/perf/util/subcmd-util.h line 12
Quoted 10 lines
tools/perf/util/subcmd-util.h new file +10
-0+ +#include <stdio.h> + +#define astrcatf (out, fmt, ...) \ +({ \ + char *tmp = *(out); \ + if (asprintf((out), "%s" fmt, tmp ?: "", ## __VA_ARGS__) == -1) \ + die("asprintf failed"); \ + free(tmp); \ +})Hey, don't add
die()calls, please.Quoted 11 lines
tools/perf/util/subcmd-util.h line 21
Quoted 9 lines
tools/perf/util/subcmd-util.h new file +9
-0+ +static inline void astrcat (char **out,const char *add) +{ +char *tmp = *out; + +if (asprintf (out,"%s%s" , tmp ?:"" , add) ==-1 ) +die ("asprintf failed" ); + +free (tmp);Ditto.
Quoted 6 lines
This replaces strbuf, which also calls
die()when allocations fail. So this duplicates the existing die-on-allocation-error functionality and is nothing "new" from my perspective.Do you want me to change all the callers (and callers' callers, etc) of these functions to check for errors?
Fair enough, we could do it later, but yeah, ultimately we should call all die() calls.
Quoted 6 lines
Quoted 2 lines
And I think that this should go into
tools/include/string.handtools/lib/string.c, no?If these functions simply duplicate some of strbuf's functionality and they aren't used outside of libsubcmd then I don't see any reason to do that.
Well, we might as well follow that principle, i.e. as soon as there are more users, we move it.
But removing strbuf and using something already in libc or something equal or slighly similar to what is in the kernel is something I like to have in place.
Quoted 10 lines
Quoted 5 lines
We should try to look at the kernel and try to follow naming, semantics, etc as much as possible. The kernel doesn't have a astrcat, just
kasprintf()(that is inlinux/kernel.h, perhaps because in userland asprintf is instdio.h, not instring.h) , wonder how something like astrcat is done there... Doing some research now.Ok.
Signature · 1 line
Josh
Re: [PATCH v3 14/17] perf: Remove subcmd dependencies on strbuf
Quoted 58 lines · Arnaldo Carvalho de Melo
Em Mon, Dec 14, 2015 at 10:05:37AM -0600, Josh Poimboeuf escreveu:
Quoted 40 lines · Arnaldo Carvalho de Melo
Quoted 27 lines
Em Sun, Dec 13, 2015 at 10:18:14PM -0600, Josh Poimboeuf escreveu:
Quoted 2 lines
Introduce and use new
astrcat()andastrcatf()functions which replace the strbuf functionality for subcmd.<SNIP>
Quoted 8 lines
tools/perf/util/subcmd-util.h new file +2
-0@@ -0,0 +1,24 @@ +#ifndef __PERF_SUBCMD_UTIL_H +#define __PERF_SUBCMD_UTIL_Htools/perf/util/subcmd-util.h line 12
Quoted 10 lines
tools/perf/util/subcmd-util.h new file +10
-0+ +#include <stdio.h> + +#define astrcatf (out, fmt, ...) \ +({ \ + char *tmp = *(out); \ + if (asprintf((out), "%s" fmt, tmp ?: "", ## __VA_ARGS__) == -1) \ + die("asprintf failed"); \ + free(tmp); \ +})Hey, don't add
die()calls, please.Quoted 11 lines
tools/perf/util/subcmd-util.h line 21
Quoted 9 lines
tools/perf/util/subcmd-util.h new file +9
-0+ +static inline void astrcat (char **out,const char *add) +{ +char *tmp = *out; + +if (asprintf (out,"%s%s" , tmp ?:"" , add) ==-1 ) +die ("asprintf failed" ); + +free (tmp);Ditto.
Quoted 6 lines
This replaces strbuf, which also calls
die()when allocations fail. So this duplicates the existing die-on-allocation-error functionality and is nothing "new" from my perspective.Do you want me to change all the callers (and callers' callers, etc) of these functions to check for errors?
Fair enough, we could do it later, but yeah, ultimately we should call all
die()calls.Quoted 6 lines
Quoted 2 lines
And I think that this should go into
tools/include/string.handtools/lib/string.c, no?If these functions simply duplicate some of strbuf's functionality and they aren't used outside of libsubcmd then I don't see any reason to do that.
Quoted 6 lines
Well, we might as well follow that principle, i.e. as soon as there are more users, we move it.
But removing strbuf and using something already in libc or something equal or slighly similar to what is in the kernel is something I like to have in place.
Ok, so just to clarify, is this patch ok in it's current state or is there anything you'd like me to change for v4? I didn't see anything similar to astrcat() or astrcatf() in glibc or in the kernel.
Quoted 7 lines
Quoted 7 lines
Quoted 5 lines
We should try to look at the kernel and try to follow naming, semantics, etc as much as possible. The kernel doesn't have a astrcat, just
kasprintf()(that is inlinux/kernel.h, perhaps because in userland asprintf is instdio.h, not instring.h) , wonder how something like astrcat is done there... Doing some research now.Ok.
Signature · 1 line
Josh
PATCH v3 15/17 perf: Finalize subcmd independence
In reply to Josh PoimboeufFor the files that will be moved to the subcmd library, remove all their perf-specific includes and duplicate any needed functionality.
--- tools/perf/util/exec_cmd.c | 75 +++++++++++++++++++++++++++++++++++++---- tools/perf/util/help.c | 47 +++++++++++++++++++++++--- tools/perf/util/help.h | 4 ++- tools/perf/util/pager.c | 7 +++- tools/perf/util/parse-options.c | 68 +++++++++++++++++++++++-------------- tools/perf/util/parse-options.h | 2 +- tools/perf/util/run-command.c | 16 ++++++--- tools/perf/util/run-command.h | 2 ++ tools/perf/util/sigchain.c | 3 +- tools/perf/util/subcmd-util.h | 67 ++++++++++++++++++++++++++++++++++++ tools/perf/util/util.h | 14 -------- 11 files changed, 247 insertions(+), 58 deletions(-)
tools/perf/util/exec_cmd.c +69 -6
@@ -1,11 +1,15 @@ -#include "cache.h" -#include "exec_cmd.h" -#include "quote.h" - +#include <linux/compiler.h> +#include <sys/types.h> +#include <sys/stat.h> +#include <unistd.h> #include <string.h> +#include <stdlib.h> +#include <stdio.h> #include "subcmd-util.h" +#include "exec_cmd.h" #define MAX_ARGS 32 +#define PATH_MAX 4096#define UNDEFINED "UNDEFINED"static const char *argv_exec_path;
@@ -25,6 +29,63 @@ void exec_cmd_init(const char *exec_name, const char *prefix, cfg_exec_path_env = exec_path_env; } +#define is_dir_sep (c) ((c) == '/') + +static size_t strlcpy (char *dest,const char *src,size_t size) +{ +size_t ret =strlen (src); + +if (size) { +size_t len = (ret >= size) ? size -1 : ret; + +memcpy (dest, src, len); + dest[len] ='\0' ; + } + +return ret; +} + +static int is_absolute_path (const char *path) +{ +return path[0 ] =='/' ; +} + +static const char *get_pwd_cwd (void ) +{ +static char cwd[PATH_MAX +1 ]; +char *pwd; +struct stat cwd_stat, pwd_stat; +if (getcwd (cwd,PATH_MAX ) ==NULL ) +return NULL ; + pwd =getenv ("PWD" ); +if (pwd &&strcmp (pwd, cwd)) { +stat (cwd, &cwd_stat); +if (!stat (pwd, &pwd_stat) && + pwd_stat.st_dev == cwd_stat.st_dev && + pwd_stat.st_ino == cwd_stat.st_ino) { +strlcpy (cwd, pwd,PATH_MAX ); + } + } +return cwd; +} + +static const char *make_nonrelative_path (const char *path) +{ +static char buf[PATH_MAX +1 ]; + +if (is_absolute_path (path)) { +if (strlcpy (buf, path,PATH_MAX ) >=PATH_MAX ) +die ("Too long path: %.*s" ,60 , path); + }else { +const char *cwd =get_pwd_cwd (); +if (!cwd) +die ("Cannot determine the current working directory" ); +if (snprintf (buf,PATH_MAX ,"%s/%s" , cwd, path) >=PATH_MAX ) +die ("Too long path: %.*s" ,60 , path); + } +return buf; +} +char *system_path (const char *path) {char *buf =NULL ;
@@ -156,8 +217,10 @@ int execl_cmd(const char *cmd,...)break ; }va_end (param); -if (MAX_ARGS <= argc) -return error ("too many args to run %s" , cmd); +if (MAX_ARGS <= argc) { +fprintf (stderr," Error: too many args to run %s\n" , cmd); +return -1 ; + } argv[argc] =NULL ;return execv_cmd (argv);
tools/perf/util/help.c +42 -5
69 lines not on this page · raw message
tools/perf/util/help.h +3 -1
@@ -1,12 +1,14 @@#ifndef __PERF_HELP_H#define __PERF_HELP_H +#include <sys/types.h> +struct cmdnames {size_t alloc;size_t cnt;struct cmdname {size_t len;/* also used for similarity index in help.c */ -char name[FLEX_ARRAY ]; +char name[]; } **names; };
tools/perf/util/pager.c +6 -1
@@ -1,4 +1,9 @@ -#include "cache.h" +#include <sys/select.h> +#include <stdlib.h> +#include <stdio.h> +#include <string.h> +#include <signal.h> +#include "pager.h" #include "run-command.h" #include "sigchain.h"
tools/perf/util/parse-options.c +43 -25
121 lines not on this page · raw message
tools/perf/util/parse-options.h +1 -1
@@ -1,8 +1,8 @@#ifndef __PERF_PARSE_OPTIONS_H#define __PERF_PARSE_OPTIONS_H -#include <linux/kernel.h> #include <stdbool.h> +#include <stdint.h> extern void parse_options_init (const char *exec_name);
tools/perf/util/run-command.c +12 -4
@@ -1,7 +1,15 @@ -#include "cache.h" +#include <unistd.h> +#include <sys/types.h> +#include <sys/stat.h> +#include <fcntl.h> +#include <string.h> +#include <errno.h> +#include <sys/wait.h> +#include "subcmd-util.h" #include "run-command.h" #include "exec_cmd.h" -#include "debug.h" + +#define STRERR_BUFSIZE 128static inline void close_pair (int fd[2 ]) {
@@ -164,8 +172,8 @@ static int wait_or_whine(pid_t pid)if (waiting <0 ) {if (errno ==EINTR )continue ; -error ("waitpid failed (%s)" , -strerror_r (errno, sbuf,sizeof (sbuf))); +fprintf (stderr," Error: waitpid failed (%s)" , +strerror_r (errno, sbuf,sizeof (sbuf)));return -ERR_RUN_COMMAND_WAITPID ; }if (waiting != pid)
tools/perf/util/run-command.h +2 -0
@@ -1,6 +1,8 @@#ifndef __PERF_RUN_COMMAND_H#define __PERF_RUN_COMMAND_H +#include <unistd.h> +enum {ERR_RUN_COMMAND_FORK =10000 , ERR_RUN_COMMAND_EXEC,
tools/perf/util/sigchain.c +2 -1
@@ -1,5 +1,6 @@ +#include <signal.h> +#include "subcmd-util.h" #include "sigchain.h" -#include "cache.h" #define SIGCHAIN_MAX_SIGNALS 32
tools/perf/util/subcmd-util.h +67 -0
79 lines not on this page · raw message
tools/perf/util/util.h +0 -14
@@ -151,12 +151,6 @@ extern void set_warning_routine(void (*routine)(const char *err, va_list params)extern int prefixcmp (const char *str,const char *prefix);extern void set_buildid_dir (const char *dir); -static inline const char *skip_prefix (const char *str,const char *prefix) -{ -size_t len =strlen (prefix); -return strncmp (str, prefix, len) ?NULL : str + len; -} -#ifdef __GLIBC_PREREQ#if __GLIBC_PREREQ (2 ,1 )#define HAVE_STRCHRNUL
@@ -187,14 +181,6 @@ static inline void *zalloc(size_t size)#define zfree (ptr) ({ free(*ptr); *ptr = NULL; }) -static inline int has_extension (const char *filename,const char *ext) -{ -size_t len =strlen (filename); -size_t extlen =strlen (ext); - -return len > extlen && !memcmp (filename + len - extlen, ext, extlen); -} -/* Sane ctype - no locale, and works with signed chars */ #undef isascii#undef isspace
Signature · 1 line
2.4.3
Re: [PATCH v3 15/17] perf: Finalize subcmd independence
Quoted 4 lines · Josh Poimboeuf
For the files that will be moved to the subcmd library, remove all their perf-specific includes and duplicate any needed functionality.
Signed-off-by Josh Poimboeuf <[email protected]>
Quoted 13 lines
--- tools/perf/util/exec_cmd.c | 75 +++++++++++++++++++++++++++++++++++++---- tools/perf/util/help.c | 47 +++++++++++++++++++++++--- tools/perf/util/help.h | 4 ++- tools/perf/util/pager.c | 7 +++- tools/perf/util/parse-options.c | 68 +++++++++++++++++++++++-------------- tools/perf/util/parse-options.h | 2 +- tools/perf/util/run-command.c | 16 ++++++--- tools/perf/util/run-command.h | 2 ++ tools/perf/util/sigchain.c | 3 +- tools/perf/util/subcmd-util.h | 67 ++++++++++++++++++++++++++++++++++++ tools/perf/util/util.h | 14 -------- 11 files changed, 247 insertions(+), 58 deletions(-)
this duplicates functions that we have already in perf, I think we better move them into lib first..
strlcpy, die, xrealloc, ALLOC_GROW
and probably some others...
jirka
Re: [PATCH v3 15/17] perf: Finalize subcmd independence
Quoted 19 lines · Jiri Olsa
Quoted 4 lines · Josh Poimboeuf
For the files that will be moved to the subcmd library, remove all their perf-specific includes and duplicate any needed functionality.
Signed-off-by Josh Poimboeuf <[email protected]>Quoted 13 lines
--- tools/perf/util/exec_cmd.c | 75 +++++++++++++++++++++++++++++++++++++---- tools/perf/util/help.c | 47 +++++++++++++++++++++++--- tools/perf/util/help.h | 4 ++- tools/perf/util/pager.c | 7 +++- tools/perf/util/parse-options.c | 68 +++++++++++++++++++++++-------------- tools/perf/util/parse-options.h | 2 +- tools/perf/util/run-command.c | 16 ++++++--- tools/perf/util/run-command.h | 2 ++ tools/perf/util/sigchain.c | 3 +- tools/perf/util/subcmd-util.h | 67 ++++++++++++++++++++++++++++++++++++ tools/perf/util/util.h | 14 -------- 11 files changed, 247 insertions(+), 58 deletions(-)
Quoted 5 lines
this duplicates functions that we have already in perf, I think we better move them into lib first..
strlcpy, die, xrealloc,ALLOC_GROWand probably some others...
The duplication was an intentional decision we made in the v2 discussion in order to keep the library's scope focused on 'subcmd'.
Signature · 1 line
Josh
Re: [PATCH v3 15/17] perf: Finalize subcmd independence
Quoted 20 lines · Josh Poimboeuf
Quoted 19 lines · Jiri Olsa
Quoted 17 lines · Josh Poimboeuf
For the files that will be moved to the subcmd library, remove all their perf-specific includes and duplicate any needed functionality.
Signed-off-by Josh Poimboeuf <[email protected]>--- tools/perf/util/exec_cmd.c | 75 +++++++++++++++++++++++++++++++++++++---- tools/perf/util/help.c | 47 +++++++++++++++++++++++--- tools/perf/util/help.h | 4 ++- tools/perf/util/pager.c | 7 +++- tools/perf/util/parse-options.c | 68 +++++++++++++++++++++++-------------- tools/perf/util/parse-options.h | 2 +- tools/perf/util/run-command.c | 16 ++++++--- tools/perf/util/run-command.h | 2 ++ tools/perf/util/sigchain.c | 3 +- tools/perf/util/subcmd-util.h | 67 ++++++++++++++++++++++++++++++++++++ tools/perf/util/util.h | 14 -------- 11 files changed, 247 insertions(+), 58 deletions(-)
Quoted 8 lines
Quoted 5 lines
this duplicates functions that we have already in perf, I think we better move them into lib first..
strlcpy, die, xrealloc,ALLOC_GROWand probably some others...
The duplication was an intentional decision we made in the v2 discussion in order to keep the library's scope focused on 'subcmd'.
I see, I haven't read those completely.. I guess we can unify it (librarize it) after this change is done
jirka
Arnaldo Carvalho de Melo
maintainerRe: [PATCH v3 15/17] perf: Finalize subcmd independence
In reply to Josh PoimboeufEm Mon, Dec 14, 2015 at 08:13:59AM -0600, Josh Poimboeuf escreveu:
Quoted 20 lines · Jiri Olsa
Quoted 19 lines · Josh Poimboeuf
Quoted 17 lines
For the files that will be moved to the subcmd library, remove all their perf-specific includes and duplicate any needed functionality.
Signed-off-by Josh Poimboeuf <[email protected]>--- tools/perf/util/exec_cmd.c | 75 +++++++++++++++++++++++++++++++++++++---- tools/perf/util/help.c | 47 +++++++++++++++++++++++--- tools/perf/util/help.h | 4 ++- tools/perf/util/pager.c | 7 +++- tools/perf/util/parse-options.c | 68 +++++++++++++++++++++++-------------- tools/perf/util/parse-options.h | 2 +- tools/perf/util/run-command.c | 16 ++++++--- tools/perf/util/run-command.h | 2 ++ tools/perf/util/sigchain.c | 3 +- tools/perf/util/subcmd-util.h | 67 ++++++++++++++++++++++++++++++++++++ tools/perf/util/util.h | 14 -------- 11 files changed, 247 insertions(+), 58 deletions(-)
Quoted 3 lines
Quoted 3 lines
this duplicates functions that we have already in perf, I think we better move them into lib first..
strlcpy, die, xrealloc,ALLOC_GROW
Some stuff should move to other, non-subcmd libraries that will then be used by both subcmd, tools/perf/, etc, while some we take the oportunity to kill, like die() and perhaps strbuf :-)
Quoted 4 lines
Quoted 1 line
and probably some others...
The duplication was an intentional decision we made in the v2 discussion in order to keep the library's scope focused on 'subcmd'.
Ok, I merged a good chunk now, will push soon.
- Arnaldo
PATCH v3 16/17 perf subcmd: Create subcmd library
In reply to Josh PoimboeufMove the subcommand-related files from perf to a new library named libsubcmd.a.
Since we're moving files anyway, go ahead and rename 'exec_cmd.*' to 'exec-cmd.*' to be consistent with the naming of all the other files.
---
tools/lib/subcmd/Build | 6 +++
tools/lib/subcmd/Makefile | 48 ++++++++++++++++++++++
.../util/exec_cmd.c => lib/subcmd/exec-cmd.c} | 2 +-
.../util/exec_cmd.h => lib/subcmd/exec-cmd.h} | 0
tools/{perf/util => lib/subcmd}/help.c | 2 +-
tools/{perf/util => lib/subcmd}/help.h | 0
tools/{perf/util => lib/subcmd}/pager.c | 0
tools/{perf/util => lib/subcmd}/pager.h | 0
tools/{perf/util => lib/subcmd}/parse-options.c | 0
tools/{perf/util => lib/subcmd}/parse-options.h | 0
tools/{perf/util => lib/subcmd}/run-command.c | 2 +-
tools/{perf/util => lib/subcmd}/run-command.h | 0
tools/{perf/util => lib/subcmd}/sigchain.c | 0
tools/{perf/util => lib/subcmd}/sigchain.h | 0
tools/{perf/util => lib/subcmd}/subcmd-util.h | 0
tools/perf/MANIFEST | 1 +
tools/perf/Makefile.perf | 20 +++++++--
tools/perf/arch/x86/util/intel-pt.c | 2 +-
tools/perf/bench/futex-hash.c | 2 +-
tools/perf/bench/futex-lock-pi.c | 2 +-
tools/perf/bench/futex-requeue.c | 2 +-
tools/perf/bench/futex-wake-parallel.c | 2 +-
tools/perf/bench/futex-wake.c | 2 +-
tools/perf/bench/mem-functions.c | 2 +-
tools/perf/bench/numa.c | 2 +-
tools/perf/bench/sched-messaging.c | 2 +-
tools/perf/bench/sched-pipe.c | 2 +-
tools/perf/builtin-annotate.c | 2 +-
tools/perf/builtin-bench.c | 2 +-
tools/perf/builtin-buildid-cache.c | 2 +-
tools/perf/builtin-buildid-list.c | 2 +-
tools/perf/builtin-config.c | 2 +-
tools/perf/builtin-data.c | 2 +-
tools/perf/builtin-evlist.c | 2 +-
tools/perf/builtin-help.c | 8 ++--
tools/perf/builtin-inject.c | 2 +-
tools/perf/builtin-kmem.c | 2 +-
tools/perf/builtin-kvm.c | 2 +-
tools/perf/builtin-list.c | 2 +-
tools/perf/builtin-lock.c | 2 +-
tools/perf/builtin-mem.c | 2 +-
tools/perf/builtin-probe.c | 2 +-
tools/perf/builtin-record.c | 2 +-
tools/perf/builtin-report.c | 2 +-
tools/perf/builtin-sched.c | 2 +-
tools/perf/builtin-script.c | 4 +-
tools/perf/builtin-stat.c | 2 +-
tools/perf/builtin-timechart.c | 2 +-
tools/perf/builtin-top.c | 2 +-
tools/perf/builtin-trace.c | 4 +-
tools/perf/perf.c | 6 +--
tools/perf/tests/attr.c | 2 +-
tools/perf/tests/builtin-test.c | 2 +-
tools/perf/util/Build | 6 ---
tools/perf/util/auxtrace.c | 2 +-
tools/perf/util/cache.h | 2 +-
tools/perf/util/cgroup.c | 2 +-
tools/perf/util/config.c | 2 +-
tools/perf/util/evlist.c | 2 +-
tools/perf/util/help-unknown-cmd.c | 2 +-
tools/perf/util/parse-branch-options.c | 2 +-
tools/perf/util/parse-events.c | 4 +-
tools/perf/util/parse-regs-options.c | 2 +-
tools/perf/util/sort.h | 2 +-
64 files changed, 128 insertions(+), 67 deletions(-)
create mode 100644 tools/lib/subcmd/Build
create mode 100644 tools/lib/subcmd/Makefile
rename tools/{perf/util/exec_cmd.c => lib/subcmd/exec-cmd.c} (99%)
rename tools/{perf/util/exec_cmd.h => lib/subcmd/exec-cmd.h} (100%)
rename tools/{perf/util => lib/subcmd}/help.c (99%)
rename tools/{perf/util => lib/subcmd}/help.h (100%)
rename tools/{perf/util => lib/subcmd}/pager.c (100%)
rename tools/{perf/util => lib/subcmd}/pager.h (100%)
rename tools/{perf/util => lib/subcmd}/parse-options.c (100%)
rename tools/{perf/util => lib/subcmd}/parse-options.h (100%)
rename tools/{perf/util => lib/subcmd}/run-command.c (99%)
rename tools/{perf/util => lib/subcmd}/run-command.h (100%)
rename tools/{perf/util => lib/subcmd}/sigchain.c (100%)
rename tools/{perf/util => lib/subcmd}/sigchain.h (100%)
rename tools/{perf/util => lib/subcmd}/subcmd-util.h (100%)tools/lib/subcmd/Build new file +6 -0
@@ -0,0 +1,6 @@ +libsubcmd-y += exec-cmd.o +libsubcmd-y += help.o +libsubcmd-y += pager.o +libsubcmd-y += parse-options.o +libsubcmd-y += run-command.o +libsubcmd-y += sigchain.o
tools/lib/subcmd/Makefile new file +48 -0
48 lines not on this page · raw message
tools/lib/subcmd/exec-cmd.c renamed from tools/perf/util/exec_cmd.c +1 -1
@@ -6,7 +6,7 @@#include <stdlib.h> #include <stdio.h> #include "subcmd-util.h" -#include "exec_cmd.h" +#include "exec-cmd.h" #define MAX_ARGS 32#define PATH_MAX 4096
tools/lib/subcmd/exec-cmd.h renamed from tools/perf/util/exec_cmd.h +0 -0
tools/lib/subcmd/help.c renamed from tools/perf/util/help.c +1 -1
@@ -9,7 +9,7 @@#include <dirent.h> #include "subcmd-util.h" #include "help.h" -#include "exec_cmd.h" +#include "exec-cmd.h" void add_cmdname (struct cmdnames *cmds,const char *name,size_t len) {
tools/lib/subcmd/help.h renamed from tools/perf/util/help.h +0 -0
tools/lib/subcmd/pager.c renamed from tools/perf/util/pager.c +0 -0
tools/lib/subcmd/pager.h renamed from tools/perf/util/pager.h +0 -0
tools/lib/subcmd/parse-options.c renamed from tools/perf/util/parse-options.c +0 -0
tools/lib/subcmd/parse-options.h renamed from tools/perf/util/parse-options.h +0 -0
tools/lib/subcmd/run-command.c renamed from tools/perf/util/run-command.c +1 -1
@@ -7,7 +7,7 @@#include <sys/wait.h> #include "subcmd-util.h" #include "run-command.h" -#include "exec_cmd.h" +#include "exec-cmd.h" #define STRERR_BUFSIZE 128
tools/lib/subcmd/run-command.h renamed from tools/perf/util/run-command.h +0 -0
tools/lib/subcmd/sigchain.c renamed from tools/perf/util/sigchain.c +0 -0
tools/lib/subcmd/sigchain.h renamed from tools/perf/util/sigchain.h +0 -0
tools/lib/subcmd/subcmd-util.h renamed from tools/perf/util/subcmd-util.h +0 -0
tools/perf/MANIFEST +1 -0
@@ -20,6 +20,7 @@ tools/lib/traceevent tools/lib/bpf tools/lib/api tools/lib/bpf +tools/lib/subcmd tools/lib/hweight.c tools/lib/rbtree.c tools/lib/string.c
tools/perf/Makefile.perf +16 -4
@@ -145,9 +145,10 @@ BISON = bison STRIP = strip AWK = awk -LIB_DIR = $(srctree)/tools/lib/api/ +LIB_DIR = $(srctree)/tools/lib/api/ TRACE_EVENT_DIR = $(srctree)/tools/lib/traceevent/ -BPF_DIR = $(srctree)/tools/lib/bpf/ +BPF_DIR = $(srctree)/tools/lib/bpf/ +SUBCMD_DIR = $(srctree)/tools/lib/subcmd/ # include config/Makefile by default and rule out # non-config cases
@@ -184,6 +185,7 @@ strip-libs = $(filter-out -l%,$(1)) ifneq ($(OUTPUT),) TE_PATH=$(OUTPUT) BPF_PATH=$(OUTPUT) + SUBCMD_PATH=$(OUTPUT) ifneq ($(subdir),) API_PATH=$(OUTPUT)/../lib/api/ else
@@ -193,6 +195,7 @@ else TE_PATH=$(TRACE_EVENT_DIR) API_PATH=$(LIB_DIR) BPF_PATH=$(BPF_DIR) + SUBCMD_PATH=$(SUBCMD_DIR) endif LIBTRACEEVENT = $(TE_PATH)libtraceevent.a
@@ -206,6 +209,8 @@ export LIBAPI LIBBPF = $(BPF_PATH)libbpf.a +LIBSUBCMD = $(SUBCMD_PATH)libsubcmd.a + # python extension build directories PYTHON_EXTBUILD := $(OUTPUT)python_ext_build/ PYTHON_EXTBUILD_LIB := $(PYTHON_EXTBUILD)lib/
@@ -257,7 +262,7 @@ export PERL_PATH LIB_FILE=$(OUTPUT)libperf.a -PERFLIBS = $(LIB_FILE) $(LIBAPI) $(LIBTRACEEVENT) +PERFLIBS = $(LIB_FILE) $(LIBAPI) $(LIBTRACEEVENT) $(LIBSUBCMD) ifndef NO_LIBBPF PERFLIBS += $(LIBBPF) endif
@@ -437,6 +442,13 @@ $(LIBBPF)-clean: $(call QUIET_CLEAN, libbpf) $(Q)$(MAKE) -C $(BPF_DIR) O=$(OUTPUT) clean >/dev/null +$(LIBSUBCMD): fixdep FORCE + $(Q)$(MAKE) -C $(SUBCMD_DIR) O=$(OUTPUT) $(OUTPUT)libsubcmd.a + +$(LIBSUBCMD)-clean: + $(call QUIET_CLEAN, libsubcmd) + $(Q)$(MAKE) -C $(SUBCMD_DIR) O=$(OUTPUT) clean + help: @echo 'Perf make targets:' @echo ' doc - make *all* documentation (see below)'
@@ -584,7 +596,7 @@ config-clean: $(call QUIET_CLEAN, config) $(Q)$(MAKE) -C $(srctree)/tools/build/feature/ $(if $(OUTPUT),OUTPUT=$(OUTPUT)feature/,) clean >/dev/null -clean: $(LIBTRACEEVENT)-clean $(LIBAPI)-clean $(LIBBPF)-clean config-clean +clean: $(LIBTRACEEVENT)-clean $(LIBAPI)-clean $(LIBBPF)-clean $(LIBSUBCMD)-clean config-clean $(call QUIET_CLEAN, core-objs) $(RM) $(LIB_FILE) $(OUTPUT)perf-archive $(OUTPUT)perf-with-kcore $(LANG_BINDINGS) $(Q)find $(if $(OUTPUT),$(OUTPUT),.) -name '*.o' -delete -o -name '\.*.cmd' -delete -o -name '\.*.d' -delete $(Q)$(RM) $(OUTPUT).config-detected
tools/perf/arch/x86/util/intel-pt.c +1 -1
@@ -26,7 +26,7 @@#include "../../util/evlist.h" #include "../../util/evsel.h" #include "../../util/cpumap.h" -#include "../../util/parse-options.h" +#include <subcmd/parse-options.h> #include "../../util/parse-events.h" #include "../../util/pmu.h" #include "../../util/debug.h"
tools/perf/bench/futex-hash.c +1 -1
@@ -11,7 +11,7 @@#include "../perf.h" #include "../util/util.h" #include "../util/stat.h" -#include "../util/parse-options.h" +#include <subcmd/parse-options.h> #include "../util/header.h" #include "bench.h" #include "futex.h"
tools/perf/bench/futex-lock-pi.c +1 -1
@@ -5,7 +5,7 @@#include "../perf.h" #include "../util/util.h" #include "../util/stat.h" -#include "../util/parse-options.h" +#include <subcmd/parse-options.h> #include "../util/header.h" #include "bench.h" #include "futex.h"
tools/perf/bench/futex-requeue.c +1 -1
@@ -11,7 +11,7 @@#include "../perf.h" #include "../util/util.h" #include "../util/stat.h" -#include "../util/parse-options.h" +#include <subcmd/parse-options.h> #include "../util/header.h" #include "bench.h" #include "futex.h"
tools/perf/bench/futex-wake-parallel.c +1 -1
@@ -10,7 +10,7 @@#include "../perf.h" #include "../util/util.h" #include "../util/stat.h" -#include "../util/parse-options.h" +#include <subcmd/parse-options.h> #include "../util/header.h" #include "bench.h" #include "futex.h"
tools/perf/bench/futex-wake.c +1 -1
@@ -11,7 +11,7 @@#include "../perf.h" #include "../util/util.h" #include "../util/stat.h" -#include "../util/parse-options.h" +#include <subcmd/parse-options.h> #include "../util/header.h" #include "bench.h" #include "futex.h"
tools/perf/bench/mem-functions.c +1 -1
@@ -8,7 +8,7 @@#include "../perf.h" #include "../util/util.h" -#include "../util/parse-options.h" +#include <subcmd/parse-options.h> #include "../util/header.h" #include "../util/cloexec.h" #include "bench.h"
tools/perf/bench/numa.c +1 -1
@@ -7,7 +7,7 @@#include "../perf.h" #include "../builtin.h" #include "../util/util.h" -#include "../util/parse-options.h" +#include <subcmd/parse-options.h> #include "../util/cloexec.h" #include "bench.h"
tools/perf/bench/sched-messaging.c +1 -1
@@ -11,7 +11,7 @@#include "../perf.h" #include "../util/util.h" -#include "../util/parse-options.h" +#include <subcmd/parse-options.h> #include "../builtin.h" #include "bench.h"
tools/perf/bench/sched-pipe.c +1 -1
@@ -10,7 +10,7 @@*/ #include "../perf.h" #include "../util/util.h" -#include "../util/parse-options.h" +#include <subcmd/parse-options.h> #include "../builtin.h" #include "bench.h"
tools/perf/builtin-annotate.c +1 -1
@@ -21,7 +21,7 @@#include "util/evsel.h" #include "util/annotate.h" #include "util/event.h" -#include "util/parse-options.h" +#include <subcmd/parse-options.h> #include "util/parse-events.h" #include "util/thread.h" #include "util/sort.h"
tools/perf/builtin-bench.c +1 -1
@@ -16,7 +16,7 @@*/ #include "perf.h" #include "util/util.h" -#include "util/parse-options.h" +#include <subcmd/parse-options.h> #include "builtin.h" #include "bench/bench.h"
tools/perf/builtin-buildid-cache.c +1 -1
@@ -16,7 +16,7 @@#include "util/cache.h" #include "util/debug.h" #include "util/header.h" -#include "util/parse-options.h" +#include <subcmd/parse-options.h> #include "util/strlist.h" #include "util/build-id.h" #include "util/session.h"
tools/perf/builtin-buildid-list.c +1 -1
@@ -12,7 +12,7 @@#include "util/build-id.h" #include "util/cache.h" #include "util/debug.h" -#include "util/parse-options.h" +#include <subcmd/parse-options.h> #include "util/session.h" #include "util/symbol.h" #include "util/data.h"
tools/perf/builtin-config.c +1 -1
@@ -9,7 +9,7 @@#include "perf.h" #include "util/cache.h" -#include "util/parse-options.h" +#include <subcmd/parse-options.h> #include "util/util.h" #include "util/debug.h"
tools/perf/builtin-data.c +1 -1
@@ -2,7 +2,7 @@#include "builtin.h" #include "perf.h" #include "debug.h" -#include "parse-options.h" +#include <subcmd/parse-options.h> #include "data-convert-bt.h" typedef int (*data_cmd_fn_t )(int argc,const char **argv,const char *prefix);
tools/perf/builtin-evlist.c +1 -1
@@ -12,7 +12,7 @@#include "util/evlist.h" #include "util/evsel.h" #include "util/parse-events.h" -#include "util/parse-options.h" +#include <subcmd/parse-options.h> #include "util/session.h" #include "util/data.h" #include "util/debug.h"
tools/perf/builtin-help.c +4 -4
@@ -6,11 +6,11 @@#include "perf.h" #include "util/cache.h" #include "builtin.h" -#include "util/exec_cmd.h" +#include <subcmd/exec-cmd.h> #include "common-cmds.h" -#include "util/parse-options.h" -#include "util/run-command.h" -#include "util/help.h" +#include <subcmd/parse-options.h> +#include <subcmd/run-command.h> +#include <subcmd/help.h> #include "util/debug.h" static struct man_viewer_list {
tools/perf/builtin-inject.c +1 -1
@@ -18,7 +18,7 @@#include "util/data.h" #include "util/auxtrace.h" -#include "util/parse-options.h" +#include <subcmd/parse-options.h> #include <linux/list.h>
tools/perf/builtin-kmem.c +1 -1
@@ -12,7 +12,7 @@#include "util/tool.h" #include "util/callchain.h" -#include "util/parse-options.h" +#include <subcmd/parse-options.h> #include "util/trace-event.h" #include "util/data.h" #include "util/cpumap.h"
tools/perf/builtin-kvm.c +1 -1
@@ -10,7 +10,7 @@#include "util/header.h" #include "util/session.h" #include "util/intlist.h" -#include "util/parse-options.h" +#include <subcmd/parse-options.h> #include "util/trace-event.h" #include "util/debug.h" #include "util/tool.h"
tools/perf/builtin-list.c +1 -1
@@ -14,7 +14,7 @@#include "util/parse-events.h" #include "util/cache.h" #include "util/pmu.h" -#include "util/parse-options.h" +#include <subcmd/parse-options.h> int cmd_list (int argc,const char **argv,const char *prefix__maybe_unused ) {
tools/perf/builtin-lock.c +1 -1
@@ -9,7 +9,7 @@#include "util/thread.h" #include "util/header.h" -#include "util/parse-options.h" +#include <subcmd/parse-options.h> #include "util/trace-event.h" #include "util/debug.h"
tools/perf/builtin-mem.c +1 -1
@@ -1,7 +1,7 @@#include "builtin.h" #include "perf.h" -#include "util/parse-options.h" +#include <subcmd/parse-options.h> #include "util/trace-event.h" #include "util/tool.h" #include "util/session.h"
tools/perf/builtin-probe.c +1 -1
@@ -37,7 +37,7 @@#include "util/strfilter.h" #include "util/symbol.h" #include "util/debug.h" -#include "util/parse-options.h" +#include <subcmd/parse-options.h> #include "util/probe-finder.h" #include "util/probe-event.h" #include "util/probe-file.h"
tools/perf/builtin-record.c +1 -1
@@ -11,7 +11,7 @@#include "util/build-id.h" #include "util/util.h" -#include "util/parse-options.h" +#include <subcmd/parse-options.h> #include "util/parse-events.h" #include "util/callchain.h"
tools/perf/builtin-report.c +1 -1
@@ -27,7 +27,7 @@#include "util/session.h" #include "util/tool.h" -#include "util/parse-options.h" +#include <subcmd/parse-options.h> #include "util/parse-events.h" #include "util/thread.h"
tools/perf/builtin-sched.c +1 -1
@@ -12,7 +12,7 @@#include "util/tool.h" #include "util/cloexec.h" -#include "util/parse-options.h" +#include <subcmd/parse-options.h> #include "util/trace-event.h" #include "util/debug.h"
tools/perf/builtin-script.c +2 -2
@@ -3,9 +3,9 @@#include "perf.h" #include "util/cache.h" #include "util/debug.h" -#include "util/exec_cmd.h" +#include <subcmd/exec-cmd.h> #include "util/header.h" -#include "util/parse-options.h" +#include <subcmd/parse-options.h> #include "util/perf_regs.h" #include "util/session.h" #include "util/tool.h"
tools/perf/builtin-stat.c +1 -1
@@ -45,7 +45,7 @@#include "builtin.h" #include "util/cgroup.h" #include "util/util.h" -#include "util/parse-options.h" +#include <subcmd/parse-options.h> #include "util/parse-events.h" #include "util/pmu.h" #include "util/event.h"
tools/perf/builtin-timechart.c +1 -1
@@ -30,7 +30,7 @@#include "perf.h" #include "util/header.h" -#include "util/parse-options.h" +#include <subcmd/parse-options.h> #include "util/parse-events.h" #include "util/event.h" #include "util/session.h"
tools/perf/builtin-top.c +1 -1
@@ -34,7 +34,7 @@#include "util/top.h" #include "util/util.h" #include <linux/rbtree.h> -#include "util/parse-options.h" +#include <subcmd/parse-options.h> #include "util/parse-events.h" #include "util/cpumap.h" #include "util/xyarray.h"
tools/perf/builtin-trace.c +2 -2
@@ -22,11 +22,11 @@#include "util/color.h" #include "util/debug.h" #include "util/evlist.h" -#include "util/exec_cmd.h" +#include <subcmd/exec-cmd.h> #include "util/machine.h" #include "util/session.h" #include "util/thread.h" -#include "util/parse-options.h" +#include <subcmd/parse-options.h> #include "util/strlist.h" #include "util/intlist.h" #include "util/thread_map.h"
tools/perf/perf.c +3 -3
@@ -9,12 +9,12 @@#include "builtin.h" #include "util/env.h" -#include "util/exec_cmd.h" +#include <subcmd/exec-cmd.h> #include "util/cache.h" #include "util/quote.h" -#include "util/run-command.h" +#include <subcmd/run-command.h> #include "util/parse-events.h" -#include "util/parse-options.h" +#include <subcmd/parse-options.h> #include "util/bpf-loader.h" #include "util/debug.h" #include <api/fs/tracing_path.h>
tools/perf/tests/attr.c +1 -1
@@ -24,7 +24,7 @@#include <linux/kernel.h> #include "../perf.h" #include "util.h" -#include "exec_cmd.h" +#include <subcmd/exec-cmd.h> #include "tests.h" #define ENV "PERF_TEST_ATTR"
tools/perf/tests/builtin-test.c +1 -1
@@ -11,7 +11,7 @@#include "tests.h" #include "debug.h" #include "color.h" -#include "parse-options.h" +#include <subcmd/parse-options.h> #include "symbol.h" struct test __weak arch_tests[] = {
tools/perf/util/Build +0 -6
@@ -9,13 +9,10 @@ libperf-y += env.o libperf-y += event.o libperf-y += evlist.o libperf-y += evsel.o -libperf-y += exec_cmd.o libperf-y += find_next_bit.o -libperf-y += help.o libperf-y += kallsyms.o libperf-y += levenshtein.o libperf-y += llvm-utils.o -libperf-y += parse-options.o libperf-y += parse-events.o libperf-y += perf_regs.o libperf-y += path.o
@@ -23,7 +20,6 @@ libperf-y += rbtree.o libperf-y += libstring.o libperf-y += bitmap.o libperf-y += hweight.o -libperf-y += run-command.o libperf-y += quote.o libperf-y += strbuf.o libperf-y += string.o
@@ -32,11 +28,9 @@ libperf-y += strfilter.o libperf-y += top.o libperf-y += usage.o libperf-y += wrapper.o -libperf-y += sigchain.o libperf-y += dso.o libperf-y += symbol.o libperf-y += color.o -libperf-y += pager.o libperf-y += header.o libperf-y += callchain.o libperf-y += values.o
tools/perf/util/auxtrace.c +1 -1
@@ -45,7 +45,7 @@#include "event.h" #include "session.h" #include "debug.h" -#include "parse-options.h" +#include <subcmd/parse-options.h> #include "intel-pt.h" #include "intel-bts.h"
tools/perf/util/cache.h +1 -1
@@ -4,7 +4,7 @@#include <stdbool.h> #include "util.h" #include "strbuf.h" -#include "pager.h" +#include <subcmd/pager.h> #include "../perf.h" #include "../ui/ui.h"
tools/perf/util/cgroup.c +1 -1
@@ -1,6 +1,6 @@#include "util.h" #include "../perf.h" -#include "parse-options.h" +#include <subcmd/parse-options.h> #include "evsel.h" #include "cgroup.h" #include "evlist.h"
tools/perf/util/config.c +1 -1
@@ -10,7 +10,7 @@*/ #include "util.h" #include "cache.h" -#include "exec_cmd.h" +#include <subcmd/exec-cmd.h> #include "util/hist.h" /* perf_hist_config */ #include "util/llvm-utils.h" /* perf_llvm_config */
tools/perf/util/evlist.c +1 -1
@@ -18,7 +18,7 @@#include <unistd.h> #include "parse-events.h" -#include "parse-options.h" +#include <subcmd/parse-options.h> #include <sys/mman.h>
tools/perf/util/help-unknown-cmd.c +1 -1
@@ -1,5 +1,5 @@#include "cache.h" -#include "help.h" +#include <subcmd/help.h> #include "../builtin.h" #include "levenshtein.h"
tools/perf/util/parse-branch-options.c +1 -1
@@ -1,7 +1,7 @@#include "perf.h" #include "util/util.h" #include "util/debug.h" -#include "util/parse-options.h" +#include <subcmd/parse-options.h> #include "util/parse-branch-options.h" #define BRANCH_OPT (n, m) \
tools/perf/util/parse-events.c +2 -2
@@ -4,9 +4,9 @@#include "../perf.h" #include "evlist.h" #include "evsel.h" -#include "parse-options.h" +#include <subcmd/parse-options.h> #include "parse-events.h" -#include "exec_cmd.h" +#include <subcmd/exec-cmd.h> #include "string.h" #include "symbol.h" #include "cache.h"
tools/perf/util/parse-regs-options.c +1 -1
@@ -1,7 +1,7 @@#include "perf.h" #include "util/util.h" #include "util/debug.h" -#include "util/parse-options.h" +#include <subcmd/parse-options.h> #include "util/parse-regs-options.h" int
tools/perf/util/sort.h +1 -1
@@ -18,7 +18,7 @@#include "debug.h" #include "header.h" -#include "parse-options.h" +#include <subcmd/parse-options.h> #include "parse-events.h" #include "hist.h" #include "thread.h"
Signature · 1 line
2.4.3
PATCH v3 17/17 tools subcmd: Rename subcmd header include guards
In reply to Josh Poimboeuf--- tools/lib/subcmd/exec-cmd.h | 6 +++--- tools/lib/subcmd/help.h | 6 +++--- tools/lib/subcmd/pager.h | 6 +++--- tools/lib/subcmd/parse-options.h | 7 ++++--- tools/lib/subcmd/run-command.h | 6 +++--- tools/lib/subcmd/sigchain.h | 6 +++--- tools/lib/subcmd/subcmd-util.h | 6 +++--- 7 files changed, 22 insertions(+), 21 deletions(-)
tools/lib/subcmd/exec-cmd.h +3 -3
@@ -1,5 +1,5 @@ -#ifndef __PERF_EXEC_CMD_H -#define __PERF_EXEC_CMD_H +#ifndef __SUBCMD_EXEC_CMD_H +#define __SUBCMD_EXEC_CMD_Hextern void exec_cmd_init (const char *exec_name,const char *prefix,const char *exec_path,const char *exec_path_env);
@@ -13,4 +13,4 @@ extern int execl_cmd(const char *cmd, ...);extern char *get_argv_exec_path (void );extern char *system_path (const char *path); -#endif /* __PERF_EXEC_CMD_H */ +#endif /* __SUBCMD_EXEC_CMD_H */
tools/lib/subcmd/help.h +3 -3
@@ -1,5 +1,5 @@ -#ifndef __PERF_HELP_H -#define __PERF_HELP_H +#ifndef __SUBCMD_HELP_H +#define __SUBCMD_HELP_H#include <sys/types.h>
@@ -31,4 +31,4 @@ int is_in_cmdlist(struct cmdnames *c, const char *s);void list_commands (const char *title,struct cmdnames *main_cmds,struct cmdnames *other_cmds); -#endif /* __PERF_HELP_H */ +#endif /* __SUBCMD_HELP_H */
tools/lib/subcmd/pager.h +3 -3
@@ -1,9 +1,9 @@ -#ifndef __PERF_PAGER_H -#define __PERF_PAGER_H +#ifndef __SUBCMD_PAGER_H +#define __SUBCMD_PAGER_Hextern void pager_init (const char *pager_env);extern void setup_pager (void );extern int pager_in_use (void ); -#endif /* __PERF_PAGER_H */ +#endif /* __SUBCMD_PAGER_H */
tools/lib/subcmd/parse-options.h +4 -3
@@ -1,5 +1,5 @@ -#ifndef __PERF_PARSE_OPTIONS_H -#define __PERF_PARSE_OPTIONS_H +#ifndef __SUBCMD_PARSE_OPTIONS_H +#define __SUBCMD_PARSE_OPTIONS_H#include <stdbool.h> #include <stdint.h>
@@ -222,4 +222,5 @@ extern int parse_opt_verbosity_cb(const struct option *, const char *, int);extern const char *parse_options_fix_filename (const char *prefix,const char *file);void set_option_flag (struct option *opts,int sopt,const char *lopt,int flag); -#endif /* __PERF_PARSE_OPTIONS_H */ + +#endif /* __SUBCMD_PARSE_OPTIONS_H */
tools/lib/subcmd/run-command.h +3 -3
@@ -1,5 +1,5 @@ -#ifndef __PERF_RUN_COMMAND_H -#define __PERF_RUN_COMMAND_H +#ifndef __SUBCMD_RUN_COMMAND_H +#define __SUBCMD_RUN_COMMAND_H#include <unistd.h>
@@ -57,4 +57,4 @@ int run_command(struct child_process *);#define RUN_COMMAND_STDOUT_TO_STDERR 4int run_command_v_opt (const char **argv,int opt); -#endif /* __PERF_RUN_COMMAND_H */ +#endif /* __SUBCMD_RUN_COMMAND_H */
tools/lib/subcmd/sigchain.h +3 -3
@@ -1,5 +1,5 @@ -#ifndef __PERF_SIGCHAIN_H -#define __PERF_SIGCHAIN_H +#ifndef __SUBCMD_SIGCHAIN_H +#define __SUBCMD_SIGCHAIN_Htypedef void (*sigchain_fun )(int );
@@ -7,4 +7,4 @@ int sigchain_pop(int sig);void sigchain_push_common (sigchain_fun f); -#endif /* __PERF_SIGCHAIN_H */ +#endif /* __SUBCMD_SIGCHAIN_H */
tools/lib/subcmd/subcmd-util.h +3 -3
@@ -1,5 +1,5 @@ -#ifndef __PERF_SUBCMD_UTIL_H -#define __PERF_SUBCMD_UTIL_H +#ifndef __SUBCMD_UTIL_H +#define __SUBCMD_UTIL_H#include <stdarg.h> #include <stdlib.h>
@@ -88,4 +88,4 @@ static inline int prefixcmp(const char *str, const char *prefix) return (unsigned char)*prefix - (unsigned char)*str; } -#endif /* __PERF_SUBCMD_UTIL_H */ +#endif /* __SUBCMD_UTIL_H */
Signature · 1 line
2.4.3