全部博文(90)
分类: LINUX
2009-04-06 17:34:14
在bitbake 1.8.12 changlog中有这样的一节:
Add better environmental variable handling. By default it will now only pass certain whitelisted variables into the data store. If BB_PRESERVE_ENV is set bitbake will use all variable from the environment. If BB_ENV_WHITELIST is set, that whitelist will be used instead of the internal bitbake one. Alternatively, BB_ENV_EXTRAWHITE can be used to extend the internal whitelist.
默认情况下,只有部分特定的环境变量可以得到,具体的就是
def preserved_envvars_list():
return [
'BBPATH',
'BB_PRESERVE_ENV',
'BB_ENV_WHITELIST',
'BB_ENV_EXTRAWHITE',
'COLORTERM',
'DBUS_SESSION_BUS_ADDRESS',
'DESKTOP_SESSION',
'DESKTOP_STARTUP_ID',
'DISPLAY',
'GNOME_KEYRING_PID',
'GNOME_KEYRING_SOCKET',
'GPG_AGENT_INFO',
'GTK_RC_FILES',
'HOME',
'LANG',
'LOGNAME',
'PATH',
'PWD',
'SESSION_MANAGER',
'SHELL',
'SSH_AUTH_SOCK',
'TERM',
'USER',
'USERNAME',
'_',
'XAUTHORITY',
'XDG_DATA_DIRS',
'XDG_SESSION_COOKIE',
]
除此之外,你将得不到其他的环境变量,比若你export一个OEDIR变量,你想在conf文件或者bbfile文件中拿到这个值,就无法得到,如果想实现这种目的,就必须做些改变。
有这样一个变量BB_PRESERVE_ENV,如果定义了这样一个变量,那么就会保存所有的环境变量,这也是另外一个极端,当然这样就和以前没有实现这种方法一样,但是有些环境变量会影响build过程(尽管我还没有遇到这个问题)
如果你认为默认的bitbake保存的变量不适合你,你可以定义BB_ENV_WHITELIST ,这个就会取代内部默认的环境变量。
如果你只想添加一些你需要的变量,那么你可以使用BB_ENV_EXTRAWHITE,这个就可以扩展bitbake保存的环境变量。
比如我想传递一些变量OEDIR PROJDIR等,我就可以这样定义:export BB_ENV_EXTRAWHITE="OEDIR PROJDIR"
了解了上述准则,我们就可以写一些setup openembedded脚本,方便使用OpenEmbedded,避免每次都重复手工输入命令,而且灵活性很强。