Patchwork [v2] kernel.bbclass: Create symbolic link to add ${KERNEL_IMAGETYPE} to boot package

login
register
mail settings
Submitter Franklin Cooper Jr.
Date Aug. 20, 2013, 6:45 p.m.
Message ID <1377024321-6230-1-git-send-email-fcooper@ti.com>
Download mbox | patch
Permalink /patch/56075/
State New
Headers show

Comments

Franklin Cooper Jr. - Aug. 20, 2013, 6:45 p.m.
* By default for some platforms U-boot assumes the kernel image is located in
  the boot directory of the root filesystem.
* The kernel.bbclass already includes the kernel image in the /boot directory
  but adds a version number to the file name.
* Create a symbolic link that names the kernel image in the exact way that
  U-boot expects.

Signed-off-by: Franklin S. Cooper Jr <fcooper@ti.com>
---
Version 2 changes:
Change "ln -s" to "ln -sf" based on Bruce's comment.

 meta/classes/kernel.bbclass |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)
Mark Hatle - Aug. 20, 2013, 6:48 p.m.
On 8/20/13 1:45 PM, Franklin S. Cooper Jr wrote:
> * By default for some platforms U-boot assumes the kernel image is located in
>    the boot directory of the root filesystem.
> * The kernel.bbclass already includes the kernel image in the /boot directory
>    but adds a version number to the file name.
> * Create a symbolic link that names the kernel image in the exact way that
>    U-boot expects.

This should be done with a package post-install script.  It is fairly common for 
multilib kernel versions to be installed on a machine at the same time, with the 
Link pointing to the 'last-installed' version.  Doing it in the do_install rule 
will cause a conflict (at least in the RPM case), preventing certain field 
upgrade activities.

post install script with something like:

ln -sf $D/boot/<kernel_name> <common-name>

Should work.

(The above assumes that the kernel itself is being packaged.. if it's not being 
packages and just copied to the end image -- then doing the link should be fine.)

--Mark


> Signed-off-by: Franklin S. Cooper Jr <fcooper@ti.com>
> ---
> Version 2 changes:
> Change "ln -s" to "ln -sf" based on Bruce's comment.
>
>   meta/classes/kernel.bbclass |    1 +
>   1 files changed, 1 insertions(+), 0 deletions(-)
>
> diff --git a/meta/classes/kernel.bbclass b/meta/classes/kernel.bbclass
> index e039dfc..6e7d994 100644
> --- a/meta/classes/kernel.bbclass
> +++ b/meta/classes/kernel.bbclass
> @@ -109,6 +109,7 @@ kernel_do_install() {
>   	install -d ${D}/${KERNEL_IMAGEDEST}
>   	install -d ${D}/boot
>   	install -m 0644 ${KERNEL_OUTPUT} ${D}/${KERNEL_IMAGEDEST}/${KERNEL_IMAGETYPE}-${KERNEL_VERSION}
> +	ln      -sf ${D}/${KERNEL_IMAGEDEST}/${KERNEL_IMAGETYPE}-${KERNEL_VERSION} ${D}/${KERNEL_IMAGEDEST}/${KERNEL_IMAGETYPE}
>   	install -m 0644 System.map ${D}/boot/System.map-${KERNEL_VERSION}
>   	install -m 0644 .config ${D}/boot/config-${KERNEL_VERSION}
>   	install -m 0644 vmlinux ${D}/boot/vmlinux-${KERNEL_VERSION}
>
Franklin Cooper Jr. - Sept. 24, 2013, 5:05 p.m.
Mark Hatle <mark.hatle@...> writes:

> 
> On 8/20/13 1:45 PM, Franklin S. Cooper Jr wrote:
> > * By default for some platforms U-boot assumes the kernel image is
located in
> >    the boot directory of the root filesystem.
> > * The kernel.bbclass already includes the kernel image in the /boot
directory
> >    but adds a version number to the file name.
> > * Create a symbolic link that names the kernel image in the exact way that
> >    U-boot expects.
> 
> This should be done with a package post-install script.  It is fairly
common for 
> multilib kernel versions to be installed on a machine at the same time,
with the 
> Link pointing to the 'last-installed' version.  Doing it in the do_install
rule 
> will cause a conflict (at least in the RPM case), preventing certain field 
> upgrade activities.
> 
> post install script with something like:
> 
> ln -sf $D/boot/?kernel_name> <common-name>
> 
> Should work.
> 
> (The above assumes that the kernel itself is being packaged.. if it's not
being 
> packages and just copied to the end image -- then doing the link should be
fine.)
> 
> --

Looks like the below patch addresses my issue and also handles it in the
same way you recommended.

kernel.bbclass: Correct post(inst|rm) package association 
OE Core Commit: 35f538b117e3387354d2dab1f22c3de28ab1322b
> 
> > Signed-off-by: Franklin S. Cooper Jr <fcooper@...>
> > ---
> > Version 2 changes:
> > Change "ln -s" to "ln -sf" based on Bruce's comment.
> >
> >   meta/classes/kernel.bbclass |    1 +
> >   1 files changed, 1 insertions(+), 0 deletions(-)
> >
> > diff --git a/meta/classes/kernel.bbclass b/meta/classes/kernel.bbclass
> > index e039dfc..6e7d994 100644
> > --- a/meta/classes/kernel.bbclass
> > +++ b/meta/classes/kernel.bbclass
> >  <at>  <at>  -109,6 +109,7  <at>  <at>  kernel_do_install() {
> >   	install -d ${D}/${KERNEL_IMAGEDEST}
> >   	install -d ${D}/boot
> >   	install -m 0644 ${KERNEL_OUTPUT}
${D}/${KERNEL_IMAGEDEST}/${KERNEL_IMAGETYPE}-${KERNEL_VERSION}
> > +	ln      -sf
${D}/${KERNEL_IMAGEDEST}/${KERNEL_IMAGETYPE}-${KERNEL_VERSION}
${D}/${KERNEL_IMAGEDEST}/${KERNEL_IMAGETYPE}
> >   	install -m 0644 System.map ${D}/boot/System.map-${KERNEL_VERSION}
> >   	install -m 0644 .config ${D}/boot/config-${KERNEL_VERSION}
> >   	install -m 0644 vmlinux ${D}/boot/vmlinux-${KERNEL_VERSION}
> >
>

Patch

diff --git a/meta/classes/kernel.bbclass b/meta/classes/kernel.bbclass
index e039dfc..6e7d994 100644
--- a/meta/classes/kernel.bbclass
+++ b/meta/classes/kernel.bbclass
@@ -109,6 +109,7 @@  kernel_do_install() {
 	install -d ${D}/${KERNEL_IMAGEDEST}
 	install -d ${D}/boot
 	install -m 0644 ${KERNEL_OUTPUT} ${D}/${KERNEL_IMAGEDEST}/${KERNEL_IMAGETYPE}-${KERNEL_VERSION}
+	ln      -sf ${D}/${KERNEL_IMAGEDEST}/${KERNEL_IMAGETYPE}-${KERNEL_VERSION} ${D}/${KERNEL_IMAGEDEST}/${KERNEL_IMAGETYPE}
 	install -m 0644 System.map ${D}/boot/System.map-${KERNEL_VERSION}
 	install -m 0644 .config ${D}/boot/config-${KERNEL_VERSION}
 	install -m 0644 vmlinux ${D}/boot/vmlinux-${KERNEL_VERSION}