[oe-commits] Liang Li : recipes-kernel: make perf a standalone package

git at git.openembedded.org git at git.openembedded.org
Thu Jun 21 11:58:59 UTC 2012


Module: openembedded-core.git
Branch: master
Commit: ab883d0c1a05bd99e97e5d71bc7bed05cb1ae8c8
URL:    http://git.openembedded.org/?p=openembedded-core.git&a=commit;h=ab883d0c1a05bd99e97e5d71bc7bed05cb1ae8c8

Author: Liang Li <liang.li at windriver.com>
Date:   Wed Jun 20 10:31:40 2012 -0400

recipes-kernel: make perf a standalone package

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 at windriver.com>
Signed-off-by: Bruce Ashfield <bruce.ashfield at windriver.com>
Signed-off-by: Richard Purdie <richard.purdie at linuxfoundation.org>

---

 meta/classes/kernel.bbclass          |    7 +----
 meta/recipes-kernel/perf/perf_3.4.bb |   50 ++++++++++++++++++++++++++++++++++
 2 files changed, 51 insertions(+), 6 deletions(-)

diff --git a/meta/classes/kernel.bbclass b/meta/classes/kernel.bbclass
index a80ef9c..31e633b 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}"
+





More information about the Openembedded-commits mailing list