Skip to contentSkip to conversation

u-boot: Add mkenvimage tool

PATCH Superseded Alexey Brodkin 4 participants 6 messages Nov 22, 2018 – Nov 25, 2018 Synopsys ARC architecture

v6 of 7 Superseded Latest is v7 →

lore
Share & tools
lore
#0 lore raw

PATCH v6 1/1 u-boot: Add mkenvimage tool

This utility is used for creation of images containing usable in run-time U-Boot environment.

As of today this utility is added per-board like here [1] for Intel Edison board.

[1] http://git.yoctoproject.org/cgit/cgit.cgi/meta-intel-edison/tree/meta-intel-edison-bsp/recipes-bsp/u-boot/u-boot-tools_2014.04.bb

Given there're quite some U-Boot tools that we may want to add later this recipe name switch from "u-boot-mkimage" to generic "u-boot-tools" still for compatibility we provide "u-boot-mkimage" with help of PROVIDES as well as proposed "u-boot-mkenvimage".

Signed-off-by Alexey Brodkin <abrodkin at synopsys.com>
Cc Richard Purdie <richard.purdie at linuxfoundation.org>
Cc Otavio Salvador <otavio at ossystems.com.br>
Cc Martin Jansa <martin.jansa at gmail.com>
Cc Ross Burton <ross.burton at intel.com>
Cc Marek Vasut <marex at denx.de>

---

Changes v5 -> v6:
* Really enable separate pakaging of mkimage and mkenvimage

Changes v4 -> v5:
* Added backward compatibility with "u-boot-mkimage" recipe
* Improved handling of nativesdk
* Update all references from "u-boot-mkimage" to "u-boot-tools"

Changes v3 -> v4:
* Updated maintainer info to make Yocto autobuilder happy again

Changes v2 -> v3:
* Recipe renamed to "u-boot-tools" to better match its contents (especially in the future as we add more tools there)
* Existing "u-boot-mkimage" and newly introduced "u-boot-mkenvimage" made avaialble via PROVIDES

Changes v1 -> v2:
* Got rid of a separate recipe and instead added mkenvimage to u-boot mkimage recipe

 meta/classes/image_types.bbclass                   |  2 +-
 meta/classes/kernel-fitimage.bbclass               |  2 +-
 meta/classes/kernel-uimage.bbclass                 |  2 +-
 meta/conf/distro/include/distro_alias.inc          |  2 +-
 meta/conf/distro/include/maintainers.inc           |  2 +-
 ...-mkimage_2018.07.bb => u-boot-tools_2018.07.bb} | 26 ++++++++++++++++++++--
 6 files changed, 29 insertions(+), 7 deletions(-)
 rename meta/recipes-bsp/u-boot/{u-boot-mkimage_2018.07.bb => u-boot-tools_2018.07.bb} (56%)
meta/classes/image_types.bbclass +1 -1
index 05e5b0a2e0..5c406481ef 100644
@@ -308,7 +308,7 @@ CONVERSION_DEPENDS_lzo = "lzop-native"
 CONVERSION_DEPENDS_zip = "zip-native"
 CONVERSION_DEPENDS_sum = "mtd-utils-native"
 CONVERSION_DEPENDS_bmap = "bmap-tools-native"
-CONVERSION_DEPENDS_u-boot = "u-boot-mkimage-native"
+CONVERSION_DEPENDS_u-boot = "u-boot-tools-native"
 CONVERSION_DEPENDS_vmdk = "qemu-native"
 CONVERSION_DEPENDS_vdi = "qemu-native"
 CONVERSION_DEPENDS_qcow2 = "qemu-native"
