[v7] u-boot: Add mkenvimage tool

Message ID 20181122225820.2553-1-abrodkin@synopsys.com
State New
Headers show
Series
  • [v7] u-boot: Add mkenvimage tool
Related show

Commit Message

Alexey Brodkin Nov. 22, 2018, 10:58 p.m.
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@synopsys.com>
Cc: Richard Purdie <richard.purdie@linuxfoundation.org>
Cc: Otavio Salvador <otavio@ossystems.com.br>
Cc: Martin Jansa <martin.jansa@gmail.com>
Cc: Ross Burton <ross.burton@intel.com>
Cc: Marek Vasut <marex@denx.de>
---

Changes v6 -> v7:
 * Fix building "u-boot-tools-native"

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} | 27 ++++++++++++++++++++--
 6 files changed, 30 insertions(+), 7 deletions(-)
 rename meta/recipes-bsp/u-boot/{u-boot-mkimage_2018.07.bb => u-boot-tools_2018.07.bb} (55%)

Comments

Khem Raj Nov. 24, 2018, 2:57 p.m. | #1
http://errors.yoctoproject.org/Errors/Details/202185/
On Thu, Nov 22, 2018 at 2:58 PM Alexey Brodkin
<alexey.brodkin@synopsys.com> wrote:
>
> 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@synopsys.com>
> Cc: Richard Purdie <richard.purdie@linuxfoundation.org>
> Cc: Otavio Salvador <otavio@ossystems.com.br>
> Cc: Martin Jansa <martin.jansa@gmail.com>
> Cc: Ross Burton <ross.burton@intel.com>
> Cc: Marek Vasut <marex@denx.de>
> ---
>
> Changes v6 -> v7:
>  * Fix building "u-boot-tools-native"
>
> 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} | 27 ++++++++++++++++++++--
>  6 files changed, 30 insertions(+), 7 deletions(-)
>  rename meta/recipes-bsp/u-boot/{u-boot-mkimage_2018.07.bb => u-boot-tools_2018.07.bb} (55%)
>
> diff --git a/meta/classes/image_types.bbclass b/meta/classes/image_types.bbclass
> index 05e5b0a2e0..5c406481ef 100644
> --- a/meta/classes/image_types.bbclass
> +++ b/meta/classes/image_types.bbclass
> @@ -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"
> diff --git a/meta/classes/kernel-fitimage.bbclass b/meta/classes/kernel-fitimage.bbclass
> index 4c4fd99ff4..328bef4069 100644
> --- a/meta/classes/kernel-fitimage.bbclass
> +++ b/meta/classes/kernel-fitimage.bbclass
> @@ -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")
> diff --git a/meta/classes/kernel-uimage.bbclass b/meta/classes/kernel-uimage.bbclass
> index c2de6bb40d..cedb4fa070 100644
> --- a/meta/classes/kernel-uimage.bbclass
> +++ b/meta/classes/kernel-uimage.bbclass
> @@ -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
> diff --git a/meta/conf/distro/include/distro_alias.inc b/meta/conf/distro/include/distro_alias.inc
> index 7502542e89..f23db1e8a4 100644
> --- a/meta/conf/distro/include/distro_alias.inc
> +++ b/meta/conf/distro/include/distro_alias.inc
> @@ -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"
> diff --git a/meta/conf/distro/include/maintainers.inc b/meta/conf/distro/include/maintainers.inc
> index 05a2c9f38a..8a4362d947 100644
> --- a/meta/conf/distro/include/maintainers.inc
> +++ b/meta/conf/distro/include/maintainers.inc
> @@ -656,7 +656,7 @@ RECIPE_MAINTAINER_pn-tzcode-native = "Armin Kuster <akuster808@gmail.com>"
>  RECIPE_MAINTAINER_pn-tzdata = "Armin Kuster <akuster808@gmail.com>"
>  RECIPE_MAINTAINER_pn-u-boot = "Marek Vasut <marek.vasut@gmail.com>"
>  RECIPE_MAINTAINER_pn-u-boot-fw-utils = "Marek Vasut <marek.vasut@gmail.com>"
> -RECIPE_MAINTAINER_pn-u-boot-mkimage = "Marek Vasut <marek.vasut@gmail.com>"
> +RECIPE_MAINTAINER_pn-u-boot-tools = "Marek Vasut <marek.vasut@gmail.com>"
>  RECIPE_MAINTAINER_pn-udev-extraconf = "Ross Burton <ross.burton@intel.com>"
>  RECIPE_MAINTAINER_pn-unfs3 = "Ross Burton <ross.burton@intel.com>"
>  RECIPE_MAINTAINER_pn-unifdef = "Ross Burton <ross.burton@intel.com>"
> diff --git a/meta/recipes-bsp/u-boot/u-boot-mkimage_2018.07.bb b/meta/recipes-bsp/u-boot/u-boot-tools_2018.07.bb
> similarity index 55%
> 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..127c4c15d1 100644
> --- a/meta/recipes-bsp/u-boot/u-boot-mkimage_2018.07.bb
> +++ b/meta/recipes-bsp/u-boot/u-boot-tools_2018.07.bb
> @@ -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,23 @@ 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"
> +RDEPENDS_${PN}_class-native = ""
>
>  BBCLASSEXTEND = "native nativesdk"
> --
> 2.16.2
>
Alexey Brodkin Nov. 26, 2018, 9:30 p.m. | #2
Hi Khem,


