Patchwork [2/3] perf: add arch-specific perf-scripting feature

login
register
mail settings
Submitter Tom Zanussi
Date July 6, 2012, 8:29 p.m.
Message ID <ad53f92454d7311ad5e8531b46e150e0bb5d4611.1341606068.git.tom.zanussi@intel.com>
Download mbox | patch
Permalink /patch/31343/
State New
Headers show

Comments

Tom Zanussi - July 6, 2012, 8:29 p.m.
From: Tom Zanussi <tom.zanussi@intel.com>

Add a new architecture-specific feature named 'perf-scripting'.
Adding this into the perf_features_by_arch table in perf.inc for a
given arch will enable perf scripting on a target built for that arch,
which will turn on all the language bindings currently aavailable in
perf (Perl and Python), if perf is included in an image.

If 'perf-scripting' isn't named as a feature (the default), all perf
language bindings will be disabled and unavailable.

Signed-off-by: Tom Zanussi <tom.zanussi@intel.com>
---
 meta/recipes-kernel/perf/perf_3.4.bb |   12 +++++++++---
 1 files changed, 9 insertions(+), 3 deletions(-)
Saul Wold - July 8, 2012, 10 p.m.
On 07/06/2012 01:29 PM, tom.zanussi@intel.com wrote:
> From: Tom Zanussi <tom.zanussi@intel.com>
>
> Add a new architecture-specific feature named 'perf-scripting'.
> Adding this into the perf_features_by_arch table in perf.inc for a
> given arch will enable perf scripting on a target built for that arch,
> which will turn on all the language bindings currently aavailable in
> perf (Perl and Python), if perf is included in an image.
>
> If 'perf-scripting' isn't named as a feature (the default), all perf
> language bindings will be disabled and unavailable.
>
> Signed-off-by: Tom Zanussi <tom.zanussi@intel.com>
> ---
>   meta/recipes-kernel/perf/perf_3.4.bb |   12 +++++++++---
>   1 files changed, 9 insertions(+), 3 deletions(-)
>
> diff --git a/meta/recipes-kernel/perf/perf_3.4.bb b/meta/recipes-kernel/perf/perf_3.4.bb
> index d494243..a79e9e6 100644
> --- a/meta/recipes-kernel/perf/perf_3.4.bb
> +++ b/meta/recipes-kernel/perf/perf_3.4.bb
> @@ -9,7 +9,7 @@ as well."
>   LICENSE = "GPLv2"
>   LIC_FILES_CHKSUM = "file://COPYING;md5=d7810fab7487fb0aad327b76f1be7cd7"
>
> -PR = "r1"
> +PR = "r2"
>
>   require perf.inc
>
> @@ -21,7 +21,8 @@ DEPENDS = "virtual/kernel \
>              ${MLPREFIX}binutils \
>             "
>
> -RDEPENDS_${PN} += "elfutils perl perl-modules python"
> +SCRIPTING_RDEPENDS = "${@perf_arch_supports_feature('perf-scripting', 'perl perl-modules python', '',d)}"
> +RDEPENDS_${PN} += "elfutils ${SCRIPTING_RDEPENDS}"
>
>   PROVIDES = "virtual/perf"
>
> @@ -45,6 +46,8 @@ export PERL_ARCHLIB = "${STAGING_LIBDIR}${PERL_OWN_DIR}/perl/${@get_perl_version
>   S = "${STAGING_KERNEL_DIR}"
>   B = "${WORKDIR}/${BPN}-${PV}"
>
> +SCRIPTING_DEFINES = "${@perf_arch_supports_feature('perf-scripting', '', 'NO_LIBPERL=1 NO_LIBPYTHON=1',d)}"
> +
>   EXTRA_OEMAKE = \
>   		'-C ${S}/tools/perf \
>   		O=${B} \
> @@ -53,7 +56,7 @@ EXTRA_OEMAKE = \
>   		CC="${CC}" \
>   		AR="${AR}" \
>   		prefix=/usr \
> -		NO_GTK2=1 NO_NEWT=1 NO_DWARF=1 \
> +		NO_GTK2=1 NO_NEWT=1 NO_DWARF=1 ${SCRIPTING_DEFINES} \
>   		'
>
>   do_compile() {
> @@ -62,6 +65,9 @@ do_compile() {
>
>   do_install() {
>   	oe_runmake DESTDIR=${D} install
> +	if [ "${@perf_arch_supports_feature('perf-scripting', 1, 0, d)}" = "1" ]; then
> +		oe_runmake DESTDIR=${D} install-python_ext
> +	fi
>   }
>
>   PACKAGE_ARCH = "${MACHINE_ARCH}"
>

Tom,

I am not sure this one is working correctly, I this set of 3 in a build 
and it failed, so I bicested down to this patch.  I am still seeing the 
setup.py: Permission denied problem:
> | install scripts/python/bin/* -t '/srv/ssd/sgw_ab/yocto-autobuilder/yocto-slave/nightly-x86-64/build/build/tmp/work/qemux86_64-poky-linux/perf-3.4-r3/image/usr/libexec/perf-core/scripts/python/bin'
> | make: Leaving directory `/srv/ssd/sgw_ab/yocto-autobuilder/yocto-slave/nightly-x86-64/build/build/tmp/sysroots/qemux86-64/usr/src/kernel/tools/perf'
> | NOTE: make -j 16 -C /srv/ssd/sgw_ab/yocto-autobuilder/yocto-slave/nightly-x86-64/build/build/tmp/sysroots/qemux86-64/usr/src/kernel/tools/perf O=/srv/ssd/sgw_ab/yocto-autobuilder/yocto-slave/nightly-x86-64/build/build/tmp/work/qemux86_64-poky-linux/perf-3.4-r3/perf-3.4 CROSS_COMPILE=x86_64-poky-linux- ARCH=x86 CC=x86_64-poky-linux-gcc    -m64 --sysroot=/srv/ssd/sgw_ab/yocto-autobuilder/yocto-slave/nightly-x86-64/build/build/tmp/sysroots/qemux86-64 AR=x86_64-poky-linux-ar prefix=/usr NO_GTK2=1 NO_DWARF=1 DESTDIR=/srv/ssd/sgw_ab/yocto-autobuilder/yocto-slave/nightly-x86-64/build/build/tmp/work/qemux86_64-poky-linux/perf-3.4-r3/image install-python_ext
> | make: Entering directory `/srv/ssd/sgw_ab/yocto-autobuilder/yocto-slave/nightly-x86-64/build/build/tmp/sysroots/qemux86-64/usr/src/kernel/tools/perf'
> | util/setup.py --quiet install --root='//srv/ssd/sgw_ab/yocto-autobuilder/yocto-slave/nightly-x86-64/build/build/tmp/work/qemux86_64-poky-linux/perf-3.4-r3/image'
> | make: execvp: util/setup.py: Permission denied
> | make: *** [install-python_ext] Error 127
> | make: Leaving directory `/srv/ssd/sgw_ab/yocto-autobuilder/yocto-slave/nightly-x86-64/build/build/tmp/sysroots/qemux86-64/usr/src/kernel/tools/perf'
> | ERROR: oe_runmake failed
> | ERROR: Function failed: do_install (see /srv/ssd/sgw_ab/yocto-autobuilder/yocto-slave/nightly-x86-64/build/build/tmp/work/qemux86_64-poky-linux/perf-3.4-r3/temp/log.do_install.6037 for further information)


Sau!
Tom Zanussi - July 9, 2012, 4:02 a.m.
On Sun, 2012-07-08 at 15:00 -0700, Saul Wold wrote:
> On 07/06/2012 01:29 PM, tom.zanussi@intel.com wrote:
> > From: Tom Zanussi <tom.zanussi@intel.com>
> >
> > Add a new architecture-specific feature named 'perf-scripting'.
> > Adding this into the perf_features_by_arch table in perf.inc for a
> > given arch will enable perf scripting on a target built for that arch,
> > which will turn on all the language bindings currently aavailable in
> > perf (Perl and Python), if perf is included in an image.
> >
> > If 'perf-scripting' isn't named as a feature (the default), all perf
> > language bindings will be disabled and unavailable.
> >
> > Signed-off-by: Tom Zanussi <tom.zanussi@intel.com>
> > ---
> >   meta/recipes-kernel/perf/perf_3.4.bb |   12 +++++++++---
> >   1 files changed, 9 insertions(+), 3 deletions(-)
> >
> > diff --git a/meta/recipes-kernel/perf/perf_3.4.bb b/meta/recipes-kernel/perf/perf_3.4.bb
> > index d494243..a79e9e6 100644
> > --- a/meta/recipes-kernel/perf/perf_3.4.bb
> > +++ b/meta/recipes-kernel/perf/perf_3.4.bb
> > @@ -9,7 +9,7 @@ as well."
> >   LICENSE = "GPLv2"
> >   LIC_FILES_CHKSUM = "file://COPYING;md5=d7810fab7487fb0aad327b76f1be7cd7"
> >
> > -PR = "r1"
> > +PR = "r2"
> >
> >   require perf.inc
> >
> > @@ -21,7 +21,8 @@ DEPENDS = "virtual/kernel \
> >              ${MLPREFIX}binutils \
> >             "
> >
> > -RDEPENDS_${PN} += "elfutils perl perl-modules python"
> > +SCRIPTING_RDEPENDS = "${@perf_arch_supports_feature('perf-scripting', 'perl perl-modules python', '',d)}"
> > +RDEPENDS_${PN} += "elfutils ${SCRIPTING_RDEPENDS}"
> >
> >   PROVIDES = "virtual/perf"
> >
> > @@ -45,6 +46,8 @@ export PERL_ARCHLIB = "${STAGING_LIBDIR}${PERL_OWN_DIR}/perl/${@get_perl_version
> >   S = "${STAGING_KERNEL_DIR}"
> >   B = "${WORKDIR}/${BPN}-${PV}"
> >
> > +SCRIPTING_DEFINES = "${@perf_arch_supports_feature('perf-scripting', '', 'NO_LIBPERL=1 NO_LIBPYTHON=1',d)}"
> > +
> >   EXTRA_OEMAKE = \
> >   		'-C ${S}/tools/perf \
> >   		O=${B} \
> > @@ -53,7 +56,7 @@ EXTRA_OEMAKE = \
> >   		CC="${CC}" \
> >   		AR="${AR}" \
> >   		prefix=/usr \
> > -		NO_GTK2=1 NO_NEWT=1 NO_DWARF=1 \
> > +		NO_GTK2=1 NO_NEWT=1 NO_DWARF=1 ${SCRIPTING_DEFINES} \
> >   		'
> >
> >   do_compile() {
> > @@ -62,6 +65,9 @@ do_compile() {
> >
> >   do_install() {
> >   	oe_runmake DESTDIR=${D} install
> > +	if [ "${@perf_arch_supports_feature('perf-scripting', 1, 0, d)}" = "1" ]; then
> > +		oe_runmake DESTDIR=${D} install-python_ext
> > +	fi
> >   }
> >
> >   PACKAGE_ARCH = "${MACHINE_ARCH}"
> >
> 
> Tom,
> 
> I am not sure this one is working correctly, I this set of 3 in a build 
> and it failed, so I bicested down to this patch.  I am still seeing the 
> setup.py: Permission denied problem:

Looks like your build isn't getting the kernel changes needed for this
patchset.  They were posted at the same time and have actually actually
already been pulled in - you just need to get the kernel in your build
to use them...

Tom

> > | install scripts/python/bin/* -t '/srv/ssd/sgw_ab/yocto-autobuilder/yocto-slave/nightly-x86-64/build/build/tmp/work/qemux86_64-poky-linux/perf-3.4-r3/image/usr/libexec/perf-core/scripts/python/bin'
> > | make: Leaving directory `/srv/ssd/sgw_ab/yocto-autobuilder/yocto-slave/nightly-x86-64/build/build/tmp/sysroots/qemux86-64/usr/src/kernel/tools/perf'
> > | NOTE: make -j 16 -C /srv/ssd/sgw_ab/yocto-autobuilder/yocto-slave/nightly-x86-64/build/build/tmp/sysroots/qemux86-64/usr/src/kernel/tools/perf O=/srv/ssd/sgw_ab/yocto-autobuilder/yocto-slave/nightly-x86-64/build/build/tmp/work/qemux86_64-poky-linux/perf-3.4-r3/perf-3.4 CROSS_COMPILE=x86_64-poky-linux- ARCH=x86 CC=x86_64-poky-linux-gcc    -m64 --sysroot=/srv/ssd/sgw_ab/yocto-autobuilder/yocto-slave/nightly-x86-64/build/build/tmp/sysroots/qemux86-64 AR=x86_64-poky-linux-ar prefix=/usr NO_GTK2=1 NO_DWARF=1 DESTDIR=/srv/ssd/sgw_ab/yocto-autobuilder/yocto-slave/nightly-x86-64/build/build/tmp/work/qemux86_64-poky-linux/perf-3.4-r3/image install-python_ext
> > | make: Entering directory `/srv/ssd/sgw_ab/yocto-autobuilder/yocto-slave/nightly-x86-64/build/build/tmp/sysroots/qemux86-64/usr/src/kernel/tools/perf'
> > | util/setup.py --quiet install --root='//srv/ssd/sgw_ab/yocto-autobuilder/yocto-slave/nightly-x86-64/build/build/tmp/work/qemux86_64-poky-linux/perf-3.4-r3/image'
> > | make: execvp: util/setup.py: Permission denied
> > | make: *** [install-python_ext] Error 127
> > | make: Leaving directory `/srv/ssd/sgw_ab/yocto-autobuilder/yocto-slave/nightly-x86-64/build/build/tmp/sysroots/qemux86-64/usr/src/kernel/tools/perf'
> > | ERROR: oe_runmake failed
> > | ERROR: Function failed: do_install (see /srv/ssd/sgw_ab/yocto-autobuilder/yocto-slave/nightly-x86-64/build/build/tmp/work/qemux86_64-poky-linux/perf-3.4-r3/temp/log.do_install.6037 for further information)
> 
> 
> Sau!
>

Patch

diff --git a/meta/recipes-kernel/perf/perf_3.4.bb b/meta/recipes-kernel/perf/perf_3.4.bb
index d494243..a79e9e6 100644
--- a/meta/recipes-kernel/perf/perf_3.4.bb
+++ b/meta/recipes-kernel/perf/perf_3.4.bb
@@ -9,7 +9,7 @@  as well."
 LICENSE = "GPLv2"
 LIC_FILES_CHKSUM = "file://COPYING;md5=d7810fab7487fb0aad327b76f1be7cd7"
 
-PR = "r1"
+PR = "r2"
 
 require perf.inc
 
@@ -21,7 +21,8 @@  DEPENDS = "virtual/kernel \
            ${MLPREFIX}binutils \
           "
 
-RDEPENDS_${PN} += "elfutils perl perl-modules python"
+SCRIPTING_RDEPENDS = "${@perf_arch_supports_feature('perf-scripting', 'perl perl-modules python', '',d)}"
+RDEPENDS_${PN} += "elfutils ${SCRIPTING_RDEPENDS}"
 
 PROVIDES = "virtual/perf"
 
@@ -45,6 +46,8 @@  export PERL_ARCHLIB = "${STAGING_LIBDIR}${PERL_OWN_DIR}/perl/${@get_perl_version
 S = "${STAGING_KERNEL_DIR}"
 B = "${WORKDIR}/${BPN}-${PV}"
 
+SCRIPTING_DEFINES = "${@perf_arch_supports_feature('perf-scripting', '', 'NO_LIBPERL=1 NO_LIBPYTHON=1',d)}"
+
 EXTRA_OEMAKE = \
 		'-C ${S}/tools/perf \
 		O=${B} \
@@ -53,7 +56,7 @@  EXTRA_OEMAKE = \
 		CC="${CC}" \
 		AR="${AR}" \
 		prefix=/usr \
-		NO_GTK2=1 NO_NEWT=1 NO_DWARF=1 \
+		NO_GTK2=1 NO_NEWT=1 NO_DWARF=1 ${SCRIPTING_DEFINES} \
 		'
 
 do_compile() {
@@ -62,6 +65,9 @@  do_compile() {
 
 do_install() {
 	oe_runmake DESTDIR=${D} install
+	if [ "${@perf_arch_supports_feature('perf-scripting', 1, 0, d)}" = "1" ]; then
+		oe_runmake DESTDIR=${D} install-python_ext
+	fi
 }
 
 PACKAGE_ARCH = "${MACHINE_ARCH}"