[OE-core] [PATCH] kernel: Add KERNEL_LOCALVERSION to control version string
Bruce Ashfield
bruce.ashfield at gmail.com
Thu Apr 11 13:29:33 UTC 2013
On Thu, Apr 11, 2013 at 9:17 AM, Denys Dmytriyenko <denis at denix.org> wrote:
> On Thu, Apr 11, 2013 at 08:53:57AM -0400, Bruce Ashfield wrote:
>> On Thu, Apr 11, 2013 at 8:44 AM, Maupin, Chase <chase.maupin at ti.com> wrote:
>> >> -----Original Message-----
>> >> From: Bruce Ashfield [mailto:bruce.ashfield at gmail.com]
>> >> Sent: Wednesday, April 10, 2013 7:42 PM
>> >> To: Maupin, Chase
>> >> Cc: Patches and discussions about the oe-core layer
>> >> Subject: Re: [OE-core] [PATCH] kernel: Add KERNEL_LOCALVERSION to
>> >> control version string
>> >>
>> >> On Wed, Apr 10, 2013 at 5:47 PM, Chase Maupin
>> >> <Chase.Maupin at ti.com> wrote:
>> >> > * Add a variable called KERNEL_LOCALVERSION which when set will
>> >> > place a version string in the .scmversion file of the kernel
>> >> > sources. This string will be picked up by the kernel
>> >> Makefile
>> >> > and will be appended to the kernel version. This is done to
>> >> > make it easier to identify what revision of the kernel
>> >> sources
>> >> > are being run. For example you can use a setting like the
>> >> > following to add the short commit id to the kernel version
>> >> > string:
>> >> >
>> >> > KERNEL_LOCALVERSION = "-g${@d.getVar('SRCPV',
>> >> True).partition('+')[2][0:7]}"
>> >> >
>> >> > Signed-off-by: Chase Maupin <Chase.Maupin at ti.com>
>> >> > ---
>> >> > meta/classes/kernel.bbclass | 6 +++++-
>> >> > 1 files changed, 5 insertions(+), 1 deletions(-)
>> >> >
>> >> > diff --git a/meta/classes/kernel.bbclass
>> >> b/meta/classes/kernel.bbclass
>> >> > index af58887..9757465 100644
>> >> > --- a/meta/classes/kernel.bbclass
>> >> > +++ b/meta/classes/kernel.bbclass
>> >> > @@ -48,6 +48,9 @@ export CMDLINE_CONSOLE =
>> >> "console=${@d.getVar("KERNEL_CONSOLE",1) or "ttyS0"}"
>> >> >
>> >> > KERNEL_VERSION = "${@get_kernelversion('${B}')}"
>> >> >
>> >> > +# Setting KERNEL_LOCALVERSION will place a string in the
>> >> .scmversion file
>> >> > +# of the kernel tree. This string will be picked up by the
>> >> build system
>> >> > +# of the kernel and appended to the kernel version.
>> >> > KERNEL_LOCALVERSION ?= ""
>> >> >
>> >> > # kernels are generally machine specific
>> >> > @@ -210,7 +213,8 @@ kernel_do_configure() {
>> >> > # $ scripts/setlocalversion . => +
>> >> > # $ make kernelversion => 2.6.37
>> >> > # $ make kernelrelease => 2.6.37+
>> >> > - touch ${B}/.scmversion ${S}/.scmversion
>> >> > + echo ${KERNEL_LOCALVERSION} > ${B}/.scmversion
>> >> > + echo ${KERNEL_LOCALVERSION} > ${S}/.scmversion
>> >>
>> >> This would clobber trees that already patch, or otherwise have
>> >> the file in place
>> >> in their source directory. A test to see if it already exists
>> >> and only echo
>> >> the variable if no one has already set it in their tree would be
>> >> safer.
>> >
>> > Good point. I'll wrap this in a check and submit version 2. I'll do the
>> > same for the U-Boot version as well.
>>
>> Another option for the kernel is to use a localversion-yocto file. It
>> will serve the same purpose and keep us from running afoul of those
>> that want scm version to provide a format that is similar to the one
>> that the kernel internally generates.
>>
>> Just a thought. I typically use localversion-<foo> now for all my
>> localversions, and will switch the kernel-yocto over to it in master
>> now that all older supported kernels have been pushed off the cliff :)
>
> That would be great once everyone starts using linux-yocto kernels! :)
> Unfortunately that is still not the case...
What!? they aren't!? :)
I know (and everyone knows that I know :P) I was actually more meaning
to convey that kernel.bbclass can do this, and the tools extensions for
yocto can use it just like any other derived recipe.
Cheers,
Bruce
>
> --
> Denys
>
>> >> This will still be overridden by CONFIG_LOCALVERSION, so it is
>> >> safe
>> >> from that angle, but also note that it can be inhibited by
>> >> setting
>> >> # CONFIG_LOCALVERSION_AUTO is not set, in your .config and
>> >> setting LOCALVERSION, but you probably already knew that!
>> >>
>> >> Cheers,
>> >>
>> >> Bruce
>> >>
>> >> >
>> >> > # Copy defconfig to .config if .config does not exist.
>> >> This allows
>> >> > # recipes to manage the .config themselves in
>> >> do_configure_prepend().
>> >> > --
>> >> > 1.7.0.4
>> >> >
>> >> >
>> >> > _______________________________________________
>> >> > Openembedded-core mailing list
>> >> > Openembedded-core at lists.openembedded.org
>> >> > http://lists.linuxtogo.org/cgi-
>> >> bin/mailman/listinfo/openembedded-core
>> >>
>> >>
>> >>
>> >> --
>> >> "Thou shalt not follow the NULL pointer, for chaos and madness
>> >> await
>> >> thee at its end"
>>
>>
>>
>> --
>> "Thou shalt not follow the NULL pointer, for chaos and madness await
>> thee at its end"
>>
>> _______________________________________________
>> Openembedded-core mailing list
>> Openembedded-core at lists.openembedded.org
>> http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core
--
"Thou shalt not follow the NULL pointer, for chaos and madness await
thee at its end"
More information about the Openembedded-core
mailing list