]> code.ossystems Code Review - openembedded-core.git/commitdiff
uboot-sign: add support for different u-boot configurations
authorAndreas Obergschwandtner <andreas.obergschwandtner@skidata.com>
Mon, 6 May 2019 07:45:31 +0000 (09:45 +0200)
committerArmin Kuster <akuster808@gmail.com>
Sat, 11 May 2019 14:42:36 +0000 (07:42 -0700)
This is done by concatenating the DTB with the kernels public key
to all built u-boot binaries. Furthermore the installation of all
the binaries is required.

Signed-off-by: Andreas Obergschwandtner <andreas.obergschwandtner@skidata.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Richard Leitner <richard.leitner@skidata.com>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
meta/classes/uboot-sign.bbclass

index 9e3d1d6fc1adb78bcb8a5fe27c13f3b89fa817c0..2da43655aabb5dba8cad542f11b264decc25ac9b 100644 (file)
@@ -45,49 +45,72 @@ UBOOT_NODTB_SYMLINK ?= "u-boot-nodtb-${MACHINE}.${UBOOT_SUFFIX}"
 # Functions in this bbclass is for u-boot only
 UBOOT_PN = "${@d.getVar('PREFERRED_PROVIDER_u-boot') or 'u-boot'}"
 
+concat_dtb_helper() {
+       if [ -e ${UBOOT_DTB_BINARY} ]; then
+               ln -sf ${UBOOT_DTB_IMAGE} ${DEPLOYDIR}/${UBOOT_DTB_BINARY}
+               ln -sf ${UBOOT_DTB_IMAGE} ${DEPLOYDIR}/${UBOOT_DTB_SYMLINK}
+       fi
+
+       if [ -f ${UBOOT_NODTB_BINARY} ]; then
+               install ${UBOOT_NODTB_BINARY} ${DEPLOYDIR}/${UBOOT_NODTB_IMAGE}
+               ln -sf ${UBOOT_NODTB_IMAGE} ${UBOOT_NODTB_SYMLINK}
+               ln -sf ${UBOOT_NODTB_IMAGE} ${UBOOT_NODTB_BINARY}
+       fi
+
+       # Concatenate U-Boot w/o DTB & DTB with public key
+       # (cf. kernel-fitimage.bbclass for more details)
+       deployed_uboot_dtb_binary='${DEPLOY_DIR_IMAGE}/${UBOOT_DTB_IMAGE}'
+       if [ "x${UBOOT_SUFFIX}" = "ximg" -o "x${UBOOT_SUFFIX}" = "xrom" ] && \
+               [ -e "$deployed_uboot_dtb_binary" ]; then
+               oe_runmake EXT_DTB=$deployed_uboot_dtb_binary
+               install ${UBOOT_BINARY} ${DEPLOYDIR}/${UBOOT_IMAGE}
+       elif [ -e "${DEPLOYDIR}/${UBOOT_NODTB_IMAGE}" -a -e "$deployed_uboot_dtb_binary" ]; then
+               cd ${DEPLOYDIR}
+               cat ${UBOOT_NODTB_IMAGE} $deployed_uboot_dtb_binary | tee ${UBOOT_BINARY} > ${UBOOT_IMAGE}
+       elif [ -n "${UBOOT_DTB_BINARY}" ]; then
+               bbwarn "Failure while adding public key to u-boot binary. Verified boot won't be available."
+       fi
+}
+
 concat_dtb() {
        if [ "${UBOOT_SIGN_ENABLE}" = "1" -a "${PN}" = "${UBOOT_PN}" ]; then
                mkdir -p ${DEPLOYDIR}
-               if [ -e ${B}/${UBOOT_DTB_BINARY} ]; then
-                       ln -sf ${UBOOT_DTB_IMAGE} ${DEPLOYDIR}/${UBOOT_DTB_BINARY}
-                       ln -sf ${UBOOT_DTB_IMAGE} ${DEPLOYDIR}/${UBOOT_DTB_SYMLINK}
-               fi
-
-               if [ -f ${B}/${UBOOT_NODTB_BINARY} ]; then
-            install ${B}/${UBOOT_NODTB_BINARY} ${DEPLOYDIR}/${UBOOT_NODTB_IMAGE}
-            ln -sf ${UBOOT_NODTB_IMAGE} ${UBOOT_NODTB_SYMLINK}
-            ln -sf ${UBOOT_NODTB_IMAGE} ${UBOOT_NODTB_BINARY}
-               fi
-
-               # Concatenate U-Boot w/o DTB & DTB with public key
-               # (cf. kernel-fitimage.bbclass for more details)
-               deployed_uboot_dtb_binary='${DEPLOY_DIR_IMAGE}/${UBOOT_DTB_IMAGE}'
-               if [ "x${UBOOT_SUFFIX}" = "ximg" -o "x${UBOOT_SUFFIX}" = "xrom" ] && \
-                       [ -e "$deployed_uboot_dtb_binary" ]; then
+               if [ -n "${UBOOT_CONFIG}" ]; then
+                       for config in ${UBOOT_MACHINE}; do
+                               cd ${B}/${config}
+                               concat_dtb_helper
+                       done
+               else
                        cd ${B}
-                       oe_runmake EXT_DTB=$deployed_uboot_dtb_binary
-                       install ${B}/${UBOOT_BINARY} ${DEPLOYDIR}/${UBOOT_IMAGE}
-               elif [ -e "${DEPLOYDIR}/${UBOOT_NODTB_IMAGE}" -a -e "$deployed_uboot_dtb_binary" ]; then
-                       cd ${DEPLOYDIR}
-                       cat ${UBOOT_NODTB_IMAGE} $deployed_uboot_dtb_binary | tee ${B}/${UBOOT_BINARY} > ${UBOOT_IMAGE}
-               elif [ -n "${UBOOT_DTB_BINARY}" ]; then
-                       bbwarn "Failure while adding public key to u-boot binary. Verified boot won't be available."
+                       concat_dtb_helper
                fi
        fi
 }
 
 # Install UBOOT_DTB_BINARY to datadir, so that kernel can use it for
 # signing, and kernel will deploy UBOOT_DTB_BINARY after signs it.
