Yocto devtool开发

1.软件包查找

bitbake -s | grep [software]

以下以barebox为例,首先执行modify指令,该指令将源码解压缩后放在build/workspace中,然后再根据recipe打上补丁

 devtool modify barebox
NOTE: Creating workspace layer in /mnt/work/home/bob/bsp/BSP-Yocto-HTML5-phyBOARD-Mira-v1.0/build/workspace
NOTE: Enabling workspace layer in bblayers.conf
Parsing recipes..done.
NOTE: Fetching barebox...
NOTE: Unpacking...
NOTE: Patching...
NOTE: Source tree extracted to /mnt/work/home/bob/bsp/BSP-Yocto-HTML5-phyBOARD-Mira-v1.0/build/workspace/sources/barebox
NOTE: Recipe barebox now set up to build from /mnt/work/home/bob/bsp/BSP-Yocto-HTML5-phyBOARD-Mira-v1.0/build/workspace/sources/barebox

然后就可以在workspace/sources/barebox/ 中修改代码,此时任何做出的任何修改,yocto都会根据修改的类型来进行重新编译。

编译

如在修改barebox源码后执行(注意bitbake必须在build目录下执行,且已经source环境):

% bitbake barebox

就会重新编译barebox,并更新deploy中的barebox.bin文件。

如果执行:

% bitbake phytec-qt5demo-image

则会在重新编译barebox的基础上,将新的barebox增加到img,如.sdcard文件中。

在镜像生成后,进行测试,测试满意时,可以用git将本次修改的内容提交

% git add file_name_edited

% git commit

接着继续调试下一个需求。

出错时的复位方法

如果此时workspace中代码已改乱,或者其他问题,可以通过:

% devtool reset barebox

然后删除源码目录,注意备份之前的修改:

rm -rf workspace/sources/barebox

重新再次用modify修改软件包。

将更改增加到layer

注意这个功能的前提是之前对源码的修改已经提交到git,未提交到git的源码修改无法通过这个方式增加。

如果还没有建立layer,请把当前目录移动到sources文件夹,然后:

% yocto-layer create example

Please enter the layer priority you'd like to use for the layer: [default: 6]

Would you like to have an example recipe created? (y/n) [default: n]

Would you like to have an example bbappend file created? (y/n) [default: n]

New layer created in meta-example.

Don't forget to add it to your BBLAYERS (for details see meta-example/README).

并修改build/conf/bblayers.conf,增加meta-example layer,

然后使用下面这个命令来生成bbappend文件以及补丁:

% devtool finish barebox meta-example

此时就会在meta-example中自动生成所作的修改。

bob@Z220 ~/bsp/sources/meta-example/recipes-bsp

 % tree

.

└── barebox

    ├── barebox

    │   └── 0001-example.patch

    └── barebox_%.bbappend

注意patch文件一般是有顺序的,而之前介绍的流程并不会自动使用在workspace commit时的顺序,需要在bb文件中再检查一下。

执行了devtool finish barebox meta-example操作之后, workspace中barebox的源码就会实效了, 需要先把workspace中的barebox目录删除, 下次如果要修改barebox的源码, 可以使用devtool modify barebox重新创建barebox的源码.

你可能感兴趣的:(linux,运维,服务器)