Setting the new variable to 'YES' allows to inject into <PKG>_BUILD_DIR instead of <PKG>_DIR as before.
When building out-of-tree some bootloaders like U-Boot expect injected files in the build dir, not in the source dir. Backwards compatibility is ensured, the source dir is still the default, the new inject dest is optional and in case set it overwrites the default. For using this in u-boot package, on top of the things already done to use the old inject mechanism in general, add this line to 'rules/u-boot.make' for example: U_BOOT_INJECT_OOT := YES Signed-off-by: Alexander Dahl <a...@thorsis.com> --- Notes: v2: - dropped the previous approach with the more flexible <PKG>_INJECT_DEST - reworked the whole logic to use new <PKG>_INJECT_OOT variable v1: - implicit rules/post/ptxd_make_world_inject.make | 3 ++- scripts/lib/ptxd_make_world_inject.sh | 23 ++++++++++++++++++++--- 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/rules/post/ptxd_make_world_inject.make b/rules/post/ptxd_make_world_inject.make index eabcdd052..1e3979a2f 100644 --- a/rules/post/ptxd_make_world_inject.make +++ b/rules/post/ptxd_make_world_inject.make @@ -9,7 +9,8 @@ world/inject/env = \ $(call world/env, $(1)) \ pkg_inject_path="$(call ptx/escape,$($(1)_INJECT_PATH))" \ - pkg_inject_files="$(call ptx/escape,$($(1)_INJECT_FILES))" + pkg_inject_files="$(call ptx/escape,$($(1)_INJECT_FILES))" \ + pkg_inject_oot="$(call ptx/escape,$($(1)_INJECT_OOT))" world/inject = \ $(call world/inject/env,$(strip $(1))) \ diff --git a/scripts/lib/ptxd_make_world_inject.sh b/scripts/lib/ptxd_make_world_inject.sh index b74e464c6..e8e94fbe6 100644 --- a/scripts/lib/ptxd_make_world_inject.sh +++ b/scripts/lib/ptxd_make_world_inject.sh @@ -10,7 +10,7 @@ ptxd_make_inject() { local source target source="$(echo ${inject_file} | cut -d ":" -f 1)" - target="${pkg_dir}/$(echo ${inject_file} | cut -d ":" -f 2)" + target="${inject_dest}/$(echo ${inject_file} | cut -d ":" -f 2)" if [[ "${source}" =~ ^/.* ]]; then ptxd_bailout "'${source}' must not be an absolute path!" \ @@ -32,8 +32,25 @@ export -f ptxd_make_inject ptxd_make_world_inject() { ptxd_make_world_init || return - if [ -z "${pkg_dir}" ]; then - ptxd_bailout "<PKG>_DIR empty, no destination to inject to." + if [ -z "${pkg_inject_oot}" ]; then + pkg_inject_oot=NO + fi + + case "${pkg_inject_oot}" in + "YES") inject_dest="${pkg_build_dir}" ;; + "NO") inject_dest="${pkg_dir}" ;; + *) ptxd_bailout "<PKG>_INJECT_OOT: please set to YES or NO" ;; + esac + + if [ "${pkg_build_oot:-NO}" = 'NO' ] && [ "${pkg_inject_oot}" != 'NO' ]; then + ptxd_warning "<PKG>_BUILD_OOT and <PKG>_INJECT_OOT contradict each other." \ + "Using $(ptxd_print_path ${inject_dest}) as inject destination anyways." + fi + + if [ ! -d "${inject_dest}" ]; then + ptxd_bailout "<PKG> inject destination dir missing." \ + "Correct placement of world/inject depends on <PKG>_BUILD_OOT and <PKG>_INJECT_OOT." \ + "Check order of calls in prepare stage!" fi for inject_file in ${pkg_inject_files}; do -- 2.39.2