Setting the optional <PKG>_INJECT_DEST now allows to give a different
target for putting the binary blobs into. 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 inject mechanism in general, add this line to
'rules/u-boot.make' for example:
U_BOOT_INJECT_DEST := $(U_BOOT_BUILD_DIR)
Signed-off-by: Alexander Dahl <[email protected]>
---
rules/post/ptxd_make_world_inject.make | 3 ++-
scripts/lib/ptxd_make_world_inject.sh | 22 ++++++++++++++++++----
2 files changed, 20 insertions(+), 5 deletions(-)
diff --git a/rules/post/ptxd_make_world_inject.make
b/rules/post/ptxd_make_world_inject.make
index eabcdd052..509d480ba 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_dest="$(call ptx/escape,$($(1)_INJECT_DEST))"
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..90bd8b684 100644
--- a/scripts/lib/ptxd_make_world_inject.sh
+++ b/scripts/lib/ptxd_make_world_inject.sh
@@ -7,10 +7,15 @@
#
ptxd_make_inject() {
- local source target
+ local dest source target
+
+ dest="${pkg_dir}"
+ if [ -n "${pkg_inject_dest}" ]; then
+ dest="${pkg_inject_dest}"
+ fi
source="$(echo ${inject_file} | cut -d ":" -f 1)"
- target="${pkg_dir}/$(echo ${inject_file} | cut -d ":" -f 2)"
+ target="${dest}/$(echo ${inject_file} | cut -d ":" -f 2)"
if [[ "${source}" =~ ^/.* ]]; then
ptxd_bailout "'${source}' must not be an absolute path!" \
@@ -32,8 +37,17 @@ 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_dest}" ] && [ -z "${pkg_dir}" ]; then
+ ptxd_bailout "No destination to inject to." \
+ "Set either <PKG>_DIR or <PKG>_INJECT_DEST to have a valid
destination!"
+ fi
+
+ if [ -n "${pkg_inject_dest}" ]; then
+ if [ "${pkg_build_dir}" = "${pkg_inject_dest}" ] && [
"${pkg_build_oot}" = "YES" ]; then
+ ptxd_warning "<PKG>_INJECT_DEST is set to <PKG>_BUILD_DIR and
<PKG>_BUILD_OOT is set to 'YES'." \
+ "If you called world/inject before world/prepare your files
will be removed after injecting."
+ fi
+ mkdir -p -- "${pkg_inject_dest}"
fi
for inject_file in ${pkg_inject_files}; do
--
2.39.2