[bitbake-devel] runqueue: Ensure task environment is correct

Chris Larson clarson at kergoth.com
Wed Sep 7 18:38:49 UTC 2011


On Wed, Sep 7, 2011 at 10:43 AM, Richard Purdie
<richard.purdie at linuxfoundation.org> wrote:
> This fixes two problems:
>
> a) Variables which were in the parent environment but not set as "export"
>   variables in the datastore could end up in the task environment
>
> b) oe.environ.update() can't cope with the generator returned by
>   bb.data.exported_vars()
>
> Whilst the updated code isn't as neat, it does do the expected thing,
> sets the environment correctly and stops unwanted values leaking into
> the task environment.
>
> Signed-off-by: Richard Purdie <richard.purdie at linuxfoundation.org>
>
> diff --git a/bitbake/lib/bb/runqueue.py b/bitbake/lib/bb/runqueue.py
> index 5a4321f..72e6845 100644
> --- a/bitbake/lib/bb/runqueue.py
> +++ b/bitbake/lib/bb/runqueue.py
> @@ -1136,7 +1136,12 @@ class RunQueueExecute:
>                 for h in self.rqdata.hash_deps:
>                     the_data.setVar("BBHASHDEPS_%s" % h, self.rqdata.hash_deps[h])
>
> -                os.environ.update(bb.data.exported_vars(the_data))
> +                # exported_vars() returns a generator which *cannot* be passed to os.environ.update()
> +                # successfully. We also need to unset anything from the environment which shouldn't be there
> +                exports = bb.data.exported_vars(the_data)
> +                bb.utils.empty_environment()
> +                for e, v in exports:
> +                    os.environ[e] = v

os.environ.clear()
os.environ.update(bb.data.exported_vars(the_data))
-- 
Christopher Larson
clarson at kergoth dot com
Founder - BitBake, OpenEmbedded, OpenZaurus
Maintainer - Tslib
Senior Software Engineer, Mentor Graphics




More information about the bitbake-devel mailing list