编辑
2025-01-22
工作知识
0
请注意,本文编写于 86 天前,最后修改于 86 天前,其中某些信息可能已经过时。

目录

一、deb.bbclass
二、bbfile
三、调试
四、结论

根据yocto版本构建(二)安装已有二进制已经可以具备安装已有的二进制,这样一个完全仿照livebuild的方式(kybuilder)的yocto工程只需要花点时间就可以配置出来,但是我们不止如此,我们知道,麒麟v10操作系统软件包的开发是和deb开发方式一致的,通过dsc即可正常构建,如下是实现路径

一、deb.bbclass

为了支持debian包的构建,我们需要根据deb的安装方式设计一个bbclass用作bbfile的调用,我们知道,针对系统的软件开发,主要步骤如下:

wget https://xxxx.dsc dpkg -x xxxx.dsc dpkg-buildpackage -uc -us / dh_make

为了让yocto上也能使用dsc来通过源码的方式构建出一个deb包,我们能需要定义函数类似如下:

do_unpack_dsc() { dpkg-source -x ${DL_DIR}/${PN}_${PV}.dsc ${S} } do_compile_dsc() { dpkg-buildpackage -uc -us }

不仅如此,我们还需要在do_package中将其生成的deb文件,复制到recipes的work目录下。这样我们不需要使用yocto的本身构建方式来生成deb

二、bbfile

对于bbfile,我们需要继承我们的类,然后提供一个宏定义,由我们的deb.bbclass获取代码开始构建,如下:

inherit kylin inherit deb DSC_URI = "https://dev.kylinos.cn/kylin-desktop/+archive/primary/+files/ukui-menu_3.0.1-0720.1.dsc;md5sum=1b897ae127a2d8076a0b318daa720f91"

三、调试

为了让我们的bbfile支持调试,我们可以通过如下命令

bitback ukui-menu -c listtasks

这样可以列出我们的步骤,方便调试细节

如果我们需要进入devshell中,具体调试dpkg-buildpackage -uc -us出现的错误,我们可以如下

bitback ukui-menu -c devshell

这样我们可以手动运行chroot进入此环境

四、结论

至此,我们可以通过指定一个dsc文件,就可以触发yocto执行源码的编译动作