Bug 2996

Summary: ia32-base.inc file missing from the meta layer build using yocto-bsp
Product: [Yocto Project Subprojects] Kernel Reporter: Laurentiu Serban <laurentiu.serban>
Component: kernel-configurationAssignee: Tom Zanussi <tom.zanussi>
Status: VERIFIED FIXED QA Contact:
Severity: normal    
Priority: Medium+ CC: dvhart, mihai.lindner, richard.purdie, song.liu, yp.kernel.watcher, yp.watcher
Version: 1.3   
Target Milestone: 1.3 M4   
Hardware: x86   
OS: Multiple   
Whiteboard:
OS type for building Yocto: --- Type of Regression: ---
Verified: Documentation change: ---
Attachments:
Description Flags
meta folder none

Description Laurentiu Serban 2012-08-23 07:06:35 UTC
Created attachment 720 [details]
meta folder

commit id: 8b8748c8f963900b83dc0fdd7757556f917fe4fd
Steps to reproduce:
1. create a meta-bsp layer using yocto-bsp tool (I choose x86_64 and tried several machine types )
2. include the layer in the bblayer.conf, add the machine to the local.conf
3.build a core-image-sato image
The error below is shown:

lserban@computer2:~/work/master/build$ bitbake core-image-sato
DEBUG: Removed the following variables from the environment: PSEUDO_BINDIR, PSEUDO_LOCALSTATEDIR, LESSOPEN, SSH_CLIENT, PSEUDO_LIBDIR, LD_LIBRARY_PATH, LANG, SHLVL, BBFETCH2, LD_PRELOAD, socks_proxy, _, PSEUDO_OPTS, SSH_CONNECTION, LESSCLOSE, BUILDDIR, SSH_TTY, OLDPWD, PSEUDO_PREFIX, MAIL, LS_COLORS
DEBUG: UI 'knotty' does not require extra cache!
DEBUG: Found bblayers.conf (/home/lserban/work/master/build/conf/bblayers.conf)
DEBUG: LOAD /home/lserban/work/master/build/conf/bblayers.conf
DEBUG: Adding layer /home/lserban/work/master/meta
DEBUG: LOAD /home/lserban/work/master/meta/conf/layer.conf
DEBUG: Adding layer /home/lserban/work/master/meta-yocto
DEBUG: LOAD /home/lserban/work/master/meta-yocto/conf/layer.conf
DEBUG: Adding layer /home/lserban/work/master/meta-myintelbsp
DEBUG: LOAD /home/lserban/work/master/meta-myintelbsp/conf/layer.conf
DEBUG: LOAD /home/lserban/work/master/meta/conf/bitbake.conf
DEBUG: CONF conf/bitbake.conf:672: including conf/abi_version.conf
DEBUG: LOAD /home/lserban/work/master/meta/conf/abi_version.conf
DEBUG: CONF conf/bitbake.conf:673: including conf/site.conf
DEBUG: CONF file 'conf/site.conf' not found
DEBUG: CONF conf/bitbake.conf:674: including conf/auto.conf
DEBUG: CONF file 'conf/auto.conf' not found
DEBUG: CONF conf/bitbake.conf:675: including conf/local.conf
DEBUG: LOAD /home/lserban/work/master/build/conf/local.conf
DEBUG: CONF conf/bitbake.conf:676: including conf/build/x86_64-linux.conf
DEBUG: CONF file 'conf/build/x86_64-linux.conf' not found
DEBUG: CONF conf/bitbake.conf:677: including conf/target/INVALID-oe-linux.conf
DEBUG: CONF file 'conf/target/INVALID-oe-linux.conf' not found
DEBUG: CONF conf/bitbake.conf:678: including conf/machine/myintelbsp.conf
DEBUG: LOAD /home/lserban/work/master/meta-myintelbsp/conf/machine/myintelbsp.conf
DEBUG: CONF /home/lserban/work/master/meta-myintelbsp/conf/machine/myintelbsp.conf:9: including conf/machine/include/tune-x86_64.inc
DEBUG: BB /home/lserban/work/master/meta/conf/machine/include/tune-x86_64.inc: handle(data, include)
DEBUG: LOAD /home/lserban/work/master/meta/conf/machine/include/tune-x86_64.inc
DEBUG: CONF /home/lserban/work/master/meta/conf/machine/include/tune-x86_64.inc:3: including conf/machine/include/ia32/arch-ia32.inc
DEBUG: BB /home/lserban/work/master/meta/conf/machine/include/ia32/arch-ia32.inc: handle(data, include)
DEBUG: LOAD /home/lserban/work/master/meta/conf/machine/include/ia32/arch-ia32.inc
DEBUG: CONF /home/lserban/work/master/meta-myintelbsp/conf/machine/myintelbsp.conf:10: including conf/machine/include/ia32-base.inc
DEBUG: BB conf/machine/include/ia32-base.inc: handle(data, include)
ERROR: Unable to parse conf/bitbake.conf: ParseError at /home/lserban/work/master/meta-myintelbsp/conf/machine/myintelbsp.conf:10: Could not include required file conf/machine/include/ia32-base.inc
lserban@computer2:~/work/master/build$

