* [PATCH V1 2/3] image.bbclass: removes bundle_initramfs related code
2015-12-30 21:19 [PATCH V1 1/3] kernel.bbclass: do not install initramfs bundled kernel image Ming Liu
@ 2015-12-30 21:19 ` Ming Liu
2015-12-30 21:20 ` [PATCH V1 3/3] kernel-initramfs: new recipe, creates initramfs bundled kernel packaging Ming Liu
2016-01-04 14:58 ` [PATCH V1 1/3] kernel.bbclass: do not install initramfs bundled kernel image Bruce Ashfield
2 siblings, 0 replies; 5+ messages in thread
From: Ming Liu @ 2015-12-30 21:19 UTC (permalink / raw)
To: openembedded-core; +Cc: bruce.ashfield, yue.tao, Ming Liu
From: Ming Liu <peter.x.liu@external.atlascopco.com>
The original purpose of these code is to repackage initramfs bundled kernel
into rootfs by making image.bbclass build depend on bundle_initramfs of
virtual/kernel. But this is not going to succeed because virtual/kernel's
do_package is not depending on its bundle_initramfs.
We must figure out another way to package initramfs bundled kernel.
Signed-off-by: Ming Liu <peter.x.liu@external.atlascopco.com>
---
meta/classes/image.bbclass | 11 -----------
1 file changed, 11 deletions(-)
diff --git a/meta/classes/image.bbclass b/meta/classes/image.bbclass
index d2f8105..d87977c 100644
--- a/meta/classes/image.bbclass
+++ b/meta/classes/image.bbclass
@@ -181,9 +181,6 @@ python () {
check_image_features(d)
initramfs_image = d.getVar('INITRAMFS_IMAGE', True) or ""
- if initramfs_image != "":
- d.appendVarFlag('do_build', 'depends', " %s:do_bundle_initramfs" % d.getVar('PN', True))
- d.appendVarFlag('do_bundle_initramfs', 'depends', " %s:do_rootfs" % initramfs_image)
}
IMAGE_CLASSES += "image_types"
@@ -521,11 +518,3 @@ do_package_write_deb[noexec] = "1"
do_package_write_rpm[noexec] = "1"
addtask rootfs before do_build
-# Allow the kernel to be repacked with the initramfs and boot image file as a single file
-do_bundle_initramfs[depends] += "virtual/kernel:do_bundle_initramfs"
-do_bundle_initramfs[nostamp] = "1"
-do_bundle_initramfs[noexec] = "1"
-do_bundle_initramfs () {
- :
-}
-addtask bundle_initramfs after do_rootfs
--
1.9.1
^ permalink raw reply related [flat|nested] 5+ messages in thread* [PATCH V1 3/3] kernel-initramfs: new recipe, creates initramfs bundled kernel packaging
2015-12-30 21:19 [PATCH V1 1/3] kernel.bbclass: do not install initramfs bundled kernel image Ming Liu
2015-12-30 21:19 ` [PATCH V1 2/3] image.bbclass: removes bundle_initramfs related code Ming Liu
@ 2015-12-30 21:20 ` Ming Liu
2016-01-04 14:58 ` [PATCH V1 1/3] kernel.bbclass: do not install initramfs bundled kernel image Bruce Ashfield
2 siblings, 0 replies; 5+ messages in thread
From: Ming Liu @ 2015-12-30 21:20 UTC (permalink / raw)
To: openembedded-core; +Cc: bruce.ashfield, yue.tao, Ming Liu
From: Ming Liu <peter.x.liu@external.atlascopco.com>
So far, there is not a workable way to package the initramfs bundled kernel
image, the only place is tmp/deploy from where we could get it, but if a
user want to add it into a certain image, there is no guarantee that he
will achieve it because a explicit dependency is missing between package
and bundle_initramfs, and this was designed to avoid introducing circular
dependencies when using kernel modules in the initramfs image.bb that is
caused by kernel.bbclass trying to build the initramfs before the kernel
packaging.
To fix this problem, the idea is to split the initramfs bundled kernel
packaging to a new recipe, make the do_install depend on kernel's deploy
task, then with the following config:
IMAGE_INSTALL_append = " kernel-initramfs"
The initramfs bundled kernel could be added to the image without
introducing any circular dependencies.
Signed-off-by: Ming Liu <peter.x.liu@external.atlascopco.com>
---
meta/recipes-kernel/linux/kernel-initramfs.bb | 69 +++++++++++++++++++++++++++
1 file changed, 69 insertions(+)
create mode 100644 meta/recipes-kernel/linux/kernel-initramfs.bb
diff --git a/meta/recipes-kernel/linux/kernel-initramfs.bb b/meta/recipes-kernel/linux/kernel-initramfs.bb
new file mode 100644
index 0000000..7f9d72b
--- /dev/null
+++ b/meta/recipes-kernel/linux/kernel-initramfs.bb
@@ -0,0 +1,69 @@
+SUMMARY = "Initramfs bundled kernel image"
+DESCRIPTION = "When built, it packages a initramfs bundled kernel image of the \
+preferred virtual/kernel provider."
+
+SECTION = "kernel"
+
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "[file://${COMMON_LICENSE_DIR}/GPL-2.0;md5=801f80980d171dd6425610833a22dbe6]file://${COMMON_LICENSE_DIR}/GPL-2.0;md5=801f80980d171dd6425610833a22dbe6"
+
+inherit linux-kernel-base
+
+# Whilst not a module, this ensures we don't get multilib extended. (which would make no sense)
+inherit module-base
+
+S = "${STAGING_KERNEL_DIR}"
+B = "${WORKDIR}/build"
+
+# we dont need the default dependencies.
+INHIBIT_DEFAULT_DEPS = "1"
+
+KERNEL_IMAGETYPE ?= "zImage"
+KERNEL_VERSION = "${@get_kernelversion_file('${STAGING_KERNEL_BUILDDIR}')}"
+KERNEL_IMAGEDEST = "boot"
+
+KERNEL_PRIORITY ?= "${@int(d.getVar('KERNEL_VERSION',1).split('-')[0].split('+')[0].split('.')[0]) * 10000 + \
+ int(d.getVar('KERNEL_VERSION',1).split('-')[0].split('+')[0].split('.')[1]) * 100 + \
+ int(d.getVar('KERNEL_VERSION',1).split('-')[0].split('+')[0].split('.')[-1])}"
+
+PACKAGES = "${PN}"
+FILES_${PN} = "/${KERNEL_IMAGEDEST}/${KERNEL_IMAGETYPE}*"
+
+PKG_${PN} = "${PN}-${@legitimize_package_name('${KERNEL_VERSION}')}"
+
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+
+# Skip processing of this recipe if INITRAMFS_IMAGE or INITRAMFS_IMAGE_BUNDLE
+# is not set correctly, to avoid generate a single empty package which makes
+# no sense.
+python __anonymous () {
+ if not d.getVar('INITRAMFS_IMAGE', True) or d.getVar('INITRAMFS_IMAGE_BUNDLE', True) != '1':
+ raise bb.parse.SkipPackage("Set INITRAMFS_IMAGE and INITRAMFS_IMAGE_BUNDLE to enable it")
+}
+
+# Need the output of deploy.
+do_install[depends] += "virtual/kernel:do_deploy"
+
+# We only need the packaging tasks - disable the rest
+do_fetch[noexec] = "1"
+do_unpack[noexec] = "1"
+do_patch[noexec] = "1"
+do_configure[noexec] = "1"
+do_compile[noexec] = "1"
+do_populate_sysroot[noexec] = "1"
+
+do_install() {
+ if [ ! -z "${INITRAMFS_IMAGE}" -a x"${INITRAMFS_IMAGE_BUNDLE}" = x1 ]; then
+ echo "Copying initramfs bundled kernel image from ${DEPLOY_DIR_IMAGE}..."
+ install -d ${D}/${KERNEL_IMAGEDEST}
+ install -m 0644 ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-initramfs-${MACHINE}.bin ${D}/${KERNEL_IMAGEDEST}/${KERNEL_IMAGETYPE}-initramfs-${KERNEL_VERSION}
+ fi
+}
+
+pkg_postinst_${PN} () {
+ update-alternatives --install /${KERNEL_IMAGEDEST}/${KERNEL_IMAGETYPE}-initramfs ${KERNEL_IMAGETYPE}-initramfs /${KERNEL_IMAGEDEST}/${KERNEL_IMAGETYPE}-initramfs-${KERNEL_VERSION} ${KERNEL_PRIORITY} || true
+}
+
+pkg_postrm_${PN} () {
+ update-alternatives --remove ${KERNEL_IMAGETYPE}-initramfs ${KERNEL_IMAGETYPE}-initramfs-${KERNEL_VERSION} || true
+}
--
1.9.1
^ permalink raw reply related [flat|nested] 5+ messages in thread* Re: [PATCH V1 1/3] kernel.bbclass: do not install initramfs bundled kernel image
2015-12-30 21:19 [PATCH V1 1/3] kernel.bbclass: do not install initramfs bundled kernel image Ming Liu
2015-12-30 21:19 ` [PATCH V1 2/3] image.bbclass: removes bundle_initramfs related code Ming Liu
2015-12-30 21:20 ` [PATCH V1 3/3] kernel-initramfs: new recipe, creates initramfs bundled kernel packaging Ming Liu
@ 2016-01-04 14:58 ` Bruce Ashfield
2016-01-05 13:42 ` Ming Liu
2 siblings, 1 reply; 5+ messages in thread
From: Bruce Ashfield @ 2016-01-04 14:58 UTC (permalink / raw)
To: Ming Liu, openembedded-core; +Cc: yue.tao, Ming Liu
On 15-12-30 04:19 PM, Ming Liu wrote:
> From: Ming Liu <peter.x.liu@external.atlascopco.com>
>
> It makes no sense to install a initramfs bundled kernel image since
> do_package does not depend on do_bundle_initramfs at all, otherwise, it
> leads to a impicit kernel-image package depending on do_package run before
> or after do_bundle_initramfs.
It may just be the holiday break that has me thinking slower than
normal .. but I'm missing an overall description of the problem you are
trying to solve with this series, and also a writeup of how the new
implementation works.
Can you re-submit this with a 0/N that describes the issue with the
current implementation, and how this series solves it .. and then
perhaps the individual patches will make more sense.
We were able to bundle in the past, but the message I'm getting from
the commit messages is that something fundamental isn't working, but
I can't quite put the whole picture together without some more context.
Bruce
>
> Signed-off-by: Ming Liu <peter.x.liu@external.atlascopco.com>
> ---
> meta/classes/kernel.bbclass | 4 ----
> 1 file changed, 4 deletions(-)
>
> diff --git a/meta/classes/kernel.bbclass b/meta/classes/kernel.bbclass
> index 4ce1611..d1ca614 100644
> --- a/meta/classes/kernel.bbclass
> +++ b/meta/classes/kernel.bbclass
> @@ -179,10 +179,6 @@ do_bundle_initramfs () {
> kernel_do_compile
> mv -f ${KERNEL_OUTPUT} ${KERNEL_OUTPUT}.initramfs
> mv -f ${KERNEL_OUTPUT}.bak ${KERNEL_OUTPUT}
> - # 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"
> fi
> }
>
>
^ permalink raw reply [flat|nested] 5+ messages in thread* Re: [PATCH V1 1/3] kernel.bbclass: do not install initramfs bundled kernel image
2016-01-04 14:58 ` [PATCH V1 1/3] kernel.bbclass: do not install initramfs bundled kernel image Bruce Ashfield
@ 2016-01-05 13:42 ` Ming Liu
0 siblings, 0 replies; 5+ messages in thread
From: Ming Liu @ 2016-01-05 13:42 UTC (permalink / raw)
To: Bruce Ashfield; +Cc: yue.tao, Ming Liu, OE-core
[-- Attachment #1: Type: text/plain, Size: 2201 bytes --]
Hi, Bruce:
I had sent out another 0/N thread as you requested, please ignore this
thread then.
the best,
thank you
2016-01-04 15:58 GMT+01:00 Bruce Ashfield <bruce.ashfield@windriver.com>:
> On 15-12-30 04:19 PM, Ming Liu wrote:
>
>> From: Ming Liu <peter.x.liu@external.atlascopco.com>
>>
>> It makes no sense to install a initramfs bundled kernel image since
>> do_package does not depend on do_bundle_initramfs at all, otherwise, it
>> leads to a impicit kernel-image package depending on do_package run before
>> or after do_bundle_initramfs.
>>
>
> It may just be the holiday break that has me thinking slower than
> normal .. but I'm missing an overall description of the problem you are
> trying to solve with this series, and also a writeup of how the new
> implementation works.
>
> Can you re-submit this with a 0/N that describes the issue with the
> current implementation, and how this series solves it .. and then
> perhaps the individual patches will make more sense.
>
> We were able to bundle in the past, but the message I'm getting from
> the commit messages is that something fundamental isn't working, but
> I can't quite put the whole picture together without some more context.
>
> Bruce
>
>
>
>
>> Signed-off-by: Ming Liu <peter.x.liu@external.atlascopco.com>
>> ---
>> meta/classes/kernel.bbclass | 4 ----
>> 1 file changed, 4 deletions(-)
>>
>> diff --git a/meta/classes/kernel.bbclass b/meta/classes/kernel.bbclass
>> index 4ce1611..d1ca614 100644
>> --- a/meta/classes/kernel.bbclass
>> +++ b/meta/classes/kernel.bbclass
>> @@ -179,10 +179,6 @@ do_bundle_initramfs () {
>> kernel_do_compile
>> mv -f ${KERNEL_OUTPUT} ${KERNEL_OUTPUT}.initramfs
>> mv -f ${KERNEL_OUTPUT}.bak ${KERNEL_OUTPUT}
>> - # 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"
>> fi
>> }
>>
>>
>>
>
[-- Attachment #2: Type: text/html, Size: 3236 bytes --]
^ permalink raw reply [flat|nested] 5+ messages in thread