[OE-core] [PATCH 3/3] systemtap: build and install uprobes.ko
Khem Raj
raj.khem at gmail.com
Tue Jan 24 23:38:57 UTC 2012
On Tue, Jan 24, 2012 at 1:49 PM, Wade Farnsworth
<wade_farnsworth at 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 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
> +}
could this module be baked as a standalone recipe instead?
since this now depends on kernel makes systemtap to be machine specific
More information about the Openembedded-core
mailing list