[oe] SOC_FAMILY broken

Frans Meulenbroeks fransmeulenbroeks at gmail.com
Wed Sep 1 21:14:39 UTC 2010


Patch http://cgit.openembedded.org/cgit.cgi/openembedded/commit/?id=07076390358f211bd96779bec2d6eb5eaa0ad699
creates errors like:
ERROR: '[]' RDEPENDS/RRECOMMENDS or otherwise requires the runtime
entity 'virtual/arm-oe-linux-gnueabi-gcc-2.95' but it wasn't found in
any PACKAGE or RPROVIDES variables

Root cause: if SOC_FAMILY is not set (awhich is the case for most
MACHINEs  and all distro's except angstrom) the test in base.bbclass
to skip recipes for different machines never raises the SkipPackage
exception.

This is the current code (about line 387 in base.bbclass):
        need_machine = bb.data.getVar('COMPATIBLE_MACHINE', d, 1)
        if need_machine:
            import re
            this_machine = bb.data.getVar('MACHINE', d, 1)
            if this_machine and not re.match(need_machine, this_machine):
                this_soc_family = bb.data.getVar('SOC_FAMILY', d, 1)
                if this_soc_family and not re.match(need_machine,
this_soc_family):
                    raise bb.parse.SkipPackage("incompatible with
machine %s" % this_machine)

I see two possible fixes.
1. Make sure SOC_FAMILY is always defined. E.g. in bitbake.conf say
SOC_FAMILY ?= "Unknown"
2. improve the test to deal with an undefined soc_famile
E.g rewrite the one but last line to:
                    if (this_soc_family and not re.match(need_machine,
this_soc_family)) or not this_soc_family:

I tested the 2nd patch with distro minimal, target sheevaplug, which
gave the error before. After rewriting the line as suggested skipping
works and the problem is gone.
I have this also as a formal patch, but there might be more desirable
ways to do this.

Please advise.

Frans.




More information about the Openembedded-devel mailing list