[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