meta/classes/kernel-fitimage.bbclass +1 -1
index 4c4fd99ff4..328bef4069 100644
@@ -4,7 +4,7 @@ python __anonymous () {
     kerneltypes = d.getVar('KERNEL_IMAGETYPES') or ""
     if 'fitImage' in kerneltypes.split():
         depends = d.getVar("DEPENDS")
-        depends = "%s u-boot-mkimage-native dtc-native" % depends
+        depends = "%s u-boot-tools-native dtc-native" % depends
         d.setVar("DEPENDS", depends)
 
         uarch = d.getVar("UBOOT_ARCH")
meta/classes/kernel-uimage.bbclass +1 -1
index c2de6bb40d..cedb4fa070 100644
@@ -3,7 +3,7 @@ inherit kernel-uboot
 python __anonymous () {
     if "uImage" in d.getVar('KERNEL_IMAGETYPES'):
         depends = d.getVar("DEPENDS")
-        depends = "%s u-boot-mkimage-native" % depends
+        depends = "%s u-boot-tools-native" % depends
         d.setVar("DEPENDS", depends)
 
         # Override KERNEL_IMAGETYPE_FOR_MAKE variable, which is internal
meta/conf/distro/include/distro_alias.inc +1 -1
index 7502542e89..f23db1e8a4 100644
@@ -354,7 +354,7 @@ DISTRO_PN_ALIAS_pn-tremor = "OSPDT upstream=http://www.xiph.org/vorbis/"
 DISTRO_PN_ALIAS_pn-ttf-bitstream-vera = "Debian=ttf-bitstream-vera Ubuntu=ttf-bitstream-vera"
 DISTRO_PN_ALIAS_pn-tzcode = "OSPDT"
 DISTRO_PN_ALIAS_pn-u-boot-fw-utils = "Ubuntu=u-boot-tools Debian=u-boot-tools"
-DISTRO_PN_ALIAS_pn-u-boot-mkimage = "Ubuntu=uboot-mkimage Debian=uboot-mkimage"
+DISTRO_PN_ALIAS_pn-u-boot-tools = "Ubuntu=u-boot-tools Debian=uboot-tools"
 DISTRO_PN_ALIAS_pn-udev = "Mandriva=udev Fedora=udev"
 DISTRO_PN_ALIAS_pn-udev-extraconf = "OE-Core"
 DISTRO_PN_ALIAS_pn-unfs3 = "Debian=unfs3 Fedora=unfs3"
meta/conf/distro/include/maintainers.inc +1 -1
index 0889c1c429..825c24a3f8 100644
@@ -654,7 +654,7 @@ RECIPE_MAINTAINER_pn-tzcode-native = "Armin Kuster <akuster808 at gmail.com>"
 RECIPE_MAINTAINER_pn-tzdata = "Armin Kuster <akuster808 at gmail.com>"
 RECIPE_MAINTAINER_pn-u-boot = "Marek Vasut <marek.vasut at gmail.com>"
 RECIPE_MAINTAINER_pn-u-boot-fw-utils = "Marek Vasut <marek.vasut at gmail.com>"
-RECIPE_MAINTAINER_pn-u-boot-mkimage = "Marek Vasut <marek.vasut at gmail.com>"
+RECIPE_MAINTAINER_pn-u-boot-tools = "Marek Vasut <marek.vasut at gmail.com>"
 RECIPE_MAINTAINER_pn-udev-extraconf = "Ross Burton <ross.burton at intel.com>"
 RECIPE_MAINTAINER_pn-unfs3 = "Ross Burton <ross.burton at intel.com>"
 RECIPE_MAINTAINER_pn-unifdef = "Ross Burton <ross.burton at intel.com>"
meta/recipes-bsp/u-boot/u-boot-tools_2018.07.bb renamed from meta/recipes-bsp/u-boot/u-boot-mkimage_2018.07.bb +24 -2
similarity index 56%
rename from meta/recipes-bsp/u-boot/u-boot-mkimage_2018.07.bb
rename to meta/recipes-bsp/u-boot/u-boot-tools_2018.07.bb
index 08bff1d161..b53a727244 100644
@@ -1,8 +1,18 @@
 require u-boot-common_${PV}.inc
 
-SUMMARY = "U-Boot bootloader image creation tool"
+SUMMARY = "U-Boot bootloader tools"
 DEPENDS += "openssl"
 
+PROVIDES = "${MLPREFIX}u-boot-mkimage ${MLPREFIX}u-boot-mkenvimage"
+PROVIDES_class-native = "u-boot-mkimage-native u-boot-mkenvimage-native"
+
+PACKAGES += "${PN}-mkimage ${PN}-mkenvimage"
+
+# Required for backward compatibility with "u-boot-mkimage-xxx.bb"
+RPROVIDES_${PN}-mkimage = "u-boot-mkimage"
+RREPLACES_${PN}-mkimage = "u-boot-mkimage"
+RCONFLICTS_${PN}-mkimage = "u-boot-mkimage"
+
 EXTRA_OEMAKE_class-target = 'CROSS_COMPILE="${TARGET_PREFIX}" CC="${CC} ${CFLAGS} ${LDFLAGS}" HOSTCC="${BUILD_CC} ${BUILD_CFLAGS} ${BUILD_LDFLAGS}" STRIP=true V=1'
 EXTRA_OEMAKE_class-native = 'CC="${BUILD_CC} ${BUILD_CFLAGS} ${BUILD_LDFLAGS}" HOSTCC="${BUILD_CC} ${BUILD_CFLAGS} ${BUILD_LDFLAGS}" STRIP=true V=1'
 EXTRA_OEMAKE_class-nativesdk = 'CROSS_COMPILE="${HOST_PREFIX}" CC="${CC} ${CFLAGS} ${LDFLAGS}" HOSTCC="${BUILD_CC} ${BUILD_CFLAGS} ${BUILD_LDFLAGS}" STRIP=true V=1'
@@ -20,10 +30,22 @@ do_compile () {
 
 do_install () {
 	install -d ${D}${bindir}
+
+	# mkimage
 	install -m 0755 tools/mkimage ${D}${bindir}/uboot-mkimage
 	ln -sf uboot-mkimage ${D}${bindir}/mkimage
+
+	# mkenvimage
+	install -m 0755 tools/mkenvimage ${D}${bindir}/uboot-mkenvimage
+	ln -sf uboot-mkenvimage ${D}${bindir}/mkenvimage
 }
 
-RDEPENDS_${PN} += "dtc"
+ALLOW_EMPTY_${PN} = "1"
+FILES_${PN} = ""
+FILES_${PN}-mkimage = "${bindir}/uboot-mkimage ${bindir}/mkimage"
+FILES_${PN}-mkenvimage = "${bindir}/uboot-mkenvimage ${bindir}/mkenvimage"
+
+RDEPENDS_${PN}-mkimage += "dtc"
+RDEPENDS_${PN} += "${PN}-mkimage ${PN}-mkenvimage"
 
 BBCLASSEXTEND = "native nativesdk"
Signature · 1 line
2.16.2
#1 lore raw

PATCH v6 1/1 u-boot: Add mkenvimage tool

Hello Alexey,

Quoted 14 lines · Alexey Brodkin

This utility is used for creation of images containing usable in run-time U-Boot environment.

As of today this utility is added per-board like here [1] for Intel Edison board.

[1] http://git.yoctoproject.org/cgit/cgit.cgi/meta-intel-edison/tree/meta-intel-edison-bsp/recipes-bsp/u-boot/u-boot-tools_2014.04.bb

Given there're quite some U-Boot tools that we may want to add later this recipe name switch from "u-boot-mkimage" to generic "u-boot-tools" still for compatibility we provide "u-boot-mkimage" with help of PROVIDES as well as proposed "u-boot-mkenvimage".

Quoted 6 lines
Signed-off-by Alexey Brodkin <abrodkin at synopsys.com>
Cc Richard Purdie <richard.purdie at linuxfoundation.org>
Cc Otavio Salvador <otavio at ossystems.com.br>
Cc Martin Jansa <martin.jansa at gmail.com>
Cc Ross Burton <ross.burton at intel.com>
Cc Marek Vasut <marex at denx.de>
Acked-by Otavio Salvador <otavio at ossystems.com.br>

I'd like to thank you to keep the pace until it was ready. I know it may be challenging to contribute to new projects and OpenEmbedded is no different.

You were very welcoming to comments and change requests and I believe it was a great thread of changes which lead to a good patch. I look forward to the new patches you'll start submitting from now on :-)

Keep the good work.

Best Regards,

Signature · 3 lines
Otavio Salvador                             O.S. Systems
http://www.ossystems.com.br        http://code.ossystems.com.br
Mobile: +55 (53) 9 9981-7854          Mobile: +1 (347) 903-9750
#2 lore raw

PATCH v6 1/1 u-boot: Add mkenvimage tool

Hi Otavio,

Quoted 27 lines · Otavio Salvador

Hello Alexey,

Quoted 14 lines · Alexey Brodkin

This utility is used for creation of images containing usable in run-time U-Boot environment.

As of today this utility is added per-board like here [1] for Intel Edison board.

[1]
https://urldefense.proofpoint.com/v2/url?u=http-3A__git.yoctoproject.org_cgit_cgit.cgi_meta-2Dintel-2Dedison_tree_meta-2Dintel-2Dedison-2Dbsp_recipes-2Dbsp_u-2Dboot_u-2Dboot-2Dtools-5F2014.04.bb&d=DwICAg&c=DPL6_X_6JkXFx7AXWqB0tg&r=lqdeeSSEes0GFDDl656eViXO7breS55ytWkhpk5R81I&m=0oSj04biS8fsfFjYHNTIfKozS-TUjseTTeyuKHHcljA&s=hpwGEnrX5gArYJHLxYhMZ4x6s3irTZyCMjjnFipip7k&e=

Given there're quite some U-Boot tools that we may want to add later this recipe name switch from "u-boot-mkimage" to generic "u-boot-tools" still for compatibility we provide "u-boot-mkimage" with help of PROVIDES as well as proposed "u-boot-mkenvimage".

Quoted 6 lines
Signed-off-by Alexey Brodkin <abrodkin at synopsys.com>
Cc Richard Purdie <richard.purdie at linuxfoundation.org>
Cc Otavio Salvador <otavio at ossystems.com.br>
Cc Martin Jansa <martin.jansa at gmail.com>
Cc Ross Burton <ross.burton at intel.com>
Cc Marek Vasut <marex at denx.de>
Acked-by Otavio Salvador <otavio at ossystems.com.br>
Quoted 7 lines

I'd like to thank you to keep the pace until it was ready. I know it may be challenging to contribute to new projects and OpenEmbedded is no different.

You were very welcoming to comments and change requests and I believe it was a great thread of changes which lead to a good patch. I look forward to the new patches you'll start submitting from now on :-)

I'd like to thank you guys as well for being patient and providing meaningful comments for my naive and sometime silly changes.

And sure there will be more patches as now we start using OE for quite some projects basically trying to get ARC up to speed in OE as good as possible and given our architecture differs a bit from others (as any other arch) we're not only adding features but more fix issues that were not seen before due to pure luck... like we typically have 8k MMU page a bit exotic int64_t alignment by 32 bits etc so there'll be more stuff from us in the foreseeable future :)

-Alexey

#3 lore raw

PATCH v6 1/1 u-boot: Add mkenvimage tool

Quoted 42 lines · Alexey Brodkin

Hi Otavio,

Quoted 27 lines · Otavio Salvador

Hello Alexey,

Quoted 14 lines · Alexey Brodkin

This utility is used for creation of images containing usable in run-time U-Boot environment.

As of today this utility is added per-board like here [1] for Intel Edison board.

[1]
https://urldefense.proofpoint.com/v2/url?u=http-3A__git.yoctoproject.org_cgit_cgit.cgi_meta-2Dintel-2Dedison_tree_meta-2Dintel-2Dedison-2Dbsp_recipes-2Dbsp_u-2Dboot_u-2Dboot-2Dtools-5F2014.04.bb&d=DwICAg&c=DPL6_X_6JkXFx7AXWqB0tg&r=lqdeeSSEes0GFDDl656eViXO7breS55ytWkhpk5R81I&m=0oSj04biS8fsfFjYHNTIfKozS-TUjseTTeyuKHHcljA&s=hpwGEnrX5gArYJHLxYhMZ4x6s3irTZyCMjjnFipip7k&e=

Given there're quite some U-Boot tools that we may want to add later this recipe name switch from "u-boot-mkimage" to generic "u-boot-tools" still for compatibility we provide "u-boot-mkimage" with help of PROVIDES as well as proposed "u-boot-mkenvimage".

Quoted 6 lines
Signed-off-by Alexey Brodkin <abrodkin at synopsys.com>
Cc Richard Purdie <richard.purdie at linuxfoundation.org>
Cc Otavio Salvador <otavio at ossystems.com.br>
Cc Martin Jansa <martin.jansa at gmail.com>
Cc Ross Burton <ross.burton at intel.com>
Cc Marek Vasut <marex at denx.de>
Acked-by Otavio Salvador <otavio at ossystems.com.br>
Quoted 7 lines

I'd like to thank you to keep the pace until it was ready. I know it may be challenging to contribute to new projects and OpenEmbedded is no different.

You were very welcoming to comments and change requests and I believe it was a great thread of changes which lead to a good patch. I look forward to the new patches you'll start submitting from now on :-)

I'd like to thank you guys as well for being patient and providing meaningful comments for my naive and sometime silly changes.

Quoted 8 lines

And sure there will be more patches as now we start using OE for quite some projects basically trying to get ARC up to speed in OE as good as possible and given our architecture differs a bit from others (as any other arch) we're not only adding features but more fix issues that were not seen before due to pure luck... like we typically have 8k MMU page a bit exotic int64_t alignment by 32 bits etc so there'll be more stuff from us in the foreseeable future :)

Looking forward to show the iterations behind this series to contribution newbies. It's a good example of when things work well both sides! I had this little piece of u-boot-tools flying around in several projects, but never found the time to figure out a reasonable approach to reconcile it cleanly with the other u-boot components. Of course, I'm first of all showing myself that I'd have better contributed it at first to leverage all suggestions that came out of this discussion. Thanks Alexey for taking care of this all!

#4 lore raw

PATCH v6 1/1 u-boot: Add mkenvimage tool

In reply to Alexey Brodkin

Hi, Richard, Otavio,

Quoted 38 lines · Alexey Brodkin

This utility is used for creation of images containing usable in run-time U-Boot environment.

As of today this utility is added per-board like here [1] for Intel Edison board.

[1] http://git.yoctoproject.org/cgit/cgit.cgi/meta-intel-edison/tree/meta-intel-edison-bsp/recipes-bsp/u-boot/u-boot-tools_2014.04.bb

Given there're quite some U-Boot tools that we may want to add later this recipe name switch from "u-boot-mkimage" to generic "u-boot-tools" still for compatibility we provide "u-boot-mkimage" with help of PROVIDES as well as proposed "u-boot-mkenvimage".

Signed-off-by Alexey Brodkin <abrodkin at synopsys.com>
Cc Richard Purdie <richard.purdie at linuxfoundation.org>
Cc Otavio Salvador <otavio at ossystems.com.br>
Cc Martin Jansa <martin.jansa at gmail.com>
Cc Ross Burton <ross.burton at intel.com>
Cc Marek Vasut <marex at denx.de>

---

Changes v5 -> v6:
* Really enable separate pakaging of mkimage and mkenvimage

Changes v4 -> v5:
* Added backward compatibility with "u-boot-mkimage" recipe
* Improved handling of nativesdk
* Update all references from "u-boot-mkimage" to "u-boot-tools"

Changes v3 -> v4:
* Updated maintainer info to make Yocto autobuilder happy again

Changes v2 -> v3:
* Recipe renamed to "u-boot-tools" to better match its contents (especially in the future as we add more tools there)
* Existing "u-boot-mkimage" and newly introduced "u-boot-mkenvimage" made avaialble via PROVIDES

Quoted 3 lines

Changes v1 -> v2:
* Got rid of a separate recipe and instead added mkenvimage to u-boot mkimage recipe

So apparently something is still broken :(
------------------------->8-------------------------------
NOTE: Resolving any missing task queue dependencies
ERROR: Nothing RPROVIDES 'u-boot-tools-native-mkimage-native' (but virtual:native:.../openembedded-core/meta/recipes-bsp/u-boot/u-boot- tools_2018.07.bb RDEPENDS on or otherwise requires it)

NOTE: Runtime target 'u-boot-tools-native-mkimage-native' is unbuildable, removing... Missing or unbuildable dependency chain was: ['u-boot-tools-native-mkimage-native']

ERROR: Required build target 'core-image-base' has no buildable providers.
Missing or unbuildable dependency chain was: ['core-image-base', 'virtual/kernel', 'u-boot-tools-native', 'u-boot-tools-native-mkimage-native'] ------------------------->8-------------------------------

Indeed "u-boot-tools-native-mkimage-native" looks quite odd.

Any hints on how that could be addressed?

-Alexey

#5 lore raw

PATCH v6 1/1 u-boot: Add mkenvimage tool

Quoted 68 lines · Alexey Brodkin

Hi, Richard, Otavio,

Quoted 42 lines · Alexey Brodkin

This utility is used for creation of images containing usable in run-time U-Boot environment.

As of today this utility is added per-board like here [1] for Intel Edison board.

[1]
http://git.yoctoproject.org/cgit/cgit.cgi/meta-intel-edison/tree/meta-intel-edison-bsp/recipes-bsp/u-boot/u-boot-tools_2014.04.bb

Given there're quite some U-Boot tools that we may want to add later
this recipe name switch from "u-boot-mkimage" to generic "u-boot- tools"
still for compatibility we provide "u-boot-mkimage" with help of PROVIDES as well as proposed "u-boot-mkenvimage".

Signed-off-by Alexey Brodkin <abrodkin at synopsys.com>
Cc Richard Purdie <richard.purdie at linuxfoundation.org>
Cc Otavio Salvador <otavio at ossystems.com.br>
Cc Martin Jansa <martin.jansa at gmail.com>
Cc Ross Burton <ross.burton at intel.com>
Cc Marek Vasut <marex at denx.de>

---

Changes v5 -> v6:
* Really enable separate pakaging of mkimage and mkenvimage

Changes v4 -> v5:
* Added backward compatibility with "u-boot-mkimage" recipe
* Improved handling of nativesdk
* Update all references from "u-boot-mkimage" to "u-boot-tools"

Changes v3 -> v4:
* Updated maintainer info to make Yocto autobuilder happy again

Changes v2 -> v3:
* Recipe renamed to "u-boot-tools" to better match its contents (especially in the future as we add more tools there)
* Existing "u-boot-mkimage" and newly introduced "u-boot-
mkenvimage"
made avaialble via PROVIDES

Quoted 3 lines

Changes v1 -> v2:
* Got rid of a separate recipe and instead added mkenvimage to u-boot mkimage recipe

So apparently something is still broken :( ------------------------->8-------------------------------
NOTE: Resolving any missing task queue dependencies
ERROR: Nothing RPROVIDES 'u-boot-tools-native-mkimage-native' (but virtual:native:.../openembedded-core/meta/recipes-bsp/u-boot/u-boot- tools_2018.07.bb RDEPENDS on or otherwise requires it)

NOTE: Runtime target 'u-boot-tools-native-mkimage-native' is unbuildable, removing...
Missing or unbuildable dependency chain was: ['u-boot-tools-native- mkimage-native']

ERROR: Required build target 'core-image-base' has no buildable providers.
Missing or unbuildable dependency chain was: ['core-image-base', 'virtual/kernel', 'u-boot-tools-native', 'u-boot-tools-native- mkimage-native'] ------------------------->8-------------------------------

Quoted 3 lines

Indeed "u-boot-tools-native-mkimage-native" looks quite odd.

Any hints on how that could be addressed?

Just guessing but maybe

RDEPENDS_${PN}_class-native = ""

?

Cheers,

Richard