Is it possible to pass in command line variables to a bitbake build?

[亡魂溺海] 提交于 2020-01-12 06:38:54

问题


I have an OpenEmbedded environment using bitbake to do some builds. I wanted to get something "interactive" going on where bitbake would pause and ask for input then continue with the build but I've found out that's not possible.

Since I can't do that I'm looking for some way to pass in extra flags for the build. Is there any way to pass in flags to a bitbake build sort of like gcc's -D option?

ie:

bitbake -Dfoo=bar oe-myimage

Thus during the build process of oe-myimage the variable foo will be set to bar.


回答1:


bitbake -Dfoo=bar oe-myimage

-D flag is not recognized by bitbake. So, using above method will not work. Instead you could specify flags from command line using following steps -

Say you want to export variable foo and expect it be recognized by bitbake.

export foo="foobar"

You will need to export this and inform bitbake via BB_ENV_EXTRAWHITE variable after sourcing oe-init-build-env. This means

. oe-init-build-env
export foo="foobar"
export BB_ENV_EXTRAWHITE="$BB_ENV_EXTRAWHITE foo"      

This whitelists variable 'foo' for bitbake and thus makes it visible to any recipe and subprocess during the build.

After this you can invoke any bitbake operations using variable foo within bitbake via expressions like -

${foo}



回答2:


you can do:

export foo="bar"
export BB_ENV_EXTRAWHITE="$BB_ENV_EXTRAWHITE foo"
bitbake oe-myimage



回答3:


While there is nothing wrong with the other answers bitbake does accept a --postread argument as documented here. That means that you can write as many bitbake variables as you want to some temporary configuration file and have it read after bitbake.conf by specifying the name of the file on the command-line. For example:

bitbake --postread=./extra.conf

I personally find this more convenient than dealing with environment variables.




回答4:


No, I don't believe such a mechanism exists. But you could do something like

"echo "foo = \"bar\"" >local.conf

Not sure that will solve your particular problem or not. Also, there is a mechanism for local site-wide variables: if you have a 'site.conf' file in your home directory under a directory called .oe, bitbake will read that and apply those variables to the global environment for every build. Maybe that would help? You didn't specify exactly what problem you are trying to solve, there might be better ways.




回答5:


There's also a convenient command-line way to do this, that's described in the bitbake manual using BB_ORIGENV:

Sometimes, it is useful to be able to obtain information from the original execution environment. Bitbake saves a copy of the original environment into a special variable named BB_ORIGENV.

To do so, you could read a variable exactly as they suggest (from a Python function):

 origenv = d.getVar("BB_ORIGENV", False)
 bar = origenv.getVar("BAR", False)

Then, the way to pass that from the command line is simply:

BAR=somevalue bitbake myimage


来源:https://stackoverflow.com/questions/17366984/is-it-possible-to-pass-in-command-line-variables-to-a-bitbake-build

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!