The recipes which are using externalsrc method doesn't contain the debug sources in their -dbg packages.
Add a handling in copydebugsources function to copy the debugsources for externalsrc -dbg packages. Signed-off-by: Vignesh Rajendran <[email protected]> --- meta/classes/externalsrc.bbclass | 3 +++ meta/classes/package.bbclass | 14 +++++++++++--- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/meta/classes/externalsrc.bbclass b/meta/classes/externalsrc.bbclass index c9f5cf7..135670d 100644 --- a/meta/classes/externalsrc.bbclass +++ b/meta/classes/externalsrc.bbclass @@ -129,6 +129,9 @@ python () { d.setVar('CONFIGURESTAMPFILE', configstamp) d.setVar('STAMP', '${STAMPS_DIR}/work-shared/${PN}/${EXTENDPE}${PV}-${PR}') d.setVar('STAMPCLEAN', '${STAMPS_DIR}/work-shared/${PN}/*-*') + + # set DEBUG_PREFIX_MAP to external source path + d.appendVar("DEBUG_PREFIX_MAP", "-fdebug-prefix-map=${EXTERNALSRC}=/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR}") } python externalsrc_configure_prefunc() { diff --git a/meta/classes/package.bbclass b/meta/classes/package.bbclass index edeffa9..2c4472d 100644 --- a/meta/classes/package.bbclass +++ b/meta/classes/package.bbclass @@ -420,6 +420,7 @@ def copydebugsources(debugsrcdir, d): workdir = d.getVar("WORKDIR") workparentdir = os.path.dirname(os.path.dirname(workdir)) workbasedir = os.path.basename(os.path.dirname(workdir)) + "/" + os.path.basename(workdir) + externalsrc = d.getVar('EXTERNALSRC', True) # If build path exists in sourcefile, it means toolchain did not use # -fdebug-prefix-map to compile @@ -444,10 +445,17 @@ def copydebugsources(debugsrcdir, d): processdebugsrc += "fgrep -zw '%s' | " # Remove prefix in the source paths processdebugsrc += "sed 's#%s##g' | " - processdebugsrc += "(cd '%s' ; cpio -pd0mlL --no-preserve-owner '%s%s' 2>/dev/null)" + # handle external sources to provide sources in -dbg packages + if externalsrc: + localsrc_prefix = "/usr/src/debug/" + processdebugsrc += "sed 's#%s/##g' | " + processdebugsrc += "(cd '%s' ; cpio -pd0mlL --no-preserve-owner '%s%s/%s' 2>/dev/null)" + cmd = processdebugsrc % (sourcefile, workbasedir, localsrc_prefix, workbasedir, externalsrc, dvar, debugsrcdir, workbasedir) + else: + processdebugsrc += "(cd '%s' ; cpio -pd0mlL --no-preserve-owner '%s%s' 2>/dev/null)" + cmd = processdebugsrc % (sourcefile, workbasedir, localsrc_prefix, workparentdir, dvar, debugsrcdir) - cmd = processdebugsrc % (sourcefile, workbasedir, localsrc_prefix, workparentdir, dvar, debugsrcdir) - (retval, output) = oe.utils.getstatusoutput(cmd) + (retval, output) = oe.utils.getstatusoutput(cmd) # Can "fail" if internal headers/transient sources are attempted #if retval: # bb.fatal("debug source copy failed with exit code %s (cmd was %s)" % (retval, cmd)) -- 2.7.4 -- _______________________________________________ Openembedded-core mailing list [email protected] http://lists.openembedded.org/mailman/listinfo/openembedded-core
