Patchwork nss: avoid to use the hardcode kernel version

login
register
mail settings
Submitter Kang Kai
Date March 31, 2014, 2:20 p.m.
Message ID <1396275649-32352-2-git-send-email-kai.kang@windriver.com>
Download mbox | patch
Permalink /patch/69689/
State New
Headers show

Comments

Kang Kai - March 31, 2014, 2:20 p.m.
From: Roy Li <rongqing.li@windriver.com>

When native package is built, use the uname to return the kernel version.

When target is built, read kernel version from ${STAGING_KERNEL_DIR}/kernel-abiversion
to avoid to use the hardcode kernel version.

Signed-off-by: Roy Li <rongqing.li@windriver.com>
Signed-off-by: Kai Kang <kai.kang@windriver.com>
---
 meta/recipes-support/nss/nss.inc | 15 +++++++++++++--
 1 file changed, 13 insertions(+), 2 deletions(-)
Otavio Salvador - March 31, 2014, 2:33 p.m.
On Mon, Mar 31, 2014 at 11:20 AM, Kai Kang <kai.kang@windriver.com> wrote:
> From: Roy Li <rongqing.li@windriver.com>
>
> When native package is built, use the uname to return the kernel version.
>
> When target is built, read kernel version from ${STAGING_KERNEL_DIR}/kernel-abiversion
> to avoid to use the hardcode kernel version.
>
> Signed-off-by: Roy Li <rongqing.li@windriver.com>
> Signed-off-by: Kai Kang <kai.kang@windriver.com>

This makes it depends on virtual/kernel and it vary from one machine to another.

Am I missing anything here?
Martin Jansa - March 31, 2014, 3:10 p.m.
On Mon, Mar 31, 2014 at 10:20:49PM +0800, Kai Kang wrote:
> From: Roy Li <rongqing.li@windriver.com>
> 
> When native package is built, use the uname to return the kernel version.
> 
> When target is built, read kernel version from ${STAGING_KERNEL_DIR}/kernel-abiversion
> to avoid to use the hardcode kernel version.

Doesn't it make nss MACHINE_ARCH like most virtual/kernel providers are?

