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

Andreas Oberritter obi at opendreambox.org
Fri Apr 21 11:30:34 UTC 2017


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).
> 
> 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.

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.

Regards,
Andreas


> Cheers
> Andrea
> 
> [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  




More information about the Openembedded-core mailing list