[meta-zephyr][PATCH 1/2] zephyr-core/zephyr-kernel: Refactor zephyr-image and zephyr-sample


Peter Hoyes
 

From: Peter Hoyes <Peter.Hoyes@...>

At the moment:
* zephyr-image.inc depends on zephyr-sample.inc, which doesn't really
make sense.
* zephyr-image.inc inherits testimage, even though it may not be
required.
* Out-of-tree Zephyr apps have to include zephyr-sample.inc in order to
deploy the binaries, which is confusingly named if your application
isn't a "sample".

Do some minor refactoring to untangle the above. Now:
* zephyr-sample.inc depends on zephyr-image.inc
* zephyrtest.bbclass inherits testimage.
* Out-of-tree Zephyr apps can include zephyr-image.inc

Additionally, remove QEMU_BIN_PATH, as recent Zephyr versions now pick
up the QEMU binary automatically from PATH.

Signed-off-by: Peter Hoyes <Peter.Hoyes@...>
---
meta-zephyr-core/classes/zephyrtest.bbclass | 4 ++--
.../zephyr-kernel/zephyr-image.inc | 23 +++++++++++++++----
.../zephyr-kernel/zephyr-sample.inc | 23 +------------------
3 files changed, 21 insertions(+), 29 deletions(-)