> Signed-off-by: Roy Li <rongqing.li@windriver.com>
> Signed-off-by: Kai Kang <kai.kang@windriver.com>
> ---
>  meta/recipes-support/nss/nss.inc | 15 +++++++++++++--
>  1 file changed, 13 insertions(+), 2 deletions(-)
> 
> diff --git a/meta/recipes-support/nss/nss.inc b/meta/recipes-support/nss/nss.inc
> index 404decc..f24da68 100644
> --- a/meta/recipes-support/nss/nss.inc
> +++ b/meta/recipes-support/nss/nss.inc
> @@ -26,6 +26,7 @@ SRC_URI_append_class-target = "\
>  inherit siteinfo
>  PR = "r0"
>  DEPENDS = "sqlite3 nspr zlib nss-native"
> +DEPENDS_append_class-target += "virtual/kernel"
>  DEPENDS_class-native = "sqlite3-native nspr-native zlib-native"
>  RDEPENDS_${PN} = "perl"
>  
> @@ -37,12 +38,24 @@ TARGET_CC_ARCH += "${LDFLAGS}"
>  do_compile_prepend_class-native() {
>      export NSPR_INCLUDE_DIR=${STAGING_INCDIR_NATIVE}
>      export NSPR_LIB_DIR=${STAGING_LIBDIR_NATIVE}
> +    export OS_RELEASE=`uname -r`
>  }
>  
>  do_compile_prepend_class-nativesdk() {
>      export LDFLAGS=""
>  }
>  
> +do_compile_prepend_class-target() {
> +    export OS_RELEASE=`cat ${STAGING_KERNEL_DIR}/kernel-abiversion|sed 's/-.*//'`
> +}
> +
> +do_install_prepend_class-native() {
> +    export OS_RELEASE=`uname -r`
> +}
> +
> +do_install_prepend_class-target() {
> +    export OS_RELEASE=`cat ${STAGING_KERNEL_DIR}/kernel-abiversion|sed 's/-.*//'`
> +}
>  do_compile() {
>      export CROSS_COMPILE=1
>      export NATIVE_CC="gcc"
> @@ -57,7 +70,6 @@ do_compile() {
>      export NSS_USE_SYSTEM_SQLITE=1
>      export NSS_ENABLE_ECC=1
>  
> -    export OS_RELEASE=3.4
>      export OS_TARGET=Linux
>      export OS_ARCH=Linux
>  
> @@ -97,7 +109,6 @@ do_install() {
>      export NSS_USE_SYSTEM_SQLITE=1
>      export NSS_ENABLE_ECC=1
>  
> -    export OS_RELEASE=3.4
>      export OS_TARGET=Linux
>      export OS_ARCH=Linux
>  
> -- 
> 1.8.1.2
> 
> -- 
> _______________________________________________
> Openembedded-core mailing list
> Openembedded-core@lists.openembedded.org
> http://lists.openembedded.org/mailman/listinfo/openembedded-core
Richard Purdie - March 31, 2014, 4:32 p.m.
On Mon, 2014-03-31 at 17:10 +0200, Martin Jansa wrote:
> On Mon, Mar 31, 2014 at 10:20:49PM +0800, Kai Kang wrote:
> > From: Roy Li <rongqing.li@windriver.com>
> > 
> > When native package is built, use the uname to return the kernel version.
> > 
> > When target is built, read kernel version from ${STAGING_KERNEL_DIR}/kernel-abiversion
> > to avoid to use the hardcode kernel version.
> 
> Doesn't it make nss MACHINE_ARCH like most virtual/kernel providers are?

Agreed. I rejected this patch a while ago due to this and I'll reject it
again.

Cheers,

Richard
Otavio Salvador - March 31, 2014, 8:49 p.m.
On Mon, Mar 31, 2014 at 12:10 PM, Martin Jansa <martin.jansa@gmail.com> wrote:
> On Mon, Mar 31, 2014 at 10:20:49PM +0800, Kai Kang wrote:
>> From: Roy Li <rongqing.li@windriver.com>
>>
>> When native package is built, use the uname to return the kernel version.
>>
>> When target is built, read kernel version from ${STAGING_KERNEL_DIR}/kernel-abiversion
>> to avoid to use the hardcode kernel version.
>
> Doesn't it make nss MACHINE_ARCH like most virtual/kernel providers are?

Yes.
Kang Kai - April 1, 2014, 1:40 a.m.
On 2014?04?01? 00:32, Richard Purdie wrote:
> On Mon, 2014-03-31 at 17:10 +0200, Martin Jansa wrote:
>> On Mon, Mar 31, 2014 at 10:20:49PM +0800, Kai Kang wrote:
>>> From: Roy Li <rongqing.li@windriver.com>
>>>
>>> When native package is built, use the uname to return the kernel version.
>>>
>>> When target is built, read kernel version from ${STAGING_KERNEL_DIR}/kernel-abiversion
>>> to avoid to use the hardcode kernel version.
>> Doesn't it make nss MACHINE_ARCH like most virtual/kernel providers are?
> Agreed. I rejected this patch a while ago due to this and I'll reject it
> again.

Got it. Thanks for all of your comments.

--Kai

>
> Cheers,
>
> Richard
>
>
>
Kang Kai - April 2, 2014, 2:35 a.m.
On 2014?03?31? 22:20, Kai Kang wrote:
> From: Roy Li <rongqing.li@windriver.com>
>
> When native package is built, use the uname to return the kernel version.
>
> When target is built, read kernel version from ${STAGING_KERNEL_DIR}/kernel-abiversion
> to avoid to use the hardcode kernel version.
>
> Signed-off-by: Roy Li <rongqing.li@windriver.com>
> Signed-off-by: Kai Kang <kai.kang@windriver.com>
> ---
>   meta/recipes-support/nss/nss.inc | 15 +++++++++++++--
>   1 file changed, 13 insertions(+), 2 deletions(-)
>
> diff --git a/meta/recipes-support/nss/nss.inc b/meta/recipes-support/nss/nss.inc
> index 404decc..f24da68 100644
> --- a/meta/recipes-support/nss/nss.inc
> +++ b/meta/recipes-support/nss/nss.inc
> @@ -26,6 +26,7 @@ SRC_URI_append_class-target = "\
>   inherit siteinfo
>   PR = "r0"
>   DEPENDS = "sqlite3 nspr zlib nss-native"
> +DEPENDS_append_class-target += "virtual/kernel"
>   DEPENDS_class-native = "sqlite3-native nspr-native zlib-native"
>   RDEPENDS_${PN} = "perl"
>   
> @@ -37,12 +38,24 @@ TARGET_CC_ARCH += "${LDFLAGS}"
>   do_compile_prepend_class-native() {
>       export NSPR_INCLUDE_DIR=${STAGING_INCDIR_NATIVE}
>       export NSPR_LIB_DIR=${STAGING_LIBDIR_NATIVE}
> +    export OS_RELEASE=`uname -r`
>   }
>   
>   do_compile_prepend_class-nativesdk() {
>       export LDFLAGS=""
>   }
>   
> +do_compile_prepend_class-target() {
> +    export OS_RELEASE=`cat ${STAGING_KERNEL_DIR}/kernel-abiversion|sed 's/-.*//'`
> +}
> +
> +do_install_prepend_class-native() {
> +    export OS_RELEASE=`uname -r`
> +}
> +
> +do_install_prepend_class-target() {
> +    export OS_RELEASE=`cat ${STAGING_KERNEL_DIR}/kernel-abiversion|sed 's/-.*//'`
> +}
>   do_compile() {
>       export CROSS_COMPILE=1
>       export NATIVE_CC="gcc"
> @@ -57,7 +70,6 @@ do_compile() {
>       export NSS_USE_SYSTEM_SQLITE=1
>       export NSS_ENABLE_ECC=1
>   
> -    export OS_RELEASE=3.4

How about use var LINUXLIBCVERSION:

export OS_RELEASE="${@d.getVar('LINUXLIBCVERSION', True)}"

it should be the same value with kernel version, right?

--Kai


>       export OS_TARGET=Linux
>       export OS_ARCH=Linux
>   
> @@ -97,7 +109,6 @@ do_install() {
>       export NSS_USE_SYSTEM_SQLITE=1
>       export NSS_ENABLE_ECC=1
>   
> -    export OS_RELEASE=3.4
>       export OS_TARGET=Linux
>       export OS_ARCH=Linux
>
Khem Raj - April 2, 2014, 3:35 a.m.
On Tuesday, April 1, 2014, Kang Kai <Kai.Kang@windriver.com> wrote:

> On 2014?03?31? 22:20, Kai Kang wrote:
>
>> From: Roy Li <rongqing.li@windriver.com>
>>
>> When native package is built, use the uname to return the kernel version.
>>
>> When target is built, read kernel version from
>> ${STAGING_KERNEL_DIR}/kernel-abiversion
>> to avoid to use the hardcode kernel version.
>>
>> Signed-off-by: Roy Li <rongqing.li@windriver.com>
>> Signed-off-by: Kai Kang <kai.kang@windriver.com>
>> ---
>>   meta/recipes-support/nss/nss.inc | 15 +++++++++++++--
>>   1 file changed, 13 insertions(+), 2 deletions(-)
>>
>> diff --git a/meta/recipes-support/nss/nss.inc b/meta/recipes-support/nss/
>> nss.inc
>> index 404decc..f24da68 100644
>> --- a/meta/recipes-support/nss/nss.inc
>> +++ b/meta/recipes-support/nss/nss.inc
>> @@ -26,6 +26,7 @@ SRC_URI_append_class-target = "\
>>   inherit siteinfo
>>   PR = "r0"
>>   DEPENDS = "sqlite3 nspr zlib nss-native"
>> +DEPENDS_append_class-target += "virtual/kernel"
>>   DEPENDS_class-native = "sqlite3-native nspr-native zlib-native"
>>   RDEPENDS_${PN} = "perl"
>>   @@ -37,12 +38,24 @@ TARGET_CC_ARCH += "${LDFLAGS}"
>>   do_compile_prepend_class-native() {
>>       export NSPR_INCLUDE_DIR=${STAGING_INCDIR_NATIVE}
>>       export NSPR_LIB_DIR=${STAGING_LIBDIR_NATIVE}
>> +    export OS_RELEASE=`uname -r`
>>   }
>>     do_compile_prepend_class-nativesdk() {
>>       export LDFLAGS=""
>>   }
>>   +do_compile_prepend_class-target() {
>> +    export OS_RELEASE=`cat ${STAGING_KERNEL_DIR}/kernel-abiversion|sed
>> 's/-.*//'`
>> +}
>> +
>> +do_install_prepend_class-native() {
>> +    export OS_RELEASE=`uname -r`
>> +}
>> +
>> +do_install_prepend_class-target() {
>> +    export OS_RELEASE=`cat ${STAGING_KERNEL_DIR}/kernel-abiversion|sed
>> 's/-.*//'`
>> +}
>>   do_compile() {
>>       export CROSS_COMPILE=1
>>       export NATIVE_CC="gcc"
>> @@ -57,7 +70,6 @@ do_compile() {
>>       export NSS_USE_SYSTEM_SQLITE=1
>>       export NSS_ENABLE_ECC=1
>>   -    export OS_RELEASE=3.4
>>
>
> How about use var LINUXLIBCVERSION:
>
> export OS_RELEASE="${@d.getVar('LINUXLIBCVERSION', True)}"
>
> it should be the same value with kernel version, right?


No, that's the kernel headers version, if the dependency is on kernel
proper then it won't be the right thing to do since many bsps use different
kernel


>
> --Kai
>
>
>        export OS_TARGET=Linux
>>       export OS_ARCH=Linux
>>   @@ -97,7 +109,6 @@ do_install() {
>>       export NSS_USE_SYSTEM_SQLITE=1
>>       export NSS_ENABLE_ECC=1
>>   -    export OS_RELEASE=3.4
>>       export OS_TARGET=Linux
>>       export OS_ARCH=Linux
>>
>>
>
>
> --
> Regards,
> Neil | Kai Kang
>
> --
> _______________________________________________
> Openembedded-core mailing list
> Openembedded-core@lists.openembedded.org
> http://lists.openembedded.org/mailman/listinfo/openembedded-core
>
Richard Purdie - April 3, 2014, noon
On Wed, 2014-04-02 at 10:35 +0800, Kang Kai wrote:
> On 2014?03?31? 22:20, Kai Kang wrote:
> > From: Roy Li <rongqing.li@windriver.com>
> >
> > When native package is built, use the uname to return the kernel version.
> >
> > When target is built, read kernel version from ${STAGING_KERNEL_DIR}/kernel-abiversion
> > to avoid to use the hardcode kernel version.
> >
> > Signed-off-by: Roy Li <rongqing.li@windriver.com>
> > Signed-off-by: Kai Kang <kai.kang@windriver.com>
> > ---
> >   meta/recipes-support/nss/nss.inc | 15 +++++++++++++--
> >   1 file changed, 13 insertions(+), 2 deletions(-)
> >
> > diff --git a/meta/recipes-support/nss/nss.inc b/meta/recipes-support/nss/nss.inc
> > index 404decc..f24da68 100644
> > --- a/meta/recipes-support/nss/nss.inc
> > +++ b/meta/recipes-support/nss/nss.inc
> > @@ -26,6 +26,7 @@ SRC_URI_append_class-target = "\
> >   inherit siteinfo
> >   PR = "r0"
> >   DEPENDS = "sqlite3 nspr zlib nss-native"
> > +DEPENDS_append_class-target += "virtual/kernel"
> >   DEPENDS_class-native = "sqlite3-native nspr-native zlib-native"
> >   RDEPENDS_${PN} = "perl"
> >   
> > @@ -37,12 +38,24 @@ TARGET_CC_ARCH += "${LDFLAGS}"
> >   do_compile_prepend_class-native() {
> >       export NSPR_INCLUDE_DIR=${STAGING_INCDIR_NATIVE}
> >       export NSPR_LIB_DIR=${STAGING_LIBDIR_NATIVE}
> > +    export OS_RELEASE=`uname -r`
> >   }
> >   
> >   do_compile_prepend_class-nativesdk() {
> >       export LDFLAGS=""
> >   }
> >   
> > +do_compile_prepend_class-target() {
> > +    export OS_RELEASE=`cat ${STAGING_KERNEL_DIR}/kernel-abiversion|sed 's/-.*//'`
> > +}
> > +
> > +do_install_prepend_class-native() {
> > +    export OS_RELEASE=`uname -r`
> > +}
> > +
> > +do_install_prepend_class-target() {
> > +    export OS_RELEASE=`cat ${STAGING_KERNEL_DIR}/kernel-abiversion|sed 's/-.*//'`
> > +}
> >   do_compile() {
> >       export CROSS_COMPILE=1
> >       export NATIVE_CC="gcc"
> > @@ -57,7 +70,6 @@ do_compile() {
> >       export NSS_USE_SYSTEM_SQLITE=1
> >       export NSS_ENABLE_ECC=1
> >   
> > -    export OS_RELEASE=3.4
> 
> How about use var LINUXLIBCVERSION:
> 
> export OS_RELEASE="${@d.getVar('LINUXLIBCVERSION', True)}"
> 
> it should be the same value with kernel version, right?

As others have replied, that is usually much more recent than the oldest
kernel we support. What does nss do with this value? Is it about the
header versions? Would something run on an older kernel with a newer
value for OS_RELEASE?

We also have the OLDEST_KERNEL variable (currently at 2.6.16) FWIW.

Cheers,

Richard
Paul Eggleton - April 3, 2014, 1:13 p.m.
On Thursday 03 April 2014 13:00:09 Richard Purdie wrote:
> On Wed, 2014-04-02 at 10:35 +0800, Kang Kai wrote:
> > On 2014?03?31? 22:20, Kai Kang wrote:
> > > From: Roy Li <rongqing.li@windriver.com>
> > > 
> > > When native package is built, use the uname to return the kernel
> > > version.
> > > 
> > > When target is built, read kernel version from
> > > ${STAGING_KERNEL_DIR}/kernel-abiversion to avoid to use the hardcode
> > > kernel version.
> > > 
> > > Signed-off-by: Roy Li <rongqing.li@windriver.com>
> > > Signed-off-by: Kai Kang <kai.kang@windriver.com>
> > > ---
> > > 
> > >   meta/recipes-support/nss/nss.inc | 15 +++++++++++++--
> > >   1 file changed, 13 insertions(+), 2 deletions(-)
> > > 
> > > diff --git a/meta/recipes-support/nss/nss.inc
> > > b/meta/recipes-support/nss/nss.inc index 404decc..f24da68 100644
> > > --- a/meta/recipes-support/nss/nss.inc
> > > +++ b/meta/recipes-support/nss/nss.inc
> > > @@ -26,6 +26,7 @@ SRC_URI_append_class-target = "\
> > > 
> > >   inherit siteinfo
> > >   PR = "r0"
> > >   DEPENDS = "sqlite3 nspr zlib nss-native"
> > > 
> > > +DEPENDS_append_class-target += "virtual/kernel"
> > > 
> > >   DEPENDS_class-native = "sqlite3-native nspr-native zlib-native"
> > >   RDEPENDS_${PN} = "perl"
> > > 
> > > @@ -37,12 +38,24 @@ TARGET_CC_ARCH += "${LDFLAGS}"
> > > 
> > >   do_compile_prepend_class-native() {
> > >   
> > >       export NSPR_INCLUDE_DIR=${STAGING_INCDIR_NATIVE}
> > >       export NSPR_LIB_DIR=${STAGING_LIBDIR_NATIVE}
> > > 
> > > +    export OS_RELEASE=`uname -r`
> > > 
> > >   }
> > >   
> > >   do_compile_prepend_class-nativesdk() {
> > >   
> > >       export LDFLAGS=""
> > >   
> > >   }
> > > 
> > > +do_compile_prepend_class-target() {
> > > +    export OS_RELEASE=`cat ${STAGING_KERNEL_DIR}/kernel-abiversion|sed
> > > 's/-.*//'` +}
> > > +
> > > +do_install_prepend_class-native() {
> > > +    export OS_RELEASE=`uname -r`
> > > +}
> > > +
> > > +do_install_prepend_class-target() {
> > > +    export OS_RELEASE=`cat ${STAGING_KERNEL_DIR}/kernel-abiversion|sed
> > > 's/-.*//'` +}
> > > 
> > >   do_compile() {
> > >   
> > >       export CROSS_COMPILE=1
> > >       export NATIVE_CC="gcc"
> > > 
> > > @@ -57,7 +70,6 @@ do_compile() {
> > > 
> > >       export NSS_USE_SYSTEM_SQLITE=1
> > >       export NSS_ENABLE_ECC=1
> > > 
> > > -    export OS_RELEASE=3.4
> > 
> > How about use var LINUXLIBCVERSION:
> > 
> > export OS_RELEASE="${@d.getVar('LINUXLIBCVERSION', True)}"
> > 
> > it should be the same value with kernel version, right?
> 
> As others have replied, that is usually much more recent than the oldest
> kernel we support. What does nss do with this value? Is it about the
> header versions? Would something run on an older kernel with a newer
> value for OS_RELEASE?
> 
> We also have the OLDEST_KERNEL variable (currently at 2.6.16) FWIW.

Incidentally, I think maybe for 1.7 it's time we bumped OLDEST_KERNEL. What a 
sensible minimum would be though I'm not sure. The minimum version for udev 
182 would be one choice, but I believe there are people still using older 
kernels even than that.

Cheers,
Paul
Phil Blundell - April 3, 2014, 1:49 p.m.
On Thu, 2014-04-03 at 14:13 +0100, Paul Eggleton wrote:
> Incidentally, I think maybe for 1.7 it's time we bumped OLDEST_KERNEL. What a 
> sensible minimum would be though I'm not sure. The minimum version for udev 
> 182 would be one choice, but I believe there are people still using older 
> kernels even than that.

What would be the advantages of bumping it up?

p.
Paul Eggleton - April 3, 2014, 1:53 p.m.
On Thursday 03 April 2014 14:49:05 Phil Blundell wrote:
> On Thu, 2014-04-03 at 14:13 +0100, Paul Eggleton wrote:
> > Incidentally, I think maybe for 1.7 it's time we bumped OLDEST_KERNEL.
> > What a sensible minimum would be though I'm not sure. The minimum version
> > for udev 182 would be one choice, but I believe there are people still
> > using older kernels even than that.
> 
> What would be the advantages of bumping it up?

I could be wrong, but my understanding was that EGLIBC functionality specific 
to a particular kernel version or later is enabled / disabled based upon this 
value.

Cheers,
Paul
Kang Kai - April 4, 2014, 2:53 a.m.
On 2014?04?03? 20:00, Richard Purdie wrote:
> On Wed, 2014-04-02 at 10:35 +0800, Kang Kai wrote:
>> On 2014?03?31? 22:20, Kai Kang wrote:
>>> From: Roy Li <rongqing.li@windriver.com>
>>>
>>> When native package is built, use the uname to return the kernel version.
>>>
>>> When target is built, read kernel version from ${STAGING_KERNEL_DIR}/kernel-abiversion
>>> to avoid to use the hardcode kernel version.
>>>
>>> Signed-off-by: Roy Li <rongqing.li@windriver.com>
>>> Signed-off-by: Kai Kang <kai.kang@windriver.com>
>>> ---
>>>    meta/recipes-support/nss/nss.inc | 15 +++++++++++++--
>>>    1 file changed, 13 insertions(+), 2 deletions(-)
>>>
>>> diff --git a/meta/recipes-support/nss/nss.inc b/meta/recipes-support/nss/nss.inc
>>> index 404decc..f24da68 100644
>>> --- a/meta/recipes-support/nss/nss.inc
>>> +++ b/meta/recipes-support/nss/nss.inc
>>> @@ -26,6 +26,7 @@ SRC_URI_append_class-target = "\
>>>    inherit siteinfo
>>>    PR = "r0"
>>>    DEPENDS = "sqlite3 nspr zlib nss-native"
>>> +DEPENDS_append_class-target += "virtual/kernel"
>>>    DEPENDS_class-native = "sqlite3-native nspr-native zlib-native"
>>>    RDEPENDS_${PN} = "perl"
>>>    
>>> @@ -37,12 +38,24 @@ TARGET_CC_ARCH += "${LDFLAGS}"
>>>    do_compile_prepend_class-native() {
>>>        export NSPR_INCLUDE_DIR=${STAGING_INCDIR_NATIVE}
>>>        export NSPR_LIB_DIR=${STAGING_LIBDIR_NATIVE}
>>> +    export OS_RELEASE=`uname -r`
>>>    }
>>>    
>>>    do_compile_prepend_class-nativesdk() {
>>>        export LDFLAGS=""
>>>    }
>>>    
>>> +do_compile_prepend_class-target() {
>>> +    export OS_RELEASE=`cat ${STAGING_KERNEL_DIR}/kernel-abiversion|sed 's/-.*//'`
>>> +}
>>> +
>>> +do_install_prepend_class-native() {
>>> +    export OS_RELEASE=`uname -r`
>>> +}
>>> +
>>> +do_install_prepend_class-target() {
>>> +    export OS_RELEASE=`cat ${STAGING_KERNEL_DIR}/kernel-abiversion|sed 's/-.*//'`
>>> +}
>>>    do_compile() {
>>>        export CROSS_COMPILE=1
>>>        export NATIVE_CC="gcc"
>>> @@ -57,7 +70,6 @@ do_compile() {
>>>        export NSS_USE_SYSTEM_SQLITE=1
>>>        export NSS_ENABLE_ECC=1
>>>    
>>> -    export OS_RELEASE=3.4
>> How about use var LINUXLIBCVERSION:
>>
>> export OS_RELEASE="${@d.getVar('LINUXLIBCVERSION', True)}"
>>
>> it should be the same value with kernel version, right?
> As others have replied, that is usually much more recent than the oldest
> kernel we support. What does nss do with this value? Is it about the
> header versions? Would something run on an older kernel with a newer
> value for OS_RELEASE?

I misunderstanding the usage of LINUXLIBCVERSION. What nss needs is just 
current kernel version to export for build:

-    export OS_RELEASE=3.4

Currently it is a fix string, and I think it is a problem.

Regards,
Kai


>
> We also have the OLDEST_KERNEL variable (currently at 2.6.16) FWIW.
>
> Cheers,
>
> Richard
>
>
>

Patch

diff --git a/meta/recipes-support/nss/nss.inc b/meta/recipes-support/nss/nss.inc
index 404decc..f24da68 100644
--- a/meta/recipes-support/nss/nss.inc
+++ b/meta/recipes-support/nss/nss.inc
@@ -26,6 +26,7 @@  SRC_URI_append_class-target = "\
 inherit siteinfo
 PR = "r0"
 DEPENDS = "sqlite3 nspr zlib nss-native"
+DEPENDS_append_class-target += "virtual/kernel"
 DEPENDS_class-native = "sqlite3-native nspr-native zlib-native"
 RDEPENDS_${PN} = "perl"
 
@@ -37,12 +38,24 @@  TARGET_CC_ARCH += "${LDFLAGS}"
 do_compile_prepend_class-native() {
     export NSPR_INCLUDE_DIR=${STAGING_INCDIR_NATIVE}
     export NSPR_LIB_DIR=${STAGING_LIBDIR_NATIVE}
+    export OS_RELEASE=`uname -r`
 }
 
 do_compile_prepend_class-nativesdk() {
     export LDFLAGS=""
 }
 
+do_compile_prepend_class-target() {
+    export OS_RELEASE=`cat ${STAGING_KERNEL_DIR}/kernel-abiversion|sed 's/-.*//'`
+}
+
+do_install_prepend_class-native() {
+    export OS_RELEASE=`uname -r`
+}
+
+do_install_prepend_class-target() {
+    export OS_RELEASE=`cat ${STAGING_KERNEL_DIR}/kernel-abiversion|sed 's/-.*//'`
+}
 do_compile() {
     export CROSS_COMPILE=1
     export NATIVE_CC="gcc"
@@ -57,7 +70,6 @@  do_compile() {
     export NSS_USE_SYSTEM_SQLITE=1
     export NSS_ENABLE_ECC=1
 
-    export OS_RELEASE=3.4
     export OS_TARGET=Linux
     export OS_ARCH=Linux
 
@@ -97,7 +109,6 @@  do_install() {
     export NSS_USE_SYSTEM_SQLITE=1
     export NSS_ENABLE_ECC=1
 
-    export OS_RELEASE=3.4
     export OS_TARGET=Linux
     export OS_ARCH=Linux