Andrew Geissler | 517393d | 2023-01-13 08:55:19 -0600 | [diff] [blame] | 1 | .. SPDX-License-Identifier: CC-BY-SA-2.0-UK |
| 2 | |
| 3 | Using a Python Development Shell |
| 4 | ******************************** |
| 5 | |
| 6 | Similar to working within a development shell as described in the |
| 7 | previous section, you can also spawn and work within an interactive |
| 8 | Python development shell. When debugging certain commands or even when |
| 9 | just editing packages, ``pydevshell`` can be a useful tool. When you |
| 10 | invoke the ``pydevshell`` task, all tasks up to and including |
| 11 | :ref:`ref-tasks-patch` are run for the |
| 12 | specified target. Then a new terminal is opened. Additionally, key |
| 13 | Python objects and code are available in the same way they are to |
| 14 | BitBake tasks, in particular, the data store 'd'. So, commands such as |
| 15 | the following are useful when exploring the data store and running |
| 16 | functions:: |
| 17 | |
| 18 | pydevshell> d.getVar("STAGING_DIR") |
| 19 | '/media/build1/poky/build/tmp/sysroots' |
| 20 | pydevshell> d.getVar("STAGING_DIR", False) |
| 21 | '${TMPDIR}/sysroots' |
| 22 | pydevshell> d.setVar("FOO", "bar") |
| 23 | pydevshell> d.getVar("FOO") |
| 24 | 'bar' |
| 25 | pydevshell> d.delVar("FOO") |
| 26 | pydevshell> d.getVar("FOO") |
| 27 | pydevshell> bb.build.exec_func("do_unpack", d) |
| 28 | pydevshell> |
| 29 | |
| 30 | See the ":ref:`bitbake:bitbake-user-manual/bitbake-user-manual-metadata:functions you can call from within python`" |
| 31 | section in the BitBake User Manual for details about available functions. |
| 32 | |
| 33 | The commands execute just as if the OpenEmbedded build |
| 34 | system were executing them. Consequently, working this way can be |
| 35 | helpful when debugging a build or preparing software to be used with the |
| 36 | OpenEmbedded build system. |
| 37 | |
| 38 | Following is an example that uses ``pydevshell`` on a target named |
| 39 | ``matchbox-desktop``:: |
| 40 | |
| 41 | $ bitbake matchbox-desktop -c pydevshell |
| 42 | |
| 43 | This command spawns a terminal and places you in an interactive Python |
| 44 | interpreter within the OpenEmbedded build environment. The |
| 45 | :term:`OE_TERMINAL` variable |
| 46 | controls what type of shell is opened. |
| 47 | |
| 48 | When you are finished using ``pydevshell``, you can exit the shell |
| 49 | either by using Ctrl+d or closing the terminal window. |
| 50 | |