Darcy, thanks for the detailed reply!

Do you remember how you were able to get it to compile in the first place?  I end up with this error:

./kconf/conf: 1: ./kconf/conf: Syntax error: word unexpected (expecting ")")

..because backports needs to compile conf for x86_64, but instead compiles it for ARM.  Once that step is done, it needs to compile the rest of the project for ARM, but this error stops it.

I think I could work around the sysroot arm-wrestle because of the way our project is built, but haven't made it to that point yet.

Here's the bb file I'm using:

---------------------------

include backports.inc

SRCBRANCH = "linux-4.2.y"
LOCALVERSION = "v4.2.6-1-0-g90118c7"
SRCREV = "90118c7656bb55243620c9dc9cc3f12582b1807f"

DEPENDS += "linux-myproject"

do_configure_prepend() {
export CROSS_COMPILE=${TARGET_PREFIX}
export ARCH=${TARGET_ARCH}
export KLIB_BUILD=${STAGING_KERNEL_DIR}
export KLIB=${STAGING_DIR_TARGET}
make
}

-----------------------------------

On Wed, 2017-10-18 at 22:53 +0000, Darcy Watkins wrote:

I tried building backports under Yocto a few years back using Yocto daisy branch with kernel 3.4 for x86 and kernel 3.12 for ARM.  After a fair amount of pain I was able to get it to sort of work.  The problem was mainly a sysroot arm-wrestle between kernel and backports because they both generate the same kernel module packages.  It was a last-one-wins arm-wrestle.  It sort of worked OK with daisy branch, but newer yocto versions have stricter management of sysroots and staging areas.

 

I think what we need is some sort of virtual provider or alternatives scheme to make this work properly.

 

You can also run into problems related to exports to other out-of-tree modules but IIRC, it would only affect an out-of-tree module with an incompatible license.

 

I was able to run a few circa kernel 3.18 backports experimentally on a kernel 3.4 and a kernel 3.12.  Eventually we just upgraded the kernel.  Another project I know of used backports to update their kernel source and then created a recipe to build kernel from that source.

 

The notes/questions I had in the end were:

 

 

I haven’t touched this in years, but perhaps it may help a bit.

 

I think your best bet for short term is to use it to patch the kernel and then capture the changes as a patchset to add to a kernel recipe.

 

 

 

Regards,

 

Darcy

 

Darcy Watkins ::  Senior Staff Engineer, Firmware

 

SIERRA WIRELESS

Direct  +1 604 233 7989   ::  Fax  +1 604 231 1109  ::  Main  +1 604 231 1100

13811 Wireless Way  :: Richmond, BC Canada V6V 3A4

[P2]

dwatkins@sierrawireless.com :: www.sierrawireless.com

 

From: yocto-bounces@yoctoproject.org [mailto:yocto-bounces@yoctoproject.org] On Behalf Of Marlon Smith
Sent: October-18-17 3:14 PM
To: yocto@yoctoproject.org
Subject: [yocto] Building kernel backports for ARM with Yocto

 

Hi everyone,

 

I'm trying to build the Linux backports project to get updated wifi drivers on an older kernel.  The problem is that when building backports, it first builds several tools that need to be run natively before cross-compiling the rest of the project.

 

I know how to write a bitbake recipe to compile natively, and how to write one to build for the target, but I can't figure out how to combine the two.  The backports project has steps for LTIB:

 

 %Build
 export PATH=$UNSPOOF_PATH
 
 make menuconfig prefix=%{_prefix} \
   CROSS_COMPILE=${TOOLCHAIN_PATH}/bin/${TOOLCHAIN_PREFIX} \
   ARCH=$LINTARCH KLIB=${TOP}/rootfs/lib/modules/%{kversion} \
   KLIB_BUILD=${TOP}/rpm/BUILD/linux
 
 export PATH=$SPOOF_PATH
 
 make prefix=%{_prefix} \
   CROSS_COMPILE=${TOOLCHAIN_PATH}/bin/${TOOLCHAIN_PREFIX} \
   ARCH=$LINTARCH KLIB=${TOP}/rootfs/lib/modules/%{kversion} \
   KLIB_BUILD=${TOP}/rpm/BUILD/linux
 
I believe what I need is an equivalent to the line export PATH=$UNSPOOF_PATH but I can't find anything in the Yocto documentation or mailing lists that would be equivalent to that.
 
Any help would be much appreciated!
 
Thanks
 
Marlon