AnsweredAssumed Answered

SDK 2.0 LS1043ARDB EXTERNALSRC fails for full build

Question asked by Tracy Smith on Feb 6, 2017
Latest reply on Mar 10, 2017 by Tracy Smith

When doing a fsl-image-full bitbake and after creating an external source, the bitbake still attempts to do a do_patch from the linux-qoriq_4.1.bb and fails.  Why does the do_patch fail when all source is external?  Recipes are all SDK 2.0 1609 defaults except for adding the external source: EXTERNALSRC = "/home/tlsmith/neo_mcu_eos-qoriq_v2_sources/src/ls1043ardb-fsl-linux/linux-qoriq/4.1-r0/git"

 

bitbake fsl-image-full

NOTE: Preparing RunQueue
ERROR: Task do_populate_lic in /home/tlsmith/neo_mcu_eos-qoriq_v2_sources/sources/poky/meta/recipes-kernel/perf/perf.bb depends upon non-existent task do_patch in /home/tlsmith/neo_mcu_eos-qoriq_v2_sources/sources/meta-freescale/recipes-kernel/linux/linux-qoriq_4.1.bb

Summary: There was 1 ERROR message shown, returning a non-zero exit code.

Using EXTERNALSRC was able to successfully build the kernel (bitbake virtual/kernel) from an external source with no issues and a message printed indicating the externalsrc was being used.  But there is a dependency issue when doing fsl-image-full where the perf.bb needs to include a patch but cannot find it.

The first issue is why patches cannot be found after moving the entire source to an external location?  Does the full build assume source to be in a specific location to do patches?  But when externalsrc is used and source is relocated, the  source needed for patching cannot be found.  If this is the case, how do we change the recipes for patches to look for the source using EXTERNALSRC for patches? 

Another issue is that the bitbake uses sources/poky/meta/recipes-kernel/perf/perf.bb instead of or in addition to sources/meta-freescale/recipes-kernel/perf-qoriq/perf-qoriq_....bb, and it is the poky perf.bb recipe that is breaking the full build.  When adding EXTERNALSRC to perf.bb or perf-qoriq_...bb it cannot find the source to patch and the bitbake fsl-image-full breaks.  Why is the poky perf.bb being used when there is a perf-qoriq recipe and how do we avoid breaking the build?

1)   sources/meta-freescale/recipes-kernel/linux/linux-qoriq_4.1.bb


inherit kernel kernel-arch qoriq_build_64bit_kernel siteinfo

inherit fsl-kernel-localversion
require recipes-kernel/linux/linux-dtb.inc

DESCRIPTION = "Linux kernel for Freescale platforms"
LICENSE = "GPLv2"
LIC_FILES_CHKSUM = "file://COPYING;md5=d7810fab7487fb0aad327b76f1be7cd7"

SRC_URI = "git://git.freescale.com/ppc/sdk/linux.git;branch=sdk-v2.0.x"
SRCREV = "bd51baffc04ecc73f933aee1c3a37c8b44b889a7"

EXTERNALSRC = "/home/tlsmith/neo_mcu_eos-qoriq_v2_sources/src/ls1043ardb-fsl-linux/linux-qoriq/4.1-r0/git"

S = "${WORKDIR}/git"

2)   sources/poky/meta/recipes-kernel/perf/perf.bb

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"

EXTERNALSRC = "/home/tlsmith/neo_mcu_eos-qoriq_v2_sources/src/ls1043ardb-fsl-linux/linux-qoriq/4.1-r0/git"

PR = "r9"

require perf-features.inc

BUILDPERF_libc-uclibc = "no"

# gui support was added with kernel 3.6.35
# since 3.10 libnewt was replaced by slang
# to cover a wide range of kernel we add both dependencies
TUI_DEPENDS = "${@perf_feature_enabled('perf-tui', 'libnewt slang', '',d)}"
SCRIPTING_DEPENDS = "${@perf_feature_enabled('perf-scripting', 'perl python', '',d)}"
LIBUNWIND_DEPENDS = "${@perf_feature_enabled('perf-libunwind', 'libunwind', '',d)}"

3)   sources/meta-freescale/recipes-kernel/perf-qoriq/perf-qoriq_0.8.2.bb

DESCRIPTION = "QorIQ extension to Perf for supporting non core counters"
LICENSE = "GPLv2+"
LIC_FILES_CHKSUM = "file://COPYING;md5=e29234dd5d40dc352cc60cc0c93437ba"

SRC_URI = "git://git.freescale.com/ppc/sdk/qoriq-perf.git;branch=master"
SRCREV = "7beb3783edac66bab00c85d99a7b073f569af7fd"
EXTERNALSRC = "/home/tlsmith/neo_mcu_eos-qoriq_v2_sources/src/ls1043ardb-fsl-linux/linux-qoriq/4.1-r0/git"

S = "${WORKDIR}/git"

inherit module autotools-brokensep qoriq_build_64bit_kernel

PROCESSOR_REV ?= "B4860_R1"
EXTRA_OECONF += "--with-linux=${STAGING_KERNEL_DIR} \
    --with-processor=${PROCESSOR_REV}"

EXTRA_OEMAKE += 'SYSROOT="${D}"'

COMPATIBLE_MACHINE = "(b4860qds)"

Outcomes