[OE-core] [PATCH V2] perf: make a copy of kernel source to perf workdir
Bruce Ashfield
bruce.ashfield at windriver.com
Mon Apr 23 17:51:45 UTC 2018
On 2018-04-23 4:13 AM, Hongxu Jia wrote:
> Since perf modify kernel source which shared by multiple
> recipes, it probably caused kernel-devsrc compile failure
> at world build.
> ...
> |0 blocks
> |cpio: ./tools/perf/arch/arm/util/sedr7ORqk: Cannot stat:
> No such file or directory
> |0 blocks
> ...
> cpio tried to find a file at ${S}/tools/perf and failed
> if the input list is not valid.
>
> Make a copy of kernel shared source directory into a perf workdir
> could fix the issue.
>
> Drop `Fix for rebuilding' which is obsolete
>
> Signed-off-by: Hongxu Jia <hongxu.jia at windriver.com>
> ---
> meta/recipes-kernel/perf/perf.bb | 11 ++++++-----
> 1 file changed, 6 insertions(+), 5 deletions(-)
>
> diff --git a/meta/recipes-kernel/perf/perf.bb b/meta/recipes-kernel/perf/perf.bb
> index 872b5f0..8b40806 100644
> --- a/meta/recipes-kernel/perf/perf.bb
> +++ b/meta/recipes-kernel/perf/perf.bb
> @@ -61,7 +61,7 @@ export PERL_ARCHLIB = "${STAGING_LIBDIR}${PERL_OWN_DIR}/perl/${@get_perl_version
>
> inherit kernelsrc
>
> -B = "${WORKDIR}/${BPN}-${PV}"
> +S = "${WORKDIR}/${BP}"
> SPDX_S = "${S}/tools/perf"
>
> # The LDFLAGS is required or some old kernels fails due missing
> @@ -119,11 +119,12 @@ do_install() {
> fi
> }
>
> -do_configure_prepend () {
> - # Fix for rebuilding
> - rm -rf ${B}/
> - mkdir -p ${B}/
> +do_configure[prefuncs] += "git_clone_kernel_source"
> +git_clone_kernel_source () {
> + git clone --single-branch ${STAGING_KERNEL_DIR} ${S}
I probably would have used "cp -a -r", or similar. Since it
is possible that a kernel may not actually be a git repo (linux-yocto
always is, but that is just one data point).
Also, did you try just copying the tools SRC dir + whatever
infrastructure is needed to build ? That will save us a LOT
of i/o when moving the source around for perf to build.
But outside of those details/mechanics, the approach is sound.
Bruce
> +}
>
> +do_configure_prepend () {
> # If building a multlib based perf, the incorrect library path will be
> # detected by perf, since it triggers via: ifeq ($(ARCH),x86_64). In a 32 bit
> # build, with a 64 bit multilib, the arch won't match and the detection of a
>
More information about the Openembedded-core
mailing list