+install_helper() {
+       if [ -f ${UBOOT_DTB_BINARY} ]; then
+               install -d ${D}${datadir}
+               # UBOOT_DTB_BINARY is a symlink to UBOOT_DTB_IMAGE, so we
+               # need both of them.
+               install ${UBOOT_DTB_BINARY} ${D}${datadir}/${UBOOT_DTB_IMAGE}
+               ln -sf ${UBOOT_DTB_IMAGE} ${D}${datadir}/${UBOOT_DTB_BINARY}
+       elif [ -n "${UBOOT_DTB_BINARY}" ]; then
+               bbwarn "${UBOOT_DTB_BINARY} not found"
+       fi
+}
+
 do_install_append() {
        if [ "${UBOOT_SIGN_ENABLE}" = "1" -a "${PN}" = "${UBOOT_PN}" ]; then
-               if [ -f ${B}/${UBOOT_DTB_BINARY} ]; then
-                       install -d ${D}${datadir}
-                       # UBOOT_DTB_BINARY is a symlink to UBOOT_DTB_IMAGE, so we
-                       # need both of them.
-                       install ${B}/${UBOOT_DTB_BINARY} ${D}${datadir}/${UBOOT_DTB_IMAGE}
-                       ln -sf ${UBOOT_DTB_IMAGE} ${D}${datadir}/${UBOOT_DTB_BINARY}
-               elif [ -n "${UBOOT_DTB_BINARY}" ]; then
-                       bbwarn "${B}/${UBOOT_DTB_BINARY} not found"
+               if [ -n "${UBOOT_CONFIG}" ]; then
+                       for config in ${UBOOT_MACHINE}; do
+                               cd ${B}/${config}
+                               install_helper
+                       done
+               else
+                       cd ${B}
+                       install_helper
                fi
        fi
 }