diff mbox series

[meta-zephyr,2/2] zephyr-core/zephyr-kernel: Implement do_install

Message ID 20220930163437.875793-2-peter.hoyes@arm.com
State New
Headers show
Series [meta-zephyr,1/2] zephyr-core/zephyr-kernel: Refactor zephyr-image and zephyr-sample | expand

Commit Message

Peter Hoyes Sept. 30, 2022, 4:34 p.m. UTC
From: Peter Hoyes <Peter.Hoyes@arm.com>

Install the Zephyr binaries to ${D}/firmware prior to copying them to
${DEPLOYDIR}.

Implementing do_install has three advantages:
 * In use-cases when the Zephyr application is not the final artifact
   (e.g. when signing or using additional firmware), other recipes can
   pick up the Zephyr binary from the sysroot instead of
   DEPLOY_DIR_IMAGE.
 * It may sometimes make sense to install the binaries in a Linux
   filesystem (e.g. to be run by a hypervisor).
 * OE-core's QA checks run on the packaged binaries.

There are currently two QA checks that fail, so add these to INSANE_SKIP
for now.

Signed-off-by: Peter Hoyes <Peter.Hoyes@arm.com>
---
 .../zephyr-kernel/zephyr-image.inc            | 19 +++++++++++++------
 1 file changed, 13 insertions(+), 6 deletions(-)
diff mbox series

Patch

diff --git a/meta-zephyr-core/recipes-kernel/zephyr-kernel/zephyr-image.inc b/meta-zephyr-core/recipes-kernel/zephyr-kernel/zephyr-image.inc
index fc8c077..d6ee21f 100644
--- a/meta-zephyr-core/recipes-kernel/zephyr-kernel/zephyr-image.inc
+++ b/meta-zephyr-core/recipes-kernel/zephyr-kernel/zephyr-image.inc
@@ -4,19 +4,26 @@  inherit deploy
 
 OECMAKE_SOURCEPATH = "${ZEPHYR_SRC_DIR}"
 
-do_install[noexec] = "1"
+do_install() {
+    install -d ${D}/firmware
 
-do_deploy() {
-    install -D ${B}/zephyr/${ZEPHYR_MAKE_OUTPUT} ${DEPLOYDIR}/${PN}.elf
+    install -D ${B}/zephyr/${ZEPHYR_MAKE_OUTPUT} ${D}/firmware/${PN}.elf
 
     if [ -f ${B}/zephyr/${ZEPHYR_MAKE_BIN_OUTPUT} ]
     then
-      install -D ${B}/zephyr/${ZEPHYR_MAKE_BIN_OUTPUT} ${DEPLOYDIR}/${PN}.bin
+      install -D ${B}/zephyr/${ZEPHYR_MAKE_BIN_OUTPUT} ${D}/firmware/${PN}.bin
     fi
 
     if [ -f ${B}/zephyr/${ZEPHYR_MAKE_EFI_OUTPUT} ]
     then
-      install -D ${B}/zephyr/${ZEPHYR_MAKE_EFI_OUTPUT} ${DEPLOYDIR}/${PN}.efi
+      install -D ${B}/zephyr/${ZEPHYR_MAKE_EFI_OUTPUT} ${D}/firmware/${PN}.efi
     fi
 }
-addtask deploy after do_compile
+FILES:${PN} = "/firmware"
+INSANE_SKIP += "ldflags buildpaths"
+SYSROOT_DIRS += "/firmware"
+
+do_deploy() {
+    cp ${D}/firmware/${PN}.* ${DEPLOYDIR}/
+}
+addtask deploy after do_install