* [PATCH v2 0/2] Yocto Bug #6945
@ 2015-07-21 7:23 zhe.he
2015-07-21 7:23 ` [PATCH v2 1/2] kernel: Define KERNEL_IMAGETYPE as a list zhe.he
` (2 more replies)
0 siblings, 3 replies; 17+ messages in thread
From: zhe.he @ 2015-07-21 7:23 UTC (permalink / raw)
To: openembedded-core; +Cc: bruce.ashfield
From: He Zhe <zhe.he@windriver.com>
- To support building packaging and installing multi types of kernel
images, such as zImage uImage, at one time define KERNEL_IMAGETYPE
as a list.
- Modify wherever reference KERNEL_IMAGETYPE accordingly.
- Pass mkimage in sysroot to kernel makefile by NATIVE_MKIMAGE to avoid
depending on build machine's, when KEEPUIMAGE is "yes".
- v2: update with the latest oe-core
He Zhe (2):
kernel: Define KERNEL_IMAGETYPE as a list
kernel: Pass sysroot mkimage to kernel makefile
meta/classes/image_types.bbclass | 6 +-
meta/classes/kernel-fitimage.bbclass | 22 +++---
meta/classes/kernel-grub.bbclass | 47 ++++++++----
meta/classes/kernel-uimage.bbclass | 31 +++++---
meta/classes/kernel.bbclass | 127 ++++++++++++++++++++++---------
meta/conf/documentation.conf | 2 +-
meta/lib/oeqa/controllers/masterimage.py | 2 +-
meta/lib/oeqa/targetcontrol.py | 2 +-
meta/recipes-kernel/linux/linux-dtb.inc | 15 ++--
scripts/test-remote-image | 2 +-
10 files changed, 175 insertions(+), 81 deletions(-)
--
2.1.0
^ permalink raw reply [flat|nested] 17+ messages in thread
* [PATCH v2 1/2] kernel: Define KERNEL_IMAGETYPE as a list
2015-07-21 7:23 [PATCH v2 0/2] Yocto Bug #6945 zhe.he
@ 2015-07-21 7:23 ` zhe.he
2015-07-21 14:53 ` Christopher Larson
2015-07-21 7:23 ` [PATCH v2 2/2] kernel: Pass sysroot mkimage to kernel makefile zhe.he
2015-07-23 7:48 ` [PATCH v2 0/2] Yocto Bug #6945 He Zhe
2 siblings, 1 reply; 17+ messages in thread
From: zhe.he @ 2015-07-21 7:23 UTC (permalink / raw)
To: openembedded-core; +Cc: bruce.ashfield
From: He Zhe <zhe.he@windriver.com>
To support building packaging and installing multi types of kernel
images, such as zImage uImage, at one time define KERNEL_IMAGETYPE
as a list.
Modify wherever reference KERNEL_IMAGETYPE accordingly.
Fixes [YOCTO #6945].
Signed-off-by: He Zhe <zhe.he@windriver.com>
---
meta/classes/image_types.bbclass | 6 +-
meta/classes/kernel-fitimage.bbclass | 22 +++---
meta/classes/kernel-grub.bbclass | 47 ++++++++----
meta/classes/kernel-uimage.bbclass | 31 +++++---
meta/classes/kernel.bbclass | 125 ++++++++++++++++++++++---------
meta/conf/documentation.conf | 2 +-
meta/lib/oeqa/controllers/masterimage.py | 2 +-
meta/lib/oeqa/targetcontrol.py | 2 +-
meta/recipes-kernel/linux/linux-dtb.inc | 15 ++--
scripts/test-remote-image | 2 +-
10 files changed, 174 insertions(+), 80 deletions(-)
diff --git a/meta/classes/image_types.bbclass b/meta/classes/image_types.bbclass
index 588a474..b04470f 100644
--- a/meta/classes/image_types.bbclass
+++ b/meta/classes/image_types.bbclass
@@ -4,6 +4,10 @@
# set this value to 2048 (2MiB alignment).
IMAGE_ROOTFS_ALIGNMENT ?= "1"
+python __anonymous () {
+ d.setVar('KERNEL_IMAGETYPE_0', d.getVar('KERNEL_IMAGETYPE', True).strip().split(' ')[0])
+}
+
def imagetypes_getdepends(d):
def adddep(depstr, deps):
for i in (depstr or "").split():
@@ -86,7 +90,7 @@ IMAGE_CMD_cpio () {
fi
}
-ELF_KERNEL ?= "${STAGING_DIR_HOST}/usr/src/kernel/${KERNEL_IMAGETYPE}"
+ELF_KERNEL ?= "${STAGING_DIR_HOST}/usr/src/kernel/${KERNEL_IMAGETYPE_0}"
ELF_APPEND ?= "ramdisk_size=32768 root=/dev/ram0 rw console="
IMAGE_CMD_elf () {
diff --git a/meta/classes/kernel-fitimage.bbclass b/meta/classes/kernel-fitimage.bbclass
index 2a56a54..7d097b4 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_IMAGETYPE', True) or ""
+ if 'fitImage' in kerneltype.strip().split(' '):
depends = d.getVar("DEPENDS", True)
depends = "%s u-boot-mkimage-native dtc-native" % depends
d.setVar("DEPENDS", depends)
@@ -10,7 +10,11 @@ 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 ""
+ list = typeformake.strip().split(' ')
+ if 'fitImage' in list:
+ list.remove('fitImage')
+ d.setVar('KERNEL_IMAGETYPE_FOR_MAKE', ' '.join(list))
image = d.getVar('INITRAMFS_IMAGE', True)
if image:
@@ -154,7 +158,7 @@ EOF
}
do_assemble_fitimage() {
- if test "x${KERNEL_IMAGETYPE}" = "xfitImage" ; then
+ if test "x${KERNEL_IMAGETYPE}" != "x${KERNEL_IMAGETYPE//fitImage/}" ; then
kernelcount=1
dtbcount=""
rm -f fit-image.its
@@ -217,14 +221,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_IMAGETYPE}" != "x${KERNEL_IMAGETYPE//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..ceb0fa1 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 [ -f "$D/boot/${KERNEL_IMAGETYPE}-${KERNEL_VERSION}" ]; then
+ if grep -q "/KERNEL_IMAGETYPE-KERNEL_VERSION \+root=" $grubcfg; then
+ if [ -f "$D/boot/KERNEL_IMAGETYPE-KERNEL_VERSION" ]; then
timestamp=`date +%s`
- kimage="$D/boot/${KERNEL_IMAGETYPE}-${KERNEL_VERSION}-$timestamp-back"
- sed -i "s:${KERNEL_IMAGETYPE}-${KERNEL_VERSION} \+root=:${kimage##*/} root=:" $grubcfg
- mv "$D/boot/${KERNEL_IMAGETYPE}-${KERNEL_VERSION}" "$kimage"
+ kimage="$D/boot/KERNEL_IMAGETYPE-KERNEL_VERSION-$timestamp-back"
+ sed -i "s:KERNEL_IMAGETYPE-KERNEL_VERSION \+root=:${kimage##*/} root=:" $grubcfg
+ mv "$D/boot/KERNEL_IMAGETYPE-KERNEL_VERSION" "$kimage"
fi
fi
fi
-}
+'''
-pkg_postinst_kernel-image_prepend () {
+ postinst = '''
get_new_grub_cfg() {
grubcfg="$1"
old_image="$2"
- title="Update ${KERNEL_IMAGETYPE}-${KERNEL_VERSION}-${PV}"
+ title="Update KERNEL_IMAGETYPE-KERNEL_VERSION-${PV}"
if [ "${grubcfg##*/}" = "grub.cfg" ]; then
rootfs=`grep " *linux \+[^ ]\+ \+root=" $grubcfg -m 1 | \
- sed "s#${old_image}#${old_image%/*}/${KERNEL_IMAGETYPE}-${KERNEL_VERSION}#"`
+ sed "s#${old_image}#${old_image%/*}/KERNEL_IMAGETYPE-KERNEL_VERSION#"`
echo "menuentry \"$title\" {"
echo " set root=(hd0,1)"
@@ -52,7 +55,7 @@ pkg_postinst_kernel-image_prepend () {
echo "}"
elif [ "${grubcfg##*/}" = "menu.list" ]; then
rootfs=`grep "kernel \+[^ ]\+ \+root=" $grubcfg -m 1 | \
- sed "s#${old_image}#${old_image%/*}/${KERNEL_IMAGETYPE}-${KERNEL_VERSION}#"`
+ sed "s#${old_image}#${old_image%/*}/KERNEL_IMAGETYPE-KERNEL_VERSION#"`
echo "default 0"
echo "timeout 30"
@@ -87,5 +90,19 @@ pkg_postinst_kernel-image_prepend () {
mv $grubcfgtmp $grubcfg
echo "Caution! Update kernel may affect kernel-module!"
fi
+'''
+
+ version = d.getVar('KERNEL_VERSION', True)
+ imagetype = d.getVar('KERNEL_IMAGETYPE', True)
+ imagetype = re.sub(r'\.gz$', '', imagetype)
+ imagetype = imagetype.split(' ')
+
+ for type in imagetype:
+ preinst_append = preinst.replace('KERNEL_IMAGETYPE', type)
+ preinst_append = preinst_append.replace('KERNEL_VERSION', version)
+ postinst_prepend = postinst.replace('KERNEL_IMAGETYPE', type)
+ postinst_prepend = postinst_prepend.replace('KERNEL_VERSION', version)
+ d.setVar('pkg_preinst_kernel-image-' + type + '_append', preinst_append)
+ d.setVar('pkg_postinst_kernel-image-' + type + '_prepend', postinst_prepend)
}
diff --git a/meta/classes/kernel-uimage.bbclass b/meta/classes/kernel-uimage.bbclass
index f73965b..b2d08e5 100644
--- a/meta/classes/kernel-uimage.bbclass
+++ b/meta/classes/kernel-uimage.bbclass
@@ -1,24 +1,33 @@
inherit kernel-uboot
python __anonymous () {
- kerneltype = d.getVar('KERNEL_IMAGETYPE', True)
- if kerneltype == 'uImage':
+ if "uImage" in (d.getVar('KERNEL_IMAGETYPE', True) or "").strip().split(' '):
depends = d.getVar("DEPENDS", True)
depends = "%s u-boot-mkimage-native" % depends
d.setVar("DEPENDS", depends)
- # Override KERNEL_IMAGETYPE_FOR_MAKE variable, which is internal
- # to kernel.bbclass . We override the variable here, since we need
- # to build uImage using the kernel build system if and only if
- # KEEPUIMAGE == yes. Otherwise, we pack compressed vmlinux into
- # the uImage .
- if d.getVar("KEEPUIMAGE", True) != 'yes':
- d.setVar("KERNEL_IMAGETYPE_FOR_MAKE", "zImage")
+ # Override KERNEL_IMAGETYPE_FOR_MAKE variable, which is internal
+ # to kernel.bbclass . We override the variable here, since we need
+ # to build uImage using the kernel build system if and only if
+ # KEEPUIMAGE == yes. Otherwise, we pack compressed vmlinux into
+ # the uImage .
+ if d.getVar("KEEPUIMAGE", True) != 'yes':
+ typeformake = d.getVar("KERNEL_IMAGETYPE_FOR_MAKE", True) or ""
+ list = typeformake.strip().split(' ')
+ if 'uImage' in list:
+ list.remove('uImage')
+ d.setVar('KERNEL_IMAGETYPE_FOR_MAKE', ' '.join(list))
}
do_uboot_mkimage() {
- if test "x${KERNEL_IMAGETYPE}" = "xuImage" ; then
- if test "x${KEEPUIMAGE}" != "xyes" ; then
+ if test "x${KEEPUIMAGE}" != "xyes" ; then
+ for type in ${KERNEL_IMAGETYPE} ; do
+ if test "x${type}" = "xuImage" ; then
+ found=1
+ fi
+ done
+
+ if test found = 1 ; then
uboot_prep_kimage
ENTRYPOINT=${UBOOT_ENTRYPOINT}
diff --git a/meta/classes/kernel.bbclass b/meta/classes/kernel.bbclass
index d06f6cf..86ed28f 100644
--- a/meta/classes/kernel.bbclass
+++ b/meta/classes/kernel.bbclass
@@ -19,9 +19,41 @@ INITRAMFS_IMAGE_BUNDLE ?= ""
python __anonymous () {
import re
- kerneltype = d.getVar('KERNEL_IMAGETYPE', True)
+ type = d.getVar('KERNEL_IMAGETYPE', True)
+ typeformake = re.sub(r'\.gz', '', type)
+ d.setVar('KERNEL_IMAGETYPE_FOR_MAKE', typeformake)
+ typeformake = typeformake.split(' ')
- d.setVar("KERNEL_IMAGETYPE_FOR_MAKE", re.sub(r'\.gz$', '', kerneltype))
+ for type in typeformake:
+ d.appendVar('PACKAGES', ' ' + 'kernel-image-' + type)
+
+ d.setVar('FILES_kernel-image-' + type, '/boot/' + type + '*')
+
+ d.appendVar('RDEPENDS_kernel-image', ' ' + 'kernel-image-' + type)
+
+ d.setVar('PKG_kernel-image-' + type, 'kernel-image-' + type + '-' + legitimize_package_name(d.getVar('KERNEL_VERSION', True)))
+
+ d.setVar('ALLOW_EMPTY_kernel-image-' + type, '1')
+
+ imagedest = d.getVar('KERNEL_IMAGEDEST', True)
+ version = d.getVar('KERNEL_VERSION', True)
+ priority = d.getVar('KERNEL_PRIORITY', True)
+ postinst = '#!/bin/sh\n' + 'update-alternatives --install /' + imagedest + '/' + type + ' ' + type + ' ' + '/' + imagedest + '/' + type + '-' + version + ' ' + priority + ' || true' + '\n'
+ d.setVar('pkg_postinst_kernel-image-' + type, postinst)
+
+ postrm = '#!/bin/sh\n' + 'update-alternatives --remove' + ' ' + type + ' ' + type + '-' + version + ' || true' + '\n'
+ d.setVar('pkg_postrm_kernel-image-' + type, postrm)
+
+ pkge = d.getVar('PKGE', True)
+ pkgv = d.getVar('PKGV', True)
+ pkgr = d.getVar('PKGR', True)
+ machine = d.getVar('MACHINE', True)
+ datetime = d.getVar('DATETIME', True)
+ d.appendVar('KERNEL_IMAGE_BASE_NAME', ' ' + type + '-' + pkge + '-' + pkgv + '-' + pkgr + '-' + machine + '-' + datetime)
+
+ d.setVarFlag('KERNEL_IMAGE_BASE_NAME', 'vardepsexclude', 'DATETIME')
+
+ d.appendVar('KERNEL_IMAGE_SYMLINK_NAME', ' ' + type + '-' + machine)
image = d.getVar('INITRAMFS_IMAGE', True)
if image:
@@ -89,7 +121,7 @@ KERNEL_PRIORITY ?= "${@int(d.getVar('PV',1).split('-')[0].split('+')[0].split('.
KERNEL_RELEASE ?= "${KERNEL_VERSION}"
# Where built kernel lies in the kernel tree
-KERNEL_OUTPUT ?= "arch/${ARCH}/boot/${KERNEL_IMAGETYPE}"
+KERNEL_OUTPUT ?= "arch/${ARCH}/boot"
KERNEL_IMAGEDEST = "boot"
#
@@ -115,8 +147,6 @@ KERNEL_EXTRA_ARGS ?= ""
# We don't want to override kernel Makefile variables from the environment
EXTRA_OEMAKE = ""
-KERNEL_ALT_IMAGETYPE ??= ""
-
# Define where the kernel headers are installed on the target as well as where
# they are staged.
KERNEL_SRC_PATH = "/usr/src/kernel"
@@ -168,17 +198,37 @@ do_bundle_initramfs () {
if [ ! -z "${INITRAMFS_IMAGE}" -a x"${INITRAMFS_IMAGE_BUNDLE}" = x1 ]; then
echo "Creating a kernel image with a bundled initramfs..."
copy_initramfs
- if [ -e ${KERNEL_OUTPUT} ] ; then
- mv -f ${KERNEL_OUTPUT} ${KERNEL_OUTPUT}.bak
- fi
+ # Backuping kernel image relies on its type(regular file or symbolic link)
+ declare -A linkpath realpath
+ for type in ${KERNEL_IMAGETYPE} ; do
+ if [ -h ${KERNEL_OUTPUT}/${type} ] ; then
+ linkpath[type]=`readlink -n ${KERNEL_OUTPUT}/${type}`
+ realpath[type]=`readlink -fn ${KERNEL_OUTPUT}/${type}`
+ mv -f ${realpath[type]} ${realpath[type]}.bak
+ elif [ -f ${KERNEL_OUTPUT}/${type} ]; then
+ mv -f ${KERNEL_OUTPUT}/${type} ${KERNEL_OUTPUT}/${type}.bak
+ fi
+ done
use_alternate_initrd=CONFIG_INITRAMFS_SOURCE=${B}/usr/${INITRAMFS_IMAGE}-${MACHINE}.cpio
kernel_do_compile
- mv -f ${KERNEL_OUTPUT} ${KERNEL_OUTPUT}.initramfs
- mv -f ${KERNEL_OUTPUT}.bak ${KERNEL_OUTPUT}
+ # Restoring kernel image
+ for type in ${KERNEL_IMAGETYPE} ; do
+ if [ -n "${realpath[type]}" ]; then
+ mv -f ${realpath[type]} ${realpath[type]}.initramfs
+ mv -f ${realpath[type]}.bak ${realpath[type]}
+ cd ${B}/$(dirname ${KERNEL_OUTPUT}/${type})
+ ln -sf ${linkpath[type]}.initramfs
+ else
+ mv -f ${KERNEL_OUTPUT}/${type} ${KERNEL_OUTPUT}/${type}.initramfs
+ mv -f ${KERNEL_OUTPUT}/${type}.bak ${KERNEL_OUTPUT}/${type}
+ fi
+ done
# Update install area
- echo "There is kernel image bundled with initramfs: ${B}/${KERNEL_OUTPUT}.initramfs"
- install -m 0644 ${B}/${KERNEL_OUTPUT}.initramfs ${D}/boot/${KERNEL_IMAGETYPE}-initramfs-${MACHINE}.bin
- echo "${B}/${KERNEL_OUTPUT}.initramfs"
+ for type in ${KERNEL_IMAGETYPE} ; do
+ echo "There is kernel image bundled with initramfs: ${B}/${KERNEL_OUTPUT}/${type}.initramfs"
+ install -m 0644 ${B}/${KERNEL_OUTPUT}/${type}.initramfs ${D}/boot/${type}-initramfs-${MACHINE}.bin
+ echo "${B}/${KERNEL_OUTPUT}/${type}.initramfs"
+ done
fi
}
@@ -203,10 +253,15 @@ kernel_do_compile() {
copy_initramfs
use_alternate_initrd=CONFIG_INITRAMFS_SOURCE=${B}/usr/${INITRAMFS_IMAGE}-${MACHINE}.cpio
fi
- oe_runmake ${KERNEL_IMAGETYPE_FOR_MAKE} ${KERNEL_ALT_IMAGETYPE} CC="${KERNEL_CC}" LD="${KERNEL_LD}" ${KERNEL_EXTRA_ARGS} $use_alternate_initrd
- if test "${KERNEL_IMAGETYPE_FOR_MAKE}.gz" = "${KERNEL_IMAGETYPE}"; then
- gzip -9c < "${KERNEL_IMAGETYPE_FOR_MAKE}" > "${KERNEL_OUTPUT}"
- fi
+ oe_runmake ${KERNEL_IMAGETYPE_FOR_MAKE} CC="${KERNEL_CC}" LD="${KERNEL_LD}" ${KERNEL_EXTRA_ARGS} $use_alternate_initrd
+ for typeformake in ${KERNEL_IMAGETYPE_FOR_MAKE} ; do
+ for type in ${KERNEL_IMAGETYPE} ; do
+ if test "${typeformake}.gz" = "${type}"; then
+ gzip -9c < "${typeformake}" > "${KERNEL_OUTPUT}/${type}"
+ break;
+ fi
+ done
+ done
}
do_compile_kernelmodules() {
@@ -239,7 +294,9 @@ kernel_do_install() {
#
install -d ${D}/${KERNEL_IMAGEDEST}
install -d ${D}/boot
- install -m 0644 ${KERNEL_OUTPUT} ${D}/${KERNEL_IMAGEDEST}/${KERNEL_IMAGETYPE}-${KERNEL_VERSION}
+ for type in ${KERNEL_IMAGETYPE} ; do
+ install -m 0644 ${KERNEL_OUTPUT}/${type} ${D}/${KERNEL_IMAGEDEST}/${type}-${KERNEL_VERSION}
+ done
install -m 0644 System.map ${D}/boot/System.map-${KERNEL_VERSION}
install -m 0644 .config ${D}/boot/config-${KERNEL_VERSION}
install -m 0644 vmlinux ${D}/boot/vmlinux-${KERNEL_VERSION}
@@ -350,12 +407,12 @@ EXPORT_FUNCTIONS do_compile do_install do_configure
PACKAGES = "kernel kernel-base kernel-vmlinux kernel-image kernel-dev kernel-modules"
FILES_${PN} = ""
FILES_kernel-base = "/lib/modules/${KERNEL_VERSION}/modules.order /lib/modules/${KERNEL_VERSION}/modules.builtin"
-FILES_kernel-image = "/boot/${KERNEL_IMAGETYPE}*"
+FILES_kernel-image = ""
FILES_kernel-dev = "/boot/System.map* /boot/Module.symvers* /boot/config* ${KERNEL_SRC_PATH} /lib/modules/${KERNEL_VERSION}/build"
FILES_kernel-vmlinux = "/boot/vmlinux*"
FILES_kernel-modules = ""
RDEPENDS_kernel = "kernel-base"
-# Allow machines to override this dependency if kernel image files are
+# Allow machines to override this dependency if kernel image files are
# not wanted in images as standard
RDEPENDS_kernel-base ?= "kernel-image"
PKG_kernel-image = "kernel-image-${@legitimize_package_name('${KERNEL_VERSION}')}"
@@ -378,14 +435,6 @@ pkg_postinst_kernel-base () {
fi
}
-pkg_postinst_kernel-image () {
- update-alternatives --install /${KERNEL_IMAGEDEST}/${KERNEL_IMAGETYPE} ${KERNEL_IMAGETYPE} /${KERNEL_IMAGEDEST}/${KERNEL_IMAGETYPE}-${KERNEL_VERSION} ${KERNEL_PRIORITY} || true
-}
-
-pkg_postrm_kernel-image () {
- update-alternatives --remove ${KERNEL_IMAGETYPE} ${KERNEL_IMAGETYPE}-${KERNEL_VERSION} || true
-}
-
PACKAGESPLITFUNCS_prepend = "split_kernel_packages "
python split_kernel_packages () {
@@ -439,10 +488,6 @@ do_sizecheck[dirs] = "${B}"
addtask sizecheck before do_install after do_strip
-KERNEL_IMAGE_BASE_NAME ?= "${KERNEL_IMAGETYPE}-${PKGE}-${PKGV}-${PKGR}-${MACHINE}-${DATETIME}"
-# Don't include the DATETIME variable in the sstate package signatures
-KERNEL_IMAGE_BASE_NAME[vardepsexclude] = "DATETIME"
-KERNEL_IMAGE_SYMLINK_NAME ?= "${KERNEL_IMAGETYPE}-${MACHINE}"
MODULE_IMAGE_BASE_NAME ?= "modules-${PKGE}-${PKGV}-${PKGR}-${MACHINE}-${DATETIME}"
MODULE_IMAGE_BASE_NAME[vardepsexclude] = "DATETIME"
MODULE_TARBALL_BASE_NAME ?= "${MODULE_IMAGE_BASE_NAME}.tgz"
@@ -451,15 +496,25 @@ MODULE_TARBALL_SYMLINK_NAME ?= "modules-${MACHINE}.tgz"
MODULE_TARBALL_DEPLOY ?= "1"
kernel_do_deploy() {
- install -m 0644 ${KERNEL_OUTPUT} ${DEPLOYDIR}/${KERNEL_IMAGE_BASE_NAME}.bin
+ for base_name in ${KERNEL_IMAGE_BASE_NAME} ; do
+ type=${base_name%%-*}
+ install -m 0644 ${KERNEL_OUTPUT}/${type} ${DEPLOYDIR}/${base_name}.bin
+ done
+
if [ ${MODULE_TARBALL_DEPLOY} = "1" ] && (grep -q -i -e '^CONFIG_MODULES=y$' .config); then
mkdir -p ${D}/lib
tar -cvzf ${DEPLOYDIR}/${MODULE_TARBALL_BASE_NAME} -C ${D} lib
ln -sf ${MODULE_TARBALL_BASE_NAME} ${DEPLOYDIR}/${MODULE_TARBALL_SYMLINK_NAME}
fi
- ln -sf ${KERNEL_IMAGE_BASE_NAME}.bin ${DEPLOYDIR}/${KERNEL_IMAGE_SYMLINK_NAME}.bin
- ln -sf ${KERNEL_IMAGE_BASE_NAME}.bin ${DEPLOYDIR}/${KERNEL_IMAGETYPE}
+ for base_name in ${KERNEL_IMAGE_BASE_NAME} ; do
+ type=${base_name%%-*}
+ machine=${base_name%-*}
+ machine=${machine##*-}
+ symlink_name=${type}"-"${machine}
+ ln -sf ${base_name}.bin ${DEPLOYDIR}/${symlink_name}.bin
+ ln -sf ${base_name}.bin ${DEPLOYDIR}/${type}
+ done
cp ${COREBASE}/meta/files/deploydir_readme.txt ${DEPLOYDIR}/README_-_DO_NOT_DELETE_FILES_IN_THIS_DIRECTORY.txt
diff --git a/meta/conf/documentation.conf b/meta/conf/documentation.conf
index 075ab6a..2dd109c 100644
--- a/meta/conf/documentation.conf
+++ b/meta/conf/documentation.conf
@@ -244,7 +244,7 @@ KBRANCH_DEFAULT[doc] = "Defines the Linux kernel source repository's default bra
KERNEL_CLASSES[doc] = "A list of classes defining kernel image types that kernel class should inherit."
KERNEL_EXTRA_ARGS[doc] = "Specifies additional make command-line arguments the OpenEmbedded build system passes on when compiling the kernel."
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."
-KERNEL_IMAGETYPE[doc] = "The type of kernel to build for a device, usually set by the machine configuration files and defaults to 'zImage'."
++KERNEL_IMAGETYPE[doc] = "The list of types of kernel to build for a device, usually set by the machine configuration files and defaults to 'zImage'."
KERNEL_MODULE_AUTOLOAD[doc] = "Lists kernel modules that need to be auto-loaded during boot"
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"
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)."
diff --git a/meta/lib/oeqa/controllers/masterimage.py b/meta/lib/oeqa/controllers/masterimage.py
index 522f9eb..bc811d4 100644
--- a/meta/lib/oeqa/controllers/masterimage.py
+++ b/meta/lib/oeqa/controllers/masterimage.py
@@ -52,7 +52,7 @@ class MasterImageHardwareTarget(oeqa.targetcontrol.BaseTarget):
# test rootfs + kernel
self.image_fstype = self.get_image_fstype(d)
self.rootfs = os.path.join(d.getVar("DEPLOY_DIR_IMAGE", True), d.getVar("IMAGE_LINK_NAME", True) + '.' + self.image_fstype)
- self.kernel = os.path.join(d.getVar("DEPLOY_DIR_IMAGE", True), d.getVar("KERNEL_IMAGETYPE", False) + '-' + d.getVar('MACHINE', False) + '.bin')
+ self.kernel = os.path.join(d.getVar("DEPLOY_DIR_IMAGE", True), (d.getVar("KERNEL_IMAGETYPE", False) or "").strip().split(' ')[0] + '-' + d.getVar('MACHINE', False) + '.bin')
if not os.path.isfile(self.rootfs):
# we could've checked that IMAGE_FSTYPES contains tar.gz but the config for running testimage might not be
# the same as the config with which the image was build, ie
diff --git a/meta/lib/oeqa/targetcontrol.py b/meta/lib/oeqa/targetcontrol.py
index 60b09b2..d9aa51d 100644
--- a/meta/lib/oeqa/targetcontrol.py
+++ b/meta/lib/oeqa/targetcontrol.py
@@ -121,7 +121,7 @@ class QemuTarget(BaseTarget):
self.qemulog = os.path.join(self.testdir, "qemu_boot_log.%s" % self.datetime)
self.origrootfs = os.path.join(d.getVar("DEPLOY_DIR_IMAGE", True), d.getVar("IMAGE_LINK_NAME", True) + '.' + self.image_fstype)
self.rootfs = os.path.join(self.testdir, d.getVar("IMAGE_LINK_NAME", True) + '-testimage.' + self.image_fstype)
- self.kernel = os.path.join(d.getVar("DEPLOY_DIR_IMAGE", True), d.getVar("KERNEL_IMAGETYPE", False) + '-' + d.getVar('MACHINE', False) + '.bin')
+ self.kernel = os.path.join(d.getVar("DEPLOY_DIR_IMAGE", True), (d.getVar("KERNEL_IMAGETYPE", False) or "").strip().split(' ')[0] + '-' + d.getVar('MACHINE', False) + '.bin')
if d.getVar("DISTRO", True) == "poky-tiny":
self.runner = QemuTinyRunner(machine=d.getVar("MACHINE", True),
diff --git a/meta/recipes-kernel/linux/linux-dtb.inc b/meta/recipes-kernel/linux/linux-dtb.inc
index ee3a5e1..ee4300e 100644
--- a/meta/recipes-kernel/linux/linux-dtb.inc
+++ b/meta/recipes-kernel/linux/linux-dtb.inc
@@ -25,7 +25,8 @@ do_install_append() {
DTB=`basename ${DTB} | sed 's,\.dts$,.dtb,g'`
fi
DTB_BASE_NAME=`basename ${DTB} .dtb`
- DTB_SYMLINK_NAME=`echo ${KERNEL_IMAGE_SYMLINK_NAME} | sed "s/${MACHINE}/${DTB_BASE_NAME}/g"`
+ IMAGE_SYMLINK_NAME=`echo ${KERNEL_IMAGE_SYMLINK_NAME} | awk -F " " '{print $1}'`
+ DTB_SYMLINK_NAME=`echo ${IMAGE_SYMLINK_NAME} | sed "s/${MACHINE}/${DTB_BASE_NAME}/g"`
DTB_PATH="${B}/arch/${ARCH}/boot/dts/${DTB}"
if [ ! -e "${DTB_PATH}" ]; then
DTB_PATH="${B}/arch/${ARCH}/boot/${DTB}"
@@ -43,8 +44,10 @@ do_deploy_append() {
DTB=`basename ${DTB} | sed 's,\.dts$,.dtb,g'`
fi
DTB_BASE_NAME=`basename ${DTB} .dtb`
- DTB_NAME=`echo ${KERNEL_IMAGE_BASE_NAME} | sed "s/${MACHINE}/${DTB_BASE_NAME}/g"`
- DTB_SYMLINK_NAME=`echo ${KERNEL_IMAGE_SYMLINK_NAME} | sed "s/${MACHINE}/${DTB_BASE_NAME}/g"`
+ IMAGE_BASE_NAME=`echo ${KERNEL_IMAGE_BASE_NAME} | awk -F " " '{print $1}'`
+ DTB_NAME=`echo ${IMAGE_BASE_NAME} | sed "s/${MACHINE}/${DTB_BASE_NAME}/g"`
+ IMAGE_SYMLINK_NAME=`echo ${KERNEL_IMAGE_SYMLINK_NAME} | awk -F " " '{print $1}'`
+ DTB_SYMLINK_NAME=`echo ${IMAGE_SYMLINK_NAME} | sed "s/${MACHINE}/${DTB_BASE_NAME}/g"`
DTB_PATH="${B}/arch/${ARCH}/boot/dts/${DTB}"
if [ ! -e "${DTB_PATH}" ]; then
DTB_PATH="${B}/arch/${ARCH}/boot/${DTB}"
@@ -63,7 +66,8 @@ pkg_postinst_kernel-devicetree () {
for DTB_FILE in ${KERNEL_DEVICETREE}
do
DTB_BASE_NAME=`basename ${DTB_FILE} | awk -F "." '{print $1}'`
- DTB_SYMLINK_NAME=`echo ${KERNEL_IMAGE_SYMLINK_NAME} | sed "s/${MACHINE}/${DTB_BASE_NAME}/g"`
+ IMAGE_SYMLINK_NAME=`echo ${KERNEL_IMAGE_SYMLINK_NAME} | awk -F " " '{print $1}'`
+ DTB_SYMLINK_NAME=`echo ${IMAGE_SYMLINK_NAME} | sed "s/${MACHINE}/${DTB_BASE_NAME}/g"`
update-alternatives --install /${KERNEL_IMAGEDEST}/${DTB_BASE_NAME}.dtb ${DTB_BASE_NAME}.dtb devicetree-${DTB_SYMLINK_NAME}.dtb ${KERNEL_PRIORITY} || true
done
}
@@ -73,7 +77,8 @@ pkg_postrm_kernel-devicetree () {
for DTB_FILE in ${KERNEL_DEVICETREE}
do
DTB_BASE_NAME=`basename ${DTB_FILE} | awk -F "." '{print $1}'`
- DTB_SYMLINK_NAME=`echo ${KERNEL_IMAGE_SYMLINK_NAME} | sed "s/${MACHINE}/${DTB_BASE_NAME}/g"`
+ IMAGE_SYMLINK_NAME=`echo ${KERNEL_IMAGE_SYMLINK_NAME} | awk -F " " '{print $1}'`
+ DTB_SYMLINK_NAME=`echo ${IMAGE_SYMLINK_NAME} | sed "s/${MACHINE}/${DTB_BASE_NAME}/g"`
update-alternatives --remove ${DTB_BASE_NAME}.dtb devicetree-${DTB_SYMLINK_NAME}.dtb ${KERNEL_PRIORITY} || true
done
}
diff --git a/scripts/test-remote-image b/scripts/test-remote-image
index f3a44eb..82bb3bc 100755
--- a/scripts/test-remote-image
+++ b/scripts/test-remote-image
@@ -139,7 +139,7 @@ class AutoTargetProfile(BaseTargetProfile):
def __init__(self, image_type):
super(AutoTargetProfile, self).__init__(image_type)
self.image_name = get_bb_var('IMAGE_LINK_NAME', target=image_type)
- self.kernel_type = get_bb_var('KERNEL_IMAGETYPE', target=image_type)
+ self.kernel_type = get_bb_var('KERNEL_IMAGETYPE', target=image_type).strip().split(' ')[0]
self.controller = self.get_controller()
self.set_kernel_file()
--
2.1.0
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH v2 2/2] kernel: Pass sysroot mkimage to kernel makefile
2015-07-21 7:23 [PATCH v2 0/2] Yocto Bug #6945 zhe.he
2015-07-21 7:23 ` [PATCH v2 1/2] kernel: Define KERNEL_IMAGETYPE as a list zhe.he
@ 2015-07-21 7:23 ` zhe.he
2015-07-23 15:55 ` Richard Purdie
2015-07-23 7:48 ` [PATCH v2 0/2] Yocto Bug #6945 He Zhe
2 siblings, 1 reply; 17+ messages in thread
From: zhe.he @ 2015-07-21 7:23 UTC (permalink / raw)
To: openembedded-core; +Cc: bruce.ashfield
From: He Zhe <zhe.he@windriver.com>
Pass mkimage in sysroot to kernel makefile by NATIVE_MKIMAGE to avoid
depending on build machine's when KEEPUIMAGE is "yes".
Fixes [YOCTO #6945].
Signed-off-by: He Zhe <zhe.he@windriver.com>
---
meta/classes/kernel.bbclass | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/meta/classes/kernel.bbclass b/meta/classes/kernel.bbclass
index 86ed28f..1d7fa48 100644
--- a/meta/classes/kernel.bbclass
+++ b/meta/classes/kernel.bbclass
@@ -141,7 +141,7 @@ UBOOT_ENTRYPOINT ?= "20008000"
UBOOT_LOADADDRESS ?= "${UBOOT_ENTRYPOINT}"
# Some Linux kernel configurations need additional parameters on the command line
-KERNEL_EXTRA_ARGS ?= ""
+KERNEL_EXTRA_ARGS ?= "NATIVE_MKIMAGE=${STAGING_BINDIR_NATIVE}/mkimage"
# For the kernel, we don't want the '-e MAKEFLAGS=' in EXTRA_OEMAKE.
# We don't want to override kernel Makefile variables from the environment
--
2.1.0
^ permalink raw reply related [flat|nested] 17+ messages in thread
* Re: [PATCH v2 1/2] kernel: Define KERNEL_IMAGETYPE as a list
2015-07-21 7:23 ` [PATCH v2 1/2] kernel: Define KERNEL_IMAGETYPE as a list zhe.he
@ 2015-07-21 14:53 ` Christopher Larson
2015-07-22 2:29 ` He Zhe
0 siblings, 1 reply; 17+ messages in thread
From: Christopher Larson @ 2015-07-21 14:53 UTC (permalink / raw)
To: zhe.he; +Cc: Bruce Ashfield, Patches and discussions about the oe-core layer
[-- Attachment #1: Type: text/plain, Size: 673 bytes --]
On Tue, Jul 21, 2015 at 12:23 AM, <zhe.he@windriver.com> wrote:
> From: He Zhe <zhe.he@windriver.com>
>
> To support building packaging and installing multi types of kernel
> images, such as zImage uImage, at one time define KERNEL_IMAGETYPE
> as a list.
> Modify wherever reference KERNEL_IMAGETYPE accordingly.
>
> Fixes [YOCTO #6945].
>
> Signed-off-by: He Zhe <zhe.he@windriver.com>
>
Question, why not add KERNEL_IMAGETYPES, and make KERNEL_IMAGETYPE equal to
your new KERNEL_IMAGETYPE_0?
--
Christopher Larson
clarson at kergoth dot com
Founder - BitBake, OpenEmbedded, OpenZaurus
Maintainer - Tslib
Senior Software Engineer, Mentor Graphics
[-- Attachment #2: Type: text/html, Size: 1180 bytes --]
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH v2 1/2] kernel: Define KERNEL_IMAGETYPE as a list
2015-07-21 14:53 ` Christopher Larson
@ 2015-07-22 2:29 ` He Zhe
2015-07-31 11:24 ` Richard Purdie
0 siblings, 1 reply; 17+ messages in thread
From: He Zhe @ 2015-07-22 2:29 UTC (permalink / raw)
To: Christopher Larson
Cc: Bruce Ashfield, Patches and discussions about the oe-core layer
On 07/21/2015 10:53 PM, Christopher Larson wrote:
>
> On Tue, Jul 21, 2015 at 12:23 AM, <zhe.he@windriver.com <mailto:zhe.he@windriver.com>>wrote:
>
> From: He Zhe <zhe.he@windriver.com <mailto:zhe.he@windriver.com>>
>
> To support building packaging and installing multi types of kernel
> images, such as zImage uImage, at one time define KERNEL_IMAGETYPE
> as a list.
> Modify wherever reference KERNEL_IMAGETYPE accordingly.
>
> Fixes [YOCTO #6945].
>
> Signed-off-by: He Zhe <zhe.he@windriver.com <mailto:zhe.he@windriver.com>>
>
>
> Question, why not add KERNEL_IMAGETYPES, and make KERNEL_IMAGETYPE equal to your new KERNEL_IMAGETYPE_0?
Adding a new KERNEL_IMAGETYPES will also work. But it should be better not to change the name of KERNEL_IMAGETYPE, so that those who have used it don't have to change their code.
Thank you for reviewing.
Zhe
> --
> Christopher Larson
> clarson at kergoth dot com
> Founder - BitBake, OpenEmbedded, OpenZaurus
> Maintainer - Tslib
> Senior Software Engineer, Mentor Graphics
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH v2 0/2] Yocto Bug #6945
2015-07-21 7:23 [PATCH v2 0/2] Yocto Bug #6945 zhe.he
2015-07-21 7:23 ` [PATCH v2 1/2] kernel: Define KERNEL_IMAGETYPE as a list zhe.he
2015-07-21 7:23 ` [PATCH v2 2/2] kernel: Pass sysroot mkimage to kernel makefile zhe.he
@ 2015-07-23 7:48 ` He Zhe
2015-07-27 2:51 ` He Zhe
2 siblings, 1 reply; 17+ messages in thread
From: He Zhe @ 2015-07-23 7:48 UTC (permalink / raw)
To: openembedded-core; +Cc: bruce.ashfield
Ping.
On 07/21/2015 03:23 PM, zhe.he@windriver.com wrote:
> From: He Zhe <zhe.he@windriver.com>
>
> - To support building packaging and installing multi types of kernel
> images, such as zImage uImage, at one time define KERNEL_IMAGETYPE
> as a list.
> - Modify wherever reference KERNEL_IMAGETYPE accordingly.
> - Pass mkimage in sysroot to kernel makefile by NATIVE_MKIMAGE to avoid
> depending on build machine's, when KEEPUIMAGE is "yes".
> - v2: update with the latest oe-core
>
> He Zhe (2):
> kernel: Define KERNEL_IMAGETYPE as a list
> kernel: Pass sysroot mkimage to kernel makefile
>
> meta/classes/image_types.bbclass | 6 +-
> meta/classes/kernel-fitimage.bbclass | 22 +++---
> meta/classes/kernel-grub.bbclass | 47 ++++++++----
> meta/classes/kernel-uimage.bbclass | 31 +++++---
> meta/classes/kernel.bbclass | 127 ++++++++++++++++++++++---------
> meta/conf/documentation.conf | 2 +-
> meta/lib/oeqa/controllers/masterimage.py | 2 +-
> meta/lib/oeqa/targetcontrol.py | 2 +-
> meta/recipes-kernel/linux/linux-dtb.inc | 15 ++--
> scripts/test-remote-image | 2 +-
> 10 files changed, 175 insertions(+), 81 deletions(-)
>
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH v2 2/2] kernel: Pass sysroot mkimage to kernel makefile
2015-07-21 7:23 ` [PATCH v2 2/2] kernel: Pass sysroot mkimage to kernel makefile zhe.he
@ 2015-07-23 15:55 ` Richard Purdie
2015-07-24 10:16 ` He Zhe
0 siblings, 1 reply; 17+ messages in thread
From: Richard Purdie @ 2015-07-23 15:55 UTC (permalink / raw)
To: zhe.he; +Cc: bruce.ashfield, openembedded-core
On Tue, 2015-07-21 at 15:23 +0800, zhe.he@windriver.com wrote:
> From: He Zhe <zhe.he@windriver.com>
>
> Pass mkimage in sysroot to kernel makefile by NATIVE_MKIMAGE to avoid
> depending on build machine's when KEEPUIMAGE is "yes".
>
> Fixes [YOCTO #6945].
>
> Signed-off-by: He Zhe <zhe.he@windriver.com>
> ---
> meta/classes/kernel.bbclass | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/meta/classes/kernel.bbclass b/meta/classes/kernel.bbclass
> index 86ed28f..1d7fa48 100644
> --- a/meta/classes/kernel.bbclass
> +++ b/meta/classes/kernel.bbclass
> @@ -141,7 +141,7 @@ UBOOT_ENTRYPOINT ?= "20008000"
> UBOOT_LOADADDRESS ?= "${UBOOT_ENTRYPOINT}"
>
> # Some Linux kernel configurations need additional parameters on the command line
> -KERNEL_EXTRA_ARGS ?= ""
> +KERNEL_EXTRA_ARGS ?= "NATIVE_MKIMAGE=${STAGING_BINDIR_NATIVE}/mkimage"
>
> # For the kernel, we don't want the '-e MAKEFLAGS=' in EXTRA_OEMAKE.
> # We don't want to override kernel Makefile variables from the environment
${STAGING_BINDIR_NATIVE} should be in PATH ahead of the usual system
paths. Why therefore is this necessary? Is something resetting PATH?
Cheers,
Richard
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH v2 2/2] kernel: Pass sysroot mkimage to kernel makefile
2015-07-23 15:55 ` Richard Purdie
@ 2015-07-24 10:16 ` He Zhe
0 siblings, 0 replies; 17+ messages in thread
From: He Zhe @ 2015-07-24 10:16 UTC (permalink / raw)
To: Richard Purdie; +Cc: bruce.ashfield, openembedded-core
On 07/23/2015 11:55 PM, Richard Purdie wrote:
> On Tue, 2015-07-21 at 15:23 +0800, zhe.he@windriver.com wrote:
>> From: He Zhe <zhe.he@windriver.com>
>>
>> Pass mkimage in sysroot to kernel makefile by NATIVE_MKIMAGE to avoid
>> depending on build machine's when KEEPUIMAGE is "yes".
>>
>> Fixes [YOCTO #6945].
>>
>> Signed-off-by: He Zhe <zhe.he@windriver.com>
>> ---
>> meta/classes/kernel.bbclass | 2 +-
>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/meta/classes/kernel.bbclass b/meta/classes/kernel.bbclass
>> index 86ed28f..1d7fa48 100644
>> --- a/meta/classes/kernel.bbclass
>> +++ b/meta/classes/kernel.bbclass
>> @@ -141,7 +141,7 @@ UBOOT_ENTRYPOINT ?= "20008000"
>> UBOOT_LOADADDRESS ?= "${UBOOT_ENTRYPOINT}"
>>
>> # Some Linux kernel configurations need additional parameters on the command line
>> -KERNEL_EXTRA_ARGS ?= ""
>> +KERNEL_EXTRA_ARGS ?= "NATIVE_MKIMAGE=${STAGING_BINDIR_NATIVE}/mkimage"
>>
>> # For the kernel, we don't want the '-e MAKEFLAGS=' in EXTRA_OEMAKE.
>> # We don't want to override kernel Makefile variables from the environment
> ${STAGING_BINDIR_NATIVE} should be in PATH ahead of the usual system
> paths. Why therefore is this necessary? Is something resetting PATH?
You are right. There's no need to modify KERNEL_EXTRA_ARGS. Actually I made a mistake when I verified mkimage... I'll delete this patch in next version. Thank you for reviewing.
BTW, what about [PATCH v2 1/2] ?
Zhe
> Cheers,
>
> Richard
>
>
>
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH v2 0/2] Yocto Bug #6945
2015-07-23 7:48 ` [PATCH v2 0/2] Yocto Bug #6945 He Zhe
@ 2015-07-27 2:51 ` He Zhe
2015-07-28 3:17 ` He Zhe
0 siblings, 1 reply; 17+ messages in thread
From: He Zhe @ 2015-07-27 2:51 UTC (permalink / raw)
To: openembedded-core; +Cc: bruce.ashfield
Ping.
On 07/23/2015 03:48 PM, He Zhe wrote:
> Ping.
>
> On 07/21/2015 03:23 PM, zhe.he@windriver.com wrote:
>> From: He Zhe <zhe.he@windriver.com>
>>
>> - To support building packaging and installing multi types of kernel
>> images, such as zImage uImage, at one time define KERNEL_IMAGETYPE
>> as a list.
>> - Modify wherever reference KERNEL_IMAGETYPE accordingly.
>> - Pass mkimage in sysroot to kernel makefile by NATIVE_MKIMAGE to avoid
>> depending on build machine's, when KEEPUIMAGE is "yes".
>> - v2: update with the latest oe-core
>>
>> He Zhe (2):
>> kernel: Define KERNEL_IMAGETYPE as a list
>> kernel: Pass sysroot mkimage to kernel makefile
>>
>> meta/classes/image_types.bbclass | 6 +-
>> meta/classes/kernel-fitimage.bbclass | 22 +++---
>> meta/classes/kernel-grub.bbclass | 47 ++++++++----
>> meta/classes/kernel-uimage.bbclass | 31 +++++---
>> meta/classes/kernel.bbclass | 127 ++++++++++++++++++++++---------
>> meta/conf/documentation.conf | 2 +-
>> meta/lib/oeqa/controllers/masterimage.py | 2 +-
>> meta/lib/oeqa/targetcontrol.py | 2 +-
>> meta/recipes-kernel/linux/linux-dtb.inc | 15 ++--
>> scripts/test-remote-image | 2 +-
>> 10 files changed, 175 insertions(+), 81 deletions(-)
>>
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH v2 0/2] Yocto Bug #6945
2015-07-27 2:51 ` He Zhe
@ 2015-07-28 3:17 ` He Zhe
2015-07-29 7:32 ` He Zhe
0 siblings, 1 reply; 17+ messages in thread
From: He Zhe @ 2015-07-28 3:17 UTC (permalink / raw)
To: openembedded-core; +Cc: bruce.ashfield
Ping.
On 07/27/2015 10:51 AM, He Zhe wrote:
> Ping.
>
> On 07/23/2015 03:48 PM, He Zhe wrote:
>> Ping.
>>
>> On 07/21/2015 03:23 PM, zhe.he@windriver.com wrote:
>>> From: He Zhe <zhe.he@windriver.com>
>>>
>>> - To support building packaging and installing multi types of kernel
>>> images, such as zImage uImage, at one time define KERNEL_IMAGETYPE
>>> as a list.
>>> - Modify wherever reference KERNEL_IMAGETYPE accordingly.
>>> - Pass mkimage in sysroot to kernel makefile by NATIVE_MKIMAGE to avoid
>>> depending on build machine's, when KEEPUIMAGE is "yes".
>>> - v2: update with the latest oe-core
>>>
>>> He Zhe (2):
>>> kernel: Define KERNEL_IMAGETYPE as a list
>>> kernel: Pass sysroot mkimage to kernel makefile
>>>
>>> meta/classes/image_types.bbclass | 6 +-
>>> meta/classes/kernel-fitimage.bbclass | 22 +++---
>>> meta/classes/kernel-grub.bbclass | 47 ++++++++----
>>> meta/classes/kernel-uimage.bbclass | 31 +++++---
>>> meta/classes/kernel.bbclass | 127 ++++++++++++++++++++++---------
>>> meta/conf/documentation.conf | 2 +-
>>> meta/lib/oeqa/controllers/masterimage.py | 2 +-
>>> meta/lib/oeqa/targetcontrol.py | 2 +-
>>> meta/recipes-kernel/linux/linux-dtb.inc | 15 ++--
>>> scripts/test-remote-image | 2 +-
>>> 10 files changed, 175 insertions(+), 81 deletions(-)
>>>
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH v2 0/2] Yocto Bug #6945
2015-07-28 3:17 ` He Zhe
@ 2015-07-29 7:32 ` He Zhe
2015-07-29 13:23 ` Bruce Ashfield
0 siblings, 1 reply; 17+ messages in thread
From: He Zhe @ 2015-07-29 7:32 UTC (permalink / raw)
To: openembedded-core; +Cc: bruce.ashfield
Ping.
Is there any comments on this?
Zhe
On 07/28/2015 11:17 AM, He Zhe wrote:
> Ping.
>
> On 07/27/2015 10:51 AM, He Zhe wrote:
>> Ping.
>>
>> On 07/23/2015 03:48 PM, He Zhe wrote:
>>> Ping.
>>>
>>> On 07/21/2015 03:23 PM, zhe.he@windriver.com wrote:
>>>> From: He Zhe <zhe.he@windriver.com>
>>>>
>>>> - To support building packaging and installing multi types of kernel
>>>> images, such as zImage uImage, at one time define KERNEL_IMAGETYPE
>>>> as a list.
>>>> - Modify wherever reference KERNEL_IMAGETYPE accordingly.
>>>> - Pass mkimage in sysroot to kernel makefile by NATIVE_MKIMAGE to avoid
>>>> depending on build machine's, when KEEPUIMAGE is "yes".
>>>> - v2: update with the latest oe-core
>>>>
>>>> He Zhe (2):
>>>> kernel: Define KERNEL_IMAGETYPE as a list
>>>> kernel: Pass sysroot mkimage to kernel makefile
>>>>
>>>> meta/classes/image_types.bbclass | 6 +-
>>>> meta/classes/kernel-fitimage.bbclass | 22 +++---
>>>> meta/classes/kernel-grub.bbclass | 47 ++++++++----
>>>> meta/classes/kernel-uimage.bbclass | 31 +++++---
>>>> meta/classes/kernel.bbclass | 127 ++++++++++++++++++++++---------
>>>> meta/conf/documentation.conf | 2 +-
>>>> meta/lib/oeqa/controllers/masterimage.py | 2 +-
>>>> meta/lib/oeqa/targetcontrol.py | 2 +-
>>>> meta/recipes-kernel/linux/linux-dtb.inc | 15 ++--
>>>> scripts/test-remote-image | 2 +-
>>>> 10 files changed, 175 insertions(+), 81 deletions(-)
>>>>
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH v2 0/2] Yocto Bug #6945
2015-07-29 7:32 ` He Zhe
@ 2015-07-29 13:23 ` Bruce Ashfield
2015-07-31 8:40 ` He Zhe
0 siblings, 1 reply; 17+ messages in thread
From: Bruce Ashfield @ 2015-07-29 13:23 UTC (permalink / raw)
To: He Zhe, openembedded-core
On 15-07-29 03:32 AM, He Zhe wrote:
> Ping.
>
> Is there any comments on this?
I'm obviously ok with the patch in its current RFC status. It works
and I've tested it in my tree (hence why I've been quiet on this
one).
If it meets the style for merging into core, and that it doesn't
break other layers we can't see .. I was hoping to hear from others.
Bruce
>
> Zhe
>
> On 07/28/2015 11:17 AM, He Zhe wrote:
>> Ping.
>>
>> On 07/27/2015 10:51 AM, He Zhe wrote:
>>> Ping.
>>>
>>> On 07/23/2015 03:48 PM, He Zhe wrote:
>>>> Ping.
>>>>
>>>> On 07/21/2015 03:23 PM, zhe.he@windriver.com wrote:
>>>>> From: He Zhe <zhe.he@windriver.com>
>>>>>
>>>>> - To support building packaging and installing multi types of kernel
>>>>> images, such as zImage uImage, at one time define KERNEL_IMAGETYPE
>>>>> as a list.
>>>>> - Modify wherever reference KERNEL_IMAGETYPE accordingly.
>>>>> - Pass mkimage in sysroot to kernel makefile by NATIVE_MKIMAGE to avoid
>>>>> depending on build machine's, when KEEPUIMAGE is "yes".
>>>>> - v2: update with the latest oe-core
>>>>>
>>>>> He Zhe (2):
>>>>> kernel: Define KERNEL_IMAGETYPE as a list
>>>>> kernel: Pass sysroot mkimage to kernel makefile
>>>>>
>>>>> meta/classes/image_types.bbclass | 6 +-
>>>>> meta/classes/kernel-fitimage.bbclass | 22 +++---
>>>>> meta/classes/kernel-grub.bbclass | 47 ++++++++----
>>>>> meta/classes/kernel-uimage.bbclass | 31 +++++---
>>>>> meta/classes/kernel.bbclass | 127 ++++++++++++++++++++++---------
>>>>> meta/conf/documentation.conf | 2 +-
>>>>> meta/lib/oeqa/controllers/masterimage.py | 2 +-
>>>>> meta/lib/oeqa/targetcontrol.py | 2 +-
>>>>> meta/recipes-kernel/linux/linux-dtb.inc | 15 ++--
>>>>> scripts/test-remote-image | 2 +-
>>>>> 10 files changed, 175 insertions(+), 81 deletions(-)
>>>>>
>
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH v2 0/2] Yocto Bug #6945
2015-07-29 13:23 ` Bruce Ashfield
@ 2015-07-31 8:40 ` He Zhe
0 siblings, 0 replies; 17+ messages in thread
From: He Zhe @ 2015-07-31 8:40 UTC (permalink / raw)
To: Bruce Ashfield, openembedded-core
Ping.
On 07/29/2015 09:23 PM, Bruce Ashfield wrote:
> On 15-07-29 03:32 AM, He Zhe wrote:
>> Ping.
>>
>> Is there any comments on this?
>
> I'm obviously ok with the patch in its current RFC status. It works
> and I've tested it in my tree (hence why I've been quiet on this
> one).
>
> If it meets the style for merging into core, and that it doesn't
> break other layers we can't see .. I was hoping to hear from others.
>
> Bruce
>
>>
>> Zhe
>>
>> On 07/28/2015 11:17 AM, He Zhe wrote:
>>> Ping.
>>>
>>> On 07/27/2015 10:51 AM, He Zhe wrote:
>>>> Ping.
>>>>
>>>> On 07/23/2015 03:48 PM, He Zhe wrote:
>>>>> Ping.
>>>>>
>>>>> On 07/21/2015 03:23 PM, zhe.he@windriver.com wrote:
>>>>>> From: He Zhe <zhe.he@windriver.com>
>>>>>>
>>>>>> - To support building packaging and installing multi types of kernel
>>>>>> images, such as zImage uImage, at one time define KERNEL_IMAGETYPE
>>>>>> as a list.
>>>>>> - Modify wherever reference KERNEL_IMAGETYPE accordingly.
>>>>>> - Pass mkimage in sysroot to kernel makefile by NATIVE_MKIMAGE to avoid
>>>>>> depending on build machine's, when KEEPUIMAGE is "yes".
>>>>>> - v2: update with the latest oe-core
>>>>>>
>>>>>> He Zhe (2):
>>>>>> kernel: Define KERNEL_IMAGETYPE as a list
>>>>>> kernel: Pass sysroot mkimage to kernel makefile
>>>>>>
>>>>>> meta/classes/image_types.bbclass | 6 +-
>>>>>> meta/classes/kernel-fitimage.bbclass | 22 +++---
>>>>>> meta/classes/kernel-grub.bbclass | 47 ++++++++----
>>>>>> meta/classes/kernel-uimage.bbclass | 31 +++++---
>>>>>> meta/classes/kernel.bbclass | 127 ++++++++++++++++++++++---------
>>>>>> meta/conf/documentation.conf | 2 +-
>>>>>> meta/lib/oeqa/controllers/masterimage.py | 2 +-
>>>>>> meta/lib/oeqa/targetcontrol.py | 2 +-
>>>>>> meta/recipes-kernel/linux/linux-dtb.inc | 15 ++--
>>>>>> scripts/test-remote-image | 2 +-
>>>>>> 10 files changed, 175 insertions(+), 81 deletions(-)
>>>>>>
>>
>
>
>
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH v2 1/2] kernel: Define KERNEL_IMAGETYPE as a list
2015-07-22 2:29 ` He Zhe
@ 2015-07-31 11:24 ` Richard Purdie
2015-07-31 11:45 ` He Zhe
0 siblings, 1 reply; 17+ messages in thread
From: Richard Purdie @ 2015-07-31 11:24 UTC (permalink / raw)
To: He Zhe
Cc: Bruce Ashfield, Christopher Larson,
Patches and discussions about the oe-core layer
On Wed, 2015-07-22 at 10:29 +0800, He Zhe wrote:
> On 07/21/2015 10:53 PM, Christopher Larson wrote:
> >
> > On Tue, Jul 21, 2015 at 12:23 AM, <zhe.he@windriver.com <mailto:zhe.he@windriver.com>>wrote:
> >
> > From: He Zhe <zhe.he@windriver.com <mailto:zhe.he@windriver.com>>
> >
> > To support building packaging and installing multi types of kernel
> > images, such as zImage uImage, at one time define KERNEL_IMAGETYPE
> > as a list.
> > Modify wherever reference KERNEL_IMAGETYPE accordingly.
> >
> > Fixes [YOCTO #6945].
> >
> > Signed-off-by: He Zhe <zhe.he@windriver.com <mailto:zhe.he@windriver.com>>
> >
> >
> > Question, why not add KERNEL_IMAGETYPES, and make KERNEL_IMAGETYPE equal to your new KERNEL_IMAGETYPE_0?
>
> Adding a new KERNEL_IMAGETYPES will also work. But it should be better
> not to change the name of KERNEL_IMAGETYPE, so that those who have
> used it don't have to change their code.
>
> Thank you for reviewing.
I have to agree with Chris here, keeping KERNEL_IMAGETYPE as used today
and equivalent to KERNEL_IMAGETYPE_0 and adding KERNEL_IMAGETYPES does
seem like a cleaner way to implement this.
Cheers,
Richard
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH v2 1/2] kernel: Define KERNEL_IMAGETYPE as a list
2015-07-31 11:24 ` Richard Purdie
@ 2015-07-31 11:45 ` He Zhe
2015-07-31 14:39 ` Richard Purdie
0 siblings, 1 reply; 17+ messages in thread
From: He Zhe @ 2015-07-31 11:45 UTC (permalink / raw)
To: Richard Purdie
Cc: Bruce Ashfield, Christopher Larson,
Patches and discussions about the oe-core layer
On 07/31/2015 07:24 PM, Richard Purdie wrote:
> On Wed, 2015-07-22 at 10:29 +0800, He Zhe wrote:
>> On 07/21/2015 10:53 PM, Christopher Larson wrote:
>>> On Tue, Jul 21, 2015 at 12:23 AM, <zhe.he@windriver.com <mailto:zhe.he@windriver.com>>wrote:
>>>
>>> From: He Zhe <zhe.he@windriver.com <mailto:zhe.he@windriver.com>>
>>>
>>> To support building packaging and installing multi types of kernel
>>> images, such as zImage uImage, at one time define KERNEL_IMAGETYPE
>>> as a list.
>>> Modify wherever reference KERNEL_IMAGETYPE accordingly.
>>>
>>> Fixes [YOCTO #6945].
>>>
>>> Signed-off-by: He Zhe <zhe.he@windriver.com <mailto:zhe.he@windriver.com>>
>>>
>>>
>>> Question, why not add KERNEL_IMAGETYPES, and make KERNEL_IMAGETYPE equal to your new KERNEL_IMAGETYPE_0?
>> Adding a new KERNEL_IMAGETYPES will also work. But it should be better
>> not to change the name of KERNEL_IMAGETYPE, so that those who have
>> used it don't have to change their code.
>>
>> Thank you for reviewing.
> I have to agree with Chris here, keeping KERNEL_IMAGETYPE as used today
> and equivalent to KERNEL_IMAGETYPE_0 and adding KERNEL_IMAGETYPES does
> seem like a cleaner way to implement this.
But it might mean we are going to check both KERNEL_IMAGETYPE and KERNEL_IMAGETYPES
to generate final image type list. Is that OK?
Thanks,
Zhe
> Cheers,
>
> Richard
>
>
>
>
>
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH v2 1/2] kernel: Define KERNEL_IMAGETYPE as a list
2015-07-31 11:45 ` He Zhe
@ 2015-07-31 14:39 ` Richard Purdie
0 siblings, 0 replies; 17+ messages in thread
From: Richard Purdie @ 2015-07-31 14:39 UTC (permalink / raw)
To: He Zhe
Cc: Bruce Ashfield, Christopher Larson,
Patches and discussions about the oe-core layer
On Fri, 2015-07-31 at 19:45 +0800, He Zhe wrote:
> On 07/31/2015 07:24 PM, Richard Purdie wrote:
> > On Wed, 2015-07-22 at 10:29 +0800, He Zhe wrote:
> >> On 07/21/2015 10:53 PM, Christopher Larson wrote:
> >>> On Tue, Jul 21, 2015 at 12:23 AM, <zhe.he@windriver.com <mailto:zhe.he@windriver.com>>wrote:
> >>>
> >>> From: He Zhe <zhe.he@windriver.com <mailto:zhe.he@windriver.com>>
> >>>
> >>> To support building packaging and installing multi types of kernel
> >>> images, such as zImage uImage, at one time define KERNEL_IMAGETYPE
> >>> as a list.
> >>> Modify wherever reference KERNEL_IMAGETYPE accordingly.
> >>>
> >>> Fixes [YOCTO #6945].
> >>>
> >>> Signed-off-by: He Zhe <zhe.he@windriver.com <mailto:zhe.he@windriver.com>>
> >>>
> >>>
> >>> Question, why not add KERNEL_IMAGETYPES, and make KERNEL_IMAGETYPE equal to your new KERNEL_IMAGETYPE_0?
> >> Adding a new KERNEL_IMAGETYPES will also work. But it should be better
> >> not to change the name of KERNEL_IMAGETYPE, so that those who have
> >> used it don't have to change their code.
> >>
> >> Thank you for reviewing.
> > I have to agree with Chris here, keeping KERNEL_IMAGETYPE as used today
> > and equivalent to KERNEL_IMAGETYPE_0 and adding KERNEL_IMAGETYPES does
> > seem like a cleaner way to implement this.
>
> But it might mean we are going to check both KERNEL_IMAGETYPE and KERNEL_IMAGETYPES
> to generate final image type list. Is that OK?
Well, in some places you will use one and in some places you'll use the
other, that is unavoidable.
I much prefer "KERNEL_IMAGETYPE and KERNEL_IMAGETYPES" to
"KERNEL_IMAGETYPE_0 and KERNEL_IMAGETYPE" as variable names though.
Cheers,
Richard
^ permalink raw reply [flat|nested] 17+ messages in thread
* [PATCH v2 0/2] Yocto Bug #6945
@ 2016-02-19 9:56 zhe.he
0 siblings, 0 replies; 17+ messages in thread
From: zhe.he @ 2016-02-19 9:56 UTC (permalink / raw)
To: openembedded-core
From: He Zhe <zhe.he@windriver.com>
v1 to v2:
- Change KERNEL_OUTPUT to KERNEL_OUTPUT_DIR and update comments
- Update related doc files
- Replace all KERNEL_ALT_IMAGETYPEs with KERNEL_IMAGETYPES
- Link built vmlinuz to boot directory for reference
The following changes since commit ed20c6ca446a8788615e497bd4452195537deab5:
epiphany: Add libxml2-native to DEPENDS (2016-02-19 01:01:26 +0000)
are available in the git repository at:
git://git.yoctoproject.org/poky-contrib zhe/yocto-bug-6945
http://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/commit/?h=zhe/yocto-bug-6945
for you to fetch changes up to 5ddb8ef58e1cd3c4b95de6439894510641f2e70a:
kernel: Make symbol link to vmlinuz in boot directory (2016-02-19 04:23:28 -0500)
----------------------------------------------------------------
He Zhe (2):
kernel: Add KERNEL_IMAGETYPES to build multi types kernel at one time
kernel: Make symbol link to vmlinuz in boot directory
documentation/ref-manual/ref-tasks.xml | 8 +-
documentation/ref-manual/ref-variables.xml | 10 +-
meta-yocto-bsp/conf/machine/edgerouter.conf | 2 +-
meta/classes/kernel-fitimage.bbclass | 20 ++-
meta/classes/kernel-grub.bbclass | 44 +++--
meta/classes/kernel-uimage.bbclass | 22 +--
meta/classes/kernel.bbclass | 184 ++++++++++++++-------
meta/conf/documentation.conf | 3 +-
meta/conf/machine/qemumips.conf | 2 +-
meta/conf/machine/qemumips64.conf | 2 +-
meta/recipes-kernel/linux/linux-dtb.inc | 49 +++---
meta/recipes-kernel/linux/linux-yocto.inc | 2 +-
.../target/arch/mips/conf/machine/machine.conf | 2 +-
.../target/arch/mips64/conf/machine/machine.conf | 2 +-
.../target/arch/qemu/conf/machine/machine.conf | 2 +-
15 files changed, 228 insertions(+), 126 deletions(-)
--
1.9.1
^ permalink raw reply [flat|nested] 17+ messages in thread
end of thread, other threads:[~2016-02-19 9:57 UTC | newest]
Thread overview: 17+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-07-21 7:23 [PATCH v2 0/2] Yocto Bug #6945 zhe.he
2015-07-21 7:23 ` [PATCH v2 1/2] kernel: Define KERNEL_IMAGETYPE as a list zhe.he
2015-07-21 14:53 ` Christopher Larson
2015-07-22 2:29 ` He Zhe
2015-07-31 11:24 ` Richard Purdie
2015-07-31 11:45 ` He Zhe
2015-07-31 14:39 ` Richard Purdie
2015-07-21 7:23 ` [PATCH v2 2/2] kernel: Pass sysroot mkimage to kernel makefile zhe.he
2015-07-23 15:55 ` Richard Purdie
2015-07-24 10:16 ` He Zhe
2015-07-23 7:48 ` [PATCH v2 0/2] Yocto Bug #6945 He Zhe
2015-07-27 2:51 ` He Zhe
2015-07-28 3:17 ` He Zhe
2015-07-29 7:32 ` He Zhe
2015-07-29 13:23 ` Bruce Ashfield
2015-07-31 8:40 ` He Zhe
-- strict thread matches above, loose matches on Subject: below --
2016-02-19 9:56 zhe.he
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.