From dc3ef99ddbbdd1ab0d1675b350a25ca970286248 Mon Sep 17 00:00:00 2001 From: Scott Rifenbark Date: Tue, 15 Apr 2014 06:53:29 -0700 Subject: bitbake-user-manual-hello.xml: Edits to environment for hello world. Some general edits to the sections that get you set up to run the "Hello World" example. Signed-off-by: Scott Rifenbark --- .../bitbake-user-manual-hello.xml | 227 ++++++++++++++++++--- 1 file changed, 203 insertions(+), 24 deletions(-) diff --git a/doc/bitbake-user-manual/bitbake-user-manual-hello.xml b/doc/bitbake-user-manual/bitbake-user-manual-hello.xml index d9ebaee0c..95a6804a1 100644 --- a/doc/bitbake-user-manual/bitbake-user-manual-hello.xml +++ b/doc/bitbake-user-manual/bitbake-user-manual-hello.xml @@ -63,44 +63,41 @@ Setting Up the BitBake Environment - The recommended method to run BitBake is from a directory of your - choice. - The directory can be within your home directory or in - /usr/local, - depending on your preference. - - - - First, run BitBake to make sure it's working. - From the BitBake source code directory, issue the following command: + First, you need to be sure that you can run BitBake. + Set your working directory to where your local BitBake + files are and run the following command: $ ./bin/bitbake --version BitBake Build Tool Core version 1.23.0, bitbake version 1.23.0 - You are now ready to use BitBake. + The console output tells you what version you are running. - A final step to make development easier is to add the executable - binary to your environment PATH. + The recommended method to run BitBake is from a directory of your + choice. + To be able to run BitBake from any directory, you need to add the + executable binary to your binary to your shell's environment + PATH variable. First, look at your current PATH variable by entering the following: $ echo $PATH Next, add the directory location for the BitBake binary to the - PATH using this form: + PATH. + Here is an example that adds the + /home/scott-lenovo/bitbake/bin directory + to the front of the PATH variable: - $ export PATH=<path-to-bitbake-executable>:$PATH + $ export PATH=/home/scott-lenovo/bitbake/bin:$PATH - This will add the directory to the beginning of your - PATH environment variable. You should now be able to enter the bitbake - command at the command line to run BitBake. + command from the command line while working from any directory. - For a more permanent solution assuming you are running the BASH + For a more permanent solution, assuming you are running the BASH shell, edit ~/.bashrc and add the following to the end of that file: @@ -185,9 +182,8 @@ First, set up a directory for the "Hello World" project. Here is how you can do so in your home directory: - $ mkdir ~/dev - $ mkdir ~/dev/hello - $ cd ~/dev/hello + $ mkdir ~/hello + $ cd ~/hello Within this new, empty directory, run BitBake with debugging output and see what happens: @@ -212,8 +208,191 @@ The majority of this output is specific to environment variables that are not directly relevant to BitBake. However, the very first message regarding the - BBPATH variable - is relevant and you need to rectify it by setting + BBPATH variable and the + conf/bblayers.conf file + is relevant. + + + + +1. Once you have PATH set up to actually run BB, and then you run it + using: + + bitbake -DDD + + You get these complaints: + +The BBPATH variable is not set and bitbake did not find a conf/bblayers.conf file in the expected location. +Maybe you accidentally invoked bitbake from the wrong directory? + +2. If you export BBPATH to point to your build directory and do nothing + else, BB will look for the <buildir>/conf/bitbake.conf file. It will + throw and error with a bunch of traceback stuff and say: + +scott-lenovo@scott-lenovo:~ [master #] +$ mkdir junk +scott-lenovo@scott-lenovo:~ [master #] +$ BBPATH="/home/scott-lenovo/junk" +scott-lenovo@scott-lenovo:~ [master #] +$ export BBPATH +scott-lenovo@scott-lenovo:~ [master #] +$ bitbake -DDD +ERROR: Traceback (most recent call last): + File "/home/scott-lenovo/bitbake/lib/bb/cookerdata.py", line 163, in wrapped + return func(fn, *args) + File "/home/scott-lenovo/bitbake/lib/bb/cookerdata.py", line 173, in parse_config_file + return bb.parse.handle(fn, data, include) + File "/home/scott-lenovo/bitbake/lib/bb/parse/__init__.py", line 99, in handle + return h['handle'](fn, data, include) + File "/home/scott-lenovo/bitbake/lib/bb/parse/parse_py/ConfHandler.py", line 120, in handle + abs_fn = resolve_file(fn, data) + File "/home/scott-lenovo/bitbake/lib/bb/parse/__init__.py", line 117, in resolve_file + raise IOError("file %s not found in %s" % (fn, bbpath)) +IOError: file conf/bitbake.conf not found in /home/scott-lenovo/junk + +ERROR: Unable to parse conf/bitbake.conf: file conf/bitbake.conf not found in /home/scott-lenovo/junk +scott-lenovo@scott-lenovo:~ [master #] + +3. Now I am going to create the conf/bitbake.conf file I need for the hello + world example. Then run it again. Time it complains about not finding + classes/base.bbclass. + +scott-lenovo@scott-lenovo:~/junk [master #] +$ bitbake -DDD +ERROR: Traceback (most recent call last): + File "/home/scott-lenovo/bitbake/lib/bb/cookerdata.py", line 163, in wrapped + return func(fn, *args) + File "/home/scott-lenovo/bitbake/lib/bb/cookerdata.py", line 177, in _inherit + bb.parse.BBHandler.inherit(bbclass, "configuration INHERITs", 0, data) + File "/home/scott-lenovo/bitbake/lib/bb/parse/parse_py/BBHandler.py", line 92, in inherit + include(fn, file, lineno, d, "inherit") + File "/home/scott-lenovo/bitbake/lib/bb/parse/parse_py/ConfHandler.py", line 100, in include + raise ParseError("Could not %(error_out)s file %(fn)s" % vars(), oldfn, lineno) +ParseError: ParseError in configuration INHERITs: Could not inherit file classes/base.bbclass + +ERROR: Unable to parse base: ParseError in configuration INHERITs: Could not inherit file classes/base.bbclass +scott-lenovo@scott-lenovo:~/junk [master #] + +4. So now we add that classes/base.bbclass file and put in one line that says + "addtask build", which is the minimum task you need. We run it again and + things work but there is nothing to do. That stands to reason since I gave it + no target. + +scott-lenovo@scott-lenovo:~/junk [master #] +$ bitbake -DDD +Nothing to do. Use 'bitbake world' to build everything, or run 'bitbake --help' for usage information. +DEBUG: Removed the following variables from the environment: GNOME_DESKTOP_SESSION_ID, XDG_CURRENT_DESKTOP, GNOME_KEYRING_CONTROL, DISPLAY, SSH_AGENT_PID, LANG, no_proxy, XDG_SESSION_PATH, XAUTHORITY, SESSION_MANAGER, SHLVL, MANDATORY_PATH, COMPIZ_CONFIG_PROFILE, WINDOWID, EDITOR, GPG_AGENT_INFO, SSH_AUTH_SOCK, GDMSESSION, GNOME_KEYRING_PID, XDG_SEAT_PATH, XDG_CONFIG_DIRS, LESSOPEN, DBUS_SESSION_BUS_ADDRESS, _, XDG_SESSION_COOKIE, DESKTOP_SESSION, LESSCLOSE, DEFAULTS_PATH, UBUNTU_MENUPROXY, OLDPWD, XDG_DATA_DIRS, COLORTERM, LS_COLORS +DEBUG: LOAD /home/scott-lenovo/junk/conf/bitbake.conf +DEBUG: BB configuration INHERITs:0: inheriting /home/scott-lenovo/junk/classes/base.bbclass +DEBUG: BB /home/scott-lenovo/junk/classes/base.bbclass: handle(data, include) +DEBUG: LOAD /home/scott-lenovo/junk/classes/base.bbclass +DEBUG: Clearing SRCREV cache due to cache policy of: clear +DEBUG: Using cache in '/home/scott-lenovo/junk/tmp/cache/local_file_checksum_cache.dat' +DEBUG: Using cache in '/home/scott-lenovo/junk/tmp/cache/bb_codeparser.dat' +DEBUG: Features set [3] (was [3]) +scott-lenovo@scott-lenovo:~/junk [master #] + +5. Here is what happens when you do provide a target but the target doesn't + exist yet. + +scott-lenovo@scott-lenovo:~/junk [master #] +$ bitbake a +ERROR: no recipe files to build, check your BBPATH and BBFILES? + +Summary: There was 1 ERROR message shown, returning a non-zero exit code. +scott-lenovo@scott-lenovo:~/junk [master #] + +6. Create a layer that has your metadata in it. You need your recipe file + and your layer.conf file. That is all good but you still need to + tell BB where your layers are. You do that through a bblayers.conf file. + We will use this one: + + BBLAYERS ?=" \ + /home/scott-lenovo/LayerA \ + " + + Now when you run it, you get this: + +$ bitbake -DDD a +DEBUG: Removed the following variables from the environment: GNOME_DESKTOP_SESSION_ID, XDG_CURRENT_DESKTOP, GNOME_KEYRING_CONTROL, DISPLAY, SSH_AGENT_PID, LANG, no_proxy, XDG_SESSION_PATH, XAUTHORITY, SESSION_MANAGER, SHLVL, MANDATORY_PATH, COMPIZ_CONFIG_PROFILE, WINDOWID, EDITOR, GPG_AGENT_INFO, SSH_AUTH_SOCK, GDMSESSION, GNOME_KEYRING_PID, XDG_SEAT_PATH, XDG_CONFIG_DIRS, LESSOPEN, DBUS_SESSION_BUS_ADDRESS, _, XDG_SESSION_COOKIE, DESKTOP_SESSION, LESSCLOSE, DEFAULTS_PATH, UBUNTU_MENUPROXY, OLDPWD, XDG_DATA_DIRS, COLORTERM, LS_COLORS +DEBUG: Found bblayers.conf (/home/scott-lenovo/junk/conf/bblayers.conf) +DEBUG: LOAD /home/scott-lenovo/junk/conf/bblayers.conf +DEBUG: Adding layer /home/scott-lenovo/LayerA +DEBUG: LOAD /home/scott-lenovo/LayerA/conf/layer.conf +DEBUG: LOAD /home/scott-lenovo/junk/conf/bitbake.conf +DEBUG: BB configuration INHERITs:0: inheriting /home/scott-lenovo/junk/classes/base.bbclass +DEBUG: BB /home/scott-lenovo/junk/classes/base.bbclass: handle(data, include) +DEBUG: LOAD /home/scott-lenovo/junk/classes/base.bbclass +DEBUG: Clearing SRCREV cache due to cache policy of: clear +DEBUG: Using cache in '/home/scott-lenovo/junk/tmp/cache/local_file_checksum_cache.dat' +DEBUG: Using cache in '/home/scott-lenovo/junk/tmp/cache/bb_codeparser.dat' +DEBUG: Features set [3] (was [3]) +DEBUG: Calculated priority of layer A as 1 +DEBUG: collecting .bb files +DEBUG: Using cache in '/home/scott-lenovo/junk/tmp/cache' +DEBUG: Cache: /home/scott-lenovo/LayerA/a.bb is not cached +DEBUG: BB /home/scott-lenovo/LayerA/a.bb: handle(data) | ETA: --:--:-- +DEBUG: LOAD /home/scott-lenovo/LayerA/a.bb +Parsing recipes: 100% |##########################################################################################| Time: 00:00:00 +Parsing of 1 .bb files complete (0 cached, 1 parsed). 1 targets, 0 skipped, 0 masked, 0 errors. +DEBUG: parsing complete +DEBUG: providers for a are: ['a'] +DEBUG: sorted providers for a are: ['/home/scott-lenovo/LayerA/a.bb'] +DEBUG: adding /home/scott-lenovo/LayerA/a.bb to satisfy a +DEBUG: Added dependencies [] for /home/scott-lenovo/LayerA/a.bb +NOTE: Resolving any missing task queue dependencies +DEBUG: Resolved 0 extra dependencies +NOTE: Preparing runqueue +NOTE: Marking Active Tasks +NOTE: Pruned 0 inactive tasks, 1 left +NOTE: Assign Weightings +NOTE: Compute totals (have 1 endpoint(s)) +DEBUG: Starting bitbake-worker +NOTE: Executing RunQueue Tasks +DEBUG: Considering 0 (/home/scott-lenovo/LayerA/a.bb, do_build): set([]) +DEBUG: Skip list (pre setsceneverify) [] +DEBUG: Full skip list set([]) +DEBUG: Using runqueue scheduler 'speed' +DEBUG: Stampfile /home/scott-lenovo/junk/tmp/stamps.do_build not available +DEBUG: Found bblayers.conf (/home/scott-lenovo/junk/conf/bblayers.conf) +DEBUG: LOAD /home/scott-lenovo/junk/conf/bblayers.conf +DEBUG: Adding layer /home/scott-lenovo/LayerA +DEBUG: LOAD /home/scott-lenovo/LayerA/conf/layer.conf +DEBUG: LOAD /home/scott-lenovo/junk/conf/bitbake.conf +DEBUG: BB configuration INHERITs:0: inheriting /home/scott-lenovo/junk/classes/base.bbclass +DEBUG: BB /home/scott-lenovo/junk/classes/base.bbclass: handle(data, include) +DEBUG: LOAD /home/scott-lenovo/junk/classes/base.bbclass +DEBUG: Using cache in '/home/scott-lenovo/junk/tmp/cache/bb_codeparser.dat' +************************ +* * +* Hello, World! * +* * +************************ +DEBUG: Teardown for bitbake-worker +NOTE: Tasks Summary: Attempted 1 tasks of which 0 didn't need to be rerun and all succeeded. +scott-lenovo@scott-lenovo:~/junk/conf [master #] + +7. If you run it without the "-DDD" option, the output is cleaner. + +scott-lenovo@scott-lenovo:~/junk [master #] +$ bitbake a +Parsing recipes: 100% |##########################################################################################| Time: 00:00:00 +Parsing of 1 .bb files complete (0 cached, 1 parsed). 1 targets, 0 skipped, 0 masked, 0 errors. +NOTE: Resolving any missing task queue dependencies +NOTE: Preparing runqueue +NOTE: Executing RunQueue Tasks +************************ +* * +* Hello, World! * +* * +************************ +NOTE: Tasks Summary: Attempted 1 tasks of which 0 didn't need to be rerun and all succeeded. +scott-lenovo@scott-lenovo:~/junk [master #] + + + + + You need to set BBPATH. -- cgit 1.2.3-korg