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 <[email protected]> but with an improved easier to use one line interface.
---
meta/classes/base.bbclass +38 -0
@@ -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:
Quoted 11 lines · Richard Purdie
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_OECONFcan 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 <[email protected]> but with an improved easier to use one line interface.
1) How can user check on target if his package was built with foo enabled?
- is there some plan to keep this in ipk/deb metadata?
2) Is it possible to force some PACKAGECONFIG enable/disabled from DEPENDS/RDEPENDS, ie bar_1.0.bb with foo enabled, depends not only on abc recipe but needs abc also with foo enabled.
Regards,
Quoted 58 lines
Signed-off-by Richard Purdie <[email protected]>---
meta/classes/base.bbclass +38
-0@@ -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:_______________________________________________
Openembedded-core mailing list
[email protected]
http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core
Signature · 1 line
Martin 'JaMa' Jansa jabber: [email protected]
Quoted 10 lines · Martin Jansa
Quoted 9 lines · Richard Purdie
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_OECONFcan be automatically built from specific options. Those options can easily be customised by the distro config or the user.
Quoted 5 lines
Quoted 2 lines
Based on some ideas from Chris Elston <[email protected]> but with an improved easier to use one line interface.
1) How can user check on target if his package was built with foo enabled?
- is there some plan to keep this in ipk/deb metadata?
No plan. I'll state very clearly here for the record:
THESE OPTIONS SHOULD ONLY BE USED WITH ONE SETTING FOR A GIVEN DISTRO
(otherwise the package feeds would be inconsistent).
There is no realistic way we can do anything else. We're giving users a smoking gun here, if they chose to shoot themselves with it, that is their own problem.
There are a lot of good reasons people may want to configure things, I don't think it acceptable to make it difficult but it does mean people need to take a certain about of responsibility.
Quoted 3 lines
2) Is it possible to force some PACKAGECONFIG enable/disabled from DEPENDS/RDEPENDS, ie bar_1.0.bb with foo enabled, depends not only on abc recipe but needs abc also with foo enabled.
No. Distros (or the user) are going to be responsible for setting up a consistent set of PACKAGECONFIG options.
Cheers,
Richard
Op 6 okt. 2011, om 16:18 heeft Richard Purdie het volgende geschreven:
Quoted 8 lines
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_OECONFcan be automatically built from specific options. Those options can easily be customised by the distro config or the user.
What if I want it in RDEPENDS_some-other-subpackage?
Quoted 4 lines · Koen Kooi
Op 6 okt. 2011, om 16:18 heeft Richard Purdie het volgende geschreven:
Quoted 2 lines
These enabled options to be specified in the form:
Quoted 8 lines
Quoted 6 lines
PACKAGECONFIG ?? = "<default options>"
PACKAGECONFIG[foo] = "--enable-foo,--disable-foo,foo_depends,foo_runtime_depends"So that DEPENDS, RDEPENDS_${PN} and
EXTRA_OECONFcan be automatically built from specific options. Those options can easily be customised by the distro config or the user.What if I want it in RDEPENDS_some-other-subpackage?
As yet to code doesn't support it but it could be extended to quite easily.
There are several things in that function I don't like, I found at least one bitbake bug (exposure of the defaultval flag) and I think bitbake itself should have some kind of appendVar() function...
So consider that code a starting point, not a finished end result :)
Cheers,
Richard