[OE-core] [PATCH] Revert "kernel: Fix symlinks"

David Vincent freesilicon at gmail.com
Fri Apr 21 12:37:36 UTC 2017


On 2017-04-21 13:30 GMT+02:00 Andreas Oberritter <obi at opendreambox.org>:
> On Fri, 21 Apr 2017 13:02:51 +0200
> Andrea Adami <andrea.adami at gmail.com> wrote:
>
>> On Fri, Apr 21, 2017 at 12:39 PM, Andreas Oberritter
>> <obi at opendreambox.org> wrote:
>> > This reverts commit c7bc46b9bc29dd0953ab8d63b50fa105bb66892e.
>> >
>> > It broke dpkg's update-alternatives, which requires absolute paths.
>>
>> This is really uncommon.
>
> Actually it's not. Try it on any Debian or Ubuntu system.
>
>> I had already expressed my negative opinion about absolute paths for kernel [1].
>> Personally, I had to patch the bootloader (kexecboot).

Same here, that's why I submitted it in the first place. Didn't
thought that would break dpkg...

>>
>> So please try some workaround instead of changing it back.
>
> Well, there's no workaround. Other than opkg's update-alternatives, dpkg's maintains
> an alternatives database in /etc/alternatives, so the symlink is going to point to
> an absolute path outside of /boot anyway.

The problem is that, for bootloaders, it is not always possible to
mount the rootfs. So, it must only rely on information in the boot
partition that can be mounted anywhere.

>
> To fix your problem, kernel.bbclass should be changed to not use update-alternatives
> at all. But it's definitely wrong to break the original u-a by using invalid command-
> line arguments.
>

And reverting this patch breaks boot for those who rely on a relative
symlink ; that is also wrong. Maybe you're right and
update-alternatives should be abandoned altogether for managing kernel
symlinks.

> Regards,
> Andreas
>
>
>> Cheers
>> Andrea

David

>>
>> [1] http://lists.openembedded.org/pipermail/openembedded-core/2014-July/093988.html
>>
>> >
>> > | update-alternatives: error: alternative path is not absolute as it should be
>> >
>> > Signed-off-by: Andreas Oberritter <obi at opendreambox.org>
>> > ---
>> >  meta/classes/kernel.bbclass             | 6 +++---
>> >  meta/recipes-kernel/linux/linux-dtb.inc | 4 ++--
>> >  2 files changed, 5 insertions(+), 5 deletions(-)
>> >
>> > diff --git a/meta/classes/kernel.bbclass b/meta/classes/kernel.bbclass
>> > index 12a748d..8cf357f 100644
>> > --- a/meta/classes/kernel.bbclass
>> > +++ b/meta/classes/kernel.bbclass
>> > @@ -49,11 +49,10 @@ python __anonymous () {
>> >
>> >      for type in types.split():
>> >          typelower = type.lower()
>> > -        imagedest = d.getVar('KERNEL_IMAGEDEST')
>> >
>> >          d.appendVar('PACKAGES', ' ' + 'kernel-image-' + typelower)
>> >
>> > -        d.setVar('FILES_kernel-image-' + typelower, '/' + imagedest + '/' + type + '-${KERNEL_VERSION_NAME}')
>> > +        d.setVar('FILES_kernel-image-' + typelower, '/boot/' + type + '-${KERNEL_VERSION_NAME}')
>> >
>> >          d.appendVar('RDEPENDS_kernel-image', ' ' + 'kernel-image-' + typelower)
>> >
>> > @@ -61,8 +60,9 @@ python __anonymous () {
>> >
>> >          d.setVar('ALLOW_EMPTY_kernel-image-' + typelower, '1')
>> >
>> > +        imagedest = d.getVar('KERNEL_IMAGEDEST')
>> >          priority = d.getVar('KERNEL_PRIORITY')
>> > -        postinst = '#!/bin/sh\n' + 'update-alternatives --install /' + imagedest + '/' + type + ' ' + type + ' ' + type + '-${KERNEL_VERSION_NAME} ' + priority + ' || true' + '\n'
>> > +        postinst = '#!/bin/sh\n' + 'update-alternatives --install /' + imagedest + '/' + type + ' ' + type + ' ' + '/' + imagedest + '/' + type + '-${KERNEL_VERSION_NAME} ' + priority + ' || true' + '\n'
>> >          d.setVar('pkg_postinst_kernel-image-' + typelower, postinst)
>> >
>> >          postrm = '#!/bin/sh\n' + 'update-alternatives --remove' + ' ' + type + ' ' + type + '-${KERNEL_VERSION_NAME} || true' + '\n'
>> > diff --git a/meta/recipes-kernel/linux/linux-dtb.inc b/meta/recipes-kernel/linux/linux-dtb.inc
>> > index 22e374f..41aad7c 100644
>> > --- a/meta/recipes-kernel/linux/linux-dtb.inc
>> > +++ b/meta/recipes-kernel/linux/linux-dtb.inc
>> > @@ -63,7 +63,7 @@ pkg_postinst_kernel-devicetree () {
>> >                         DTB_EXT=${DTB##*.}
>> >                         DTB_BASE_NAME=`basename ${DTB} ."${DTB_EXT}"`
>> >                         DTB_SYMLINK_NAME=`echo ${symlink_name} | sed "s/${MACHINE}/${DTB_BASE_NAME}/g"`
>> > -                       update-alternatives --install /${KERNEL_IMAGEDEST}/${DTB_BASE_NAME}.${DTB_EXT} ${DTB_BASE_NAME}.${DTB_EXT} devicetree-${DTB_SYMLINK_NAME}.${DTB_EXT} ${KERNEL_PRIORITY} || true
>> > +                       update-alternatives --install /${KERNEL_IMAGEDEST}/${DTB_BASE_NAME}.${DTB_EXT} ${DTB_BASE_NAME}.${DTB_EXT} /boot/devicetree-${DTB_SYMLINK_NAME}.${DTB_EXT} ${KERNEL_PRIORITY} || true
>> >                 done
>> >         done
>> >  }
>> > @@ -76,7 +76,7 @@ pkg_postrm_kernel-devicetree () {
>> >                         DTB_EXT=${DTB##*.}
>> >                         DTB_BASE_NAME=`basename ${DTB} ."${DTB_EXT}"`
>> >                         DTB_SYMLINK_NAME=`echo ${symlink_name} | sed "s/${MACHINE}/${DTB_BASE_NAME}/g"`
>> > -                       update-alternatives --remove ${DTB_BASE_NAME}.${DTB_EXT} devicetree-${DTB_SYMLINK_NAME}.${DTB_EXT} ${KERNEL_PRIORITY} || true
>> > +                       update-alternatives --remove ${DTB_BASE_NAME}.${DTB_EXT} /boot/devicetree-${DTB_SYMLINK_NAME}.${DTB_EXT} ${KERNEL_PRIORITY} || true
>> >                 done
>> >         done
>> >  }
>> > --
>> > 2.7.4
>> >
>> > --
>> > _______________________________________________
>> > Openembedded-core mailing list
>> > Openembedded-core at lists.openembedded.org
>> > http://lists.openembedded.org/mailman/listinfo/openembedded-core
>
> --
> _______________________________________________
> Openembedded-core mailing list
> Openembedded-core at lists.openembedded.org
> http://lists.openembedded.org/mailman/listinfo/openembedded-core



More information about the Openembedded-core mailing list