From: He Zhe zhe...@windriver.com
Add KERNEL_IMAGETYPES to support building packaging and installing
multi types of kernel images, such as zImage uImage, at one time.
KERNEL_IMAGETYPE works as it did.
Fixes [YOCTO #6945].
Signed-off-by: He Zhe zhe...@windriver.com
---
meta/classes/kernel-fitimage.bbclass| 21 +++---
meta/classes/kernel-grub.bbclass| 46
meta/classes/kernel-uimage.bbclass | 22 +++---
meta/classes/kernel.bbclass | 128 +++-
meta/conf/documentation.conf| 1 +
meta/recipes-kernel/linux/linux-dtb.inc | 15 ++--
6 files changed, 159 insertions(+), 74 deletions(-)
diff --git a/meta/classes/kernel-fitimage.bbclass
b/meta/classes/kernel-fitimage.bbclass
index 2a56a54..1b65c0d 100644
--- a/meta/classes/kernel-fitimage.bbclass
+++ b/meta/classes/kernel-fitimage.bbclass
@@ -1,8 +1,8 @@
inherit kernel-uboot
python __anonymous () {
-kerneltype = d.getVar('KERNEL_IMAGETYPE', True)
-if kerneltype == 'fitImage':
+kerneltype = d.getVar('KERNEL_IMAGETYPES', True) or
+if 'fitImage' in kerneltype.split():
depends = d.getVar(DEPENDS, True)
depends = %s u-boot-mkimage-native dtc-native % depends
d.setVar(DEPENDS, depends)
@@ -10,7 +10,10 @@ python __anonymous () {
# Override KERNEL_IMAGETYPE_FOR_MAKE variable, which is internal
# to kernel.bbclass . We have to override it, since we pack zImage
# (at least for now) into the fitImage .
-d.setVar(KERNEL_IMAGETYPE_FOR_MAKE, zImage)
+typeformake = d.getVar(KERNEL_IMAGETYPE_FOR_MAKE, True) or
+if 'fitImage' in typeformake.split():
+typeformake.replace('fitImage', 'zImage')
+d.setVar('KERNEL_IMAGETYPE_FOR_MAKE', typeformake)
image = d.getVar('INITRAMFS_IMAGE', True)
if image:
@@ -154,7 +157,7 @@ EOF
}
do_assemble_fitimage() {
- if test x${KERNEL_IMAGETYPE} = xfitImage ; then
+ if test x${KERNEL_IMAGETYPES} != x${KERNEL_IMAGETYPES//fitImage/} ;
then
kernelcount=1
dtbcount=
rm -f fit-image.its
@@ -217,14 +220,14 @@ addtask assemble_fitimage before do_install after
do_compile
kernel_do_deploy_append() {
# Update deploy directory
- if test x${KERNEL_IMAGETYPE} = xfitImage ; then
+ if test x${KERNEL_IMAGETYPES} != x${KERNEL_IMAGETYPES//fitImage/} ;
then
cd ${B}
echo Copying fit-image.its source file...
-
its_base_name=${KERNEL_IMAGETYPE}-its-${PV}-${PR}-${MACHINE}-${DATETIME}
- its_symlink_name=${KERNEL_IMAGETYPE}-its-${MACHINE}
+ its_base_name=fitImage-its-${PV}-${PR}-${MACHINE}-${DATETIME}
+ its_symlink_name=fitImage-its-${MACHINE}
install -m 0644 fit-image.its ${DEPLOYDIR}/${its_base_name}.its
-
linux_bin_base_name=${KERNEL_IMAGETYPE}-linux.bin-${PV}-${PR}-${MACHINE}-${DATETIME}
- linux_bin_symlink_name=${KERNEL_IMAGETYPE}-linux.bin-${MACHINE}
+
linux_bin_base_name=fitImage-linux.bin-${PV}-${PR}-${MACHINE}-${DATETIME}
+ linux_bin_symlink_name=fitImage-linux.bin-${MACHINE}
install -m 0644 linux.bin
${DEPLOYDIR}/${linux_bin_base_name}.bin
cd ${DEPLOYDIR}
diff --git a/meta/classes/kernel-grub.bbclass b/meta/classes/kernel-grub.bbclass
index a63f482..5ffaeb7 100644
--- a/meta/classes/kernel-grub.bbclass
+++ b/meta/classes/kernel-grub.bbclass
@@ -10,41 +10,44 @@
# updates the new kernel as the boot priority.
#
-pkg_preinst_kernel-image_append () {
+python __anonymous () {
+import re
+
+preinst = '''
# Parsing confliction
[ -f $D/boot/grub/menu.list ] grubcfg=$D/boot/grub/menu.list
[ -f $D/boot/grub/grub.cfg ] grubcfg=$D/boot/grub/grub.cfg
if [ -n $grubcfg ]; then
# Dereference symlink to avoid confliction with new kernel name.
- if grep -q /${KERNEL_IMAGETYPE} \+root= $grubcfg; then
- if [ -L $D/boot/${KERNEL_IMAGETYPE} ]; then
- kimage=`realpath $D/boot/${KERNEL_IMAGETYPE}
2/dev/null`
+ if grep -q /KERNEL_IMAGETYPE \+root= $grubcfg; then
+ if [ -L $D/boot/KERNEL_IMAGETYPE ]; then
+ kimage=`realpath $D/boot/KERNEL_IMAGETYPE
2/dev/null`
if [ -f $D$kimage ]; then
- sed -i s:${KERNEL_IMAGETYPE}
\+root=:${kimage##*/} root=: $grubcfg
+ sed -i s:KERNEL_IMAGETYPE
\+root=:${kimage##*/} root=: $grubcfg
fi
fi
fi
# Rename old kernel if it conflicts with new kernel name.
- if grep -q /${KERNEL_IMAGETYPE}-${KERNEL_VERSION} \+root=
$grubcfg; then
- if