On Sat, 2018-11-24 at 06:57 -0800, Khem Raj wrote:
> 
> http://errors.yoctoproject.org/Errors/Details/202185/

Looking at the target name "u-boot-tools-1_2018.11-r0 do_compile"
I think it might have something to do with bump of U-Boot to v2018.11
and the error message in question was added in v2018.11-rc1,
see http://git.denx.de/?p=u-boot.git;a=commitdiff;h=a4958a71017fb142542f977c843c5fce769fc6ea

The problem is we use "sandbox_defconfig" as a dummy defconfig
because otherwise (not configured) U-Boot's build-system won't
allow us to proceed and in its turn mentioned patch adds a check
for a target platform like "if defined(__x86_64__)" which
we essentially don't satisfy and so we fail.

There're the following solutions:
 1. Revert mentioned patch
 2. Disable "CONFIG_EFI_LOADER"

Reverting is not nice and not future-proof.
Disabling of "CONFIG_EFI_LOADER" might be done in a couple of ways
like:
 1. Patching sandbox_defconfig
 2. Filtering "CONFIG_EFI_LOADER" from "sandbox_defconfig" right before
    execution of "make sandbox_defconfig"

I think latter option is the simplest and cleanest.

Should I send a patch for that?

-Alexey
Khem Raj Nov. 26, 2018, 10:16 p.m. | #3
On Mon, Nov 26, 2018 at 1:30 PM Alexey Brodkin
<alexey.brodkin@synopsys.com> wrote:
>
> Hi Khem,
>
>
> On Sat, 2018-11-24 at 06:57 -0800, Khem Raj wrote:
> >
> > http://errors.yoctoproject.org/Errors/Details/202185/
>
> Looking at the target name "u-boot-tools-1_2018.11-r0 do_compile"
> I think it might have something to do with bump of U-Boot to v2018.11
> and the error message in question was added in v2018.11-rc1,
> see http://git.denx.de/?p=u-boot.git;a=commitdiff;h=a4958a71017fb142542f977c843c5fce769fc6ea
>
> The problem is we use "sandbox_defconfig" as a dummy defconfig
> because otherwise (not configured) U-Boot's build-system won't
> allow us to proceed and in its turn mentioned patch adds a check
> for a target platform like "if defined(__x86_64__)" which
> we essentially don't satisfy and so we fail.
>
> There're the following solutions:
>  1. Revert mentioned patch
>  2. Disable "CONFIG_EFI_LOADER"
>
> Reverting is not nice and not future-proof.
> Disabling of "CONFIG_EFI_LOADER" might be done in a couple of ways
> like:
>  1. Patching sandbox_defconfig
>  2. Filtering "CONFIG_EFI_LOADER" from "sandbox_defconfig" right before
>     execution of "make sandbox_defconfig"
>
> I think latter option is the simplest and cleanest.
>
> Should I send a patch for that?

seems ok. Please do

>
> -Alexey
Otavio Salvador Nov. 26, 2018, 11:07 p.m. | #4
Hello Alexey,

