[OE-core] [PATCH 1/2] recipes-kernel: make perf a standalone package

Bruce Ashfield bruce.ashfield at gmail.com
Sun Jun 17 01:19:08 UTC 2012


On Sat, Jun 16, 2012 at 1:34 PM, Saul Wold <saul.wold at intel.com> wrote:
> On 06/15/2012 01:23 PM, Bruce Ashfield wrote:
>>
>> From: Liang Li<liang.li at windriver.com>
>>
>> perf has been coupled to the kernel packages via kernel.bbclass.
>> While maintaining the build of perf out of the kernel source tree
>> is desired the package coupling has proved to be awkward in
>> several situations such as:
>>
>>   - when a kernel recipe doesn't want to build/provide perf
>>   - when licensing of dependencies would prohibit perf and hence
>>     the kernel from being built.
>>
>> To solve some of these problems, this recipe is the extraction of
>> the linux-tools.inc provided perf compilation into a standalone
>> perf recipe that builds out of the kernel source, but is otherwise
>> independent.
>>
>> No new functionality is provided above what the linux-tools.inc
>> variant provided, but the separate recipe provides baseline for
>> adding new functionality.
>>
>> Signed-off-by: Liang Li<liang.li at windriver.com>
>> Signed-off-by: Bruce Ashfield<bruce.ashfield at windriver.com>
>> ---
>>  meta/classes/kernel.bbclass          |    7 +----
>>  meta/recipes-kernel/perf/perf_3.4.bb |   52
>> ++++++++++++++++++++++++++++++++++
>>  2 files changed, 53 insertions(+), 6 deletions(-)
>>  create mode 100644 meta/recipes-kernel/perf/perf_3.4.bb
>>
>> diff --git a/meta/classes/kernel.bbclass b/meta/classes/kernel.bbclass
>> index 116e10b..02234df 100644
>> --- a/meta/classes/kernel.bbclass
>> +++ b/meta/classes/kernel.bbclass
>> @@ -469,7 +469,7 @@ python populate_packages_prepend () {
>>        metapkg = "kernel-modules"
>>        d.setVar('ALLOW_EMPTY_' + metapkg, "1")
>>        d.setVar('FILES_' + metapkg, "")
>> -       blacklist = [ 'kernel-dev', 'kernel-image', 'kernel-base',
>> 'kernel-vmlinux', 'perf', 'perf-dbg', 'kernel-misc' ]
>> +       blacklist = [ 'kernel-dev', 'kernel-image', 'kernel-base',
>> 'kernel-vmlinux', 'kernel-misc' ]
>>        for l in module_deps.values():
>>                for i in l:
>>                        pkg = module_pattern %
>> legitimize_package_name(re.match(module_regex,
>> os.path.basename(i)).group(1))
>> @@ -548,8 +548,3 @@ addtask deploy before do_build after do_install
>>
>>  EXPORT_FUNCTIONS do_deploy
>>
>> -# perf must be enabled in individual kernel recipes
>> -PACKAGES =+ "perf-dbg perf"
>> -FILES_perf = "${bindir}/* \
>> -              ${libexecdir}"
>> -FILES_perf-dbg = "${FILES_${PN}-dbg}"
>> diff --git a/meta/recipes-kernel/perf/perf_3.4.bb
>> b/meta/recipes-kernel/perf/perf_3.4.bb
>> new file mode 100644
>> index 0000000..9c8ceb0
>> --- /dev/null
>> +++ b/meta/recipes-kernel/perf/perf_3.4.bb
>> @@ -0,0 +1,52 @@
>> +SUMMARY = "Performance analysis tools for Linux"
>> +DESCRIPTION = "Performance counters for Linux are a new kernel-based \
>> +subsystem that provide a framework for all things \
>> +performance analysis. It covers hardware level \
>> +(CPU/PMU, Performance Monitoring Unit) features \
>> +and software features (software counters, tracepoints) \
>> +as well."
>> +
>> +LICENSE = "GPLv2"
>> +LIC_FILES_CHKSUM = "file://COPYING;md5=d7810fab7487fb0aad327b76f1be7cd7"
>> +
>
> This fails to find the correct file in the poky-lsb case, not sure what is
> going on yet, but here is the error from the autobuilder.
>
> ERROR: Function failed: perf: LIC_FILES_CHKSUM points to an invalid file:
> /srv/home/pokybuild/yocto-autobuilder/yocto-slave/nightly-x86/build/build/tmp/sysroots/qemux86/kernel/source/COPYING
> NOTE: package perf-3.4-r0: task do_configure: Failed
> ERROR: Task 3336
> (/srv/home/pokybuild/yocto-autobuilder/yocto-slave/nightly-x86/build/meta/recipes-kernel/perf/perf_3.4.bb,
> do_configure) failed with exit code '1'
>
> This can be reproduced by setting DISTRO="poky-lsb" in your local.conf
>
> Please investigate, thanks

My turn to ask a question. What are the host requirements for poky-lsb, and why
aren't they checked up front ? I can't trigger the error, since I
can't build poky-lsb
on my builder, due to gdk-pixbuf-native failing in configure:

| checking sys/sysinfo.h usability... yes
| checking sys/sysinfo.h presence... yes
| checking for sys/sysinfo.h... yes
| checking for mediaLib 2.3... checking for mlib_ImageSetStruct in -lmlib... no
| checking for x86 platform... no
| checking for GDK_PIXBUF_XLIB_DEP... no
| configure: error: Package requirements (x11 gobject-2.0) were not met:
|
| No package 'x11' found

Bruce

>
>        Sau!
>
>
>
>> +PR = "r0"
>> +
>> +BUILDPERF_libc-uclibc = "no"
>> +
>> +PERFDEPENDS = " \
>> +virtual/${MLPREFIX}libc:do_populate_sysroot \
>> +${MLPREFIX}elfutils:do_populate_sysroot \
>> +${MLPREFIX}binutils:do_populate_sysroot \
>> +"
>> +RDEPENDS += "elfutils perl python"
>> +
>> +PROVIDES = "virtual/perf"
>> +
>> +S = "${STAGING_KERNEL_DIR}/source"
>> +B = "${WORKDIR}/${BPN}-${PV}"
>> +
>> +EXTRA_OEMAKE = \
>> +               '-C ${S}/tools/perf \
>> +               O=${B} \
>> +               CROSS_COMPILE=${TARGET_PREFIX} \
>> +               ARCH=${TARGET_ARCH} \
>> +               CC="${CC}" \
>> +               AR="${AR}" \
>> +               prefix=/usr \
>> +               NO_GTK2=1 NO_NEWT=1 NO_DWARF=1 \
>> +               '
>> +
>> +do_configure[depends] = "virtual/kernel:do_populate_sysroot"
>> +
>> +do_compile() {
>> +       oe_runmake all
>> +}
>> +
>> +do_compile[depends] = "${PERFDEPENDS}"
>> +
>> +do_install() {
>> +       oe_runmake DESTDIR=${D} install
>> +}
>> +
>> +PACKAGE_ARCH = "${MACHINE_ARCH}"
>> +
>
>
>
> _______________________________________________
> Openembedded-core mailing list
> Openembedded-core at lists.openembedded.org
> http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core



-- 
"Thou shalt not follow the NULL pointer, for chaos and madness await
thee at its end"




More information about the Openembedded-core mailing list