<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Feb 19, 2016 at 4:56 AM, <span dir="ltr"><<a href="mailto:zhe.he@windriver.com" target="_blank">zhe.he@windriver.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">From: He Zhe <<a href="mailto:zhe.he@windriver.com" target="_blank">zhe.he@windriver.com</a>><br>
<br>
Add KERNEL_IMAGETYPES to support building packaging and installing<br>
multi types of kernel images, such as zImage uImage, at one time.<br>
<br>
KERNEL_IMAGETYPE works as before. All KERNEL_ALT_IMAGETYPEs are<br>
replaced by KERNEL_IMAGETYPES.<br></blockquote><div><br></div><div> </div><div>I see that you have updated layers/configs with the new variable, but obviously you can't see all the </div><div>layers that may be using that old variable.</div><div><br></div><div>Isn't it possible to have a python routine that detects the old ALT_IMAGETYPE variable and</div><div>assigns it to the new one (if it isn't already set) ? Sort of like how distro features/features backfill</div><div>work ?</div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
Fixes [YOCTO #6945].<br>
<br>
Signed-off-by: He Zhe <<a href="mailto:zhe.he@windriver.com" target="_blank">zhe.he@windriver.com</a>><br>
---<br>
documentation/ref-manual/ref-variables.xml | 10 +-<br>
meta-yocto-bsp/conf/machine/edgerouter.conf | 2 +-<br>
meta/classes/kernel-fitimage.bbclass | 20 +--<br>
meta/classes/kernel-grub.bbclass | 44 ++++--<br>
meta/classes/kernel-uimage.bbclass | 22 +--<br>
meta/classes/kernel.bbclass | 171 +++++++++++++++------<br>
meta/conf/documentation.conf | 1 +<br>
meta/conf/machine/qemumips.conf | 2 +-<br>
meta/conf/machine/qemumips64.conf | 2 +-<br>
meta/recipes-kernel/linux/linux-dtb.inc | 49 +++---<br>
.../target/arch/mips/conf/machine/machine.conf | 2 +-<br>
.../target/arch/mips64/conf/machine/machine.conf | 2 +-<br>
.../target/arch/qemu/conf/machine/machine.conf | 2 +-<br>
13 files changed, 214 insertions(+), 115 deletions(-)<br>
<br>
diff --git a/documentation/ref-manual/ref-variables.xml b/documentation/ref-manual/ref-variables.xml<br>
index a76a8c2..a8e4fd8 100644<br>
--- a/documentation/ref-manual/ref-variables.xml<br>
+++ b/documentation/ref-manual/ref-variables.xml<br>
@@ -6417,14 +6417,14 @@ recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3"<br>
</glossdef><br>
</glossentry><br>
<br>
- <glossentry id='var-KERNEL_ALT_IMAGETYPE'><glossterm>KERNEL_ALT_IMAGETYPE</glossterm><br>
+ <glossentry id='var-KERNEL_IMAGETYPES'><glossterm>KERNEL_IMAGETYPES</glossterm><br>
<info><br>
- KERNEL_ALT_IMAGETYPE[doc] = "Specifies an alternate kernel image type for creation."<br>
+ KERNEL_IMAGETYPES[doc] = "Specifies alternate kernel image types for creation."<br>
</info><br>
<glossdef><br>
<para role="glossdeffirst"><br>
<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> --><br>
- Specifies an alternate kernel image type for creation in<br>
+ Specifies alternate kernel image types for creation in<br>
addition to the kernel image type specified using the<br>
<link linkend='var-KERNEL_IMAGETYPE'><filename>KERNEL_IMAGETYPE</filename></link><br>
variable.<br>
@@ -6612,8 +6612,8 @@ recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3"<br>
</para><br>
<br>
<para><br>
- If you want to build an alternate kernel image type, use the<br>
- <link linkend='var-KERNEL_ALT_IMAGETYPE'><filename>KERNEL_ALT_IMAGETYPE</filename></link><br>
+ If you want to build alternate kernel image types, use the<br>
+ <link linkend='var-KERNEL_IMAGETYPES'><filename>KERNEL_IMAGETYPES</filename></link><br>
variable.<br>
</para><br>
</glossdef><br>
diff --git a/meta-yocto-bsp/conf/machine/edgerouter.conf b/meta-yocto-bsp/conf/machine/edgerouter.conf<br>
index 476e690..affd568 100644<br>
--- a/meta-yocto-bsp/conf/machine/edgerouter.conf<br>
+++ b/meta-yocto-bsp/conf/machine/edgerouter.conf<br>
@@ -7,7 +7,7 @@ require conf/machine/include/tune-mips64.inc<br>
MACHINE_FEATURES = "pci ext2 ext3 serial"<br>
<br>
KERNEL_IMAGETYPE = "vmlinux"<br>
-KERNEL_ALT_IMAGETYPE = "vmlinux.bin"<br>
+KERNEL_IMAGETYPES = "vmlinux.bin"<br></blockquote><div><br></div><div>This now reads a bit ... odd (for back of a better description). I'm concerned that it will cause</div><div>confusion, there are two variables:</div><div><br></div><div>KERNEL_IMAGETYPE and KERNEL_IMAGETYPES ..</div><div><br></div><div>They are very close in name, and just reading the variable doesn't really tell us why</div><div>we'd set one and not the other. The old "ALT" made it more obvious.</div><div><br></div><div>But from the patch, KERNEL_IMAGETYPE isn't used, so does it have to be set at</div><div>all in these .conf files ? .. or maybe I missed where it is still used other than for</div><div>compatibility.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
KERNEL_IMAGE_STRIP_EXTRA_SECTIONS = ".comment"<br>
<br>
PREFERRED_PROVIDER_virtual/kernel ?= "linux-yocto"<br>
diff --git a/meta/classes/kernel-fitimage.bbclass b/meta/classes/kernel-fitimage.bbclass<br>
index f1b409c..51df19d 100644<br>
--- a/meta/classes/kernel-fitimage.bbclass<br>
+++ b/meta/classes/kernel-fitimage.bbclass<br>
@@ -1,8 +1,8 @@<br>
inherit kernel-uboot<br>
<br>
python __anonymous () {<br>
- kerneltype = d.getVar('KERNEL_IMAGETYPE', True)<br>
- if kerneltype == 'fitImage':<br>
+ kerneltypes = d.getVar('KERNEL_IMAGETYPES', True) or ""<br>
+ if 'fitImage' in kerneltypes.split():<br>
depends = d.getVar("DEPENDS", True)<br>
depends = "%s u-boot-mkimage-native dtc-native" % depends<br>
d.setVar("DEPENDS", depends)<br>
@@ -10,7 +10,9 @@ python __anonymous () {<br>
# Override KERNEL_IMAGETYPE_FOR_MAKE variable, which is internal<br>
# to kernel.bbclass . We have to override it, since we pack zImage<br>
# (at least for now) into the fitImage .<br>
- d.setVar("KERNEL_IMAGETYPE_FOR_MAKE", "zImage")<br>
+ typeformake = d.getVar("KERNEL_IMAGETYPE_FOR_MAKE", True) or ""<br>
+ if 'fitImage' in typeformake.split():<br>
+ d.setVar('KERNEL_IMAGETYPE_FOR_MAKE', typeformake.replace('fitImage', 'zImage'))<br>
<br>
image = d.getVar('INITRAMFS_IMAGE', True)<br>
if image:<br>
@@ -154,7 +156,7 @@ EOF<br>
}<br>
<br>
do_assemble_fitimage() {<br>
- if test "x${KERNEL_IMAGETYPE}" = "xfitImage" ; then<br>
+ if echo ${KERNEL_IMAGETYPES} | grep -Pq "\bfitImage\b"; then<br></blockquote><div><br></div><div>Not that it really matters, but grep -w would work here as well, and might read bit simpler.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
kernelcount=1<br>
dtbcount=""<br>
rm -f fit-image.its<br>
@@ -217,14 +219,14 @@ addtask assemble_fitimage before do_install after do_compile<br>
<br>
kernel_do_deploy_append() {<br>
# Update deploy directory<br>
- if test "x${KERNEL_IMAGETYPE}" = "xfitImage" ; then<br>
+ if echo ${KERNEL_IMAGETYPES} | grep -Pq "\bfitImage\b"; then<br>
cd ${B}<br>
echo "Copying fit-image.its source file..."<br>
- its_base_name="${KERNEL_IMAGETYPE}-its-${PV}-${PR}-${MACHINE}-${DATETIME}"<br>
- its_symlink_name=${KERNEL_IMAGETYPE}-its-${MACHINE}<br>
+ its_base_name="fitImage-its-${PV}-${PR}-${MACHINE}-${DATETIME}"<br>
+ its_symlink_name=fitImage-its-${MACHINE}<br>
install -m 0644 fit-image.its ${DEPLOYDIR}/${its_base_name}.its<br>
- linux_bin_base_name="${KERNEL_IMAGETYPE}-linux.bin-${PV}-${PR}-${MACHINE}-${DATETIME}"<br>
- linux_bin_symlink_name=${KERNEL_IMAGETYPE}-linux.bin-${MACHINE}<br>
+ linux_bin_base_name="fitImage-linux.bin-${PV}-${PR}-${MACHINE}-${DATETIME}"<br>
+ linux_bin_symlink_name=fitImage-linux.bin-${MACHINE}<br>
install -m 0644 linux.bin ${DEPLOYDIR}/${linux_bin_base_name}.bin<br>
<br>
cd ${DEPLOYDIR}<br>
diff --git a/meta/classes/kernel-grub.bbclass b/meta/classes/kernel-grub.bbclass<br>
index a63f482..f7dcc07 100644<br>
--- a/meta/classes/kernel-grub.bbclass<br>
+++ b/meta/classes/kernel-grub.bbclass<br>
@@ -10,41 +10,44 @@<br>
# updates the new kernel as the boot priority.<br>
#<br>
<br>
-pkg_preinst_kernel-image_append () {<br>
+python __anonymous () {<br></blockquote><div><br></div><div>Maybe it is just the patch context making me misread this, but can you elaborate on</div><div>what is changing here ?</div><div><br></div><div>Is it the old preinst is being replaced by anonymous python that generates the preinst as</div><div>a string, and that this injected into the package via the python ? Are we guaranteed</div><div>to run the anonymous python at the right time ? .. I've been burned by that before, so</div><div>I wanted to check that it has been considered.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
+ import re<br>
+<br>
+ preinst = '''<br>
# Parsing confliction<br>
[ -f "$D/boot/grub/menu.list" ] && grubcfg="$D/boot/grub/menu.list"<br>
[ -f "$D/boot/grub/grub.cfg" ] && grubcfg="$D/boot/grub/grub.cfg"<br>
if [ -n "$grubcfg" ]; then<br>
# Dereference symlink to avoid confliction with new kernel name.<br>
- if grep -q "/${KERNEL_IMAGETYPE} \+root=" $grubcfg; then<br>
- if [ -L "$D/boot/${KERNEL_IMAGETYPE}" ]; then<br>
- kimage=`realpath $D/boot/${KERNEL_IMAGETYPE} 2>/dev/null`<br>
+ if grep -q "/KERNEL_IMAGETYPE \+root=" $grubcfg; then<br></blockquote><div><br></div><div>It's lines like these that made me ask my question above. This looks like its checking the</div><div>grubcfg on disk. Is that same grep going to work in this anonymous python .. or maybe this</div><div>isn't being run now, and only when the package is being installed ? I'm most likely missing</div><div>something.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
+ if [ -L "$D/boot/KERNEL_IMAGETYPE" ]; then<br>
+ kimage=`realpath $D/boot/KERNEL_IMAGETYPE 2>/dev/null`<br>
if [ -f "$D$kimage" ]; then<br>
- sed -i "s:${KERNEL_IMAGETYPE} \+root=:${kimage##*/} root=:" $grubcfg<br>
+ sed -i "s:KERNEL_IMAGETYPE \+root=:${kimage##*/} root=:" $grubcfg<br>
fi<br>
fi<br>
fi<br>
<br>
# Rename old kernel if it conflicts with new kernel name.<br>
- if grep -q "/${KERNEL_IMAGETYPE}-${KERNEL_VERSION} \+root=" $grubcfg; then<br>
- if [ -f "$D/boot/${KERNEL_IMAGETYPE}-${KERNEL_VERSION}" ]; then<br>
+ if grep -q "/KERNEL_IMAGETYPE-${KERNEL_VERSION} \+root=" $grubcfg; then<br>
+ if [ -f "$D/boot/KERNEL_IMAGETYPE-${KERNEL_VERSION}" ]; then<br>
timestamp=`date +%s`<br>
- kimage="$D/boot/${KERNEL_IMAGETYPE}-${KERNEL_VERSION}-$timestamp-back"<br>
- sed -i "s:${KERNEL_IMAGETYPE}-${KERNEL_VERSION} \+root=:${kimage##*/} root=:" $grubcfg<br>
- mv "$D/boot/${KERNEL_IMAGETYPE}-${KERNEL_VERSION}" "$kimage"<br>
+ kimage="$D/boot/KERNEL_IMAGETYPE-${KERNEL_VERSION}-$timestamp-back"<br>
+ sed -i "s:KERNEL_IMAGETYPE-${KERNEL_VERSION} \+root=:${kimage##*/} root=:" $grubcfg<br>
+ mv "$D/boot/KERNEL_IMAGETYPE-${KERNEL_VERSION}" "$kimage"<br>
fi<br>
fi<br>
fi<br>
-}<br>
+'''<br>
<br>
-pkg_postinst_kernel-image_prepend () {<br>
+ postinst = '''<br>
get_new_grub_cfg() {<br>
grubcfg="$1"<br>
old_image="$2"<br>
- title="Update ${KERNEL_IMAGETYPE}-${KERNEL_VERSION}-${PV}"<br>
+ title="Update KERNEL_IMAGETYPE-${KERNEL_VERSION}-${PV}"<br>
if [ "${grubcfg##*/}" = "grub.cfg" ]; then<br>
rootfs=`grep " *linux \+[^ ]\+ \+root=" $grubcfg -m 1 | \<br>
- sed "s#${old_image}#${old_image%/*}/${KERNEL_IMAGETYPE}-${KERNEL_VERSION}#"`<br>
+ sed "s#${old_image}#${old_image%/*}/KERNEL_IMAGETYPE-${KERNEL_VERSION}#"`<br>
<br>
echo "menuentry \"$title\" {"<br>
echo " set root=(hd0,1)"<br>
@@ -52,7 +55,7 @@ pkg_postinst_kernel-image_prepend () {<br>
echo "}"<br>
elif [ "${grubcfg##*/}" = "menu.list" ]; then<br>
rootfs=`grep "kernel \+[^ ]\+ \+root=" $grubcfg -m 1 | \<br>
- sed "s#${old_image}#${old_image%/*}/${KERNEL_IMAGETYPE}-${KERNEL_VERSION}#"`<br>
+ sed "s#${old_image}#${old_image%/*}/KERNEL_IMAGETYPE-${KERNEL_VERSION}#"`<br>
<br>
echo "default 0"<br>
echo "timeout 30"<br>
@@ -87,5 +90,16 @@ pkg_postinst_kernel-image_prepend () {<br>
mv $grubcfgtmp $grubcfg<br>
echo "Caution! Update kernel may affect kernel-module!"<br>
fi<br>
+'''<br>
+<br>
+ imagetypes = d.getVar('KERNEL_IMAGETYPES', True)<br>
+ imagetypes = re.sub(r'\.gz$', '', imagetypes)<br>
+<br>
+ for type in imagetypes.split():<br>
+ typelower = type.lower()<br>
+ preinst_append = preinst.replace('KERNEL_IMAGETYPE', type)<br>
+ postinst_prepend = postinst.replace('KERNEL_IMAGETYPE', type)<br>
+ d.setVar('pkg_preinst_kernel-image-' + typelower + '_append', preinst_append)<br>
+ d.setVar('pkg_postinst_kernel-image-' + typelower + '_prepend', postinst_prepend)<br>
}<br>
<br>
diff --git a/meta/classes/kernel-uimage.bbclass b/meta/classes/kernel-uimage.bbclass<br>
index f73965b..a238ce4 100644<br>
--- a/meta/classes/kernel-uimage.bbclass<br>
+++ b/meta/classes/kernel-uimage.bbclass<br>
@@ -1,23 +1,25 @@<br>
inherit kernel-uboot<br>
<br>
python __anonymous () {<br>
- kerneltype = d.getVar('KERNEL_IMAGETYPE', True)<br>
- if kerneltype == 'uImage':<br>
+ if "uImage" in (d.getVar('KERNEL_IMAGETYPES', True) or "").split():<br>
depends = d.getVar("DEPENDS", True)<br>
depends = "%s u-boot-mkimage-native" % depends<br>
d.setVar("DEPENDS", depends)<br>
<br>
- # Override KERNEL_IMAGETYPE_FOR_MAKE variable, which is internal<br>
- # to kernel.bbclass . We override the variable here, since we need<br>
- # to build uImage using the kernel build system if and only if<br>
- # KEEPUIMAGE == yes. Otherwise, we pack compressed vmlinux into<br>
- # the uImage .<br>
- if d.getVar("KEEPUIMAGE", True) != 'yes':<br>
- d.setVar("KERNEL_IMAGETYPE_FOR_MAKE", "zImage")<br>
+ # Override KERNEL_IMAGETYPE_FOR_MAKE variable, which is internal<br>
+ # to kernel.bbclass . We override the variable here, since we need<br>
+ # to build uImage using the kernel build system if and only if<br>
+ # KEEPUIMAGE == yes. Otherwise, we pack compressed vmlinux into<br>
+ # the uImage .<br>
+ if d.getVar("KEEPUIMAGE", True) != 'yes':<br>
+ typeformake = d.getVar("KERNEL_IMAGETYPE_FOR_MAKE", True) or ""<br>
+ if "uImage" in typeformake.split():<br>
+ typeformake.replace('uImage', 'zImage')<br>
+ d.setVar('KERNEL_IMAGETYPE_FOR_MAKE', typeformake)<br>
}<br>
<br>
do_uboot_mkimage() {<br>
- if test "x${KERNEL_IMAGETYPE}" = "xuImage" ; then<br>
+ if echo "${KERNEL_IMAGETYPES}" | grep -Pq "\buImage\b"; then<br>
if test "x${KEEPUIMAGE}" != "xyes" ; then<br>
uboot_prep_kimage<br>
<br>
diff --git a/meta/classes/kernel.bbclass b/meta/classes/kernel.bbclass<br>
index c3eab50..6db2e2e 100644<br>
--- a/meta/classes/kernel.bbclass<br>
+++ b/meta/classes/kernel.bbclass<br>
@@ -16,12 +16,48 @@ INITRAMFS_IMAGE ?= ""<br>
INITRAMFS_TASK ?= ""<br>
INITRAMFS_IMAGE_BUNDLE ?= ""<br>
<br>
+# KERNEL_VERSION is extracted from source code. It is evaluated as<br>
+# None for the first parsing, since the code has not been fetched.<br>
+# After the code is fetched, it will be evaluated as real version<br>
+# number and cause kernel to be rebuilt. To avoid this, make<br>
+# KERNEL_VERSION_NAME and KERNEL_VERSION_PKG_NAME depend on<br>
+# LINUX_VERSION which is a constant.<br>
+KERNEL_VERSION_NAME = "${@d.getVar('KERNEL_VERSION', True) or ""}"<br>
+KERNEL_VERSION_NAME[vardepvalue] = "${LINUX_VERSION}"<br>
+KERNEL_VERSION_PKG_NAME = "${@legitimize_package_name(d.getVar('KERNEL_VERSION', True))}"<br>
+KERNEL_VERSION_PKG_NAME[vardepvalue] = "${LINUX_VERSION}"<br>
+<br>
python __anonymous () {<br>
import re<br>
<br>
- kerneltype = d.getVar('KERNEL_IMAGETYPE', True)<br>
+ type = d.getVar('KERNEL_IMAGETYPE', True) or ""<br></blockquote><div><br></div><div>Aha. Here is that use of KERNEL_IMAGETYPE. Like I mentioned for the alt image type, can't</div><div>this existing variable be checked, and then added to KERNEL_IMAGE_TYPES in some</div><div>python code ? That would simplify the code here, and also not require the two variables to </div><div>be kept around.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
+ types = d.getVar('KERNEL_IMAGETYPES', True) or ""<br>
+ if type not in types.split():<br>
+ types = (type + ' ' + types).strip()<br>
+ d.setVar('KERNEL_IMAGETYPES', types)<br>
+ typeformake = re.sub(r'\.gz', '', types)<br>
+ d.setVar('KERNEL_IMAGETYPE_FOR_MAKE', typeformake)<br>
+<br>
+ for type in typeformake.split():<br>
+ typelower = type.lower()<br>
+<br>
+ d.appendVar('PACKAGES', ' ' + 'kernel-image-' + typelower)<br>
+<br>
+ d.setVar('FILES_kernel-image-' + typelower, '/boot/' + type + '*')<br>
+<br>
+ d.appendVar('RDEPENDS_kernel-image', ' ' + 'kernel-image-' + typelower)<br>
+<br>
+ d.setVar('PKG_kernel-image-' + typelower, 'kernel-image-' + typelower + '-${KERNEL_VERSION_PKG_NAME}')<br>
+<br>
+ d.setVar('ALLOW_EMPTY_kernel-image-' + typelower, '1')<br>
<br>
- d.setVar("KERNEL_IMAGETYPE_FOR_MAKE", re.sub(r'\.gz$', '', kerneltype))<br>
+ imagedest = d.getVar('KERNEL_IMAGEDEST', True)<br>
+ priority = d.getVar('KERNEL_PRIORITY', True)<br>
+ postinst = '#!/bin/sh\n' + 'update-alternatives --install /' + imagedest + '/' + type + ' ' + type + ' ' + '/' + imagedest + '/' + type + '-${KERNEL_VERSION_NAME} ' + priority + ' || true' + '\n'<br>
+ d.setVar('pkg_postinst_kernel-image-' + typelower, postinst)<br>
+<br>
+ postrm = '#!/bin/sh\n' + 'update-alternatives --remove' + ' ' + type + ' ' + type + '-${KERNEL_VERSION_NAME} || true' + '\n'<br>
+ d.setVar('pkg_postrm_kernel-image-' + typelower, postrm)<br>
<br>
image = d.getVar('INITRAMFS_IMAGE', True)<br>
if image:<br>
@@ -92,8 +128,8 @@ KERNEL_PRIORITY ?= "${@int(d.getVar('PV',1).split('-')[0].split('+')[0].split('.<br>
<br>
KERNEL_RELEASE ?= "${KERNEL_VERSION}"<br>
<br>
-# Where built kernel lies in the kernel tree<br>
-KERNEL_OUTPUT ?= "arch/${ARCH}/boot/${KERNEL_IMAGETYPE}"<br>
+# The directory where built kernel lies in the kernel tree<br>
+KERNEL_OUTPUT_DIR ?= "arch/${ARCH}/boot"<br>
KERNEL_IMAGEDEST = "boot"<br>
<br>
#<br>
@@ -119,8 +155,6 @@ KERNEL_EXTRA_ARGS ?= ""<br>
# We don't want to override kernel Makefile variables from the environment<br>
EXTRA_OEMAKE = ""<br>
<br>
-KERNEL_ALT_IMAGETYPE ??= ""<br>
-<br>
# Define where the kernel headers are installed on the target as well as where<br>
# they are staged.<br>
KERNEL_SRC_PATH = "/usr/src/kernel"<br>
@@ -166,23 +200,48 @@ copy_initramfs() {<br>
echo "Finished copy of initramfs into ./usr"<br>
}<br>
<br>
-INITRAMFS_BASE_NAME = "${KERNEL_IMAGETYPE}-initramfs-${PV}-${PR}-${MACHINE}-${DATETIME}"<br>
+INITRAMFS_BASE_NAME = "initramfs-${PV}-${PR}-${MACHINE}-${DATETIME}"</blockquote><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
INITRAMFS_BASE_NAME[vardepsexclude] = "DATETIME"<br>
do_bundle_initramfs () {<br>
if [ ! -z "${INITRAMFS_IMAGE}" -a x"${INITRAMFS_IMAGE_BUNDLE}" = x1 ]; then<br>
echo "Creating a kernel image with a bundled initramfs..."<br>
copy_initramfs<br>
- if [ -e ${KERNEL_OUTPUT} ] ; then<br>
- mv -f ${KERNEL_OUTPUT} ${KERNEL_OUTPUT}.bak<br>
- fi<br>
+ # Backuping kernel image relies on its type(regular file or symbolic link)<br></blockquote><div><br></div><div>s/Backuping/Backing up/</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
+ tmp_path=""<br>
+ for type in ${KERNEL_IMAGETYPES} ; do<br>
+ if [ -h ${KERNEL_OUTPUT_DIR}/$type ] ; then<br>
+ linkpath=`readlink -n ${KERNEL_OUTPUT_DIR}/$type`<br>
+ realpath=`readlink -fn ${KERNEL_OUTPUT_DIR}/$type`<br>
+ mv -f $realpath $realpath.bak<br>
+ tmp_path=$tmp_path" "$type"#"$linkpath"#"$realpath<br>
+ elif [ -f ${KERNEL_OUTPUT_DIR}/$type ]; then<br>
+ mv -f ${KERNEL_OUTPUT_DIR}/$type ${KERNEL_OUTPUT_DIR}/$type.bak<br>
+ tmp_path=$tmp_path" "$type"##"<br>
+ fi<br>
+ done<br>
use_alternate_initrd=CONFIG_INITRAMFS_SOURCE=${B}/usr/${INITRAMFS_IMAGE}-${MACHINE}.cpio<br>
kernel_do_compile<br>
- mv -f ${KERNEL_OUTPUT} ${KERNEL_OUTPUT}.initramfs<br>
- mv -f ${KERNEL_OUTPUT}.bak ${KERNEL_OUTPUT}<br>
+ # Restoring kernel image<br>
+ for tp in $tmp_path ; do<br>
+ type=`echo $tp|cut -d "#" -f 1`<br>
+ linkpath=`echo $tp|cut -d "#" -f 2`<br>
+ realpath=`echo $tp|cut -d "#" -f 3`<br>
+ if [ -n "$realpath" ]; then<br>
+ mv -f $realpath $realpath.initramfs<br>
+ mv -f $realpath.bak $realpath<br>
+ cd ${B}/${KERNEL_OUTPUT_DIR}<br>
+ ln -sf $linkpath.initramfs<br>
+ else<br>
+ mv -f ${KERNEL_OUTPUT_DIR}/$type ${KERNEL_OUTPUT_DIR}/$type.initramfs<br>
+ mv -f ${KERNEL_OUTPUT_DIR}/$type.bak ${KERNEL_OUTPUT_DIR}/$type<br>
+ fi<br>
+ done<br>
# Update install area<br>
- echo "There is kernel image bundled with initramfs: ${B}/${KERNEL_OUTPUT}.initramfs"<br>
- install -m 0644 ${B}/${KERNEL_OUTPUT}.initramfs ${D}/boot/${KERNEL_IMAGETYPE}-initramfs-${MACHINE}.bin<br>
- echo "${B}/${KERNEL_OUTPUT}.initramfs"<br>
+ for type in ${KERNEL_IMAGETYPES} ; do<br>
+ echo "There is kernel image bundled with initramfs: ${B}/${KERNEL_OUTPUT_DIR}/$type.initramfs"<br>
+ install -m 0644 ${B}/${KERNEL_OUTPUT_DIR}/$type.initramfs ${D}/boot/$type-initramfs-${MACHINE}.bin<br>
+ echo "${B}/${KERNEL_OUTPUT_DIR}/$type.initramfs"<br>
+ done<br>
fi<br>
}<br>
<br>
@@ -207,10 +266,15 @@ kernel_do_compile() {<br>
copy_initramfs<br>
use_alternate_initrd=CONFIG_INITRAMFS_SOURCE=${B}/usr/${INITRAMFS_IMAGE}-${MACHINE}.cpio<br>
fi<br>
- oe_runmake ${KERNEL_IMAGETYPE_FOR_MAKE} ${KERNEL_ALT_IMAGETYPE} CC="${KERNEL_CC}" LD="${KERNEL_LD}" ${KERNEL_EXTRA_ARGS} $use_alternate_initrd<br>
- if test "${KERNEL_IMAGETYPE_FOR_MAKE}.gz" = "${KERNEL_IMAGETYPE}"; then<br>
- gzip -9c < "${KERNEL_IMAGETYPE_FOR_MAKE}" > "${KERNEL_OUTPUT}"<br>
- fi<br>
+ oe_runmake ${KERNEL_IMAGETYPE_FOR_MAKE} CC="${KERNEL_CC}" LD="${KERNEL_LD}" ${KERNEL_EXTRA_ARGS} $use_alternate_initrd<br></blockquote><div><br></div><div><br></div><div>This is probably something that is worth mentioning in the top of the commit message. You are</div><div>building multiple kernel image types, but they are all currently using the same configuration.</div><div><br></div><div>If the make invokations were split into separate calls per image type, we could conceivably</div><div>extend this to generate and use a separate config int he future.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
+ for typeformake in ${KERNEL_IMAGETYPE_FOR_MAKE} ; do<br>
+ for type in ${KERNEL_IMAGETYPES} ; do<br>
+ if test "${typeformake}.gz" = "${type}"; then<br>
+ gzip -9c < "${typeformake}" > "${KERNEL_OUTPUT_DIR}/${type}"<br>
+ break;<br>
+ fi<br>
+ done<br>
+ done<br>
}<br>
<br>
do_compile_kernelmodules() {<br>
@@ -251,7 +315,9 @@ kernel_do_install() {<br>
#<br>
install -d ${D}/${KERNEL_IMAGEDEST}<br>
install -d ${D}/boot<br>
- install -m 0644 ${KERNEL_OUTPUT} ${D}/${KERNEL_IMAGEDEST}/${KERNEL_IMAGETYPE}-${KERNEL_VERSION}<br>
+ for type in ${KERNEL_IMAGETYPES} ; do<br>
+ install -m 0644 ${KERNEL_OUTPUT_DIR}/${type} ${D}/${KERNEL_IMAGEDEST}/${type}-${KERNEL_VERSION}<br>
+ done<br>
install -m 0644 System.map ${D}/boot/System.map-${KERNEL_VERSION}<br>
install -m 0644 .config ${D}/boot/config-${KERNEL_VERSION}<br>
install -m 0644 vmlinux ${D}/boot/vmlinux-${KERNEL_VERSION}<br>
@@ -365,12 +431,12 @@ EXPORT_FUNCTIONS do_compile do_install do_configure<br>
PACKAGES = "kernel kernel-base kernel-vmlinux kernel-image kernel-dev kernel-modules"<br>
FILES_${PN} = ""<br>
FILES_kernel-base = "/lib/modules/${KERNEL_VERSION}/modules.order /lib/modules/${KERNEL_VERSION}/modules.builtin"<br>
-FILES_kernel-image = "/boot/${KERNEL_IMAGETYPE}*"<br>
+FILES_kernel-image = ""<br>
FILES_kernel-dev = "/boot/System.map* /boot/Module.symvers* /boot/config* ${KERNEL_SRC_PATH} /lib/modules/${KERNEL_VERSION}/build"<br>
FILES_kernel-vmlinux = "/boot/vmlinux*"<br>
FILES_kernel-modules = ""<br>
RDEPENDS_kernel = "kernel-base"<br>
-# Allow machines to override this dependency if kernel image files are<br>
+# Allow machines to override this dependency if kernel image files are<br>
# not wanted in images as standard<br>
RDEPENDS_kernel-base ?= "kernel-image"<br>
PKG_kernel-image = "kernel-image-${@legitimize_package_name('${KERNEL_VERSION}')}"<br>
@@ -394,14 +460,6 @@ pkg_postinst_kernel-base () {<br>
fi<br>
}<br>
<br>
-pkg_postinst_kernel-image () {<br>
- update-alternatives --install /${KERNEL_IMAGEDEST}/${KERNEL_IMAGETYPE} ${KERNEL_IMAGETYPE} /${KERNEL_IMAGEDEST}/${KERNEL_IMAGETYPE}-${KERNEL_VERSION} ${KERNEL_PRIORITY} || true<br>
-}<br>
-<br>
-pkg_postrm_kernel-image () {<br>
- update-alternatives --remove ${KERNEL_IMAGETYPE} ${KERNEL_IMAGETYPE}-${KERNEL_VERSION} || true<br>
-}<br>
-<br>
PACKAGESPLITFUNCS_prepend = "split_kernel_packages "<br>
<br>
python split_kernel_packages () {<br>
@@ -422,13 +480,13 @@ do_kernel_link_vmlinux() {<br>
<br>
do_strip() {<br>
if [ -n "${KERNEL_IMAGE_STRIP_EXTRA_SECTIONS}" ]; then<br>
- if [ "${KERNEL_IMAGETYPE}" != "vmlinux" ]; then<br>
- bbwarn "image type will not be stripped (not supported): ${KERNEL_IMAGETYPE}"<br>
+ if ! (echo "${KERNEL_IMAGETYPES}" | grep -q "vmlinux"); then<br></blockquote><div><br></div><div>You had used the \bfitImage\b, but here you don't .. grep -w could work for them all.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
+ bbwarn "image type(s) will not be stripped (not supported): ${KERNEL_IMAGETYPES}"<br></blockquote><div><br></div><div><br></div><div>But on another note. Is it really right to say that none of the images will be stripped if you</div><div>find vmlinux anywhere in the image type list ?</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
return<br>
fi<br>
<br>
cd ${B}<br>
- headers=`"$CROSS_COMPILE"readelf -S ${KERNEL_OUTPUT} | \<br>
+ headers=`"$CROSS_COMPILE"readelf -S ${KERNEL_OUTPUT_DIR}/vmlinux | \<br>
grep "^ \{1,\}\[[0-9 ]\{1,\}\] [^ ]" | \<br>
sed "s/^ \{1,\}\[[0-9 ]\{1,\}\] //" | \<br>
gawk '{print $1}'`<br>
@@ -438,7 +496,7 @@ do_strip() {<br>
bbwarn "Section not found: $str";<br>
fi<br>
<br>
- "$CROSS_COMPILE"strip -s -R $str ${KERNEL_OUTPUT}<br>
+ "$CROSS_COMPILE"strip -s -R $str ${KERNEL_OUTPUT_DIR}/vmlinux<br>
}; done<br>
<br>
bbnote "KERNEL_IMAGE_STRIP_EXTRA_SECTIONS is set, stripping sections:" \<br>
@@ -457,20 +515,22 @@ do_sizecheck() {<br>
if [ -n "$invalid" ]; then<br>
die "Invalid KERNEL_IMAGE_MAXSIZE: ${KERNEL_IMAGE_MAXSIZE}, should be an integerx (The unit is Kbytes)"<br>
fi<br>
- size=`du -ks ${B}/${KERNEL_OUTPUT} | awk '{ print $1}'`<br>
- if [ $size -ge ${KERNEL_IMAGE_MAXSIZE} ]; then<br>
- die "This kernel (size=$size(K) > ${KERNEL_IMAGE_MAXSIZE}(K)) is too big for your device. Please reduce the size of the kernel by making more of it modular."<br>
- fi<br>
+ for type in ${KERNEL_IMAGETYPES} ; do<br>
+ size=`du -ks ${B}/${KERNEL_OUTPUT_DIR}/$type | awk '{print $1}'`<br>
+ if [ $size -ge ${KERNEL_IMAGE_MAXSIZE} ]; then<br>
+ die "This kernel $type (size=$size(K) > ${KERNEL_IMAGE_MAXSIZE}(K)) is too big for your device. Please reduce the size of the kernel by making more of it modular."<br></blockquote><div><br></div><div>Hmm. Again here. Multiple image types are being built. If one of them is too large for the device,</div><div>who's to say that that's the one that is going to be used ? Maybe this should be a warn, instead</div><div>of a die ?</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
+ fi<br>
+ done<br>
fi<br>
}<br>
do_sizecheck[dirs] = "${B}"<br>
<br>
addtask sizecheck before do_install after do_strip<br>
<br>
-KERNEL_IMAGE_BASE_NAME ?= "${KERNEL_IMAGETYPE}-${PKGE}-${PKGV}-${PKGR}-${MACHINE}-${DATETIME}"<br>
+KERNEL_IMAGE_BASE_NAME ?= "${PKGE}-${PKGV}-${PKGR}-${MACHINE}-${DATETIME}"<br>
# Don't include the DATETIME variable in the sstate package signatures<br>
KERNEL_IMAGE_BASE_NAME[vardepsexclude] = "DATETIME"<br>
-KERNEL_IMAGE_SYMLINK_NAME ?= "${KERNEL_IMAGETYPE}-${MACHINE}"<br>
+KERNEL_IMAGE_SYMLINK_NAME ?= "${MACHINE}"<br>
MODULE_IMAGE_BASE_NAME ?= "modules-${PKGE}-${PKGV}-${PKGR}-${MACHINE}-${DATETIME}"<br>
MODULE_IMAGE_BASE_NAME[vardepsexclude] = "DATETIME"<br>
MODULE_TARBALL_BASE_NAME ?= "${MODULE_IMAGE_BASE_NAME}.tgz"<br>
@@ -479,28 +539,37 @@ MODULE_TARBALL_SYMLINK_NAME ?= "modules-${MACHINE}.tgz"<br>
MODULE_TARBALL_DEPLOY ?= "1"<br>
<br>
kernel_do_deploy() {<br>
- install -m 0644 ${KERNEL_OUTPUT} ${DEPLOYDIR}/${KERNEL_IMAGE_BASE_NAME}.bin<br>
+ for type in ${KERNEL_IMAGETYPES} ; do<br>
+ base_name=${type}-${KERNEL_IMAGE_BASE_NAME}<br>
+ install -m 0644 ${KERNEL_OUTPUT_DIR}/${type} ${DEPLOYDIR}/${base_name}.bin<br>
+ done<br>
if [ ${MODULE_TARBALL_DEPLOY} = "1" ] && (grep -q -i -e '^CONFIG_MODULES=y$' .config); then<br>
mkdir -p ${D}/lib<br>
tar -cvzf ${DEPLOYDIR}/${MODULE_TARBALL_BASE_NAME} -C ${D} lib<br>
ln -sf ${MODULE_TARBALL_BASE_NAME} ${DEPLOYDIR}/${MODULE_TARBALL_SYMLINK_NAME}<br>
fi<br>
<br>
- ln -sf ${KERNEL_IMAGE_BASE_NAME}.bin ${DEPLOYDIR}/${KERNEL_IMAGE_SYMLINK_NAME}.bin<br>
- ln -sf ${KERNEL_IMAGE_BASE_NAME}.bin ${DEPLOYDIR}/${KERNEL_IMAGETYPE}<br>
+ for type in ${KERNEL_IMAGETYPES} ; do<br>
+ base_name=${type}-${KERNEL_IMAGE_BASE_NAME}<br>
+ symlink_name=${type}-${KERNEL_IMAGE_SYMLINK_NAME}<br>
+ ln -sf ${base_name}.bin ${DEPLOYDIR}/${symlink_name}.bin<br>
+ ln -sf ${base_name}.bin ${DEPLOYDIR}/${type}<br>
+ done<br>
<br>
cp ${COREBASE}/meta/files/deploydir_readme.txt ${DEPLOYDIR}/README_-_DO_NOT_DELETE_FILES_IN_THIS_DIRECTORY.txt<br>
<br>
cd ${B}<br>
# Update deploy directory<br>
- if [ -e "${KERNEL_OUTPUT}.initramfs" ]; then<br>
- echo "Copying deploy kernel-initramfs image and setting up links..."<br>
- initramfs_base_name=${INITRAMFS_BASE_NAME}<br>
- initramfs_symlink_name=${KERNEL_IMAGETYPE}-initramfs-${MACHINE}<br>
- install -m 0644 ${KERNEL_OUTPUT}.initramfs ${DEPLOYDIR}/${initramfs_base_name}.bin<br>
- cd ${DEPLOYDIR}<br>
- ln -sf ${initramfs_base_name}.bin ${initramfs_symlink_name}.bin<br>
- fi<br>
+ for type in ${KERNEL_IMAGETYPES} ; do<br>
+ if [ -e "${KERNEL_OUTPUT_DIR}/${type}.initramfs" ]; then<br>
+ echo "Copying deploy ${type} kernel-initramfs image and setting up links..."<br>
+ initramfs_base_name=${type}-${INITRAMFS_BASE_NAME}<br>
+ initramfs_symlink_name=${type}-initramfs-${MACHINE}<br>
+ install -m 0644 ${KERNEL_OUTPUT_DIR}/${type}.initramfs ${DEPLOYDIR}/${initramfs_base_name}.bin<br>
+ cd ${DEPLOYDIR}<br>
+ ln -sf ${initramfs_base_name}.bin ${initramfs_symlink_name}.bin<br>
+ fi<br>
+ done<br>
}<br>
do_deploy[cleandirs] = "${DEPLOYDIR}"<br>
do_deploy[dirs] = "${DEPLOYDIR} ${B}"<br>
diff --git a/meta/conf/documentation.conf b/meta/conf/documentation.conf<br>
index 00a69da..b3969b0 100644<br>
--- a/meta/conf/documentation.conf<br>
+++ b/meta/conf/documentation.conf<br>
@@ -246,6 +246,7 @@ KERNEL_CLASSES[doc] = "A list of classes defining kernel image types that kernel<br>
KERNEL_EXTRA_ARGS[doc] = "Specifies additional make command-line arguments the OpenEmbedded build system passes on when compiling the kernel."<br>
KERNEL_FEATURES[doc] = "Includes additional metadata from the Yocto Project kernel Git repository. The metadata you add through this variable includes config fragments and features descriptions."<br>
KERNEL_IMAGETYPE[doc] = "The type of kernel to build for a device, usually set by the machine configuration files and defaults to 'zImage'."<br>
+KERNEL_IMAGETYPES[doc] = "The list of types of kernel to build for a device, usually set by the machine configuration files and defaults to KERNEL_IMAGETYPE."<br>
KERNEL_MODULE_AUTOLOAD[doc] = "Lists kernel modules that need to be auto-loaded during boot"<br>
KERNEL_MODULE_PROBECONF[doc] = "Lists kernel modules for which the build system expects to find module_conf_* values that specify configuration for each of the modules"<br>
KERNEL_PATH[doc] = "The location of the kernel sources. This variable is set to the value of the STAGING_KERNEL_DIR within the module class (module.bbclass)."<br>
diff --git a/meta/conf/machine/qemumips.conf b/meta/conf/machine/qemumips.conf<br>
index fbf8137..67ce161 100644<br>
--- a/meta/conf/machine/qemumips.conf<br>
+++ b/meta/conf/machine/qemumips.conf<br>
@@ -6,7 +6,7 @@ require conf/machine/include/qemu.inc<br>
require conf/machine/include/tune-mips32r2.inc<br>
<br>
KERNEL_IMAGETYPE = "vmlinux"<br>
-KERNEL_ALT_IMAGETYPE = "vmlinux.bin"<br>
+KERNEL_IMAGETYPES = "vmlinux.bin"<br>
<br>
SERIAL_CONSOLES = "115200;ttyS0 115200;ttyS1"<br>
<br>
diff --git a/meta/conf/machine/qemumips64.conf b/meta/conf/machine/qemumips64.conf<br>
index 8c3f1fe..393212e 100644<br>
--- a/meta/conf/machine/qemumips64.conf<br>
+++ b/meta/conf/machine/qemumips64.conf<br>
@@ -6,7 +6,7 @@ require conf/machine/include/qemu.inc<br>
require conf/machine/include/tune-mips64.inc<br>
<br>
KERNEL_IMAGETYPE = "vmlinux"<br>
-KERNEL_ALT_IMAGETYPE = "vmlinux.bin"<br>
+KERNEL_IMAGETYPES = "vmlinux.bin"<br>
<br>
SERIAL_CONSOLES = "115200;ttyS0 115200;ttyS1"<br>
<br>
diff --git a/meta/recipes-kernel/linux/linux-dtb.inc b/meta/recipes-kernel/linux/linux-dtb.inc<br>
index 651a19e..74f5ef8 100644<br>
--- a/meta/recipes-kernel/linux/linux-dtb.inc<br>
+++ b/meta/recipes-kernel/linux/linux-dtb.inc<br>
@@ -34,9 +34,12 @@ do_install_append() {<br>
for DTB in ${KERNEL_DEVICETREE}; do<br>
DTB=`normalize_dtb "${DTB}"`<br>
DTB_BASE_NAME=`basename ${DTB} .dtb`<br>
- DTB_SYMLINK_NAME=`echo ${KERNEL_IMAGE_SYMLINK_NAME} | sed "s/${MACHINE}/${DTB_BASE_NAME}/g"`<br>
- DTB_PATH=`get_real_dtb_path_in_kernel "${DTB}"`<br>
- install -m 0644 ${DTB_PATH} ${D}/${KERNEL_IMAGEDEST}/devicetree-${DTB_SYMLINK_NAME}.dtb<br>
+ for type in ${KERNEL_IMAGETYPE_FOR_MAKE}; do<br>
+ symlink_name=${type}"-"${KERNEL_IMAGE_SYMLINK_NAME}<br></blockquote><div><br></div><div>If there are multiple image types being built, is this valid for them all ?</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
+ DTB_SYMLINK_NAME=`echo ${symlink_name} | sed "s/${MACHINE}/${DTB_BASE_NAME}/g"`<br>
+ DTB_PATH=`get_real_dtb_path_in_kernel "${DTB}"`<br>
+ install -m 0644 ${DTB_PATH} ${D}/${KERNEL_IMAGEDEST}/devicetree-${DTB_SYMLINK_NAME}.dtb<br>
+ done<br>
done<br>
}<br>
<br>
@@ -44,31 +47,39 @@ do_deploy_append() {<br>
for DTB in ${KERNEL_DEVICETREE}; do<br>
DTB=`normalize_dtb "${DTB}"`<br>
DTB_BASE_NAME=`basename ${DTB} .dtb`<br>
- DTB_NAME=`echo ${KERNEL_IMAGE_BASE_NAME} | sed "s/${MACHINE}/${DTB_BASE_NAME}/g"`<br>
- DTB_SYMLINK_NAME=`echo ${KERNEL_IMAGE_SYMLINK_NAME} | sed "s/${MACHINE}/${DTB_BASE_NAME}/g"`<br>
- DTB_PATH=`get_real_dtb_path_in_kernel "${DTB}"`<br>
- install -d ${DEPLOYDIR}<br>
- install -m 0644 ${DTB_PATH} ${DEPLOYDIR}/${DTB_NAME}.dtb<br>
- ln -sf ${DTB_NAME}.dtb ${DEPLOYDIR}/${DTB_SYMLINK_NAME}.dtb<br>
+ for type in ${KERNEL_IMAGETYPE_FOR_MAKE}; do<br>
+ base_name=${type}"-"${KERNEL_IMAGE_BASE_NAME}<br>
+ symlink_name=${type}"-"${KERNEL_IMAGE_SYMLINK_NAME}<br>
+ DTB_NAME=`echo ${base_name} | sed "s/${MACHINE}/${DTB_BASE_NAME}/g"`<br>
+ DTB_SYMLINK_NAME=`echo ${symlink_name} | sed "s/${MACHINE}/${DTB_BASE_NAME}/g"`<br>
+ DTB_PATH=`get_real_dtb_path_in_kernel "${DTB}"`<br>
+ install -d ${DEPLOYDIR}<br>
+ install -m 0644 ${DTB_PATH} ${DEPLOYDIR}/${DTB_NAME}.dtb<br>
+ ln -sf ${DTB_NAME}.dtb ${DEPLOYDIR}/${DTB_SYMLINK_NAME}.dtb<br>
+ done<br>
done<br>
}<br>
<br>
pkg_postinst_kernel-devicetree () {<br>
cd /${KERNEL_IMAGEDEST}<br>
- for DTB in ${KERNEL_DEVICETREE}<br>
- do<br>
- DTB_BASE_NAME=`basename ${DTB} | awk -F "." '{print $1}'`<br>
- DTB_SYMLINK_NAME=`echo ${KERNEL_IMAGE_SYMLINK_NAME} | sed "s/${MACHINE}/${DTB_BASE_NAME}/g"`<br>
- update-alternatives --install /${KERNEL_IMAGEDEST}/${DTB_BASE_NAME}.dtb ${DTB_BASE_NAME}.dtb /boot/devicetree-${DTB_SYMLINK_NAME}.dtb ${KERNEL_PRIORITY} || true<br>
+ for DTB in ${KERNEL_DEVICETREE}; do<br>
+ for type in ${KERNEL_IMAGETYPE_FOR_MAKE}; do<br>
+ symlink_name=${type}"-"${KERNEL_IMAGE_SYMLINK_NAME}<br>
+ DTB_BASE_NAME=`basename ${DTB} | awk -F "." '{print $1}'`<br>
+ DTB_SYMLINK_NAME=`echo ${symlink_name} | sed "s/${MACHINE}/${DTB_BASE_NAME}/g"`<br>
+ update-alternatives --install /${KERNEL_IMAGEDEST}/${DTB_BASE_NAME}.dtb ${DTB_BASE_NAME}.dtb /boot/devicetree-${DTB_SYMLINK_NAME}.dtb ${KERNEL_PRIORITY} || true<br>
+ done<br>
done<br>
}<br>
<br>
pkg_postrm_kernel-devicetree () {<br>
cd /${KERNEL_IMAGEDEST}<br>
- for DTB in ${KERNEL_DEVICETREE}<br>
- do<br>
- DTB_BASE_NAME=`basename ${DTB} | awk -F "." '{print $1}'`<br>
- DTB_SYMLINK_NAME=`echo ${KERNEL_IMAGE_SYMLINK_NAME} | sed "s/${MACHINE}/${DTB_BASE_NAME}/g"`<br>
- update-alternatives --remove ${DTB_BASE_NAME}.dtb /boot/devicetree-${DTB_SYMLINK_NAME}.dtb ${KERNEL_PRIORITY} || true<br>
+ for DTB in ${KERNEL_DEVICETREE}; do<br>
+ for type in ${KERNEL_IMAGETYPE_FOR_MAKE}; do<br>
+ symlink_name=${type}"-"${KERNEL_IMAGE_SYMLINK_NAME}<br>
+ DTB_BASE_NAME=`basename ${DTB} | awk -F "." '{print $1}'`<br>
+ DTB_SYMLINK_NAME=`echo ${symlink_name} | sed "s/${MACHINE}/${DTB_BASE_NAME}/g"`<br>
+ update-alternatives --remove ${DTB_BASE_NAME}.dtb /boot/devicetree-${DTB_SYMLINK_NAME}.dtb ${KERNEL_PRIORITY} || true<br>
+ done<br>
done<br>
}<br>
diff --git a/scripts/lib/bsp/substrate/target/arch/mips/conf/machine/machine.conf b/scripts/lib/bsp/substrate/target/arch/mips/conf/machine/machine.conf<br>
index b319d62..e4a6f30 100644<br>
--- a/scripts/lib/bsp/substrate/target/arch/mips/conf/machine/machine.conf<br>
+++ b/scripts/lib/bsp/substrate/target/arch/mips/conf/machine/machine.conf<br>
@@ -9,7 +9,7 @@ require conf/machine/include/tune-mips32.inc<br>
MACHINE_FEATURES = "screen keyboard pci usbhost ext2 ext3 serial"<br>
<br>
KERNEL_IMAGETYPE = "vmlinux"<br>
-KERNEL_ALT_IMAGETYPE = "vmlinux.bin"<br>
+KERNEL_IMAGETYPES = "vmlinux.bin"<br>
KERNEL_IMAGE_STRIP_EXTRA_SECTIONS = ".comment"<br>
<br>
{{ if kernel_choice == "custom": preferred_kernel = "linux-yocto-custom" }}<br>
diff --git a/scripts/lib/bsp/substrate/target/arch/mips64/conf/machine/machine.conf b/scripts/lib/bsp/substrate/target/arch/mips64/conf/machine/machine.conf<br>
index 3afc5e0..2c2d8af 100644<br>
--- a/scripts/lib/bsp/substrate/target/arch/mips64/conf/machine/machine.conf<br>
+++ b/scripts/lib/bsp/substrate/target/arch/mips64/conf/machine/machine.conf<br>
@@ -9,7 +9,7 @@ require conf/machine/include/tune-mips64.inc<br>
MACHINE_FEATURES = "pci ext2 ext3 serial"<br>
<br>
KERNEL_IMAGETYPE = "vmlinux"<br>
-KERNEL_ALT_IMAGETYPE = "vmlinux.bin"<br>
+KERNEL_IMAGETYPES = "vmlinux.bin"<br></blockquote><div><br></div><div><br></div><div>Again, why can't vmlinux just bein in KERNEL_IMAGETYPES ?</div><div><br></div><div>Bruce</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
KERNEL_IMAGE_STRIP_EXTRA_SECTIONS = ".comment"<br>
<br>
{{ if kernel_choice == "custom": preferred_kernel = "linux-yocto-custom" }}<br>
diff --git a/scripts/lib/bsp/substrate/target/arch/qemu/conf/machine/machine.conf b/scripts/lib/bsp/substrate/target/arch/qemu/conf/machine/machine.conf<br>
index 67e1cbd..7a0a4d3 100644<br>
--- a/scripts/lib/bsp/substrate/target/arch/qemu/conf/machine/machine.conf<br>
+++ b/scripts/lib/bsp/substrate/target/arch/qemu/conf/machine/machine.conf<br>
@@ -69,6 +69,6 @@ SERIAL_CONSOLE = "115200 ttyS0"<br>
<br>
{{ if qemuarch == "mips" or qemuarch == "mips64": }}<br>
KERNEL_IMAGETYPE = "vmlinux"<br>
-KERNEL_ALT_IMAGETYPE = "vmlinux.bin"<br>
+KERNEL_IMAGETYPES = "vmlinux.bin"<br>
SERIAL_CONSOLE = "115200 ttyS0"<br>
MACHINE_EXTRA_RRECOMMENDS = " kernel-modules"<br>
<span><font color="#888888">--<br>
1.9.1<br>
<br>
--<br>
_______________________________________________<br>
Openembedded-core mailing list<br>
<a href="mailto:Openembedded-core@lists.openembedded.org" target="_blank">Openembedded-core@lists.openembedded.org</a><br>
<a href="http://lists.openembedded.org/mailman/listinfo/openembedded-core" rel="noreferrer" target="_blank">http://lists.openembedded.org/mailman/listinfo/openembedded-core</a><br>
</font></span></blockquote></div><br><br clear="all"><div><br></div>-- <br><div>"Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end"</div>
</div></div>