base.bbclass: Implement PACKAGECONFIG

These enabled options to be specified in the form:

PACKAGECONFIG ?? = "<default options>"
PACKAGECONFIG[foo] = "--enable-foo,--disable-foo,foo_depends,foo_runtime_depends"

So that DEPENDS, RDEPENDS_${PN} and EXTRA_OECONF can be automatically
built from specific options. Those options can easily be customised
by the distro config or the user.

Based on some ideas from Chris Elston <celston@katalix.com> but with
an improved easier to use one line interface.

(From OE-Core rev: 7a58911f6951abd56db9ebb37f8d6284d91fa514)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Richard Purdie 2011-10-06 23:06:32 +01:00
parent ac8e55935f
commit 70acc4f45f
1 changed files with 38 additions and 0 deletions

View File

@ -291,6 +291,44 @@ do_build () {
python () {
import exceptions, string, re
# Handle PACKAGECONFIG
#
# These take the form:
#
# PACKAGECONFIG ?? = "<default options>"
# PACKAGECONFIG[foo] = "--enable-foo,--disable-foo,foo_depends,foo_runtime_depends"
pkgconfig = (d.getVar('PACKAGECONFIG', True) or "").split()
if pkgconfig:
def appendVar(varname, appends):
if not appends:
return
varname = bb.data.expand(varname, d)
content = d.getVar(varname, False) or ""
content = content + " " + " ".join(appends)
d.setVar(varname, content)
extradeps = []
extrardeps = []
extraconf = []
for flag, flagval in (d.getVarFlags("PACKAGECONFIG") or {}).items():
if flag == "defaultval":
continue
items = flagval.split(",")
if len(items) == 3:
enable, disable, depend = items
rdepend = ""
elif len(items) == 4:
enable, disable, depend, rdepend = items
if flag in pkgconfig:
extradeps.append(depend)
extrardeps.append(rdepend)
extraconf.append(enable)
else:
extraconf.append(disable)
appendVar('DEPENDS', extradeps)
appendVar('RDEPENDS_${PN}', extrardeps)
appendVar('EXTRA_OECONF', extraconf)
# If PRINC is set, try and increase the PR value by the amount specified
princ = bb.data.getVar('PRINC', d, True)
if princ: