1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- .. SPDX-License-Identifier: CC-BY-SA-2.0-UK
- Using a Python Development Shell
- ********************************
- Similar to working within a development shell as described in the
- previous section, you can also spawn and work within an interactive
- Python development shell. When debugging certain commands or even when
- just editing packages, ``pydevshell`` can be a useful tool. When you
- invoke the ``pydevshell`` task, all tasks up to and including
- :ref:`ref-tasks-patch` are run for the
- specified target. Then a new terminal is opened. Additionally, key
- Python objects and code are available in the same way they are to
- BitBake tasks, in particular, the data store 'd'. So, commands such as
- the following are useful when exploring the data store and running
- functions::
- pydevshell> d.getVar("STAGING_DIR")
- '/media/build1/poky/build/tmp/sysroots'
- pydevshell> d.getVar("STAGING_DIR", False)
- '${TMPDIR}/sysroots'
- pydevshell> d.setVar("FOO", "bar")
- pydevshell> d.getVar("FOO")
- 'bar'
- pydevshell> d.delVar("FOO")
- pydevshell> d.getVar("FOO")
- pydevshell> bb.build.exec_func("do_unpack", d)
- pydevshell>
- See the ":ref:`bitbake-user-manual/bitbake-user-manual-metadata:functions you can call from within python`"
- section in the BitBake User Manual for details about available functions.
- The commands execute just as if the OpenEmbedded build
- system were executing them. Consequently, working this way can be
- helpful when debugging a build or preparing software to be used with the
- OpenEmbedded build system.
- Here is an example that uses ``pydevshell`` on a target named
- ``matchbox-desktop``::
- $ bitbake matchbox-desktop -c pydevshell
- This command spawns a terminal and places you in an interactive Python
- interpreter within the OpenEmbedded build environment. The
- :term:`OE_TERMINAL` variable
- controls what type of shell is opened.
- When you are finished using ``pydevshell``, you can exit the shell
- either by using Ctrl+d or closing the terminal window.
|