[yocto] How to maintain a global DL_DIR?

Peter Kjellerstedt peter.kjellerstedt at axis.com
Tue Aug 16 13:24:06 PDT 2016


> -----Original Message-----
> From: yocto-bounces at yoctoproject.org [mailto:yocto-
> bounces at yoctoproject.org] On Behalf Of Patrick Doyle
> Sent: den 16 augusti 2016 17:13
> To: yocto at yoctoproject.org
> Subject: Re: [yocto] How to maintain a global DL_DIR?
> 
> Oh this is ugly...
> I tried setting BB_ENV_EXTRAWHITE to DL_DIR in my .bashrc, but found
> that BB_ENV_EXTRAWHITE gets overwritten by oe-buildenv-internal as I
> mentioned previously.

You seem to be using an old version of Poky. The code in 
oe-buildenv-internal was changed in Krogoth to add the variables 
that OE requires to BB_ENV_EXTRAWHITE. So if you are using Krogoth 
or later it should be possible to do 
export BB_ENV_EXTRAWHITE="DL_DIR"
in your .bashrc and get it to work as expected...

If you do not have the option of using Krogoth or newer, you could 
use this trick in your .bashrc:

alias bitbake="BB_ENV_EXTRAWHITE=\"$BB_ENV_EXTRAWHITE DL_DIR\" bitbake"

It may not be kosher, but it works. ;)

> I tried setting BB_ENV_WHITELIST to DL_DIR in my .bashrc and found
> that bitbake just stopped working.
> 
> After rereading the manual
> (https://www.yoctoproject.org/docs/1.6/bitbake-user-manual/bitbake-
> user-manual.html#var-BB_ENV_WHITELIST)
> I tried setting BB_ENV_WHITELIST to "BBPATH BB_RESERVE_ENV
> BB_ENV_WHITELIST BB_ENV_EXTRAWHITE DL_DIR", and bitbake still didn't
> work.
> 
> So I looked in poky/bitbake/lib/bb/utils.py and found the following:
> 
> def preserved_envvars_exported():
>     """Variables which are taken from the environment and placed in and
> exported
>     from the metadata"""
>     return [
>         'BB_TASKHASH',
>         'HOME',
>         'LOGNAME',
>         'PATH',
>         'PWD',
>         'SHELL',
>         'TERM',
>         'USER',
>     ]
> 
> def preserved_envvars():
>     """Variables which are taken from the environment and placed in
> the metadata"""
>     v = [
>         'BBPATH',
>         'BB_PRESERVE_ENV',
>         'BB_ENV_WHITELIST',
>         'BB_ENV_EXTRAWHITE',
>     ]
>     return v + preserved_envvars_exported()
> 
> ...
>     if 'BB_ENV_WHITELIST' in os.environ:
>         approved = os.environ['BB_ENV_WHITELIST'].split()
>         approved.extend(['BB_ENV_WHITELIST'])
>     else:
>         approved = preserved_envvars()
> 
> This looks like, if BB_ENV_WHITELIST is defined in the environment,
> bitbake will use it (arbitrarily appending BB_ENV_WHITELIST to the end
> of whatever was defined in the environment variable).  If it is not
> defined, then BB_ENV_WHITELIST is initialized to be:
> 
> ['BBPATH', 'BB_PRESERVE_ENV', 'BB_ENV_WHITELIST', 'BB_ENV_EXTRAWHITE',
> 'BB_TASKHASH', 'HOME', ...]
> 
> So I finally tried setting BB_ENV_WHITELIST in .bashrc to be "BBPATH
> BB_PRESERVE_ENV BB_ENV_EXTRAWHITE BB_TASKHASH HOME LOGNAME PATH PWD
> SHELL TERM USER DL_DIR"
> 
> But it is very sadly ugly... not terribly maintainable... and makes me
> think I'm missing something important.
> 
> Please tell me I'm missing something important.
> 
> --wpd

//Peter




More information about the yocto mailing list