On Mon, Nov 26, 2018 at 7:30 PM Alexey Brodkin
<alexey.brodkin@synopsys.com> wrote:
> On Sat, 2018-11-24 at 06:57 -0800, Khem Raj wrote:
> >
> > http://errors.yoctoproject.org/Errors/Details/202185/
>
> Looking at the target name "u-boot-tools-1_2018.11-r0 do_compile"
> I think it might have something to do with bump of U-Boot to v2018.11
> and the error message in question was added in v2018.11-rc1,
> see http://git.denx.de/?p=u-boot.git;a=commitdiff;h=a4958a71017fb142542f977c843c5fce769fc6ea
>
> The problem is we use "sandbox_defconfig" as a dummy defconfig
> because otherwise (not configured) U-Boot's build-system won't
> allow us to proceed and in its turn mentioned patch adds a check
> for a target platform like "if defined(__x86_64__)" which
> we essentially don't satisfy and so we fail.
>
> There're the following solutions:
>  1. Revert mentioned patch
>  2. Disable "CONFIG_EFI_LOADER"
>
> Reverting is not nice and not future-proof.
> Disabling of "CONFIG_EFI_LOADER" might be done in a couple of ways
> like:
>  1. Patching sandbox_defconfig
>  2. Filtering "CONFIG_EFI_LOADER" from "sandbox_defconfig" right before
>     execution of "make sandbox_defconfig"
>
> I think latter option is the simplest and cleanest.
>
> Should I send a patch for that?

Let's add Tom (U-Boot upstream main maintainer) to this so he can comment.
Tom Rini Nov. 27, 2018, 12:51 a.m. | #5
On Mon, Nov 26, 2018 at 09:07:37PM -0200, Otavio Salvador wrote:
> Hello Alexey,
> 
> On Mon, Nov 26, 2018 at 7:30 PM Alexey Brodkin
> <alexey.brodkin@synopsys.com> wrote:
> > On Sat, 2018-11-24 at 06:57 -0800, Khem Raj wrote:
> > >
> > > http://errors.yoctoproject.org/Errors/Details/202185/
> >
> > Looking at the target name "u-boot-tools-1_2018.11-r0 do_compile"
> > I think it might have something to do with bump of U-Boot to v2018.11
> > and the error message in question was added in v2018.11-rc1,
> > see http://git.denx.de/?p=u-boot.git;a=commitdiff;h=a4958a71017fb142542f977c843c5fce769fc6ea
> >
> > The problem is we use "sandbox_defconfig" as a dummy defconfig
> > because otherwise (not configured) U-Boot's build-system won't
> > allow us to proceed and in its turn mentioned patch adds a check
> > for a target platform like "if defined(__x86_64__)" which
> > we essentially don't satisfy and so we fail.
> >
> > There're the following solutions:
> >  1. Revert mentioned patch
> >  2. Disable "CONFIG_EFI_LOADER"
> >
> > Reverting is not nice and not future-proof.
> > Disabling of "CONFIG_EFI_LOADER" might be done in a couple of ways
> > like:
> >  1. Patching sandbox_defconfig
> >  2. Filtering "CONFIG_EFI_LOADER" from "sandbox_defconfig" right before
> >     execution of "make sandbox_defconfig"
> >
> > I think latter option is the simplest and cleanest.
> >
> > Should I send a patch for that?
> 
> Let's add Tom (U-Boot upstream main maintainer) to this so he can comment.

Hey, so you've hit the problem Fedora also hit, but we haven't gotten a
real solution to.  Yes, the best "fix" here for just building tools
would be to turn off EFI_LOADER in sandbox, on all arches.
Alexey Brodkin Nov. 27, 2018, 6:54 a.m. | #6
Hi Tom,

On Mon, 2018-11-26 at 19:51 -0500, Tom Rini wrote:
> On Mon, Nov 26, 2018 at 09:07:37PM -0200, Otavio Salvador wrote:
> > Hello Alexey,
> > 
> > On Mon, Nov 26, 2018 at 7:30 PM Alexey Brodkin
> > <alexey.brodkin@synopsys.com> wrote:
> > > On Sat, 2018-11-24 at 06:57 -0800, Khem Raj wrote:
> > > > http://errors.yoctoproject.org/Errors/Details/202185/
> > > 
> > > Looking at the target name "u-boot-tools-1_2018.11-r0 do_compile"
> > > I think it might have something to do with bump of U-Boot to v2018.11
> > > and the error message in question was added in v2018.11-rc1,
> > > see http://git.denx.de/?p=u-boot.git;a=commitdiff;h=a4958a71017fb142542f977c843c5fce769fc6ea
> > > 
> > > The problem is we use "sandbox_defconfig" as a dummy defconfig
> > > because otherwise (not configured) U-Boot's build-system won't
> > > allow us to proceed and in its turn mentioned patch adds a check
> > > for a target platform like "if defined(__x86_64__)" which
> > > we essentially don't satisfy and so we fail.
> > > 
> > > There're the following solutions:
> > >  1. Revert mentioned patch
> > >  2. Disable "CONFIG_EFI_LOADER"
> > > 
> > > Reverting is not nice and not future-proof.
> > > Disabling of "CONFIG_EFI_LOADER" might be done in a couple of ways
> > > like:
> > >  1. Patching sandbox_defconfig
> > >  2. Filtering "CONFIG_EFI_LOADER" from "sandbox_defconfig" right before
> > >     execution of "make sandbox_defconfig"
> > > 
> > > I think latter option is the simplest and cleanest.
> > > 
> > > Should I send a patch for that?
> > 
> > Let's add Tom (U-Boot upstream main maintainer) to this so he can comment.
> 
> Hey, so you've hit the problem Fedora also hit, but we haven't gotten a
> real solution to.  Yes, the best "fix" here for just building tools
> would be to turn off EFI_LOADER in sandbox, on all arches.