diff --git a/meta-zephyr-core/classes/zephyrtest.bbclass b/meta-zephyr-co=
re/classes/zephyrtest.bbclass
index aa48e6c..d4fc75e 100644
--- a/meta-zephyr-core/classes/zephyrtest.bbclass
+++ b/meta-zephyr-core/classes/zephyrtest.bbclass
@@ -1,4 +1,4 @@
-inherit rootfs-postcommands
+inherit rootfs-postcommands testimage
=20
python zephyrtest_virtclass_handler () {
variant =3D e.data.getVar("BBEXTENDVARIANT", True)
@@ -14,7 +14,7 @@ python zephyrtest_virtclass_handler () {
e.data.setVar("ZEPHYR_IMAGENAME", pn + ".elf")
=20
# Most tests for Zephyr 1.6 are in the "legacy" folder
- e.data.setVar("ZEPHYR_SRC_DIR", "tests/kernel/" + variant)
+ e.data.setVar("ZEPHYR_SRC_DIR", "${ZEPHYR_BASE}/tests/kernel/" + var=
iant)
e.data.setVar("ZEPHYR_MAKE_OUTPUT", "zephyr.elf")
=20
# Allow to build using both foo-some_test form as well as foo-some-t=
est
diff --git a/meta-zephyr-core/recipes-kernel/zephyr-kernel/zephyr-image.i=
nc b/meta-zephyr-core/recipes-kernel/zephyr-kernel/zephyr-image.inc
index f4c9db1..fc8c077 100644
--- a/meta-zephyr-core/recipes-kernel/zephyr-kernel/zephyr-image.inc
+++ b/meta-zephyr-core/recipes-kernel/zephyr-kernel/zephyr-image.inc
@@ -1,9 +1,22 @@
-require zephyr-sample.inc
-inherit testimage
+require zephyr-kernel-src.inc
+require zephyr-kernel-common.inc
+inherit deploy
=20
-QEMU_BIN_PATH =3D "${STAGING_BINDIR_NATIVE}"
+OECMAKE_SOURCEPATH =3D "${ZEPHYR_SRC_DIR}"
=20
-OECMAKE_SOURCEPATH =3D "${ZEPHYR_BASE}/${ZEPHYR_SRC_DIR}"
+do_install[noexec] =3D "1"
+
+do_deploy() {
+ install -D ${B}/zephyr/${ZEPHYR_MAKE_OUTPUT} ${DEPLOYDIR}/${PN}.elf
=20
+ if [ -f ${B}/zephyr/${ZEPHYR_MAKE_BIN_OUTPUT} ]
+ then
+ install -D ${B}/zephyr/${ZEPHYR_MAKE_BIN_OUTPUT} ${DEPLOYDIR}/${PN=
}.bin
+ fi
+
+ if [ -f ${B}/zephyr/${ZEPHYR_MAKE_EFI_OUTPUT} ]
+ then
+ install -D ${B}/zephyr/${ZEPHYR_MAKE_EFI_OUTPUT} ${DEPLOYDIR}/${PN=
}.efi
+ fi
+}
addtask deploy after do_compile
-do_install[noexec] =3D "1"
diff --git a/meta-zephyr-core/recipes-kernel/zephyr-kernel/zephyr-sample.=
inc b/meta-zephyr-core/recipes-kernel/zephyr-kernel/zephyr-sample.inc
index 10c25c5..5f6dea9 100644
--- a/meta-zephyr-core/recipes-kernel/zephyr-kernel/zephyr-sample.inc
+++ b/meta-zephyr-core/recipes-kernel/zephyr-kernel/zephyr-sample.inc
@@ -1,22 +1 @@
-require zephyr-kernel-src.inc
-require zephyr-kernel-common.inc
-inherit deploy
-
-OECMAKE_SOURCEPATH =3D "${ZEPHYR_SRC_DIR}"
-
-do_install[noexec] =3D "1"
-
-do_deploy () {
- install -D ${B}/zephyr/${ZEPHYR_MAKE_OUTPUT} ${DEPLOYDIR}/${PN}.elf
-
- if [ -f ${B}/zephyr/${ZEPHYR_MAKE_BIN_OUTPUT} ]
- then
- install -D ${B}/zephyr/${ZEPHYR_MAKE_BIN_OUTPUT} ${DEPLOYDIR}/${PN=
}.bin
- fi
-
- if [ -f ${B}/zephyr/${ZEPHYR_MAKE_EFI_OUTPUT} ]
- then
- install -D ${B}/zephyr/${ZEPHYR_MAKE_EFI_OUTPUT} ${DEPLOYDIR}/${PN=
}.efi
- fi
-}
-addtask deploy after do_compile
+require zephyr-image.inc
--=20
2.25.1


Jon Mason
 

On Fri, Sep 30, 2022 at 05:34:36PM +0100, Peter Hoyes wrote:
From: Peter Hoyes <Peter.Hoyes@...>

At the moment:
* zephyr-image.inc depends on zephyr-sample.inc, which doesn't really
make sense.
* zephyr-image.inc inherits testimage, even though it may not be
required.
* Out-of-tree Zephyr apps have to include zephyr-sample.inc in order to
deploy the binaries, which is confusingly named if your application
isn't a "sample".

Do some minor refactoring to untangle the above. Now:
* zephyr-sample.inc depends on zephyr-image.inc
* zephyrtest.bbclass inherits testimage.
* Out-of-tree Zephyr apps can include zephyr-image.inc

Additionally, remove QEMU_BIN_PATH, as recent Zephyr versions now pick
up the QEMU binary automatically from PATH.

Signed-off-by: Peter Hoyes <Peter.Hoyes@...>
Series verified in a batch CI job (on top of the other submitted patches). See https://gitlab.com/jonmason00/meta-zephyr/-/pipelines/655489776

Tested-by: Jon Mason <jon.mason@...>

---
meta-zephyr-core/classes/zephyrtest.bbclass | 4 ++--
.../zephyr-kernel/zephyr-image.inc | 23 +++++++++++++++----
.../zephyr-kernel/zephyr-sample.inc | 23 +------------------
3 files changed, 21 insertions(+), 29 deletions(-)

diff --git a/meta-zephyr-core/classes/zephyrtest.bbclass b/meta-zephyr-core/classes/zephyrtest.bbclass
index aa48e6c..d4fc75e 100644
--- a/meta-zephyr-core/classes/zephyrtest.bbclass
+++ b/meta-zephyr-core/classes/zephyrtest.bbclass
@@ -1,4 +1,4 @@
-inherit rootfs-postcommands
+inherit rootfs-postcommands testimage

python zephyrtest_virtclass_handler () {
variant = e.data.getVar("BBEXTENDVARIANT", True)
@@ -14,7 +14,7 @@ python zephyrtest_virtclass_handler () {
e.data.setVar("ZEPHYR_IMAGENAME", pn + ".elf")

# Most tests for Zephyr 1.6 are in the "legacy" folder
- e.data.setVar("ZEPHYR_SRC_DIR", "tests/kernel/" + variant)
+ e.data.setVar("ZEPHYR_SRC_DIR", "${ZEPHYR_BASE}/tests/kernel/" + variant)
e.data.setVar("ZEPHYR_MAKE_OUTPUT", "zephyr.elf")

# Allow to build using both foo-some_test form as well as foo-some-test
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 f4c9db1..fc8c077 100644
--- a/meta-zephyr-core/recipes-kernel/zephyr-kernel/zephyr-image.inc
+++ b/meta-zephyr-core/recipes-kernel/zephyr-kernel/zephyr-image.inc
@@ -1,9 +1,22 @@
-require zephyr-sample.inc
-inherit testimage
+require zephyr-kernel-src.inc
+require zephyr-kernel-common.inc
+inherit deploy

-QEMU_BIN_PATH = "${STAGING_BINDIR_NATIVE}"
+OECMAKE_SOURCEPATH = "${ZEPHYR_SRC_DIR}"

-OECMAKE_SOURCEPATH = "${ZEPHYR_BASE}/${ZEPHYR_SRC_DIR}"
+do_install[noexec] = "1"
+
+do_deploy() {
+ install -D ${B}/zephyr/${ZEPHYR_MAKE_OUTPUT} ${DEPLOYDIR}/${PN}.elf

+ if [ -f ${B}/zephyr/${ZEPHYR_MAKE_BIN_OUTPUT} ]
+ then
+ install -D ${B}/zephyr/${ZEPHYR_MAKE_BIN_OUTPUT} ${DEPLOYDIR}/${PN}.bin
+ fi
+
+ if [ -f ${B}/zephyr/${ZEPHYR_MAKE_EFI_OUTPUT} ]
+ then
+ install -D ${B}/zephyr/${ZEPHYR_MAKE_EFI_OUTPUT} ${DEPLOYDIR}/${PN}.efi
+ fi
+}
addtask deploy after do_compile
-do_install[noexec] = "1"
diff --git a/meta-zephyr-core/recipes-kernel/zephyr-kernel/zephyr-sample.inc b/meta-zephyr-core/recipes-kernel/zephyr-kernel/zephyr-sample.inc
index 10c25c5..5f6dea9 100644
--- a/meta-zephyr-core/recipes-kernel/zephyr-kernel/zephyr-sample.inc
+++ b/meta-zephyr-core/recipes-kernel/zephyr-kernel/zephyr-sample.inc
@@ -1,22 +1 @@
-require zephyr-kernel-src.inc
-require zephyr-kernel-common.inc
-inherit deploy
-
-OECMAKE_SOURCEPATH = "${ZEPHYR_SRC_DIR}"
-
-do_install[noexec] = "1"
-
-do_deploy () {
- install -D ${B}/zephyr/${ZEPHYR_MAKE_OUTPUT} ${DEPLOYDIR}/${PN}.elf
-
- if [ -f ${B}/zephyr/${ZEPHYR_MAKE_BIN_OUTPUT} ]
- then
- install -D ${B}/zephyr/${ZEPHYR_MAKE_BIN_OUTPUT} ${DEPLOYDIR}/${PN}.bin
- fi
-
- if [ -f ${B}/zephyr/${ZEPHYR_MAKE_EFI_OUTPUT} ]
- then
- install -D ${B}/zephyr/${ZEPHYR_MAKE_EFI_OUTPUT} ${DEPLOYDIR}/${PN}.efi
- fi
-}
-addtask deploy after do_compile
+require zephyr-image.inc
--
2.25.1