Commit Message

We can set the PREFERRED_VERSION from the command line:
$ export BB_PRESERVE_ENV=1
$ PREFERRED_VERSION_recipe="pv" bitbake recipe
But it doesn't work if the recipe name contain the "-" since we can't
use "-" in shell's variable name, use '__' instead of '-' in the env
will make it work.
We also need update the doc, I will mark the bug as "doc changes
required".
[YOCTO #4965]
Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
---
bitbake/lib/bb/data.py | 11 ++++++++++-
1 file changed, 10 insertions(+), 1 deletion(-)

I've update the PULL, changes:
1) Not only for the PREFERRED_VERSION, but for all env vars.
2) Also take care of the exportlist, though we don't have to care
about it currently, but maybe in the future.
git://git.pokylinux.org/poky-contrib rbt/pv
// Robert
On 01/14/2014 07:07 AM, Richard Purdie wrote:
> On Mon, 2014-01-13 at 03:19 -0500, Robert Yang wrote:>> We can set the PREFERRED_VERSION from the command line:>>>> $ export BB_PRESERVE_ENV=1>> $ PREFERRED_VERSION_recipe="pv" bitbake recipe>>>> But it doesn't work if the recipe name contain the "-" since we can't>> use "-" in shell's variable name, use '__' instead of '-' in the env>> will make it work.>>>> We also need update the doc, I will mark the bug as "doc changes>> required".>>>> [YOCTO #4965]>>>> Signed-off-by: Robert Yang <liezhi.yang@windriver.com>>> --->> bitbake/lib/bb/data.py | 11 ++++++++++->> 1 file changed, 10 insertions(+), 1 deletion(-)>> Should we do this just for PREFERRED_VERSION or all environment> variables? I can't think of a case we'd use __ currently but I can think> of other variable names where this mapping would help...>> Any strong opinions?>> Cheers,>> Richard>>> diff --git a/bitbake/lib/bb/data.py b/bitbake/lib/bb/data.py>> index 5840803..666cdcb 100644>> --- a/bitbake/lib/bb/data.py>> +++ b/bitbake/lib/bb/data.py>> @@ -171,11 +171,20 @@ def expandKeys(alterdata, readdata = None):>>>> def inheritFromOS(d, savedenv, permitted):>> """Inherit variables from the initial environment.""">> + # We can set the PREFERRED_VERSION_recipe from the shell env, but we>> + # can't use "-" in shell's variable name, so we use '__' instead of>> + # '-' in the env, and translate it back here.>> + preferred_version_re = re.compile('PREFERRED_VERSION_.*__')>> +>> exportlist = bb.utils.preserved_envvars_exported()>> for s in savedenv.keys():>> if s in permitted:>> try:>> - d.setVar(s, getVar(s, savedenv, True), op = 'from env')>> + if preferred_version_re.match(s):>> + s_new = s.replace('__', '-')>> + d.setVar(s_new, getVar(s, savedenv, True), op = 'from env')>> + else:>> + d.setVar(s, getVar(s, savedenv, True), op = 'from env')>> if s in exportlist:>> d.setVarFlag(s, "export", True, op = 'auto env export')>> except TypeError:>>>>