Why using of DISTRO/MACHINE variables in local.conf is wrong

Now when Neo1973 phones are in hands of external developers we have more and more people using the OpenEmbedded build system. Many of them wants to add something to resulting image. And that is where problem begins…

Most of them abuse DISTRO_EXTRA_RDEPENDS variable which should be used only in a distribution configuration file. Some of them also use MACHINE_EXTRA_RDEPENDS which should be used only in a machine configuration file. And all of them are surprised when I told them that their way is wrong. Most common reaction was: “So how can I add ‘mc’ into image?” (“mc” is an example).

The solution is simple — if you want to have image with own contents then you need to write a recipe for it. Take the one which you want to extend as a base, add few entries into RDEPENDS/PACKAGE_INSTALL and that will be all. And if you want to have something extra you just have to edit own image and add it. With abused vars you have to remember about rebuilding task-base recipe.

Why such way instead of abusing listed variables? Because in other way we will get bug reports like “I tried to flash angstrom-x11-image and it did not fit in flash.” when we know that it fit on that device. Why it did not fit for user? Because he injected megabytes of applications into it. So how we react to such report? WONTFIX/INVALID comes to my mind.

More about it can be find in Poky manual.

consulting openembedded openmoko poky