[OE-core] [PATCH 3/3] systemtap: build and install uprobes.ko

Wade Farnsworth wade_farnsworth at mentor.com
Tue Jan 24 21:49:01 UTC 2012


SystemTap needs to provide uprobes.ko in order to support user space
probing.  Build and install the uprobes.ko on systems where it makes
sense to.

Signed-off-by: Wade Farnsworth <wade_farnsworth at mentor.com>
---
 meta/recipes-kernel/systemtap/systemtap_git.bb |   57 ++++++++++++++++++++++-
 1 files changed, 54 insertions(+), 3 deletions(-)

diff --git a/meta/recipes-kernel/systemtap/systemtap_git.bb b/meta/recipes-kernel/systemtap/systemtap_git.bb
index 298e005..22f3993 100644
--- a/meta/recipes-kernel/systemtap/systemtap_git.bb
+++ b/meta/recipes-kernel/systemtap/systemtap_git.bb
@@ -2,12 +2,12 @@ DESCRIPTION = "SystemTap - script-directed dynamic tracing and performance analy
 LICENSE = "GPLv2"
 LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
 
-DEPENDS = "elfutils sqlite3 systemtap-native"
+DEPENDS = "elfutils sqlite3 systemtap-native virtual/kernel"
 DEPENDS_virtclass-native = "elfutils sqlite3 gettext-native"
 DEPENDS_virtclass-nativesdk = "elfutils sqlite3 gettext-native"
 
 SRCREV = "a56e4b7800e3fa8f9df6f4434cb02f86f6e995bc"
-PR = "r4"
+PR = "r5"
 PV = "1.6+git${SRCPV}"
 
 SRC_URI = "git://sources.redhat.com/git/systemtap.git;protocol=git"
@@ -28,8 +28,59 @@ COMPATIBLE_HOST = '(x86_64.*|i.86.*|powerpc.*|arm.*)-linux'
 
 S = "${WORKDIR}/git"
 
-inherit autotools gettext
+inherit autotools gettext module-base
 
 BBCLASSEXTEND = "native nativesdk"
 
+FILES_${PN} += "${datadir}/systemtap/runtime/uprobes"
 FILES_${PN}-dbg += "${libexecdir}/systemtap/.debug"
+
+# Compile and install the uprobes kernel module.  Note that staprun
+# expects it in the systemtap/runtime directory, not in /lib/modules.
+# Note that we only build uprobes on machines with utrace support.
+do_compile_uprobes() {
+	if grep -q "CONFIG_UTRACE=y" ${STAGING_KERNEL_DIR}/.config
+	then
+		unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS CC LD CPP
+		oe_runmake CC="${KERNEL_CC}" LD="${KERNEL_LD}" \
+			   AR="${KERNEL_AR}" \
+			   -C ${STAGING_KERNEL_DIR} scripts
+		oe_runmake KDIR=${STAGING_KERNEL_DIR}   \
+			   M="${S}/runtime/uprobes/" \
+			   CC="${KERNEL_CC}" LD="${KERNEL_LD}" \
+			   AR="${KERNEL_AR}" \
+			   -C "${S}/runtime/uprobes/"
+	fi
+}
+
+do_compile_uprobes_virtclass-native() {
+	:
+}
+
+do_compile_uprobes_virtclass-nativesdk() {
+	:
+}
+
+do_compile_append() {
+	do_compile_uprobes
+}
+
+do_install_uprobes() {
+	if [ -e "${S}/runtime/uprobes/uprobes.ko" ]
+	then
+		install -d ${D}/usr/share/systemtap/runtime/uprobes/
+		install -m 0644 ${S}/runtime/uprobes/uprobes.ko ${D}/usr/share/systemtap/runtime/uprobes/
+	fi
+}
+
+do_install_uprobes_virtclass-native() {
+	:
+}
+
+do_install_uprobes_virtclass-nativesdk() {
+	:
+}
+
+do_install_append() {
+	do_install_uprobes
+}
-- 
1.7.0.4





More information about the Openembedded-core mailing list