From patchwork Tue Jan 24 21:49:01 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [3/3] systemtap: build and install uprobes.ko Date: Tue, 24 Jan 2012 21:49:01 -0000 From: Wade Farnsworth X-Patchwork-Id: 20087 Message-Id: <4F1F274D.9070509@mentor.com> To: Patches and discussions about the oe-core layer 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 --- 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 +}