Calculate the version ID of BMC UBI volumes during build time.
- When the new ubi layout is flashed onto the BMC, the volumes
were named kernel-0 and rofs-0 by default. This tends to be
misleading as we can't differentiate between two different BMC
versions.
- Now the ubi volumes will be named kernel-<versionID> and
rofs-<versionID> calculated by getting the hash(SHA-512) of
the version and taking the first 8 characters.
- The Uboot env needs to be updated to point to the correct
kernelname which has now changed from kernel-0 to
kernel-<versionID> calculated by getting the HASH(SHA-512)
of the version and taking the first 8 characters.
Resolves openbmc/openbmc#2323
Change-Id: I258d165b399d1ff59ea86f410006f6d03fe13a2e
Signed-off-by: Saqib Khan <khansa@us.ibm.com>
diff --git a/meta-phosphor/common/recipes-bsp/u-boot/u-boot.inc b/meta-phosphor/common/recipes-bsp/u-boot/u-boot.inc
index 6eac533..5cc320f 100644
--- a/meta-phosphor/common/recipes-bsp/u-boot/u-boot.inc
+++ b/meta-phosphor/common/recipes-bsp/u-boot/u-boot.inc
@@ -4,10 +4,26 @@
UBRANCH = "v2016.07-aspeed-openbmc"
SRC_URI = "git://git@github.com/openbmc/u-boot.git;branch=${UBRANCH};protocol=https"
+inherit image_version
+
SRC_URI += "file://0001-configs-ast-Add-redundnant-env.patch"
SRC_URI += "${@bb.utils.contains('MACHINE_FEATURES', 'obmc-ubi-fs', \
'file://0001-config-ast-common-hack-bootopts.patch \
file://0004-config-ast-common-ubi-bootops.patch', '', d)}"
+python do_configure () {
+ if ((d.getVar("MACHINE_FEATURES", True)) == "obmc-ubi-fs"):
+ version_id=do_get_versionID(d)
+ d.setVar('VERSION_ID', version_id)
+ bb.build.exec_func("patch_uboot", d)
+}
+
+patch_uboot () {
+ sed -i "s/kernel-0/kernel-${VERSION_ID}/g" \
+ ${S}/patches/0004-config-ast-common-ubi-bootops.patch &> /dev/null
+ sed -i "s/kernel-0/kernel-${VERSION_ID}/g" \
+ ${S}/include/configs/ast-common.h &> /dev/null
+}
+
PV = "v2016.07+git${SRCPV}"