Bug 11306 - eSDK fails to build for openbmc project
Summary: eSDK fails to build for openbmc project
Status: RESOLVED FIXED
Alias: None
Product: eSDK
Classification: Yocto Project Subprojects
Component: eSDK (show other bugs)
Version: 2.2
Hardware: x86 Multiple
: Medium+ normal
Target Milestone: 2.4 M4
Assignee: Paul Eggleton
QA Contact:
URL:
Whiteboard:
Depends on:
Blocks:
 
Reported: 2017-04-06 20:53 UTC by Henry Bruce
Modified: 2017-12-06 17:27 UTC (History)
3 users (show)

See Also:
OS type for building Yocto: ---
Type of Regression: ---
Verified:
Documentation change: Don't know


Attachments
do_populate_sdk_ext (3.64 KB, application/octet-stream)
2017-04-06 20:53 UTC, Henry Bruce
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Henry Bruce 2017-04-06 20:53:21 UTC
Created attachment 3691 [details]
do_populate_sdk_ext

The openBMC project builds the OS for a server's baseboard management controller (BMC). Trying to build an eSDK for this image fails. Log file "do_populate_sdk_ext" has been uploaded.

Steps to re-create
------------------
$ git clone https://github.com/openbmc/openbmc.git
$ cd openbmc
$ export TEMPLATECONF=meta-openbmc-machines/meta-evb/meta-evb-aspeed/meta-evb-ast2500/conf/
$ source openbmc-env
$ bitbake obmc-phosphor-image -c populate_sdk_ext
Comment 1 Paul Eggleton 2017-04-07 02:23:32 UTC
So I think the issue - which I've realised we've seen elsewhere but not tracked down until now - is that we are generating an image and then that gets combined into a kernel "fitimage". Unfortunately the signature for the image changes with the date/time (possibly by inclusion of the os-release package), and thus the do_assemble_fitimage task gets re-triggered - but that requires the kernel work tree to be present, which means we have to extract and build it again, and the internal bitbake operation that we run as part of probing dependencies blocks that since otherwise the same failure would just happen later upon installation.

At the moment I'm not quite sure what the correct solution to this is, but I at least have an idea of what's causing it.
Comment 2 Paul Eggleton 2017-04-13 05:41:37 UTC
I have a workaround for the immediate issue, which is to set the following in the configuration:

SDK_TARGETS_append = " linux-obmc"

This isn't ideal as the kernel will be rebuilding as part of the eSDK installation process, but until we untangle the dependencies so we can avoid it thinking it needs to rebuild, this is the best available workaround I can think of.

Once that's applied there is another issue. In meta-phosphor/conf/distro/openbmc-phosphor.conf there is an INHERIT_remove = " uninative", which is very bad for the eSDK since it relies upon uninative and the installation will fail without it. The quick workaround of course is just to comment out this line. If you do need to do your normal builds without uninative and have it on only for the eSDK, you'd have to change openbmc-phosphor to *not* require conf/distro/poky.conf and just duplicate the bits it needs without inheriting uninative or requiring yocto-uninative.inc so that you don't have to use the INHERIT_remove. (Typically setting up your distro config as independent from poky.conf is what I would recommend anyway, regardless of whether you use uninative or not - then your distro config will only have the things you want in it and not what we deem appropriate to have in the poky reference distro at some point in future; ultimately it comes down to what you're trying to achieve I suppose.)

There's one other possible issue that I haven't verified, but I think if you have any recipes included that set SRCREV = "${AUTOREV}" then you'd need to set an explicit SRCREV for those. It so happens there is one in the layers, common/recipes-devtools/python/python-tftpy.bb, but I don't see any explicit references to it so maybe it's not being built by default. (This is probably something we should be handling automatically, I've filed bug 11350 to track that.)
Comment 3 Paul Eggleton 2017-09-26 22:51:45 UTC
We have recently done some work in this area under bug 12102. I just backported the patches that resolved that to openbmc and re-tested and they appear to have fixed the issue there also. Here are the backported patches:

https://github.com/bluelightning/openbmc/tree/paule/esdk-initramfs-fix

These are in poky/OE-Core master now for the upcoming 2.4 release and I have also sent backports for pyro, so I'm now marking this bug resolved.
Comment 4 Paul Eggleton 2017-09-26 22:52:57 UTC
(Just one thing to keep in mind - you still need to drop the INHERIT_remove = " uninative" as noted above).