This patch can make ensure that unversioned kernel image symlink will be
added to the rootfs during do_install by post install and it can fall
back to make a copy if the unversioned kernel image symlink creation
fails on target.

I have done the basic test on my board and the oe-selftest for this
patch. The test passed.


$ oe-selftest -r efibootpartition.GenericEFITest.test_boot_efi
2020-07-03 10:16:29,211 - oe-selftest - INFO - Adding layer libraries:
2020-07-03 10:16:29,211 - oe-selftest - INFO - /buildarea/raid0/yxu2/repo/poky/poky/meta/lib 2020-07-03 10:16:29,211 - oe-selftest - INFO - /buildarea/raid0/yxu2/repo/poky/poky/meta-yocto-bsp/lib 2020-07-03 10:16:29,212 - oe-selftest - INFO - /buildarea/raid0/yxu2/repo/poky/poky/meta-selftest/lib 2020-07-03 10:16:29,212 - oe-selftest - INFO - Running bitbake -e to test the configuration is valid/parsable 2020-07-03 10:16:43,055 - oe-selftest - INFO - Adding: "include selftest.inc" in /buildarea/raid0/yxu2/repo/poky/poky/1285-st/conf/local.conf 2020-07-03 10:16:43,055 - oe-selftest - INFO - Adding: "include bblayers.inc" in bblayers.conf 2020-07-03 10:16:43,056 - oe-selftest - INFO - test_boot_efi (efibootpartition.GenericEFITest) 2020-07-03 11:40:03,056 - oe-selftest - INFO - Keepalive message

2020-07-03 12:29:28,901 - oe-selftest - INFO -  ... ok
2020-07-03 12:30:46,074 - oe-selftest - INFO - ----------------------------------------------------------------------
2020-07-03 12:30:46,074 - oe-selftest - INFO - Ran 1 test in 8055.415s
2020-07-03 12:30:46,074 - oe-selftest - INFO - OK
2020-07-03 12:30:51,602 - oe-selftest - INFO - RESULTS:
2020-07-03 12:30:51,602 - oe-selftest - INFO - RESULTS - efibootpartition.GenericEFITest.test_boot_efi: PASSED (7965.85s)
2020-07-03 12:30:51,617 - oe-selftest - INFO - SUMMARY:
2020-07-03 12:30:51,617 - oe-selftest - INFO - oe-selftest () - Ran 1 test in 8055.416s 2020-07-03 12:30:51,617 - oe-selftest - INFO - oe-selftest - OK - All required tests passed (successes=1, skipped=0, failures=0, errors=0)


Cheers,

Yanfei


On 7/3/20 9:55 PM, Xu, Yanfei wrote:
From: Yanfei Xu <yanfei...@windriver.com>

Some filesystems don't support symlink, then you will get failure wh
you install or update the kernel rpm package. Now we use a copy of
image for these filesystems instead of symlink.

Suggested-by: Bruce Ashfield <bruce.ashfi...@gmail.com>
Suggested-by: Richard Purdie <richard.pur...@linuxfoundation.org>
Signed-off-by: Yanfei Xu <yanfei...@windriver.com>
---
  meta/classes/kernel.bbclass | 22 +++++++++++++++++++---
  1 file changed, 19 insertions(+), 3 deletions(-)

diff --git a/meta/classes/kernel.bbclass b/meta/classes/kernel.bbclass
index 20a0135fc9..b01c1699ae 100644
--- a/meta/classes/kernel.bbclass
+++ b/meta/classes/kernel.bbclass
@@ -94,6 +94,25 @@ python __anonymous () {
          d.appendVar('RDEPENDS_%s-image' % kname, ' %s-image-%s' % (kname, 
typelower))
          d.setVar('PKG_%s-image-%s' % (kname,typelower), 
'%s-image-%s-${KERNEL_VERSION_PKG_NAME}' % (kname, typelower))
          d.setVar('ALLOW_EMPTY_%s-image-%s' % (kname, typelower), '1')
+        d.setVar('pkg_postinst_%s-image-%s' % (kname,typelower), """set +e
+if [ -n "$D" ]; then
+    ln -sf %s-${KERNEL_VERSION} $D/${KERNEL_IMAGEDEST}/%s > /dev/null 2>&1
+else
+    ln -sf %s-${KERNEL_VERSION} ${KERNEL_IMAGEDEST}/%s > /dev/null 2>&1
+    if [ $? -ne 0 ]; then
+        echo "Filesystem on ${KERNEL_IMAGEDEST}/ doesn't support symlinks, falling 
back to copied image (%s)."
+        install -m 0644 ${KERNEL_IMAGEDEST}/%s-${KERNEL_VERSION} 
${KERNEL_IMAGEDEST}/%s
+    fi
+fi
+set -e
+""" % (type, type, type, type, type, type, type))
+        d.setVar('pkg_postrm_%s-image-%s' % (kname,typelower), """set +e
+if [ -f "${KERNEL_IMAGEDEST}/%s" -o -L "${KERNEL_IMAGEDEST}/%s" ]; then
+    rm -f ${KERNEL_IMAGEDEST}/%s  > /dev/null 2>&1
+fi
+set -e
+""" % (type, type, type))
+
image = d.getVar('INITRAMFS_IMAGE')
      # If the INTIRAMFS_IMAGE is set but the INITRAMFS_IMAGE_BUNDLE is set to 
0,
@@ -385,9 +404,6 @@ kernel_do_install() {
        install -d ${D}/boot
        for imageType in ${KERNEL_IMAGETYPES} ; do
                install -m 0644 ${KERNEL_OUTPUT_DIR}/${imageType} 
${D}/${KERNEL_IMAGEDEST}/${imageType}-${KERNEL_VERSION}
-               if [ "${KERNEL_PACKAGE_NAME}" = "kernel" ]; then
-                       ln -sf ${imageType}-${KERNEL_VERSION} 
${D}/${KERNEL_IMAGEDEST}/${imageType}
-               fi
        done
        install -m 0644 System.map ${D}/boot/System.map-${KERNEL_VERSION}
        install -m 0644 .config ${D}/boot/config-${KERNEL_VERSION}




-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.

View/Reply Online (#140297): 
https://lists.openembedded.org/g/openembedded-core/message/140297
Mute This Topic: https://lists.openembedded.org/mt/75279494/21656
Group Owner: openembedded-core+ow...@lists.openembedded.org
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub  
[arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to