[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