| Submitter | Wade Farnsworth |
|---|---|
| Date | Jan. 24, 2012, 9:49 p.m. |
| Message ID | <4F1F274D.9070509@mentor.com> |
| Download | mbox | patch |
| Permalink | /patch/20087/ |
| State | New |
| Headers | show |
Comments
On Tue, Jan 24, 2012 at 1:49 PM, Wade Farnsworth <wade_farnsworth@mentor.com> wrote: > 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@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 > +} could this module be baked as a standalone recipe instead? since this now depends on kernel makes systemtap to be machine specific
Patch
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 +}
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@mentor.com> --- meta/recipes-kernel/systemtap/systemtap_git.bb | 57 ++++++++++++++++++++++- 1 files changed, 54 insertions(+), 3 deletions(-)