Re: Should we change variable override formatting?
Peter Kjellerstedt
toggle quoted message
Show quoted text
-----Original Message-----This is a long answer, and responding to multiple subjects that have been brought up in the different threads, so please bear with me. I would love to see improvements to the bitbake syntax when it comes to overrides. Unfortunately, I do not see how I would be able to ever update to said version if it is done as a flag day release. The way we work is to have our layers compatible with the version of bitbake we are using (currently Hardknott). Then I (who basically do all work to build our layers with master of Poky) have a special adaptation layer where I add bbappends and some occasional backported bbclass to make our layers work with Poky master. This work runs in parallel with the normal recipe updates that the developers do so that when a new major release of Poky is ready, so are we. However, if we would have to use a whole different version of all our recipes, there is no way this process would work, and I can't stop the normal development for a flag day upgrade of Poky. :( The way I see it can be done would involve supporting both syntaxes in one LTS-release. In the next non-LTS release, the support for the old syntax can be dropped. That way there is always an intermediate release that one can update to, update one's own recipes and then proceed to the latest release. This of course means that the Yocto Project cannot reap the benefits of the new and improved syntax immediately, but would have to hold off for one release. On the other hand, this would mean the transitioning path for all users of the Yocto Project would be trivial (for some definition of trivial), compared to a major PITA. Now, I don't know if supporting both syntaxes at once is feasible given some of the comments given in the thread. However, most of them seem related to being able to drop support for the old syntax and thereby gaining the expected improvements to the internal data, which would not be a goal for the release that actually has to support both syntaxes. Its goal is compatibility and a way forward. As to the actual syntax changes, one thing I would like to se is the _append/_prepend/_remove operators actually turn into real operators. I definitely do not want to see the same syntax for the operators as for overrides (that is one of the most confusing things with the current solution). Here is one suggestion: PACKAGECONFIG_append = "foo" => PACKAGECONFIG{} .= "foo" PACKAGECONFIG_append = " foo" => PACKAGECONFIG{} += "foo" PACKAGECONFIG_prepend = "foo " => PACKAGECONFIG{} =. "foo" PACKAGECONFIG_prepend = " foo " => PACKAGECONFIG{} =+ "foo" PACKAGECONFIG_remove = "foo " => PACKAGECONFIG{} -= "foo" PACKAGECONFIG_append_bar = "foo" => PACKAGECONFIG{bar} .= "foo" PACKAGECONFIG_append_bar = " foo" => PACKAGECONFIG{bar} += "foo" PACKAGECONFIG_prepend_bar = "foo " => PACKAGECONFIG{bar} =. "foo" PACKAGECONFIG_prepend_bar = " foo " => PACKAGECONFIG{bar} =+ "foo" PACKAGECONFIG_remove_bar = "foo " => PACKAGECONFIG{bar} -= "foo" PACKAGECONFIG_append_bar_foo = "foo" => PACKAGECONFIG{bar&foo} .= "foo" PACKAGECONFIG_append_bar_foo = " foo" => PACKAGECONFIG{bar&foo} += "foo" PACKAGECONFIG_prepend_bar_foo = "foo " => PACKAGECONFIG{bar&foo} =. "foo" PACKAGECONFIG_prepend_bar_foo = " foo " => PACKAGECONFIG{bar&foo} =+ "foo" PACKAGECONFIG_remove_bar_foo = "foo " => PACKAGECONFIG{bar&foo} -= "foo" This would not have a corresponding solution for, e.g., PACKAGECONFIG_bar_foo_append, but I actually think that is good. This would also allow for clearing out the pending appends for a given override by doing: PACKAGECONFIG{} = "" or: PACKAGECONFIG{bar} = "" And a totally different solution (and probably more controversial) would be to add a more programmatical way to handle overrides, e.g.: PACKAGECONFIG += "foo" if overrides("foo bar") or: if override("foo") && override("bar"): PACKAGECONFIG += "foo" It doesn't help with whether the update to the variable is immediate or deferred though. As to RDEPENDS_${PN} & co, wouldn't it make sense to use RDEPENDS_pn-${PN}, since "pn-<package name>" already exists as an override? On that note, I would like to see overrides being prefixed more (maybe even as a requirement). Some suggestions: pn- - Package name df- - Distro feature mf- - Machine feature pf- - Package feature (can we rename/alias PACKAGECONFIG to PACKAGE_FEATURES while at it, for consistency?) arch- - Architecture dist- - Distribution That way it would be more obvious what an override does. Especially the use of the distro name as an override can have some unforeseen consequences if the name is somewhat common). //Peter |
|