13 使用 Python 开发 Shell
与上一节介绍的开发 Shell 类似,也可以启动交互式 Python 开发 Shell 并在其中
工作。调试某些命令,甚至只是编辑软件包时,pydevshell 都很有用。调用
pydevshell 任务时,会为指定目标运行截至 do_patch (含该
任务)的所有任务,随后打开新终端。关键 Python 对象和代码也可像在 BitBake
任务中一样使用,尤其是数据存储对象 'd'。因此,以下命令可用于探索数据存储
并运行函数:
pydevshell> d.getVar("STAGING_DIR")
'/media/build1/bitbake-builds/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>
可用函数的详情见 BitBake 用户手册的 “Functions You Can Call From Within Python” 一节。
这些命令的执行效果与 OpenEmbedded 构建系统执行时相同。因此,这种工作方式 有助于调试构建,或准备将要使用 OpenEmbedded 构建系统构建的软件。
以下示例为名为 matchbox-desktop 的目标启动 pydevshell:
$ bitbake matchbox-desktop -c pydevshell
此命令启动终端,并在 OpenEmbedded 构建环境中进入交互式 Python 解释器。 OE_TERMINAL 变量控制打开的 Shell 类型。
使用完 pydevshell 后,可按 Ctrl+d 退出 Shell,也可以关闭终端窗口。