But why don't we simply use our own really dummy defconfig like that?
------------------->8--------------------
echo "CONFIG_SYS_TEXT_BASE=0" > .config
make olddefconfig
make tools
------------------->8--------------------

This is much cleaner approach and much simpler to implement.

-Alexey

Patch

diff --git a/meta/classes/image_types.bbclass b/meta/classes/image_types.bbclass
index 05e5b0a2e0..5c406481ef 100644
--- a/meta/classes/image_types.bbclass
+++ b/meta/classes/image_types.bbclass
@@ -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"
diff --git a/meta/classes/kernel-fitimage.bbclass b/meta/classes/kernel-fitimage.bbclass
index 4c4fd99ff4..328bef4069 100644
--- a/meta/classes/kernel-fitimage.bbclass
+++ b/meta/classes/kernel-fitimage.bbclass
@@ -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")
diff --git a/meta/classes/kernel-uimage.bbclass b/meta/classes/kernel-uimage.bbclass
index c2de6bb40d..cedb4fa070 100644
--- a/meta/classes/kernel-uimage.bbclass
+++ b/meta/classes/kernel-uimage.bbclass
@@ -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
diff --git a/meta/conf/distro/include/distro_alias.inc b/meta/conf/distro/include/distro_alias.inc
index 7502542e89..f23db1e8a4 100644
--- a/meta/conf/distro/include/distro_alias.inc
+++ b/meta/conf/distro/include/distro_alias.inc
@@ -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"
diff --git a/meta/conf/distro/include/maintainers.inc b/meta/conf/distro/include/maintainers.inc
index 05a2c9f38a..8a4362d947 100644
--- a/meta/conf/distro/include/maintainers.inc
+++ b/meta/conf/distro/include/maintainers.inc
@@ -656,7 +656,7 @@  RECIPE_MAINTAINER_pn-tzcode-native = "Armin Kuster <akuster808@gmail.com>"
 RECIPE_MAINTAINER_pn-tzdata = "Armin Kuster <akuster808@gmail.com>"
 RECIPE_MAINTAINER_pn-u-boot = "Marek Vasut <marek.vasut@gmail.com>"
 RECIPE_MAINTAINER_pn-u-boot-fw-utils = "Marek Vasut <marek.vasut@gmail.com>"
-RECIPE_MAINTAINER_pn-u-boot-mkimage = "Marek Vasut <marek.vasut@gmail.com>"
+RECIPE_MAINTAINER_pn-u-boot-tools = "Marek Vasut <marek.vasut@gmail.com>"
 RECIPE_MAINTAINER_pn-udev-extraconf = "Ross Burton <ross.burton@intel.com>"
 RECIPE_MAINTAINER_pn-unfs3 = "Ross Burton <ross.burton@intel.com>"
 RECIPE_MAINTAINER_pn-unifdef = "Ross Burton <ross.burton@intel.com>"
diff --git a/meta/recipes-bsp/u-boot/u-boot-mkimage_2018.07.bb b/meta/recipes-bsp/u-boot/u-boot-tools_2018.07.bb
similarity index 55%
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..127c4c15d1 100644
--- a/meta/recipes-bsp/u-boot/u-boot-mkimage_2018.07.bb
+++ b/meta/recipes-bsp/u-boot/u-boot-tools_2018.07.bb
@@ -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,23 @@  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"
+RDEPENDS_${PN}_class-native = ""
 
 BBCLASSEXTEND = "native nativesdk"