使用devtool测试源码并生成规范补丁

有时候,配方获取的源码有bug,导致编译出来的程序功能不全或是无法编译通过,这时可以单独用devtool来编译测试源码,从而据此创建修复后的fork源,或是用来生成合规的补丁。 先用deyaio的mkproject.sh创建项目,比如项目目录在deyaio/dey5.0/workspace/ccmp25rtsp

拉取源码
devtool modify mjpg-streamer
如果之前有错误的补丁,可以先在bb里把它删除,以便重新生成,或是用增加补丁的方式。
上面命令会在deyaio/dey5.0/workspace/ccmp25rtsp/workspace/sources/下拉取配方mjpg-streamer中所用到git项目的源码。
如果需要保存源码,建议用链接文件的方式单独配置这个源,比如可以用git拉mjpg-streamer源码到yocto管理目录之外,如~/git/mjpg-streamer,然后在编译前把修改保存一份同步,因为用devtool reset mjpg-streamer后,这个dey内的源码目录会消失,包括.git等版本控制信息。


构建并验证修改:
devtool build mjpg-streamer



# 创建空工作区(推荐使用绝对路径)
devtool create-workspace --layerseries dey5.0 ../workspace-dev




# 在开发层目录执行
cd ~/deyaio/dey5.0/workspace-dev
devtool modify ccmp25

# 修改源码(推荐在sources/ccmp25目录操作)
vi sources/ccmp25/src/file.c

# 生成规范补丁
devtool generate-patch ccmp25

# 在meta-devtool目录初始化Git
cd workspace-dev/meta-devtool
git init
git add devtool
git commit -m "Initial devtool configuration"

# 配置自动清理旧补丁(保留最近5个)
devtool clean-patches --keep 5 ccmp25

配方中已有补丁,只是和源码不匹配,则

cd ~/deyaio/dey5.0/workspace
devtool modify mjpg-streamer

# 查看补丁应用状态
bitbake -c patch mjpg-streamer

# 查看补丁冲突(推荐)
patch --dry-run -p1 < meta-custom/recipes-multimedia/mjpg-streamer/files/0001-Fix-SDL2-support.patch