* [v2 PATCH 0/3] perf: make perf a standlone recipe
@ 2012-06-20 14:31 Bruce Ashfield
2012-06-20 14:31 ` [PATCH 1/3] kernel: save $kerndir/tools and $kerndir/lib from pruning Bruce Ashfield
` (3 more replies)
0 siblings, 4 replies; 9+ messages in thread
From: Bruce Ashfield @ 2012-06-20 14:31 UTC (permalink / raw)
To: richard.purdie; +Cc: openembedded-core, liang.li, saul.wold
Richard/Saul,
Here is the re-work of the standalone perf build patch
series. We isolated the errors that Saul was seeing on the
autobuilder, and it stemmed from the misuse of the sources
symlink back into the working kernel directory. As Richard
pointed out, this would also break in a rm_work enabled
build.
I've also removed parts of the standalone recipe that were
inherited from its former life as a sub-part of the kernel
recipes (the non-standard depends usage, etc) as part of this
v2.
To build completely out of the sysroot patch 1/3 tells the
story. We just need to save $kerndir/tools and $kerndir/lib
from being removed during the pruning. As far as I'm concerned
this is small and reasonable, since there are a few tools in
the kernel source tree that are of interest and may want to
be built and packaged separately.
The find now has a couple more prunes in it, which of course
makes it a bit harder to read. If we really want, a new magic
variable could be created where recipes/kernel could specify
what should be saved in the sysroot .. but I didn't want to
go there yet.
I've built and runtime tested things here, and everything
looks sane.
original v1 text is below
-->-->-->-->-->-->-->-->-->-->-->-->
We've wanted to do this for some time, and now have finally split
out perf from being a sub-part of the kernel packages into a
standalone package that is built out of the kernel sources.
I've built and tested this by adding task-core-tools-profile to
my IMAGE_INSTALL, and perf behaves just as it did before. I've
also tested this on my oe-core checkout/repo, and it works fine
there as well (but I'm using my easier to access contrib
branch for now).
There's additional work that can be done more easily once this
is split, so please consider this for inclusion, but I'd like
to keep this initial version as an exact functional match as
what was previously in place.
I've removed the old linux-tools.inc and updated any kernel
recipes that I know about that have references to it. If there
are other dependent recipes, they'll need to be updated.
From the patch itself:
perf has been coupled to the kernel packages via kernel.bbclass.
While maintaining the build of perf out of the kernel source tree
is desired the package coupling has proved to be awkward in
several situations such as:
- when a kernel recipe doesn't want to build/provide perf
- when licensing of dependencies would prohibit perf and hence
the kernel from being built.
To solve some of these problems, this recipe is the extraction of
the linux-tools.inc provided perf compilation into a standalone
perf recipe that builds out of the kernel source, but is otherwise
independent.
No new functionality is provided above what the linux-tools.inc
variant provided, but the separate recipe provides baseline for
adding new functionality.
-->-->-->-->-->-->-->-->-->-->-->-->
This addresses [YOCTO #1552]
cc: Tom Zanussi <tom.zanussi@intel.com>
cc: Liang Li <liang.li@windriver.com>
Cheers,
Bruce
The following changes since commit e0a70547069fe7e8a2d6bdaffc985fb172d46c31:
Jason Wessel (1):
perl: Allow perl to cross build and native build in a directory named "t"
are available in the git repository at:
git://git.pokylinux.org/poky-contrib zedd/perf
http://git.pokylinux.org/cgit.cgi/poky-contrib/log/?h=zedd/perf
Bruce Ashfield (2):
kernel: save $kerndir/tools and $kerndir/lib from pruning
recipes-kernel: remove linux-tools.inc
Liang Li (1):
recipes-kernel: make perf a standalone package
meta/classes/kernel.bbclass | 9 +---
meta/recipes-kernel/linux/linux-tools.inc | 41 ------------------
meta/recipes-kernel/linux/linux-yocto-rt_3.0.bb | 2 -
meta/recipes-kernel/linux/linux-yocto-rt_3.2.bb | 2 -
meta/recipes-kernel/linux/linux-yocto-rt_3.4.bb | 2 -
meta/recipes-kernel/linux/linux-yocto_3.0.bb | 2 -
meta/recipes-kernel/linux/linux-yocto_3.2.bb | 2 -
meta/recipes-kernel/linux/linux-yocto_3.4.bb | 2 -
meta/recipes-kernel/perf/perf_3.4.bb | 50 +++++++++++++++++++++++
9 files changed, 52 insertions(+), 60 deletions(-)
delete mode 100644 meta/recipes-kernel/linux/linux-tools.inc
create mode 100644 meta/recipes-kernel/perf/perf_3.4.bb
^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH 1/3] kernel: save $kerndir/tools and $kerndir/lib from pruning
2012-06-20 14:31 [v2 PATCH 0/3] perf: make perf a standlone recipe Bruce Ashfield
@ 2012-06-20 14:31 ` Bruce Ashfield
2012-06-20 14:31 ` [PATCH 2/3] recipes-kernel: make perf a standalone package Bruce Ashfield
` (2 subsequent siblings)
3 siblings, 0 replies; 9+ messages in thread
From: Bruce Ashfield @ 2012-06-20 14:31 UTC (permalink / raw)
To: richard.purdie; +Cc: openembedded-core, liang.li, saul.wold
The kernel source tree in the sysroot has all unecessary source
code removed. The existing use case is to support module building
out of the sysroot, but as more toolsa are moved into the kernel
tree itself there are new use cases for the kernel sysroot source.
To avoid putting dependencies on the kernel, and to be able to
individually build and package these tools out of the source tree,
we can save $kerndir/tools and $kernddir/lib from being removed.
This enables tools like perf to be built our of the kernel source
in the sysroot, without significantly increasing the amount of
source in the sysroot.
Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
---
meta/classes/kernel.bbclass | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/meta/classes/kernel.bbclass b/meta/classes/kernel.bbclass
index 116e10b..690de96 100644
--- a/meta/classes/kernel.bbclass
+++ b/meta/classes/kernel.bbclass
@@ -173,7 +173,7 @@ kernel_do_install() {
#
oe_runmake -C $kerneldir CC="${KERNEL_CC}" LD="${KERNEL_LD}" clean
make -C $kerneldir _mrproper_scripts
- find $kerneldir -path $kerneldir/scripts -prune -o -name "*.[csS]" -exec rm '{}' \;
+ find $kerneldir -path $kerneldir/lib -prune -o -path $kerneldir/tools -prune -o -path $kerneldir/scripts -prune -o -name "*.[csS]" -exec rm '{}' \;
find $kerneldir/Documentation -name "*.txt" -exec rm '{}' \;
# As of Linux kernel version 3.0.1, the clean target removes
--
1.7.0.4
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH 2/3] recipes-kernel: make perf a standalone package
2012-06-20 14:31 [v2 PATCH 0/3] perf: make perf a standlone recipe Bruce Ashfield
2012-06-20 14:31 ` [PATCH 1/3] kernel: save $kerndir/tools and $kerndir/lib from pruning Bruce Ashfield
@ 2012-06-20 14:31 ` Bruce Ashfield
2012-06-20 15:00 ` Saul Wold
2012-06-20 15:25 ` Paul Eggleton
2012-06-20 14:31 ` [PATCH 3/3] recipes-kernel: remove linux-tools.inc Bruce Ashfield
2012-06-22 18:00 ` [v2 PATCH 0/3] perf: make perf a standlone recipe Saul Wold
3 siblings, 2 replies; 9+ messages in thread
From: Bruce Ashfield @ 2012-06-20 14:31 UTC (permalink / raw)
To: richard.purdie; +Cc: openembedded-core, liang.li, saul.wold
From: Liang Li <liang.li@windriver.com>
perf has been coupled to the kernel packages via kernel.bbclass.
While maintaining the build of perf out of the kernel source tree
is desired the package coupling has proved to be awkward in
several situations such as:
- when a kernel recipe doesn't want to build/provide perf
- when licensing of dependencies would prohibit perf and hence
the kernel from being built.
To solve some of these problems, this recipe is the extraction of
the linux-tools.inc provided perf compilation into a standalone
perf recipe that builds out of the kernel source, but is otherwise
independent.
No new functionality is provided above what the linux-tools.inc
variant provided, but the separate recipe provides baseline for
adding new functionality.
Signed-off-by: Liang Li <liang.li@windriver.com>
Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
---
meta/classes/kernel.bbclass | 7 +----
meta/recipes-kernel/perf/perf_3.4.bb | 50 ++++++++++++++++++++++++++++++++++
2 files changed, 51 insertions(+), 6 deletions(-)
create mode 100644 meta/recipes-kernel/perf/perf_3.4.bb
diff --git a/meta/classes/kernel.bbclass b/meta/classes/kernel.bbclass
index 690de96..8d52d74 100644
--- a/meta/classes/kernel.bbclass
+++ b/meta/classes/kernel.bbclass
@@ -469,7 +469,7 @@ python populate_packages_prepend () {
metapkg = "kernel-modules"
d.setVar('ALLOW_EMPTY_' + metapkg, "1")
d.setVar('FILES_' + metapkg, "")
- blacklist = [ 'kernel-dev', 'kernel-image', 'kernel-base', 'kernel-vmlinux', 'perf', 'perf-dbg', 'kernel-misc' ]
+ blacklist = [ 'kernel-dev', 'kernel-image', 'kernel-base', 'kernel-vmlinux', 'kernel-misc' ]
for l in module_deps.values():
for i in l:
pkg = module_pattern % legitimize_package_name(re.match(module_regex, os.path.basename(i)).group(1))
@@ -548,8 +548,3 @@ addtask deploy before do_build after do_install
EXPORT_FUNCTIONS do_deploy
-# perf must be enabled in individual kernel recipes
-PACKAGES =+ "perf-dbg perf"
-FILES_perf = "${bindir}/* \
- ${libexecdir}"
-FILES_perf-dbg = "${FILES_${PN}-dbg}"
diff --git a/meta/recipes-kernel/perf/perf_3.4.bb b/meta/recipes-kernel/perf/perf_3.4.bb
new file mode 100644
index 0000000..997beb4
--- /dev/null
+++ b/meta/recipes-kernel/perf/perf_3.4.bb
@@ -0,0 +1,50 @@
+SUMMARY = "Performance analysis tools for Linux"
+DESCRIPTION = "Performance counters for Linux are a new kernel-based \
+subsystem that provide a framework for all things \
+performance analysis. It covers hardware level \
+(CPU/PMU, Performance Monitoring Unit) features \
+and software features (software counters, tracepoints) \
+as well."
+
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d7810fab7487fb0aad327b76f1be7cd7"
+
+PR = "r0"
+
+BUILDPERF_libc-uclibc = "no"
+
+DEPENDS = "virtual/kernel \
+ virtual/${MLPREFIX}libc \
+ ${MLPREFIX}elfutils \
+ ${MLPREFIX}binutils \
+ "
+RDEPENDS_${PN} += "elfutils perl python"
+
+PROVIDES = "virtual/perf"
+
+inherit kernel-arch
+
+S = "${STAGING_KERNEL_DIR}"
+B = "${WORKDIR}/${BPN}-${PV}"
+
+EXTRA_OEMAKE = \
+ '-C ${S}/tools/perf \
+ O=${B} \
+ CROSS_COMPILE=${TARGET_PREFIX} \
+ ARCH=${ARCH} \
+ CC="${CC}" \
+ AR="${AR}" \
+ prefix=/usr \
+ NO_GTK2=1 NO_NEWT=1 NO_DWARF=1 \
+ '
+
+do_compile() {
+ oe_runmake all
+}
+
+do_install() {
+ oe_runmake DESTDIR=${D} install
+}
+
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+
--
1.7.0.4
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH 3/3] recipes-kernel: remove linux-tools.inc
2012-06-20 14:31 [v2 PATCH 0/3] perf: make perf a standlone recipe Bruce Ashfield
2012-06-20 14:31 ` [PATCH 1/3] kernel: save $kerndir/tools and $kerndir/lib from pruning Bruce Ashfield
2012-06-20 14:31 ` [PATCH 2/3] recipes-kernel: make perf a standalone package Bruce Ashfield
@ 2012-06-20 14:31 ` Bruce Ashfield
2012-06-22 18:00 ` [v2 PATCH 0/3] perf: make perf a standlone recipe Saul Wold
3 siblings, 0 replies; 9+ messages in thread
From: Bruce Ashfield @ 2012-06-20 14:31 UTC (permalink / raw)
To: richard.purdie; +Cc: openembedded-core, liang.li, saul.wold
perf has been moved to a standalone package, making linux-tools.inc
unecessary. It can now be removed and recipes that included it
updated.
Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
---
meta/recipes-kernel/linux/linux-tools.inc | 41 -----------------------
meta/recipes-kernel/linux/linux-yocto-rt_3.0.bb | 2 -
meta/recipes-kernel/linux/linux-yocto-rt_3.2.bb | 2 -
meta/recipes-kernel/linux/linux-yocto-rt_3.4.bb | 2 -
meta/recipes-kernel/linux/linux-yocto_3.0.bb | 2 -
meta/recipes-kernel/linux/linux-yocto_3.2.bb | 2 -
meta/recipes-kernel/linux/linux-yocto_3.4.bb | 2 -
7 files changed, 0 insertions(+), 53 deletions(-)
delete mode 100644 meta/recipes-kernel/linux/linux-tools.inc
diff --git a/meta/recipes-kernel/linux/linux-tools.inc b/meta/recipes-kernel/linux/linux-tools.inc
deleted file mode 100644
index 3b03c05..0000000
--- a/meta/recipes-kernel/linux/linux-tools.inc
+++ /dev/null
@@ -1,41 +0,0 @@
-# included by kernel recipes if they want to build/provide
-# perf functionality from their tree.
-
-BUILDPERF = "yes"
-BUILDPERF_libc-uclibc = "no"
-# perf requires binutils which is GPLv3 licensed, don't prevent the entire kernel
-# being built if GPLv3 is in INCOMPATIBLE_LICENSE
-python () {
- if ((d.getVar("INCOMPATIBLE_LICENSE", True) or "").find("GPLv3") != -1):
- # GPLv3, drop perf
- d.setVar("BUILDPERF", "no")
- d.setVar("PERFDEPENDS", "")
-}
-
-do_compile_perf () {
- if [ "${BUILDPERF}" = "yes" ]; then
- oe_runmake -C ${S}/tools/perf CC="${CC}" LD="${LD}" prefix=${prefix} NO_NEWT=1 NO_DWARF=1
- fi
-}
-
-fakeroot do_install_perf () {
- if [ "${BUILDPERF}" = "yes" ]; then
- oe_runmake -C ${S}/tools/perf CC="${CC}" LD="${LD}" prefix=${prefix} DESTDIR=${D} install NO_NEWT=1 NO_DWARF=1
- fi
-}
-
-
-# perf tasks
-addtask compile_perf after do_compile before do_install
-addtask install_perf after do_install before do_package
-
-do_compile_perf[umask] = "022"
-do_install_perf[umask] = "022"
-
-PERFDEPENDS = "virtual/${MLPREFIX}libc:do_populate_sysroot ${MLPREFIX}elfutils:do_populate_sysroot ${MLPREFIX}binutils:do_populate_sysroot"
-PERFDEPENDS_libc-uclibc = ""
-PERFRDEPENDS = "python perl elfutils"
-PERFRDEPENDS_libc-uclibc = ""
-
-do_compile_perf[depends] = "${PERFDEPENDS}"
-RDEPENDS_perf += "${PERFRDEPENDS}"
diff --git a/meta/recipes-kernel/linux/linux-yocto-rt_3.0.bb b/meta/recipes-kernel/linux/linux-yocto-rt_3.0.bb
index a39b966..971d1a8 100644
--- a/meta/recipes-kernel/linux/linux-yocto-rt_3.0.bb
+++ b/meta/recipes-kernel/linux/linux-yocto-rt_3.0.bb
@@ -27,5 +27,3 @@ KERNEL_FEATURES = "features/netfilter"
KERNEL_FEATURES_append = " features/taskstats"
KERNEL_FEATURES_append_qemux86 = " cfg/sound"
KERNEL_FEATURES_append_qemux86-64 = " cfg/sound"
-
-require recipes-kernel/linux/linux-tools.inc
diff --git a/meta/recipes-kernel/linux/linux-yocto-rt_3.2.bb b/meta/recipes-kernel/linux/linux-yocto-rt_3.2.bb
index a07b27a..ada66b8 100644
--- a/meta/recipes-kernel/linux/linux-yocto-rt_3.2.bb
+++ b/meta/recipes-kernel/linux/linux-yocto-rt_3.2.bb
@@ -28,5 +28,3 @@ KERNEL_FEATURES = "features/netfilter"
KERNEL_FEATURES_append = " features/taskstats"
KERNEL_FEATURES_append_qemux86 = " cfg/sound"
KERNEL_FEATURES_append_qemux86-64 = " cfg/sound"
-
-require recipes-kernel/linux/linux-tools.inc
diff --git a/meta/recipes-kernel/linux/linux-yocto-rt_3.4.bb b/meta/recipes-kernel/linux/linux-yocto-rt_3.4.bb
index 81730ea..52f2dd1 100644
--- a/meta/recipes-kernel/linux/linux-yocto-rt_3.4.bb
+++ b/meta/recipes-kernel/linux/linux-yocto-rt_3.4.bb
@@ -28,5 +28,3 @@ KERNEL_FEATURES = "features/netfilter"
KERNEL_FEATURES_append = " features/taskstats"
KERNEL_FEATURES_append_qemux86 = " cfg/sound"
KERNEL_FEATURES_append_qemux86-64 = " cfg/sound"
-
-require recipes-kernel/linux/linux-tools.inc
diff --git a/meta/recipes-kernel/linux/linux-yocto_3.0.bb b/meta/recipes-kernel/linux/linux-yocto_3.0.bb
index 440821c..5cdff95 100644
--- a/meta/recipes-kernel/linux/linux-yocto_3.0.bb
+++ b/meta/recipes-kernel/linux/linux-yocto_3.0.bb
@@ -32,5 +32,3 @@ KERNEL_FEATURES = "features/netfilter"
KERNEL_FEATURES_append = " features/taskstats"
KERNEL_FEATURES_append_qemux86 = " cfg/sound"
KERNEL_FEATURES_append_qemux86-64 = " cfg/sound"
-
-require linux-tools.inc
diff --git a/meta/recipes-kernel/linux/linux-yocto_3.2.bb b/meta/recipes-kernel/linux/linux-yocto_3.2.bb
index e6cf9bb..3e4a9dd 100644
--- a/meta/recipes-kernel/linux/linux-yocto_3.2.bb
+++ b/meta/recipes-kernel/linux/linux-yocto_3.2.bb
@@ -32,5 +32,3 @@ KERNEL_FEATURES="features/netfilter"
KERNEL_FEATURES_append=" features/taskstats"
KERNEL_FEATURES_append_qemux86=" cfg/sound"
KERNEL_FEATURES_append_qemux86-64=" cfg/sound"
-
-require linux-tools.inc
diff --git a/meta/recipes-kernel/linux/linux-yocto_3.4.bb b/meta/recipes-kernel/linux/linux-yocto_3.4.bb
index af6130d..eb5e888 100644
--- a/meta/recipes-kernel/linux/linux-yocto_3.4.bb
+++ b/meta/recipes-kernel/linux/linux-yocto_3.4.bb
@@ -34,5 +34,3 @@ KERNEL_REVISION_CHECKING=""
KERNEL_FEATURES="features/netfilter"
KERNEL_FEATURES_append_qemux86=" cfg/sound"
KERNEL_FEATURES_append_qemux86-64=" cfg/sound"
-
-require recipes-kernel/linux/linux-tools.inc
--
1.7.0.4
^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH 2/3] recipes-kernel: make perf a standalone package
2012-06-20 14:31 ` [PATCH 2/3] recipes-kernel: make perf a standalone package Bruce Ashfield
@ 2012-06-20 15:00 ` Saul Wold
2012-06-20 15:02 ` Bruce Ashfield
2012-06-20 15:25 ` Paul Eggleton
1 sibling, 1 reply; 9+ messages in thread
From: Saul Wold @ 2012-06-20 15:00 UTC (permalink / raw)
To: Patches and discussions about the oe-core layer; +Cc: liang.li
On 06/20/2012 07:31 AM, Bruce Ashfield wrote:
> From: Liang Li<liang.li@windriver.com>
>
> perf has been coupled to the kernel packages via kernel.bbclass.
> While maintaining the build of perf out of the kernel source tree
> is desired the package coupling has proved to be awkward in
> several situations such as:
>
> - when a kernel recipe doesn't want to build/provide perf
> - when licensing of dependencies would prohibit perf and hence
> the kernel from being built.
>
> To solve some of these problems, this recipe is the extraction of
> the linux-tools.inc provided perf compilation into a standalone
> perf recipe that builds out of the kernel source, but is otherwise
> independent.
>
> No new functionality is provided above what the linux-tools.inc
> variant provided, but the separate recipe provides baseline for
> adding new functionality.
>
> Signed-off-by: Liang Li<liang.li@windriver.com>
> Signed-off-by: Bruce Ashfield<bruce.ashfield@windriver.com>
> ---
> meta/classes/kernel.bbclass | 7 +----
> meta/recipes-kernel/perf/perf_3.4.bb | 50 ++++++++++++++++++++++++++++++++++
> 2 files changed, 51 insertions(+), 6 deletions(-)
> create mode 100644 meta/recipes-kernel/perf/perf_3.4.bb
>
> diff --git a/meta/classes/kernel.bbclass b/meta/classes/kernel.bbclass
> index 690de96..8d52d74 100644
> --- a/meta/classes/kernel.bbclass
> +++ b/meta/classes/kernel.bbclass
> @@ -469,7 +469,7 @@ python populate_packages_prepend () {
> metapkg = "kernel-modules"
> d.setVar('ALLOW_EMPTY_' + metapkg, "1")
> d.setVar('FILES_' + metapkg, "")
> - blacklist = [ 'kernel-dev', 'kernel-image', 'kernel-base', 'kernel-vmlinux', 'perf', 'perf-dbg', 'kernel-misc' ]
> + blacklist = [ 'kernel-dev', 'kernel-image', 'kernel-base', 'kernel-vmlinux', 'kernel-misc' ]
> for l in module_deps.values():
> for i in l:
> pkg = module_pattern % legitimize_package_name(re.match(module_regex, os.path.basename(i)).group(1))
> @@ -548,8 +548,3 @@ addtask deploy before do_build after do_install
>
> EXPORT_FUNCTIONS do_deploy
>
> -# perf must be enabled in individual kernel recipes
> -PACKAGES =+ "perf-dbg perf"
> -FILES_perf = "${bindir}/* \
> - ${libexecdir}"
> -FILES_perf-dbg = "${FILES_${PN}-dbg}"
> diff --git a/meta/recipes-kernel/perf/perf_3.4.bb b/meta/recipes-kernel/perf/perf_3.4.bb
> new file mode 100644
> index 0000000..997beb4
> --- /dev/null
> +++ b/meta/recipes-kernel/perf/perf_3.4.bb
> @@ -0,0 +1,50 @@
> +SUMMARY = "Performance analysis tools for Linux"
> +DESCRIPTION = "Performance counters for Linux are a new kernel-based \
> +subsystem that provide a framework for all things \
> +performance analysis. It covers hardware level \
> +(CPU/PMU, Performance Monitoring Unit) features \
> +and software features (software counters, tracepoints) \
> +as well."
> +
> +LICENSE = "GPLv2"
> +LIC_FILES_CHKSUM = "file://COPYING;md5=d7810fab7487fb0aad327b76f1be7cd7"
> +
> +PR = "r0"
> +
> +BUILDPERF_libc-uclibc = "no"
> +
> +DEPENDS = "virtual/kernel \
> + virtual/${MLPREFIX}libc \
> + ${MLPREFIX}elfutils \
> + ${MLPREFIX}binutils \
> + "
> +RDEPENDS_${PN} += "elfutils perl python"
> +
Do you need to duplicated elfutils here?
And are both perl and python required on the runtime to use perf?
Can we package the perl and python bits independently? Does it make
sense to do that? I have not used the kernel perf tools.
Sau!
> +PROVIDES = "virtual/perf"
> +
> +inherit kernel-arch
> +
> +S = "${STAGING_KERNEL_DIR}"
> +B = "${WORKDIR}/${BPN}-${PV}"
> +
> +EXTRA_OEMAKE = \
> + '-C ${S}/tools/perf \
> + O=${B} \
> + CROSS_COMPILE=${TARGET_PREFIX} \
> + ARCH=${ARCH} \
> + CC="${CC}" \
> + AR="${AR}" \
> + prefix=/usr \
> + NO_GTK2=1 NO_NEWT=1 NO_DWARF=1 \
> + '
> +
> +do_compile() {
> + oe_runmake all
> +}
> +
> +do_install() {
> + oe_runmake DESTDIR=${D} install
> +}
> +
> +PACKAGE_ARCH = "${MACHINE_ARCH}"
> +
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 2/3] recipes-kernel: make perf a standalone package
2012-06-20 15:00 ` Saul Wold
@ 2012-06-20 15:02 ` Bruce Ashfield
0 siblings, 0 replies; 9+ messages in thread
From: Bruce Ashfield @ 2012-06-20 15:02 UTC (permalink / raw)
To: Saul Wold; +Cc: liang.li, Patches and discussions about the oe-core layer
On 12-06-20 11:00 AM, Saul Wold wrote:
> On 06/20/2012 07:31 AM, Bruce Ashfield wrote:
>> From: Liang Li<liang.li@windriver.com>
>>
>> perf has been coupled to the kernel packages via kernel.bbclass.
>> While maintaining the build of perf out of the kernel source tree
>> is desired the package coupling has proved to be awkward in
>> several situations such as:
>>
>> - when a kernel recipe doesn't want to build/provide perf
>> - when licensing of dependencies would prohibit perf and hence
>> the kernel from being built.
>>
>> To solve some of these problems, this recipe is the extraction of
>> the linux-tools.inc provided perf compilation into a standalone
>> perf recipe that builds out of the kernel source, but is otherwise
>> independent.
>>
>> No new functionality is provided above what the linux-tools.inc
>> variant provided, but the separate recipe provides baseline for
>> adding new functionality.
>>
>> Signed-off-by: Liang Li<liang.li@windriver.com>
>> Signed-off-by: Bruce Ashfield<bruce.ashfield@windriver.com>
>> ---
>> meta/classes/kernel.bbclass | 7 +----
>> meta/recipes-kernel/perf/perf_3.4.bb | 50
>> ++++++++++++++++++++++++++++++++++
>> 2 files changed, 51 insertions(+), 6 deletions(-)
>> create mode 100644 meta/recipes-kernel/perf/perf_3.4.bb
>>
>> diff --git a/meta/classes/kernel.bbclass b/meta/classes/kernel.bbclass
>> index 690de96..8d52d74 100644
>> --- a/meta/classes/kernel.bbclass
>> +++ b/meta/classes/kernel.bbclass
>> @@ -469,7 +469,7 @@ python populate_packages_prepend () {
>> metapkg = "kernel-modules"
>> d.setVar('ALLOW_EMPTY_' + metapkg, "1")
>> d.setVar('FILES_' + metapkg, "")
>> - blacklist = [ 'kernel-dev', 'kernel-image', 'kernel-base',
>> 'kernel-vmlinux', 'perf', 'perf-dbg', 'kernel-misc' ]
>> + blacklist = [ 'kernel-dev', 'kernel-image', 'kernel-base',
>> 'kernel-vmlinux', 'kernel-misc' ]
>> for l in module_deps.values():
>> for i in l:
>> pkg = module_pattern % legitimize_package_name(re.match(module_regex,
>> os.path.basename(i)).group(1))
>> @@ -548,8 +548,3 @@ addtask deploy before do_build after do_install
>>
>> EXPORT_FUNCTIONS do_deploy
>>
>> -# perf must be enabled in individual kernel recipes
>> -PACKAGES =+ "perf-dbg perf"
>> -FILES_perf = "${bindir}/* \
>> - ${libexecdir}"
>> -FILES_perf-dbg = "${FILES_${PN}-dbg}"
>> diff --git a/meta/recipes-kernel/perf/perf_3.4.bb
>> b/meta/recipes-kernel/perf/perf_3.4.bb
>> new file mode 100644
>> index 0000000..997beb4
>> --- /dev/null
>> +++ b/meta/recipes-kernel/perf/perf_3.4.bb
>> @@ -0,0 +1,50 @@
>> +SUMMARY = "Performance analysis tools for Linux"
>> +DESCRIPTION = "Performance counters for Linux are a new kernel-based \
>> +subsystem that provide a framework for all things \
>> +performance analysis. It covers hardware level \
>> +(CPU/PMU, Performance Monitoring Unit) features \
>> +and software features (software counters, tracepoints) \
>> +as well."
>> +
>> +LICENSE = "GPLv2"
>> +LIC_FILES_CHKSUM = "file://COPYING;md5=d7810fab7487fb0aad327b76f1be7cd7"
>> +
>> +PR = "r0"
>> +
>> +BUILDPERF_libc-uclibc = "no"
>> +
>> +DEPENDS = "virtual/kernel \
>> + virtual/${MLPREFIX}libc \
>> + ${MLPREFIX}elfutils \
>> + ${MLPREFIX}binutils \
>> + "
>> +RDEPENDS_${PN} += "elfutils perl python"
>> +
> Do you need to duplicated elfutils here?
AFAIK yes. Since perf uses them on the target.
>
> And are both perl and python required on the runtime to use perf?
Yes. With all the perf bindings, which is the plan, and one of the
main points in pulling this out from the kernel itself.
>
> Can we package the perl and python bits independently? Does it make
> sense to do that? I have not used the kernel perf tools.
That's down the road, TomZ is waiting for this to work on exactly
that.
Bruce
>
> Sau!
>
>
>> +PROVIDES = "virtual/perf"
>> +
>> +inherit kernel-arch
>> +
>> +S = "${STAGING_KERNEL_DIR}"
>> +B = "${WORKDIR}/${BPN}-${PV}"
>> +
>> +EXTRA_OEMAKE = \
>> + '-C ${S}/tools/perf \
>> + O=${B} \
>> + CROSS_COMPILE=${TARGET_PREFIX} \
>> + ARCH=${ARCH} \
>> + CC="${CC}" \
>> + AR="${AR}" \
>> + prefix=/usr \
>> + NO_GTK2=1 NO_NEWT=1 NO_DWARF=1 \
>> + '
>> +
>> +do_compile() {
>> + oe_runmake all
>> +}
>> +
>> +do_install() {
>> + oe_runmake DESTDIR=${D} install
>> +}
>> +
>> +PACKAGE_ARCH = "${MACHINE_ARCH}"
>> +
>
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 2/3] recipes-kernel: make perf a standalone package
2012-06-20 14:31 ` [PATCH 2/3] recipes-kernel: make perf a standalone package Bruce Ashfield
2012-06-20 15:00 ` Saul Wold
@ 2012-06-20 15:25 ` Paul Eggleton
2012-06-20 15:27 ` Bruce Ashfield
1 sibling, 1 reply; 9+ messages in thread
From: Paul Eggleton @ 2012-06-20 15:25 UTC (permalink / raw)
To: openembedded-core, liang.li; +Cc: saul.wold
On Wednesday 20 June 2012 10:31:40 Bruce Ashfield wrote:
> From: Liang Li <liang.li@windriver.com>
>...
> +EXTRA_OEMAKE = \
> + '-C ${S}/tools/perf \
> + O=${B} \
> + CROSS_COMPILE=${TARGET_PREFIX} \
> + ARCH=${ARCH} \
> + CC="${CC}" \
> + AR="${AR}" \
> + prefix=/usr \
> + NO_GTK2=1 NO_NEWT=1 NO_DWARF=1 \
Coincidentally, I've just noticed that the current (kernel integrated) perf
package can sometimes depend on gtk+/glib-2.0 or not depending on whether
these are available when the kernel is built. Presumably NO_GTK2=1 above
disables gtk+ support and thus would prevent this?
Cheers,
Paul
--
Paul Eggleton
Intel Open Source Technology Centre
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 2/3] recipes-kernel: make perf a standalone package
2012-06-20 15:25 ` Paul Eggleton
@ 2012-06-20 15:27 ` Bruce Ashfield
0 siblings, 0 replies; 9+ messages in thread
From: Bruce Ashfield @ 2012-06-20 15:27 UTC (permalink / raw)
To: Paul Eggleton; +Cc: saul.wold, liang.li, openembedded-core
On 12-06-20 11:25 AM, Paul Eggleton wrote:
> On Wednesday 20 June 2012 10:31:40 Bruce Ashfield wrote:
>> From: Liang Li<liang.li@windriver.com>
>> ...
>> +EXTRA_OEMAKE = \
>> + '-C ${S}/tools/perf \
>> + O=${B} \
>> + CROSS_COMPILE=${TARGET_PREFIX} \
>> + ARCH=${ARCH} \
>> + CC="${CC}" \
>> + AR="${AR}" \
>> + prefix=/usr \
>> + NO_GTK2=1 NO_NEWT=1 NO_DWARF=1 \
>
> Coincidentally, I've just noticed that the current (kernel integrated) perf
> package can sometimes depend on gtk+/glib-2.0 or not depending on whether
> these are available when the kernel is built. Presumably NO_GTK2=1 above
> disables gtk+ support and thus would prevent this?
That was the plan. It hard disables it for now, and once we have
a more flexible package, we can add some optional dependencies and
features back into the equation.
Cheers,
Bruce
>
> Cheers,
> Paul
>
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [v2 PATCH 0/3] perf: make perf a standlone recipe
2012-06-20 14:31 [v2 PATCH 0/3] perf: make perf a standlone recipe Bruce Ashfield
` (2 preceding siblings ...)
2012-06-20 14:31 ` [PATCH 3/3] recipes-kernel: remove linux-tools.inc Bruce Ashfield
@ 2012-06-22 18:00 ` Saul Wold
3 siblings, 0 replies; 9+ messages in thread
From: Saul Wold @ 2012-06-22 18:00 UTC (permalink / raw)
To: Patches and discussions about the oe-core layer; +Cc: liang.li
On 06/20/2012 07:31 AM, Bruce Ashfield wrote:
> Richard/Saul,
>
> Here is the re-work of the standalone perf build patch
> series. We isolated the errors that Saul was seeing on the
> autobuilder, and it stemmed from the misuse of the sources
> symlink back into the working kernel directory. As Richard
> pointed out, this would also break in a rm_work enabled
> build.
>
> I've also removed parts of the standalone recipe that were
> inherited from its former life as a sub-part of the kernel
> recipes (the non-standard depends usage, etc) as part of this
> v2.
>
> To build completely out of the sysroot patch 1/3 tells the
> story. We just need to save $kerndir/tools and $kerndir/lib
> from being removed during the pruning. As far as I'm concerned
> this is small and reasonable, since there are a few tools in
> the kernel source tree that are of interest and may want to
> be built and packaged separately.
>
> The find now has a couple more prunes in it, which of course
> makes it a bit harder to read. If we really want, a new magic
> variable could be created where recipes/kernel could specify
> what should be saved in the sysroot .. but I didn't want to
> go there yet.
>
> I've built and runtime tested things here, and everything
> looks sane.
>
> original v1 text is below
>
> -->-->-->-->-->-->-->-->-->-->-->-->
> We've wanted to do this for some time, and now have finally split
> out perf from being a sub-part of the kernel packages into a
> standalone package that is built out of the kernel sources.
>
> I've built and tested this by adding task-core-tools-profile to
> my IMAGE_INSTALL, and perf behaves just as it did before. I've
> also tested this on my oe-core checkout/repo, and it works fine
> there as well (but I'm using my easier to access contrib
> branch for now).
>
> There's additional work that can be done more easily once this
> is split, so please consider this for inclusion, but I'd like
> to keep this initial version as an exact functional match as
> what was previously in place.
>
> I've removed the old linux-tools.inc and updated any kernel
> recipes that I know about that have references to it. If there
> are other dependent recipes, they'll need to be updated.
>
> From the patch itself:
>
> perf has been coupled to the kernel packages via kernel.bbclass.
> While maintaining the build of perf out of the kernel source tree
> is desired the package coupling has proved to be awkward in
> several situations such as:
>
> - when a kernel recipe doesn't want to build/provide perf
> - when licensing of dependencies would prohibit perf and hence
> the kernel from being built.
>
> To solve some of these problems, this recipe is the extraction of
> the linux-tools.inc provided perf compilation into a standalone
> perf recipe that builds out of the kernel source, but is otherwise
> independent.
>
> No new functionality is provided above what the linux-tools.inc
> variant provided, but the separate recipe provides baseline for
> adding new functionality.
> -->-->-->-->-->-->-->-->-->-->-->-->
>
> This addresses [YOCTO #1552]
>
> cc: Tom Zanussi<tom.zanussi@intel.com>
> cc: Liang Li<liang.li@windriver.com>
>
> Cheers,
>
> Bruce
>
> The following changes since commit e0a70547069fe7e8a2d6bdaffc985fb172d46c31:
> Jason Wessel (1):
> perl: Allow perl to cross build and native build in a directory named "t"
>
> are available in the git repository at:
>
> git://git.pokylinux.org/poky-contrib zedd/perf
> http://git.pokylinux.org/cgit.cgi/poky-contrib/log/?h=zedd/perf
>
> Bruce Ashfield (2):
> kernel: save $kerndir/tools and $kerndir/lib from pruning
> recipes-kernel: remove linux-tools.inc
>
> Liang Li (1):
> recipes-kernel: make perf a standalone package
>
> meta/classes/kernel.bbclass | 9 +---
> meta/recipes-kernel/linux/linux-tools.inc | 41 ------------------
> meta/recipes-kernel/linux/linux-yocto-rt_3.0.bb | 2 -
> meta/recipes-kernel/linux/linux-yocto-rt_3.2.bb | 2 -
> meta/recipes-kernel/linux/linux-yocto-rt_3.4.bb | 2 -
> meta/recipes-kernel/linux/linux-yocto_3.0.bb | 2 -
> meta/recipes-kernel/linux/linux-yocto_3.2.bb | 2 -
> meta/recipes-kernel/linux/linux-yocto_3.4.bb | 2 -
> meta/recipes-kernel/perf/perf_3.4.bb | 50 +++++++++++++++++++++++
> 9 files changed, 52 insertions(+), 60 deletions(-)
> delete mode 100644 meta/recipes-kernel/linux/linux-tools.inc
> create mode 100644 meta/recipes-kernel/perf/perf_3.4.bb
>
>
> _______________________________________________
> Openembedded-core mailing list
> Openembedded-core@lists.openembedded.org
> http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core
>
>
Merged into OE-Core
Thanks
Sau!
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2012-06-22 18:11 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-06-20 14:31 [v2 PATCH 0/3] perf: make perf a standlone recipe Bruce Ashfield
2012-06-20 14:31 ` [PATCH 1/3] kernel: save $kerndir/tools and $kerndir/lib from pruning Bruce Ashfield
2012-06-20 14:31 ` [PATCH 2/3] recipes-kernel: make perf a standalone package Bruce Ashfield
2012-06-20 15:00 ` Saul Wold
2012-06-20 15:02 ` Bruce Ashfield
2012-06-20 15:25 ` Paul Eggleton
2012-06-20 15:27 ` Bruce Ashfield
2012-06-20 14:31 ` [PATCH 3/3] recipes-kernel: remove linux-tools.inc Bruce Ashfield
2012-06-22 18:00 ` [v2 PATCH 0/3] perf: make perf a standlone recipe Saul Wold
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox