Define variable PACKAGE_BUILDPATH_TEXT_FILES to list files that have build paths and remove these paths at do_package time.
Define variable PACKAGE_BUILDPATH_TEXT_PATTERNS to list build path patterns, which used by sed, it removes --sysroot and -fdebug-prefix-map in text files by default. Define python function to remove build path in variable. Define python function to remove build path in python compiled code. [YOCTO #9169] Signed-off-by: Hongxu Jia <hongxu....@windriver.com> --- meta/classes/fix_buildpaths.bbclass | 44 +++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 meta/classes/fix_buildpaths.bbclass diff --git a/meta/classes/fix_buildpaths.bbclass b/meta/classes/fix_buildpaths.bbclass new file mode 100644 index 0000000..49dbf11 --- /dev/null +++ b/meta/classes/fix_buildpaths.bbclass @@ -0,0 +1,44 @@ +PACKAGE_PREPROCESS_FUNCS += "${@base_conditional('PACKAGE_BUILDPATH_TEXT_FILES','', '', 'remove_buildpath_package_preprocess', d)}" +remove_buildpath_package_preprocess () { + # Remove build paths in text files + for file in ${PACKAGE_BUILDPATH_TEXT_FILES};do + sed -i ${PACKAGE_BUILDPATH_TEXT_PATTERNS} ${PKGD}$file + done +} + +# List build path patterns, which used by sed, it removes +# --sysroot and -fdebug-prefix-map by default. +PACKAGE_BUILDPATH_TEXT_PATTERNS = " \ + -e 's:--sysroot=${STAGING_DIR_TARGET}::g' \ + -e 's:-fdebug-prefix-map=${B}=/usr/src/${BPN}::g' \ + -e 's:-fdebug-prefix-map=${S}=/usr/src/${BPN}::g' \ + -e 's:-fdebug-prefix-map=${STAGING_DIR_NATIVE}=::g' \ + -e 's:-fdebug-prefix-map=${STAGING_DIR_HOST}=::g' \ +" + +# List files which have build paths, and remove these paths. +PACKAGE_BUILDPATH_TEXT_FILES ??= "" + +# Remove build path in variable +def remove_buildpath_variable(d, var): + val = d.getVar(var, True) or '' + + toolchain_opts = d.getVar('TOOLCHAIN_OPTIONS', True) + val = val.replace(toolchain_opts, '') + + debug_flags = d.getVar('DEBUG_FLAGS', True).split() + for opt in debug_flags: + if '-fdebug-prefix-map=' in opt: + val = val.replace(opt, '') + + return val + +# Remove build path in python compiled code which +# located in root_path +def remove_buildpath_bytecode(root_path, byte_code): + import py_compile + + file = root_path + byte_code[0:-1] + dfile = byte_code[0:-1] + py_compile.compile(file, dfile=dfile) + -- 1.9.1 -- _______________________________________________ Openembedded-core mailing list Openembedded-core@lists.openembedded.org http://lists.openembedded.org/mailman/listinfo/openembedded-core