On Thu, 2020-06-18 at 15:57 +0800, Xu, Yanfei wrote:
> From: Yanfei Xu <[email protected]>
> 
> Some filesystems don't support symlink, then you will get failure when
> you install or update the kernel rpm package. Now we use a copied iamge
> for these filesystems instead of symlink.
> 
> Suggested-by: Bruce Ashfield <[email protected]>
> Signed-off-by: Yanfei Xu <[email protected]>
> ---
>  meta/classes/kernel.bbclass | 10 +++++++++-
>  1 file changed, 9 insertions(+), 1 deletion(-)
> 
> diff --git a/meta/classes/kernel.bbclass b/meta/classes/kernel.bbclass
> index 41101a64a0..749d1a0f29 100644
> --- a/meta/classes/kernel.bbclass
> +++ b/meta/classes/kernel.bbclass
> @@ -94,6 +94,14 @@ 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_ontarget_%s-image-%s' % (kname,typelower), """
> +set +e
> +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)."
> +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,
> @@ -386,7 +394,7 @@ kernel_do_install() {
>       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}
> +                     install -m 0644 
> ${D}/${KERNEL_IMAGEDEST}/${imageType}-${KERNEL_VERSION} 
> ${D}/${KERNEL_IMAGEDEST}/${imageType}
>               fi
>       done
>       install -m 0644 System.map ${D}/boot/System.map-${KERNEL_VERSION}

I am a bit concerned about this since whilst it solves one problem,
doesn't having two copies of the same file around significantly
increase the size of the packages and the update payloads updating such
systems would need? Are these two copies of the file in the same
package or not?

Perhaps the symlink creation should fall back to a copy on device
rather than having the copy at build time (as I understand it)?

Cheers,

Richard

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

View/Reply Online (#139635): 
https://lists.openembedded.org/g/openembedded-core/message/139635
Mute This Topic: https://lists.openembedded.org/mt/74954288/21656
Group Owner: [email protected]
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub  
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to