Message ID | 20230530170949.12045-1-liu.ming50@gmail.com |
---|---|
State | Accepted, archived |
Commit | 229435a52f36ddec5f85fb6d5ccd42044b688397 |
Headers | show |
Series | kernel.bbclass: introduce KERNEL_LOCALVERSION | expand |
On Tue, May 30, 2023 at 1:10 PM Ming Liu <liu.ming50@gmail.com> wrote: > > From: Ming Liu <liu.ming50@gmail.com> > > Just like UBOOT_LOCALVERSION, an end user can set KERNEL_LOCALVERSION > to append a string to the name of the local version of the kernel > image. > > Signed-off-by: Ming Liu <liu.ming50@gmail.com> > --- > meta/classes-recipe/kernel.bbclass | 10 +++++----- > meta/conf/documentation.conf | 1 + > 2 files changed, 6 insertions(+), 5 deletions(-) > > diff --git a/meta/classes-recipe/kernel.bbclass b/meta/classes-recipe/kernel.bbclass > index e634eabd49..3dd139eda9 100644 > --- a/meta/classes-recipe/kernel.bbclass > +++ b/meta/classes-recipe/kernel.bbclass > @@ -616,6 +616,7 @@ do_shared_workdir () { > # We don't need to stage anything, not the modules/firmware since those would clash with linux-firmware > SYSROOT_DIRS = "" > > +KERNEL_LOCALVERSION ??= "" > KERNEL_CONFIG_COMMAND ?= "oe_runmake_call -C ${S} O=${B} olddefconfig || oe_runmake -C ${S} O=${B} oldnoconfig" > > python check_oldest_kernel() { > @@ -633,11 +634,10 @@ check_oldest_kernel[vardepsexclude] += "OLDEST_KERNEL KERNEL_VERSION" > do_configure[prefuncs] += "check_oldest_kernel" > > kernel_do_configure() { > - # fixes extra + in /lib/modules/2.6.37+ > - # $ scripts/setlocalversion . => + > - # $ make kernelversion => 2.6.37 > - # $ make kernelrelease => 2.6.37+ Those comments are still valid. > - touch ${B}/.scmversion ${S}/.scmversion > + if [ ! -e ${B}/.scmversion -a ! -e ${S}/.scmversion ]; then > + echo ${KERNEL_LOCALVERSION} > ${B}/.scmversion > + echo ${KERNEL_LOCALVERSION} > ${S}/.scmversion > + fi You've confirmed that the result is the same as the touches previously did when that variable isn't set ? Bruce > > if [ "${S}" != "${B}" ] && [ -f "${S}/.config" ] && [ ! -f "${B}/.config" ]; then > mv "${S}/.config" "${B}/.config" > diff --git a/meta/conf/documentation.conf b/meta/conf/documentation.conf > index a27d7a53c3..66b8e2f24f 100644 > --- a/meta/conf/documentation.conf > +++ b/meta/conf/documentation.conf > @@ -253,6 +253,7 @@ KERNEL_MODULE_PROBECONF[doc] = "Lists kernel modules for which the build system > KERNEL_PACKAGE_NAME[doc] = "Name prefix for kernel packages. Defaults to 'kernel'." > KERNEL_PATH[doc] = "The location of the kernel sources. This variable is set to the value of the STAGING_KERNEL_DIR within the module class (module.bbclass)." > KERNEL_SRC[doc] = "The location of the kernel sources. This variable is set to the value of the STAGING_KERNEL_DIR within the module class (module.bbclass)." > +KERNEL_LOCALVERSION[doc] = "Appends a string to the name of the local version of the kernel image." > KFEATURE_DESCRIPTION[doc] = "Provides a short description of a configuration fragment. You use this variable in the .scc file that describes a configuration fragment file." > KMACHINE[doc] = "The machine as known by the kernel." > KTYPE[doc] = "Defines the kernel type to be used in assembling the configuration." > -- > 2.25.1 > > > -=-=-=-=-=-=-=-=-=-=-=- > Links: You receive all messages sent to this group. > View/Reply Online (#181939): https://lists.openembedded.org/g/openembedded-core/message/181939 > Mute This Topic: https://lists.openembedded.org/mt/99224358/1050810 > Group Owner: openembedded-core+owner@lists.openembedded.org > Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [bruce.ashfield@gmail.com] > -=-=-=-=-=-=-=-=-=-=-=- >
Hi, Bruce: Please see my answers as below: > You've confirmed that the result is the same as the touches previously did when that variable isn't set ? Yes, I have verified that on a qemuarm64 machine. > Those comments are still valid I think after we introduce KERNEL_LOCALVERSION, then we generate the .scmversion on purpose, not as a workaround or fix so those comments not valid any more? the best, thank you Bruce Ashfield <bruce.ashfield@gmail.com> 於 2023年5月30日 週二 下午7:21寫道: > On Tue, May 30, 2023 at 1:10 PM Ming Liu <liu.ming50@gmail.com> wrote: > > > > From: Ming Liu <liu.ming50@gmail.com> > > > > Just like UBOOT_LOCALVERSION, an end user can set KERNEL_LOCALVERSION > > to append a string to the name of the local version of the kernel > > image. > > > > Signed-off-by: Ming Liu <liu.ming50@gmail.com> > > --- > > meta/classes-recipe/kernel.bbclass | 10 +++++----- > > meta/conf/documentation.conf | 1 + > > 2 files changed, 6 insertions(+), 5 deletions(-) > > > > diff --git a/meta/classes-recipe/kernel.bbclass > b/meta/classes-recipe/kernel.bbclass > > index e634eabd49..3dd139eda9 100644 > > --- a/meta/classes-recipe/kernel.bbclass > > +++ b/meta/classes-recipe/kernel.bbclass > > @@ -616,6 +616,7 @@ do_shared_workdir () { > > # We don't need to stage anything, not the modules/firmware since those > would clash with linux-firmware > > SYSROOT_DIRS = "" > > > > +KERNEL_LOCALVERSION ??= "" > > KERNEL_CONFIG_COMMAND ?= "oe_runmake_call -C ${S} O=${B} olddefconfig > || oe_runmake -C ${S} O=${B} oldnoconfig" > > > > python check_oldest_kernel() { > > @@ -633,11 +634,10 @@ check_oldest_kernel[vardepsexclude] += > "OLDEST_KERNEL KERNEL_VERSION" > > do_configure[prefuncs] += "check_oldest_kernel" > > > > kernel_do_configure() { > > - # fixes extra + in /lib/modules/2.6.37+ > > - # $ scripts/setlocalversion . => + > > - # $ make kernelversion => 2.6.37 > > - # $ make kernelrelease => 2.6.37+ > > Those comments are still valid. > > > - touch ${B}/.scmversion ${S}/.scmversion > > + if [ ! -e ${B}/.scmversion -a ! -e ${S}/.scmversion ]; then > > + echo ${KERNEL_LOCALVERSION} > ${B}/.scmversion > > + echo ${KERNEL_LOCALVERSION} > ${S}/.scmversion > > + fi > > You've confirmed that the result is the same as the touches previously > did when that variable isn't set ? > > Bruce > > > > > if [ "${S}" != "${B}" ] && [ -f "${S}/.config" ] && [ ! -f > "${B}/.config" ]; then > > mv "${S}/.config" "${B}/.config" > > diff --git a/meta/conf/documentation.conf b/meta/conf/documentation.conf > > index a27d7a53c3..66b8e2f24f 100644 > > --- a/meta/conf/documentation.conf > > +++ b/meta/conf/documentation.conf > > @@ -253,6 +253,7 @@ KERNEL_MODULE_PROBECONF[doc] = "Lists kernel modules > for which the build system > > KERNEL_PACKAGE_NAME[doc] = "Name prefix for kernel packages. Defaults > to 'kernel'." > > KERNEL_PATH[doc] = "The location of the kernel sources. This variable > is set to the value of the STAGING_KERNEL_DIR within the module class > (module.bbclass)." > > KERNEL_SRC[doc] = "The location of the kernel sources. This variable is > set to the value of the STAGING_KERNEL_DIR within the module class > (module.bbclass)." > > +KERNEL_LOCALVERSION[doc] = "Appends a string to the name of the local > version of the kernel image." > > KFEATURE_DESCRIPTION[doc] = "Provides a short description of a > configuration fragment. You use this variable in the .scc file that > describes a configuration fragment file." > > KMACHINE[doc] = "The machine as known by the kernel." > > KTYPE[doc] = "Defines the kernel type to be used in assembling the > configuration." > > -- > > 2.25.1 > > > > > > -=-=-=-=-=-=-=-=-=-=-=- > > Links: You receive all messages sent to this group. > > View/Reply Online (#181939): > https://lists.openembedded.org/g/openembedded-core/message/181939 > > Mute This Topic: https://lists.openembedded.org/mt/99224358/1050810 > > Group Owner: openembedded-core+owner@lists.openembedded.org > > Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [ > bruce.ashfield@gmail.com] > > -=-=-=-=-=-=-=-=-=-=-=- > > > > > -- > - Thou shalt not follow the NULL pointer, for chaos and madness await > thee at its end > - "Use the force Harry" - Gandalf, Star Trek II >
On Tue, May 30, 2023 at 3:58 PM Ming Liu <liu.ming50@gmail.com> wrote: > > Hi, Bruce: > > Please see my answers as below: > > > You've confirmed that the result is the same as the touches previously did when that variable isn't set ? > > Yes, I have verified that on a qemuarm64 machine. > > > Those comments are still valid > > I think after we introduce KERNEL_LOCALVERSION, then we generate the .scmversion on purpose, not as a workaround or fix so those comments not valid any more? > They are definitely still valid. The files need to exist, or the + gets added. Other layers and kernel recipes have been touching and using those files in their own way, the kernel.bbclass was just a default to ensure if they didn't handle it, that those noise wouldn't be generated. That variable is completely optional, so we are not always generating it on purpose. Also CONFIG_LOCALVERSION is used by linux-yocto and other recipes, so the default of empty to ensure that nothing is added by kbuild is the case, and also makes them valid. Bruce > the best, > thank you > > > Bruce Ashfield <bruce.ashfield@gmail.com> 於 2023年5月30日 週二 下午7:21寫道: >> >> On Tue, May 30, 2023 at 1:10 PM Ming Liu <liu.ming50@gmail.com> wrote: >> > >> > From: Ming Liu <liu.ming50@gmail.com> >> > >> > Just like UBOOT_LOCALVERSION, an end user can set KERNEL_LOCALVERSION >> > to append a string to the name of the local version of the kernel >> > image. >> > >> > Signed-off-by: Ming Liu <liu.ming50@gmail.com> >> > --- >> > meta/classes-recipe/kernel.bbclass | 10 +++++----- >> > meta/conf/documentation.conf | 1 + >> > 2 files changed, 6 insertions(+), 5 deletions(-) >> > >> > diff --git a/meta/classes-recipe/kernel.bbclass b/meta/classes-recipe/kernel.bbclass >> > index e634eabd49..3dd139eda9 100644 >> > --- a/meta/classes-recipe/kernel.bbclass >> > +++ b/meta/classes-recipe/kernel.bbclass >> > @@ -616,6 +616,7 @@ do_shared_workdir () { >> > # We don't need to stage anything, not the modules/firmware since those would clash with linux-firmware >> > SYSROOT_DIRS = "" >> > >> > +KERNEL_LOCALVERSION ??= "" >> > KERNEL_CONFIG_COMMAND ?= "oe_runmake_call -C ${S} O=${B} olddefconfig || oe_runmake -C ${S} O=${B} oldnoconfig" >> > >> > python check_oldest_kernel() { >> > @@ -633,11 +634,10 @@ check_oldest_kernel[vardepsexclude] += "OLDEST_KERNEL KERNEL_VERSION" >> > do_configure[prefuncs] += "check_oldest_kernel" >> > >> > kernel_do_configure() { >> > - # fixes extra + in /lib/modules/2.6.37+ >> > - # $ scripts/setlocalversion . => + >> > - # $ make kernelversion => 2.6.37 >> > - # $ make kernelrelease => 2.6.37+ >> >> Those comments are still valid. >> >> > - touch ${B}/.scmversion ${S}/.scmversion >> > + if [ ! -e ${B}/.scmversion -a ! -e ${S}/.scmversion ]; then >> > + echo ${KERNEL_LOCALVERSION} > ${B}/.scmversion >> > + echo ${KERNEL_LOCALVERSION} > ${S}/.scmversion >> > + fi >> >> You've confirmed that the result is the same as the touches previously >> did when that variable isn't set ? >> >> Bruce >> >> > >> > if [ "${S}" != "${B}" ] && [ -f "${S}/.config" ] && [ ! -f "${B}/.config" ]; then >> > mv "${S}/.config" "${B}/.config" >> > diff --git a/meta/conf/documentation.conf b/meta/conf/documentation.conf >> > index a27d7a53c3..66b8e2f24f 100644 >> > --- a/meta/conf/documentation.conf >> > +++ b/meta/conf/documentation.conf >> > @@ -253,6 +253,7 @@ KERNEL_MODULE_PROBECONF[doc] = "Lists kernel modules for which the build system >> > KERNEL_PACKAGE_NAME[doc] = "Name prefix for kernel packages. Defaults to 'kernel'." >> > KERNEL_PATH[doc] = "The location of the kernel sources. This variable is set to the value of the STAGING_KERNEL_DIR within the module class (module.bbclass)." >> > KERNEL_SRC[doc] = "The location of the kernel sources. This variable is set to the value of the STAGING_KERNEL_DIR within the module class (module.bbclass)." >> > +KERNEL_LOCALVERSION[doc] = "Appends a string to the name of the local version of the kernel image." >> > KFEATURE_DESCRIPTION[doc] = "Provides a short description of a configuration fragment. You use this variable in the .scc file that describes a configuration fragment file." >> > KMACHINE[doc] = "The machine as known by the kernel." >> > KTYPE[doc] = "Defines the kernel type to be used in assembling the configuration." >> > -- >> > 2.25.1 >> > >> > >> > -=-=-=-=-=-=-=-=-=-=-=- >> > Links: You receive all messages sent to this group. >> > View/Reply Online (#181939): https://lists.openembedded.org/g/openembedded-core/message/181939 >> > Mute This Topic: https://lists.openembedded.org/mt/99224358/1050810 >> > Group Owner: openembedded-core+owner@lists.openembedded.org >> > Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [bruce.ashfield@gmail.com] >> > -=-=-=-=-=-=-=-=-=-=-=- >> > >> >> >> -- >> - Thou shalt not follow the NULL pointer, for chaos and madness await >> thee at its end >> - "Use the force Harry" - Gandalf, Star Trek II
Hi, Bruce: OK, thanks for the explanation, that makes sense, will add them back in V2. the best, thank you Bruce Ashfield <bruce.ashfield@gmail.com> 於 2023年5月30日 週二 下午10:09寫道: > On Tue, May 30, 2023 at 3:58 PM Ming Liu <liu.ming50@gmail.com> wrote: > > > > Hi, Bruce: > > > > Please see my answers as below: > > > > > You've confirmed that the result is the same as the touches previously > did when that variable isn't set ? > > > > Yes, I have verified that on a qemuarm64 machine. > > > > > Those comments are still valid > > > > I think after we introduce KERNEL_LOCALVERSION, then we generate the > .scmversion on purpose, not as a workaround or fix so those comments not > valid any more? > > > > They are definitely still valid. The files need to exist, or the + > gets added. Other layers and kernel recipes have been touching and > using those files in their own way, the kernel.bbclass was just a > default to ensure if they didn't handle it, that those noise wouldn't > be generated. > > That variable is completely optional, so we are not always generating > it on purpose. Also CONFIG_LOCALVERSION is used by linux-yocto and > other recipes, so the default of empty to ensure that nothing is added > by kbuild is the case, and also makes them valid. > > Bruce > > > > the best, > > thank you > > > > > > Bruce Ashfield <bruce.ashfield@gmail.com> 於 2023年5月30日 週二 下午7:21寫道: > >> > >> On Tue, May 30, 2023 at 1:10 PM Ming Liu <liu.ming50@gmail.com> wrote: > >> > > >> > From: Ming Liu <liu.ming50@gmail.com> > >> > > >> > Just like UBOOT_LOCALVERSION, an end user can set KERNEL_LOCALVERSION > >> > to append a string to the name of the local version of the kernel > >> > image. > >> > > >> > Signed-off-by: Ming Liu <liu.ming50@gmail.com> > >> > --- > >> > meta/classes-recipe/kernel.bbclass | 10 +++++----- > >> > meta/conf/documentation.conf | 1 + > >> > 2 files changed, 6 insertions(+), 5 deletions(-) > >> > > >> > diff --git a/meta/classes-recipe/kernel.bbclass > b/meta/classes-recipe/kernel.bbclass > >> > index e634eabd49..3dd139eda9 100644 > >> > --- a/meta/classes-recipe/kernel.bbclass > >> > +++ b/meta/classes-recipe/kernel.bbclass > >> > @@ -616,6 +616,7 @@ do_shared_workdir () { > >> > # We don't need to stage anything, not the modules/firmware since > those would clash with linux-firmware > >> > SYSROOT_DIRS = "" > >> > > >> > +KERNEL_LOCALVERSION ??= "" > >> > KERNEL_CONFIG_COMMAND ?= "oe_runmake_call -C ${S} O=${B} > olddefconfig || oe_runmake -C ${S} O=${B} oldnoconfig" > >> > > >> > python check_oldest_kernel() { > >> > @@ -633,11 +634,10 @@ check_oldest_kernel[vardepsexclude] += > "OLDEST_KERNEL KERNEL_VERSION" > >> > do_configure[prefuncs] += "check_oldest_kernel" > >> > > >> > kernel_do_configure() { > >> > - # fixes extra + in /lib/modules/2.6.37+ > >> > - # $ scripts/setlocalversion . => + > >> > - # $ make kernelversion => 2.6.37 > >> > - # $ make kernelrelease => 2.6.37+ > >> > >> Those comments are still valid. > >> > >> > - touch ${B}/.scmversion ${S}/.scmversion > >> > + if [ ! -e ${B}/.scmversion -a ! -e ${S}/.scmversion ]; then > >> > + echo ${KERNEL_LOCALVERSION} > ${B}/.scmversion > >> > + echo ${KERNEL_LOCALVERSION} > ${S}/.scmversion > >> > + fi > >> > >> You've confirmed that the result is the same as the touches previously > >> did when that variable isn't set ? > >> > >> Bruce > >> > >> > > >> > if [ "${S}" != "${B}" ] && [ -f "${S}/.config" ] && [ ! -f > "${B}/.config" ]; then > >> > mv "${S}/.config" "${B}/.config" > >> > diff --git a/meta/conf/documentation.conf > b/meta/conf/documentation.conf > >> > index a27d7a53c3..66b8e2f24f 100644 > >> > --- a/meta/conf/documentation.conf > >> > +++ b/meta/conf/documentation.conf > >> > @@ -253,6 +253,7 @@ KERNEL_MODULE_PROBECONF[doc] = "Lists kernel > modules for which the build system > >> > KERNEL_PACKAGE_NAME[doc] = "Name prefix for kernel packages. > Defaults to 'kernel'." > >> > KERNEL_PATH[doc] = "The location of the kernel sources. This > variable is set to the value of the STAGING_KERNEL_DIR within the module > class (module.bbclass)." > >> > KERNEL_SRC[doc] = "The location of the kernel sources. This variable > is set to the value of the STAGING_KERNEL_DIR within the module class > (module.bbclass)." > >> > +KERNEL_LOCALVERSION[doc] = "Appends a string to the name of the > local version of the kernel image." > >> > KFEATURE_DESCRIPTION[doc] = "Provides a short description of a > configuration fragment. You use this variable in the .scc file that > describes a configuration fragment file." > >> > KMACHINE[doc] = "The machine as known by the kernel." > >> > KTYPE[doc] = "Defines the kernel type to be used in assembling the > configuration." > >> > -- > >> > 2.25.1 > >> > > >> > > >> > -=-=-=-=-=-=-=-=-=-=-=- > >> > Links: You receive all messages sent to this group. > >> > View/Reply Online (#181939): > https://lists.openembedded.org/g/openembedded-core/message/181939 > >> > Mute This Topic: https://lists.openembedded.org/mt/99224358/1050810 > >> > Group Owner: openembedded-core+owner@lists.openembedded.org > >> > Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub > [bruce.ashfield@gmail.com] > >> > -=-=-=-=-=-=-=-=-=-=-=- > >> > > >> > >> > >> -- > >> - Thou shalt not follow the NULL pointer, for chaos and madness await > >> thee at its end > >> - "Use the force Harry" - Gandalf, Star Trek II > > > > -- > - Thou shalt not follow the NULL pointer, for chaos and madness await > thee at its end > - "Use the force Harry" - Gandalf, Star Trek II >
Greetings, On 30.05.23 at 19:09, Ming Liu wrote: > From: Ming Liu <liu.ming50@gmail.com> > > Just like UBOOT_LOCALVERSION, an end user can set KERNEL_LOCALVERSION > to append a string to the name of the local version of the kernel > image. How is this supposed to be used? I added the following to my conf/local.conf file: KERNEL_LOCALVERSION = "no-networking" But when I run "uname -a" on the qemux86-64 target, I get: Linux qemux86-64 6.1.33-yocto-standard #1 SMP PREEMPT_DYNAMIC Thu Jun 15 03:08:03 UTC 2023 x86_64 GNU/Linux So, my string is not there! I'm using the latest Poky master branch for testing. Thanks in advance Cheers Michael.
On Wed, Jun 21, 2023 at 12:03 PM Michael Opdenacker via lists.openembedded.org <michael.opdenacker=bootlin.com@lists.openembedded.org> wrote: > > Greetings, > > On 30.05.23 at 19:09, Ming Liu wrote: > > From: Ming Liu <liu.ming50@gmail.com> > > > > Just like UBOOT_LOCALVERSION, an end user can set KERNEL_LOCALVERSION > > to append a string to the name of the local version of the kernel > > image. > > > How is this supposed to be used? > > I added the following to my conf/local.conf file: > KERNEL_LOCALVERSION = "no-networking" > > But when I run "uname -a" on the qemux86-64 target, I get: > Linux qemux86-64 6.1.33-yocto-standard #1 SMP PREEMPT_DYNAMIC Thu Jun 15 > 03:08:03 UTC 2023 x86_64 GNU/Linux > > So, my string is not there! linux-yocto uses a different mechanism for setting this (and will continue to use that existing mechanism). So this would work in absence of a kernel recipe using CONFIG_LOCALVERSION. Bruce > > I'm using the latest Poky master branch for testing. > Thanks in advance > Cheers > Michael. > > -- > Michael Opdenacker, Bootlin > Embedded Linux and Kernel engineering > https://bootlin.com > > > -=-=-=-=-=-=-=-=-=-=-=- > Links: You receive all messages sent to this group. > View/Reply Online (#183186): https://lists.openembedded.org/g/openembedded-core/message/183186 > Mute This Topic: https://lists.openembedded.org/mt/99224358/1050810 > Group Owner: openembedded-core+owner@lists.openembedded.org > Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [bruce.ashfield@gmail.com] > -=-=-=-=-=-=-=-=-=-=-=- >
Hi Bruce, Thanks for your help. On 21.06.23 at 18:17, Bruce Ashfield wrote: > linux-yocto uses a different mechanism for setting this (and will > continue to use that existing mechanism). > > So this would work in absence of a kernel recipe using CONFIG_LOCALVERSION. That's good to know from a documentation perspective :) I'm using "core-image-minimal". Is there another standard image I can build that wouldn't use linux-yocto then (if I understood correctly)? I want to make sure people know how to use this variable, because without further information, I expected that information to be used by linux-yocto. Thanks Michael.
On Wed, Jun 21, 2023 at 12:32 PM Michael Opdenacker <michael.opdenacker@bootlin.com> wrote: > > Hi Bruce, > > Thanks for your help. > > On 21.06.23 at 18:17, Bruce Ashfield wrote: > > linux-yocto uses a different mechanism for setting this (and will > > continue to use that existing mechanism). > > > > So this would work in absence of a kernel recipe using CONFIG_LOCALVERSION. > > > That's good to know from a documentation perspective :) > > I'm using "core-image-minimal". Is there another standard image I can > build that wouldn't use linux-yocto then (if I understood correctly)? There isn't, since all of the core images use the reference kernels in various flavours. > > I want to make sure people know how to use this variable, because > without further information, I expected that information to be used by > linux-yocto. It really isn't a variable that most people will use. Most kernel recipes that have needed to set a local version have already been doing it a different way. Bruce > Thanks > Michael. > > -- > Michael Opdenacker, Bootlin > Embedded Linux and Kernel engineering > https://bootlin.com >
On 21.06.23 at 18:52, Bruce Ashfield wrote: > It really isn't a variable that most people will use. Most kernel > recipes that have needed > to set a local version have already been doing it a different way. So, we wouldn't document this new variable? Would you have details about this different way? It seems that the manual doesn't explain how... (see https://docs.yoctoproject.org/kernel-dev/index.html) Thanks Michael.
On Wed, Jun 21, 2023 at 12:55 PM Michael Opdenacker <michael.opdenacker@bootlin.com> wrote: > > > On 21.06.23 at 18:52, Bruce Ashfield wrote: > > It really isn't a variable that most people will use. Most kernel > > recipes that have needed > > to set a local version have already been doing it a different way. > > > So, we wouldn't document this new variable? > I'd document it simply by saying that if a kernel recipe is not already setting a localversion, this mechanism is available. kernel configurations (defconfigs, fragments, variables) can all set this value, and we wouldn't want that variable to clobber them all. We have plenty of kernel variables and build flows that are not directly tested by kernel/linux-yocto, some of them have other tests, others don't. > Would you have details about this different way? It seems that the > manual doesn't explain how... (see > https://docs.yoctoproject.org/kernel-dev/index.html) linux-yocto has done this for probably the better part of a decade (it was moved to a task in 2017 and existed long before then). do_set_localversion() { cd ${S} if [ ! -z "${LINUX_VERSION_EXTENSION}" ]; then echo "# Global settings from linux recipe" >> ${B}/.config echo "CONFIG_LOCALVERSION="\"${LINUX_VERSION_EXTENSION}\" >> ${B}/.config fi } which is a task. So if you do a deltask on set_localversion, you could test that variable. Bruce > Thanks > Michael. > > -- > Michael Opdenacker, Bootlin > Embedded Linux and Kernel engineering > https://bootlin.com >
diff --git a/meta/classes-recipe/kernel.bbclass b/meta/classes-recipe/kernel.bbclass index e634eabd49..3dd139eda9 100644 --- a/meta/classes-recipe/kernel.bbclass +++ b/meta/classes-recipe/kernel.bbclass @@ -616,6 +616,7 @@ do_shared_workdir () { # We don't need to stage anything, not the modules/firmware since those would clash with linux-firmware SYSROOT_DIRS = "" +KERNEL_LOCALVERSION ??= "" KERNEL_CONFIG_COMMAND ?= "oe_runmake_call -C ${S} O=${B} olddefconfig || oe_runmake -C ${S} O=${B} oldnoconfig" python check_oldest_kernel() { @@ -633,11 +634,10 @@ check_oldest_kernel[vardepsexclude] += "OLDEST_KERNEL KERNEL_VERSION" do_configure[prefuncs] += "check_oldest_kernel" kernel_do_configure() { - # fixes extra + in /lib/modules/2.6.37+ - # $ scripts/setlocalversion . => + - # $ make kernelversion => 2.6.37 - # $ make kernelrelease => 2.6.37+ - touch ${B}/.scmversion ${S}/.scmversion + if [ ! -e ${B}/.scmversion -a ! -e ${S}/.scmversion ]; then + echo ${KERNEL_LOCALVERSION} > ${B}/.scmversion + echo ${KERNEL_LOCALVERSION} > ${S}/.scmversion + fi if [ "${S}" != "${B}" ] && [ -f "${S}/.config" ] && [ ! -f "${B}/.config" ]; then mv "${S}/.config" "${B}/.config" diff --git a/meta/conf/documentation.conf b/meta/conf/documentation.conf index a27d7a53c3..66b8e2f24f 100644 --- a/meta/conf/documentation.conf +++ b/meta/conf/documentation.conf @@ -253,6 +253,7 @@ KERNEL_MODULE_PROBECONF[doc] = "Lists kernel modules for which the build system KERNEL_PACKAGE_NAME[doc] = "Name prefix for kernel packages. Defaults to 'kernel'." KERNEL_PATH[doc] = "The location of the kernel sources. This variable is set to the value of the STAGING_KERNEL_DIR within the module class (module.bbclass)." KERNEL_SRC[doc] = "The location of the kernel sources. This variable is set to the value of the STAGING_KERNEL_DIR within the module class (module.bbclass)." +KERNEL_LOCALVERSION[doc] = "Appends a string to the name of the local version of the kernel image." KFEATURE_DESCRIPTION[doc] = "Provides a short description of a configuration fragment. You use this variable in the .scc file that describes a configuration fragment file." KMACHINE[doc] = "The machine as known by the kernel." KTYPE[doc] = "Defines the kernel type to be used in assembling the configuration."