[OE-core] SDK extract errors on master

Jack Mitchell ml at communistcode.co.uk
Mon Jul 6 16:07:23 UTC 2015


On 06/07/15 16:56, Jack Mitchell wrote:
> On 06/07/15 13:30, Jack Mitchell wrote:
>> On 06/07/15 12:35, Jack Mitchell wrote:
>>> On 03/07/15 15:56, Jack Mitchell wrote:
>>>> Built an SDK today on 7eb0abc5f4d971d9a511c93cfb2eb52b72e6f228 and 
>>>> when I tried to install it I got the following error:
>>>>
>>>> Setting it up...ls: cannot access 
>>>> /home/jack/Work/build/openembedded/sdk/1/x86_64/environment-setup-*: No 
>>>> such file or directory
>>>>
>>>> I have been messing about with the SDK install path and at one 
>>>> point it did spew out a load of files installed vs shipped warnings 
>>>> I assume due to a change of path and it getting upset about it, but 
>>>> since then I deleted the tmp directory and rebuilt a new SDK 
>>>> without warnings. However, both acted in the same way.
>>>>
>>>> The SDK then sits without installing, seemingly stuck on: grep 
>>>> OECORE_NATIVE_SYSROOT, which I assume means it's looking for the 
>>>> (non-existant) nvironment file.
>>>>
>>>> Any clues? Is this broken for anyone else?
>>>>
>>>> Cheers,
>>>> Jack.
>>>
>>> Ok, I figured out how I broke it; I used a relative path in SDKPATH. 
>>> i.e.
>>>
>>> SDKPATH=/path/to/sdk/../rel-sdk
>>>
>>> So, first off; should this be supported? Secondly, the use-case I 
>>> was trying to get at was to position an SDK relative to the build 
>>> dir, i.e.
>>>
>>> SDKPATH=${TOPDIR}/../sdk
>>>
>>> Is there a better way to do this. I guess this problem could be 
>>> solved somewhere in an SDK class by changing the relative path to an 
>>> absolute path. Ideas?
>>>
>>> Cheers,
>>> Jack.
>>
>> I found an ugly work-around but it would be nice for this to be 
>> supported in the future, or at least error on a relative path.
>>
>> SDKPATH := "${@os.path.abspath(d.getVar('TOPDIR', 
>> True)+"/../sdk/"+d.getVar('SDK_VERSION', 
>> True)+"/"+d.getVar('SDK_ARCH', True))}"
>>
>> Cheers,
>
> The saga continues... so, using a relative path is what causes bitbake 
> to spew the 'installed vs shipped' warnings; which I thought were the 
> root cause of the SDK failing to install, but apparently not. I'm 
> appending a custom recipe like this:
>
> TOOLCHAIN_HOST_TASK += "nativesdk-fastboot"
>
> Which seems to be the root cause of the SDK failing to install. I have 
> grepped the output of bitbake -e image -c populate_sdk and I get:
>
> TOOLCHAIN_HOST_TASK="nativesdk-packagegroup-sdk-host 
> packagegroup-cross-canadian-diffusion nativesdk-fastboot"
>
> Which looks perfectly reasonable to me; the fastboot recipe also 
> builds without issue and the resulting package looks sane. So, why is 
> this breaking the SDK and causing other packages not to be installed, 
> it looks specifically like it nullifies the 
> packagegroup-cross-canadian-diffusion as that is what brings in 
> meta-environment and as such environment-setup-* which is what is 
> claimed to be missing on SDK extract.
>
> I'm totally out of my depth now as on the surface everything looks OK. 
> Any input would be much appreciated.
>
> Cheers,
>

Turns out it's one of the magic variables that requires an _append 
rather than just a +=.

The example above turns out to be from my tests using _append and I 
didn't realise it was different with just a plain +=.

To conclude, TOOLCHAIN_HOST_TASK += "nativesdk-package" will overwrite 
TOOLCHAIN_HOST_TASK to just hold nativesdk-package, as such 
nativesdk-packagegroup-sdk-host and 
packagegroup-cross-canadian-diffusion won't be present anymore which 
makes a whole lot of sense now. Using append, like so:

TOOLCHAIN_HOST_TASK_append += "nativesdk-fastboot"

Will give you the whole list and result in:

TOOLCHAIN_HOST_TASK="nativesdk-packagegroup-sdk-host 
packagegroup-cross-canadian-diffusion nativesdk-fastboot"

Which is correct. Sorry for the noise; but just a heads up that I now 
feel strongly that this should be in the Yocto Docs somewhere, there is 
no mention of extending the SDK at all from what I could see and current 
examples found online specify just a plain += is fine to use, which it 
isn't.


More information about the Openembedded-core mailing list