* [PATCH 1/4] Revert "perf: hard-code NO_LIBPERL/NO_LIBPYTHON"
2012-07-03 18:09 [PATCH 0/4] linux-yocto-3.2/standard/base: perf scripting updates tom.zanussi
@ 2012-07-03 18:09 ` tom.zanussi
2012-07-03 18:09 ` [PATCH 2/4] perf: use pkg-config instead of python-config tom.zanussi
` (3 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: tom.zanussi @ 2012-07-03 18:09 UTC (permalink / raw)
To: yocto, bruce.ashfield
From: Tom Zanussi <tom.zanussi@intel.com>
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(-)
diff --git a/tools/perf/Makefile b/tools/perf/Makefile
index 287c7b3..b98e307 100644
--- a/tools/perf/Makefile
+++ b/tools/perf/Makefile
@@ -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
--
1.7.0.4
^ permalink raw reply related [flat|nested] 6+ messages in thread* [PATCH 2/4] perf: use pkg-config instead of python-config
2012-07-03 18:09 [PATCH 0/4] linux-yocto-3.2/standard/base: perf scripting updates tom.zanussi
2012-07-03 18:09 ` [PATCH 1/4] Revert "perf: hard-code NO_LIBPERL/NO_LIBPYTHON" tom.zanussi
@ 2012-07-03 18:09 ` tom.zanussi
2012-07-03 18:09 ` [PATCH 3/4] perf: add 'libperl not found' warning tom.zanussi
` (2 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: tom.zanussi @ 2012-07-03 18:09 UTC (permalink / raw)
To: yocto, bruce.ashfield
From: Tom Zanussi <tom.zanussi@intel.com>
Python has build flags available via pkg-config, use those at
build-time instead.
Signed-off-by: Tom Zanussi <tom.zanussi@intel.com>
---
tools/perf/Makefile | 4 ++--
1 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/tools/perf/Makefile b/tools/perf/Makefile
index b98e307..b8cb4d4 100644
--- a/tools/perf/Makefile
+++ b/tools/perf/Makefile
@@ -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)
--
1.7.0.4
^ permalink raw reply related [flat|nested] 6+ messages in thread* [PATCH 3/4] perf: add 'libperl not found' warning
2012-07-03 18:09 [PATCH 0/4] linux-yocto-3.2/standard/base: perf scripting updates tom.zanussi
2012-07-03 18:09 ` [PATCH 1/4] Revert "perf: hard-code NO_LIBPERL/NO_LIBPYTHON" tom.zanussi
2012-07-03 18:09 ` [PATCH 2/4] perf: use pkg-config instead of python-config tom.zanussi
@ 2012-07-03 18:09 ` tom.zanussi
2012-07-03 18:09 ` [PATCH 4/4] perf: change --root to --prefix for python install tom.zanussi
2012-07-03 19:08 ` [PATCH 0/4] linux-yocto-3.2/standard/base: perf scripting updates Bruce Ashfield
4 siblings, 0 replies; 6+ messages in thread
From: tom.zanussi @ 2012-07-03 18:09 UTC (permalink / raw)
To: yocto, bruce.ashfield
From: Tom Zanussi <tom.zanussi@intel.com>
If libperl isn't found, display a message to that effect along with
some hints on how to fix it.
Signed-off-by: Tom Zanussi <tom.zanussi@intel.com>
---
tools/perf/Makefile | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)
diff --git a/tools/perf/Makefile b/tools/perf/Makefile
index b8cb4d4..97bca9c 100644
--- a/tools/perf/Makefile
+++ b/tools/perf/Makefile
@@ -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)
--
1.7.0.4
^ permalink raw reply related [flat|nested] 6+ messages in thread* [PATCH 4/4] perf: change --root to --prefix for python install
2012-07-03 18:09 [PATCH 0/4] linux-yocto-3.2/standard/base: perf scripting updates tom.zanussi
` (2 preceding siblings ...)
2012-07-03 18:09 ` [PATCH 3/4] perf: add 'libperl not found' warning tom.zanussi
@ 2012-07-03 18:09 ` tom.zanussi
2012-07-03 19:08 ` [PATCH 0/4] linux-yocto-3.2/standard/base: perf scripting updates Bruce Ashfield
4 siblings, 0 replies; 6+ messages in thread
From: tom.zanussi @ 2012-07-03 18:09 UTC (permalink / raw)
To: yocto, bruce.ashfield
From: Tom Zanussi <tom.zanussi@intel.com>
Otherwise we get the sysroot path appended to the build path, not what
we want.
Signed-off-by: Tom Zanussi <tom.zanussi@intel.com>
---
tools/perf/Makefile | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/tools/perf/Makefile b/tools/perf/Makefile
index 97bca9c..e5456d3 100644
--- a/tools/perf/Makefile
+++ b/tools/perf/Makefile
@@ -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
--
1.7.0.4
^ permalink raw reply related [flat|nested] 6+ messages in thread* Re: [PATCH 0/4] linux-yocto-3.2/standard/base: perf scripting updates
2012-07-03 18:09 [PATCH 0/4] linux-yocto-3.2/standard/base: perf scripting updates tom.zanussi
` (3 preceding siblings ...)
2012-07-03 18:09 ` [PATCH 4/4] perf: change --root to --prefix for python install tom.zanussi
@ 2012-07-03 19:08 ` Bruce Ashfield
4 siblings, 0 replies; 6+ messages in thread
From: Bruce Ashfield @ 2012-07-03 19:08 UTC (permalink / raw)
To: tom.zanussi; +Cc: yocto@yoctoproject.org
On 12-07-03 02:09 PM, tom.zanussi@intel.com wrote:
> From: Tom Zanussi<tom.zanussi@intel.com>
>
> 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
>
> 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(-)
>
^ permalink raw reply [flat|nested] 6+ messages in thread