I added the folder created by the tool
Comment 1 Richard Purdie 2012-08-23 14:40:03 UTC
I think we need to move this include file into OE-Core. Tom/Darren are you happy to do this?
Comment 2 Darren Hart 2012-08-23 14:45:57 UTC
Tom, let's discuss today, I think we should get ia32-base.inc into oe-core.
Comment 3 Tom Zanussi 2012-08-23 15:04:43 UTC
This is documented in the yocto-bsp help.  You need to add meta-intel to your layers.conf for meta-intel bsps, as mentioned there.

ia32-base.inc was originally submitted as an oe-core thing but was rejected at that time and that's why it's now in meta-intel.  It is meta-intel-specific so that's probably where it should remain.
Comment 4 Richard Purdie 2012-08-23 16:48:12 UTC
Tom, when you say this was rejected, can you give me a pointer to that please? I'm not remembering that discussion at all, sorry.
Comment 5 Tom Zanussi 2012-08-23 16:53:54 UTC
Hi Richard - you didn't explicitly reject it, but a couple other senior oe-core people did object:

http://lists.linuxtogo.org/pipermail/openembedded-core/2011-November/012808.html
Comment 6 Richard Purdie 2012-08-23 16:57:49 UTC
I'm prepared to explain the rational for this a little more strongly as we're seeing real world issues with this now so I'd not let those comments stop this. Could you send out a patch please?
Comment 7 Tom Zanussi 2012-08-23 17:16:06 UTC
OK, I'll test and submit a patch for this, which I agree would be a welcome change if accepted.
Comment 8 Tom Zanussi 2012-08-23 18:01:51 UTC
Actually, on second thought, moving it doesn't really solve the problem.  ia32-base.inc references recipes in meta-intel/common e.g. emgd-driver-bin so the meta-intel layer needs to be added in those cases anyway (and that fact again documented for those cases).

An alternative that would solve the problem of not forcing the user to read documentation would be to add meta-intel to the user's bblayers.conf (which would require locating it, backing it up, verifying the path to meta-intel, etc.)  Of course that also means meta-intel would need to be cloned on the user's behalf, which is now also expected of the user.
Comment 9 Tom Zanussi 2012-08-23 18:51:25 UTC
Actually, I think this is simply highlighting an area where the tool could use a more general-purpose way of allowing machine-specific hooks.

yocto-bsp needs to able to generate bsps that use machine-specific layers in general; this isn't specific to meta-intel and e.g. emgd.

Basically, there needs to be a way in the bsp template for a given architecture to specify layer dependencies, and the tool should use those layer dependencies to:

- clone the dependent layer
- add it to the bblayers.conf

So far this has been handled by explicit mention in the documentation, as so far it's only affected meta-intel.

I don't know at this point exactly what form the markup in the bsp templates should take, but I do think a new 'enhancement' bug should be opened and this one closed as 'NOTABUG', since it's working as documented.
Comment 10 Richard Purdie 2012-08-23 20:40:05 UTC
Looking at the references in there, I think it is ok for that to be in OE-Core. The BSP would still have to select that item and provide it. Its not a perfect world...
Comment 11 Tom Zanussi 2012-08-23 21:07:58 UTC
OK, fine by me, I'll submit a patch to move it, along with a couple changes to the yocto-bsp documentation that covers it.

Just to make sure it's all clear:

- this change will allow most new intel-based bsps to work without the need to include the meta-intel layer.
  - exceptions would be any new BSP that selects the EMGD X driver - in that case, meta-intel will be needed and the yocto-bsp documentation and BSP Developer's guide will need to be updated to reflect that.

- this is a stop-gap measure for now - there are a bunch of intel-specific recipes in meta-intel that it would be useful to allow the selection of in yocto-bsp; future versions would likely want to make use of them, and the same  would in general be true at some point for other architectures - something like the ideas in the comments above should be considered for the long term...
Comment 12 Darren Hart 2012-08-24 02:29:04 UTC
So this solution looks fine to me. The only thing I would recommend is moving the emgd line into an emgd.inc file in meta-intel which meta-intel machines can include as needed. I don't see any need for this to be tied ti ia32-base.inc.
Comment 13 Tom Zanussi 2012-08-25 04:45:49 UTC
Patches submitted to oe-core/meta-intel
Comment 14 Tom Zanussi 2012-09-02 15:44:02 UTC
Fixed in poky/master:	f6b2e90fdae49e79c246eda82ff59bfcb0d9357b
Comment 15 Mihai Lindner 2012-09-04 14:08:10 UTC
This issue is still living in 1.3_beta branch of poky.
Tried it with master of meta-intel.
Comment 16 Laurentiu Serban 2012-09-19 14:12:19 UTC
verified in 1.3_M4 branch