linux-yocto-3.2/standard/base: perf scripting updates
cover linux-yocto-3.2/standard/base: perf scripting updates
From: Tom Zanussi <[email protected]>
This patchset comprises the kernel side of the modifications needed to enable the Perl and Python bindings for perf scripting.
Please pull into linux-yocto-3.2 standard/base.
Thanks,
Tom
The following changes are available in the git repository at:
git://git.yoctoproject.org/linux-yocto-2.6.37-contrib.git tzanussi/3.2-perf-scripting-standard-base
http://git.yoctoproject.org/cgit/cgit.cgi/linux-yocto-2.6.37-contrib/log/?h=tzanussi/3.2-perf-scripting-standard-base
Tom Zanussi (4):
Revert "perf: hard-code NO_LIBPERL/NO_LIBPYTHON"
perf: use pkg-config instead of python-config
perf: add 'libperl not found' warning
perf: change --root to --prefix for python install
tools/perf/Makefile | 90 +++++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 87 insertions(+), 3 deletions(-)
PATCH 1/4 Revert "perf: hard-code NO_LIBPERL/NO_LIBPYTHON"
From: Tom Zanussi <[email protected]>
This reverts commit 417fc778a86e81303bab5883b919ee422ec51c04.
LIBPERL and LIBPYTHON can now be enabled using the 'perf-scripting' feature.
--- tools/perf/Makefile | 87 +++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 85 insertions(+), 2 deletions(-)
tools/perf/Makefile +85 -2
@@ -480,14 +480,97 @@ else endif endif -BASIC_CFLAGS += -DNO_LIBPERL -BASIC_CFLAGS += -DNO_LIBPYTHON +ifdef NO_LIBPERL + BASIC_CFLAGS += -DNO_LIBPERL +else + PERL_EMBED_LDOPTS = $(shell perl -MExtUtils::Embed -e ldopts 2>/dev/null) + PERL_EMBED_LDFLAGS = $(call strip-libs,$(PERL_EMBED_LDOPTS)) + 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) + + ifneq ($(call try-cc,$(SOURCE_PERL_EMBED),$(FLAGS_PERL_EMBED)),y) + BASIC_CFLAGS += -DNO_LIBPERL + else + ALL_LDFLAGS += $(PERL_EMBED_LDFLAGS) + EXTLIBS += $(PERL_EMBED_LIBADD) + LIB_OBJS += $(OUTPUT)util/scripting-engines/trace-event-perl.o + LIB_OBJS += $(OUTPUT)scripts/perl/Perf-Trace-Util/Context.o + endif +endif + +disable-python = $(eval $(disable-python_code)) +define disable-python_code + BASIC_CFLAGS += -DNO_LIBPYTHON + $(if $(1),$(warning No $(1) was found)) + $(warning Python support won't be built) +endef override PYTHON := \ $(call get-executable-or-default,PYTHON,python) ifndef PYTHON $(call disable-python,python interpreter) + python-clean := +else + + PYTHON_WORD := $(call shell-wordify,$(PYTHON)) + + # python extension build directories + PYTHON_EXTBUILD := $(OUTPUT)python_ext_build/ + PYTHON_EXTBUILD_LIB := $(PYTHON_EXTBUILD)lib/ + PYTHON_EXTBUILD_TMP := $(PYTHON_EXTBUILD)tmp/ + export PYTHON_EXTBUILD_LIB PYTHON_EXTBUILD_TMP + + python-clean := rm -rf $(PYTHON_EXTBUILD) $(OUTPUT)python/perf.so + + ifdef NO_LIBPYTHON + $(call disable-python) + else + + override PYTHON_CONFIG := \ + $(call get-executable-or-default,PYTHON_CONFIG,$(PYTHON)-config) + + ifndef PYTHON_CONFIG + $(call disable-python,python-config tool) + else + + PYTHON_CONFIG_SQ := $(call shell-sq,$(PYTHON_CONFIG)) + + PYTHON_EMBED_LDOPTS := $(shell $(PYTHON_CONFIG_SQ) --ldflags 2>/dev/null) + PYTHON_EMBED_LDFLAGS := $(call strip-libs,$(PYTHON_EMBED_LDOPTS)) + PYTHON_EMBED_LIBADD := $(call grep-libs,$(PYTHON_EMBED_LDOPTS)) + PYTHON_EMBED_CCOPTS := $(shell $(PYTHON_CONFIG_SQ) --cflags 2>/dev/null) + FLAGS_PYTHON_EMBED := $(PYTHON_EMBED_CCOPTS) $(PYTHON_EMBED_LDOPTS) + + ifneq ($(call try-cc,$(SOURCE_PYTHON_EMBED),$(FLAGS_PYTHON_EMBED)),y) + $(call disable-python,Python.h (for Python 2.x)) + else + + ifneq ($(call try-cc,$(SOURCE_PYTHON_VERSION),$(FLAGS_PYTHON_EMBED)),y) + $(warning Python 3 is not yet supported; please set) + $(warning PYTHON and/or PYTHON_CONFIG appropriately.) + $(warning If you also have Python 2 installed, then) + $(warning try something like:) + $(warning $(and ,)) + $(warning $(and ,) make PYTHON=python2) + $(warning $(and ,)) + $(warning Otherwise, disable Python support entirely:) + $(warning $(and ,)) + $(warning $(and ,) make NO_LIBPYTHON=1) + $(warning $(and ,)) + $(error $(and ,)) + else + ALL_LDFLAGS += $(PYTHON_EMBED_LDFLAGS) + EXTLIBS += $(PYTHON_EMBED_LIBADD) + LIB_OBJS += $(OUTPUT)util/scripting-engines/trace-event-python.o + LIB_OBJS += $(OUTPUT)scripts/python/Perf-Trace-Util/Context.o + LANG_BINDINGS += $(OUTPUT)python/perf.so + endif + + endif + endif + endif endif ifdef NO_DEMANGLE
Signature · 1 line
1.7.0.4
PATCH 2/4 perf: use pkg-config instead of python-config
From: Tom Zanussi <[email protected]>
Python has build flags available via pkg-config, use those at build-time instead.
--- tools/perf/Makefile | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-)
tools/perf/Makefile +2 -2
@@ -537,10 +537,10 @@ else PYTHON_CONFIG_SQ := $(call shell-sq,$(PYTHON_CONFIG)) - PYTHON_EMBED_LDOPTS := $(shell $(PYTHON_CONFIG_SQ) --ldflags 2>/dev/null) + PYTHON_EMBED_LDOPTS := $(shell pkg-config --libs python 2>/dev/null) PYTHON_EMBED_LDFLAGS := $(call strip-libs,$(PYTHON_EMBED_LDOPTS)) PYTHON_EMBED_LIBADD := $(call grep-libs,$(PYTHON_EMBED_LDOPTS)) - PYTHON_EMBED_CCOPTS := $(shell $(PYTHON_CONFIG_SQ) --cflags 2>/dev/null) + PYTHON_EMBED_CCOPTS := $(shell pkg-config --cflags python 2>/dev/null) FLAGS_PYTHON_EMBED := $(PYTHON_EMBED_CCOPTS) $(PYTHON_EMBED_LDOPTS) ifneq ($(call try-cc,$(SOURCE_PYTHON_EMBED),$(FLAGS_PYTHON_EMBED)),y)
Signature · 1 line
1.7.0.4
PATCH 3/4 perf: add 'libperl not found' warning
In reply to [email protected]From: Tom Zanussi <[email protected]>
If libperl isn't found, display a message to that effect along with some hints on how to fix it.
--- tools/perf/Makefile | 1 + 1 files changed, 1 insertions(+), 0 deletions(-)
tools/perf/Makefile +1 -0
@@ -490,6 +490,7 @@ else FLAGS_PERL_EMBED=$(PERL_EMBED_CCOPTS) $(PERL_EMBED_LDOPTS) ifneq ($(call try-cc,$(SOURCE_PERL_EMBED),$(FLAGS_PERL_EMBED)),y) + msg := $(warning libperl not found, disables Perl scripting support. Please install libperl-dev or perl-devel); BASIC_CFLAGS += -DNO_LIBPERL else ALL_LDFLAGS += $(PERL_EMBED_LDFLAGS)
Signature · 1 line
1.7.0.4
PATCH 4/4 perf: change --root to --prefix for python install
In reply to [email protected]From: Tom Zanussi <[email protected]>
Otherwise we get the sysroot path appended to the build path, not what we want.
--- tools/perf/Makefile | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)
tools/perf/Makefile +1 -1
@@ -878,7 +878,7 @@ install: all $(INSTALL) scripts/python/bin/* -t '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/scripts/python/bin' install-python_ext: - $(PYTHON_WORD) util/setup.py --quiet install --root='/$(DESTDIR_SQ)' + $(PYTHON_WORD) util/setup.py --quiet install --prefix='$(DESTDIR_SQ)/usr' install-doc: $(MAKE) -C Documentation install
Signature · 1 line
1.7.0.4
Quoted 6 lines · On 12-07-03 02:09 PM, [email protected] wrote:
From: Tom Zanussi<[email protected]>
This patchset comprises the kernel side of the modifications needed to enable the Perl and Python bindings for perf scripting.
Please pull into linux-yocto-3.2 standard/base.
Ack'd. Same as the 3.4 variant. Queued pending any review comments.
Cheers,
Bruce
Quoted 19 lines
Thanks,
Tom
The following changes are available in the git repository at:
git://git.yoctoproject.org/linux-yocto-2.6.37-contrib.git tzanussi/3.2-perf-scripting-standard-base http://git.yoctoproject.org/cgit/cgit.cgi/linux-yocto-2.6.37-contrib/log/?h=tzanussi/3.2-perf-scripting-standard-baseTom Zanussi (4):
Revert "perf: hard-code NO_LIBPERL/NO_LIBPYTHON"
perf: use pkg-config instead of python-config
perf: add 'libperl not found' warning
perf: change --root to --prefix for python installtools/perf/Makefile | 90 +++++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 87 insertions(+), 3 deletions(-)