[yocto] Newbie question: How to get dependencies into compile of custom recipe?

Robert Calhoun rcalhoun at shotspotter.com
Tue Apr 22 07:32:36 PDT 2014



On 4/22/14 3:57 AM, "Neuer User" <auslands-kv at gmx.de> wrote:
>Sorry for this simple question. I've just started building my first
>image with yocto and would now like to add a (very simple) own recipe.

(I am not familiar with gstreamer, but it looks like a big project and
maybe not so simple!)

The yocto build system figures out dependencies and build order, sets the
environment, and generates shell scripts to do the actual tasks. The
actual "work" is done by these shell scripts, not by the python code.

Your recipe explicitly defines some steps like do_compile(). When you do
this, you are saying "Let me control the compilation, I know what I am
doing!". Your do_compile() step is going to generate a run.do_compile
script, and that has to work just as if you were running the script
yourself.


If something doesn't work, try "bitbake {pkg} -c devshell".  That will
drop you into the environment the compiler is going to see. The shell
scripts are in ../temp. Each script is a single step (do_compile etc). All
of the substitutions that Richard described will already have been made;
and you will see all the environment variables being set and the calls
made to the compiler, linker etc. This directory also contains the log
files from recent executions.

You can run these manually, e.g. ../temp/run.do_compile. (The files
without PIDs are symlinks to the latest script.) You can edit this script
and re-run the compile and link step until it works. Once you've figured
out what needs to be set or run, modify the recipe to generate that
environment or command.

An important thing to understand is that each step lives in its own little
world; an environment variable set in the do_compile is not present in
do_install unless you put it there. Avoidance of global state allows the
build system to run multiple tasks in parallel.
 
-Rob Calhoun
(still figuring this stuff out myself)




More information about the yocto mailing list