| Submitter | Bruce Ashfield |
|---|---|
| Date | June 15, 2012, 8:23 p.m. |
| Message ID | <40732c1c548493a69d437f3fbb125affa338b3e9.1339791495.git.bruce.ashfield@windriver.com> |
| Download | mbox | patch |
| Permalink | /patch/29979/ |
| State | New |
| Headers | show |
Comments
On 06/15/2012 01:23 PM, Bruce Ashfield wrote: > From: Liang Li<liang.li@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@windriver.com> > Signed-off-by: Bruce Ashfield<bruce.ashfield@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 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}" > +
On Sat, Jun 16, 2012 at 1:34 PM, Saul Wold <saul.wold@intel.com> wrote: > On 06/15/2012 01:23 PM, Bruce Ashfield wrote: >> >> From: Liang Li<liang.li@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@windriver.com> >> Signed-off-by: Bruce Ashfield<bruce.ashfield@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 ok. Either Liang or myself will have a go with that config. I've never built poky-lsb or have any typical use for it .. so I'd never reproduce this in my own builds :) Cheers, Bruce > > Please investigate, thanks > > 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@lists.openembedded.org > http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core
On Sat, Jun 16, 2012 at 1:34 PM, Saul Wold <saul.wold@intel.com> wrote: > On 06/15/2012 01:23 PM, Bruce Ashfield wrote: >> >> From: Liang Li<liang.li@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@windriver.com> >> Signed-off-by: Bruce Ashfield<bruce.ashfield@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@lists.openembedded.org > http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core
On 12-06-16 1:34 PM, Saul Wold wrote: > On 06/15/2012 01:23 PM, Bruce Ashfield wrote: >> From: Liang Li<liang.li@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@windriver.com> >> Signed-off-by: Bruce Ashfield<bruce.ashfield@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 I forced x11 off in my gdk-pixbuf (I couldn't fine the right DISTRO_FEATURE tweak to do it .. but I digress), and I was able to build poky-lsb just fine here. NOTE: Running task 2673 of 2674 (ID: 8, /home/bruce/poky/meta/recipes-core/images/core-image-minimal.bb, do_rootfs) NOTE: package core-image-minimal-1.0-r0: task do_rootfs: Started NOTE: package core-image-minimal-1.0-r0: task do_rootfs: Succeeded NOTE: Running noexec task 2674 of 2674 (ID: 5, /home/bruce/poky/meta/recipes-core/images/core-image-minimal.bb, do_build) NOTE: Tasks Summary: Attempted 2674 tasks of which 2595 didn't need to be rerun and all succeeded. Care to elaborate on what exactly the autobuilder runs that would trigger this .. and remember, I'm a kernel guy, so I'm not familiar with all the ins and outs of what you may or may not being doing to trigger this .. so the more specific you are, the easier it is for me to help out. (i.e. what image was I suppose to build ? Which MACHINE ?) But as of now, I can't reproduce this, and it looks like a dependency problem on the kernel sources that has never been triggered here, so you are going to need to help me .. help you. Cheers, 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}" >> + >
On Sat, Jun 16, 2012 at 11:16 PM, Bruce Ashfield <bruce.ashfield@windriver.com> wrote: > On 12-06-16 1:34 PM, Saul Wold wrote: >> >> On 06/15/2012 01:23 PM, Bruce Ashfield wrote: >>> >>> From: Liang Li<liang.li@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@windriver.com> >>> Signed-off-by: Bruce Ashfield<bruce.ashfield@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 > > > I forced x11 off in my gdk-pixbuf (I couldn't fine the right DISTRO_FEATURE > tweak to do it .. but I digress), and I was able to build poky-lsb > just fine here. > > NOTE: Running task 2673 of 2674 (ID: 8, > /home/bruce/poky/meta/recipes-core/images/core-image-minimal.bb, do_rootfs) > NOTE: package core-image-minimal-1.0-r0: task do_rootfs: Started > NOTE: package core-image-minimal-1.0-r0: task do_rootfs: Succeeded > NOTE: Running noexec task 2674 of 2674 (ID: 5, > /home/bruce/poky/meta/recipes-core/images/core-image-minimal.bb, do_build) > NOTE: Tasks Summary: Attempted 2674 tasks of which 2595 didn't need to be > rerun and all succeeded. > > Care to elaborate on what exactly the autobuilder runs that would > trigger this .. and remember, I'm a kernel guy, so I'm not familiar > with all the ins and outs of what you may or may not being doing to > trigger this .. so the more specific you are, the easier it is for > me to help out. > > (i.e. what image was I suppose to build ? Which MACHINE ?) > > But as of now, I can't reproduce this, and it looks like a dependency > problem on the kernel sources that has never been triggered here, so > you are going to need to help me .. help you. Saul and I have worked out some of the details on this, I've reworked the perf recipe to be less like the kernel.bbclass variant, and a better citizen of the sysroot. Once my testing completes, I'll resubmit the series. Cheers, Bruce > > Cheers, > > 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@lists.openembedded.org > http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core
Patch
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" + +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}" +