summaryrefslogtreecommitdiffstats
path: root/meta/classes
diff options
context:
space:
mode:
authorAndreas Obergschwandtner <andreas.obergschwandtner@skidata.com>2019-05-06 09:45:31 +0200
committerRichard Purdie <richard.purdie@linuxfoundation.org>2019-05-20 14:38:16 +0100
commit27db34f3240cafef7242d480f0f0707d6f270b76 (patch)
treef176e03cb6e50f0bea7b59d3d6c354e5901bd715 /meta/classes
parent11e52d0a337479415e6b7ce04ef78f0e06141251 (diff)
downloadpoky-27db34f3240cafef7242d480f0f0707d6f270b76.tar.gz
uboot-sign: add support for different u-boot configurations
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. (From OE-Core rev: da6806df8bb3994e80d8deb6edb406dba92249e0) 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> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/classes')
-rw-r--r--meta/classes/uboot-sign.bbclass85
1 files changed, 54 insertions, 31 deletions
diff --git a/meta/classes/uboot-sign.bbclass b/meta/classes/uboot-sign.bbclass
index 9e3d1d6fc1..2da43655aa 100644
--- a/meta/classes/uboot-sign.bbclass
+++ b/meta/classes/uboot-sign.bbclass
@@ -45,49 +45,72 @@ UBOOT_NODTB_SYMLINK ?= "u-boot-nodtb-${MACHINE}.${UBOOT_SUFFIX}"
45# Functions in this bbclass is for u-boot only 45# Functions in this bbclass is for u-boot only
46UBOOT_PN = "${@d.getVar('PREFERRED_PROVIDER_u-boot') or 'u-boot'}" 46UBOOT_PN = "${@d.getVar('PREFERRED_PROVIDER_u-boot') or 'u-boot'}"
47 47
48concat_dtb_helper() {
49 if [ -e ${UBOOT_DTB_BINARY} ]; then
50 ln -sf ${UBOOT_DTB_IMAGE} ${DEPLOYDIR}/${UBOOT_DTB_BINARY}
51 ln -sf ${UBOOT_DTB_IMAGE} ${DEPLOYDIR}/${UBOOT_DTB_SYMLINK}
52 fi
53
54 if [ -f ${UBOOT_NODTB_BINARY} ]; then
55 install ${UBOOT_NODTB_BINARY} ${DEPLOYDIR}/${UBOOT_NODTB_IMAGE}
56 ln -sf ${UBOOT_NODTB_IMAGE} ${UBOOT_NODTB_SYMLINK}
57 ln -sf ${UBOOT_NODTB_IMAGE} ${UBOOT_NODTB_BINARY}
58 fi
59
60 # Concatenate U-Boot w/o DTB & DTB with public key
61 # (cf. kernel-fitimage.bbclass for more details)
62 deployed_uboot_dtb_binary='${DEPLOY_DIR_IMAGE}/${UBOOT_DTB_IMAGE}'
63 if [ "x${UBOOT_SUFFIX}" = "ximg" -o "x${UBOOT_SUFFIX}" = "xrom" ] && \
64 [ -e "$deployed_uboot_dtb_binary" ]; then
65 oe_runmake EXT_DTB=$deployed_uboot_dtb_binary
66 install ${UBOOT_BINARY} ${DEPLOYDIR}/${UBOOT_IMAGE}
67 elif [ -e "${DEPLOYDIR}/${UBOOT_NODTB_IMAGE}" -a -e "$deployed_uboot_dtb_binary" ]; then
68 cd ${DEPLOYDIR}
69 cat ${UBOOT_NODTB_IMAGE} $deployed_uboot_dtb_binary | tee ${UBOOT_BINARY} > ${UBOOT_IMAGE}
70 elif [ -n "${UBOOT_DTB_BINARY}" ]; then
71 bbwarn "Failure while adding public key to u-boot binary. Verified boot won't be available."
72 fi
73}
74
48concat_dtb() { 75concat_dtb() {
49 if [ "${UBOOT_SIGN_ENABLE}" = "1" -a "${PN}" = "${UBOOT_PN}" ]; then 76 if [ "${UBOOT_SIGN_ENABLE}" = "1" -a "${PN}" = "${UBOOT_PN}" ]; then
50 mkdir -p ${DEPLOYDIR} 77 mkdir -p ${DEPLOYDIR}
51 if [ -e ${B}/${UBOOT_DTB_BINARY} ]; then 78 if [ -n "${UBOOT_CONFIG}" ]; then
52 ln -sf ${UBOOT_DTB_IMAGE} ${DEPLOYDIR}/${UBOOT_DTB_BINARY} 79 for config in ${UBOOT_MACHINE}; do
53 ln -sf ${UBOOT_DTB_IMAGE} ${DEPLOYDIR}/${UBOOT_DTB_SYMLINK} 80 cd ${B}/${config}
54 fi 81 concat_dtb_helper
55 82 done
56 if [ -f ${B}/${UBOOT_NODTB_BINARY} ]; then 83 else
57 install ${B}/${UBOOT_NODTB_BINARY} ${DEPLOYDIR}/${UBOOT_NODTB_IMAGE}
58 ln -sf ${UBOOT_NODTB_IMAGE} ${UBOOT_NODTB_SYMLINK}
59 ln -sf ${UBOOT_NODTB_IMAGE} ${UBOOT_NODTB_BINARY}
60 fi
61
62 # Concatenate U-Boot w/o DTB & DTB with public key
63 # (cf. kernel-fitimage.bbclass for more details)
64 deployed_uboot_dtb_binary='${DEPLOY_DIR_IMAGE}/${UBOOT_DTB_IMAGE}'
65 if [ "x${UBOOT_SUFFIX}" = "ximg" -o "x${UBOOT_SUFFIX}" = "xrom" ] && \
66 [ -e "$deployed_uboot_dtb_binary" ]; then
67 cd ${B} 84 cd ${B}
68 oe_runmake EXT_DTB=$deployed_uboot_dtb_binary 85 concat_dtb_helper
69 install ${B}/${UBOOT_BINARY} ${DEPLOYDIR}/${UBOOT_IMAGE}
70 elif [ -e "${DEPLOYDIR}/${UBOOT_NODTB_IMAGE}" -a -e "$deployed_uboot_dtb_binary" ]; then
71 cd ${DEPLOYDIR}
72 cat ${UBOOT_NODTB_IMAGE} $deployed_uboot_dtb_binary | tee ${B}/${UBOOT_BINARY} > ${UBOOT_IMAGE}
73 elif [ -n "${UBOOT_DTB_BINARY}" ]; then
74 bbwarn "Failure while adding public key to u-boot binary. Verified boot won't be available."
75 fi 86 fi
76 fi 87 fi
77} 88}
78 89
79# Install UBOOT_DTB_BINARY to datadir, so that kernel can use it for 90# Install UBOOT_DTB_BINARY to datadir, so that kernel can use it for
80# signing, and kernel will deploy UBOOT_DTB_BINARY after signs it. 91# signing, and kernel will deploy UBOOT_DTB_BINARY after signs it.
92install_helper() {
93 if [ -f ${UBOOT_DTB_BINARY} ]; then
94 install -d ${D}${datadir}
95 # UBOOT_DTB_BINARY is a symlink to UBOOT_DTB_IMAGE, so we
96 # need both of them.
97 install ${UBOOT_DTB_BINARY} ${D}${datadir}/${UBOOT_DTB_IMAGE}
98 ln -sf ${UBOOT_DTB_IMAGE} ${D}${datadir}/${UBOOT_DTB_BINARY}
99 elif [ -n "${UBOOT_DTB_BINARY}" ]; then
100 bbwarn "${UBOOT_DTB_BINARY} not found"
101 fi
102}
103
81do_install_append() { 104do_install_append() {
82 if [ "${UBOOT_SIGN_ENABLE}" = "1" -a "${PN}" = "${UBOOT_PN}" ]; then 105 if [ "${UBOOT_SIGN_ENABLE}" = "1" -a "${PN}" = "${UBOOT_PN}" ]; then
83 if [ -f ${B}/${UBOOT_DTB_BINARY} ]; then 106 if [ -n "${UBOOT_CONFIG}" ]; then
84 install -d ${D}${datadir} 107 for config in ${UBOOT_MACHINE}; do
85 # UBOOT_DTB_BINARY is a symlink to UBOOT_DTB_IMAGE, so we 108 cd ${B}/${config}
86 # need both of them. 109 install_helper
87 install ${B}/${UBOOT_DTB_BINARY} ${D}${datadir}/${UBOOT_DTB_IMAGE} 110 done
88 ln -sf ${UBOOT_DTB_IMAGE} ${D}${datadir}/${UBOOT_DTB_BINARY} 111 else
89 elif [ -n "${UBOOT_DTB_BINARY}" ]; then 112 cd ${B}
90 bbwarn "${B}/${UBOOT_DTB_BINARY} not found" 113 install_helper
91 fi 114 fi
92 fi 115 fi
93} 116}