根据yocto版本构建(二)安装已有二进制已经可以具备安装已有的二进制,这样一个完全仿照livebuild的方式(kybuilder)的yocto工程只需要花点时间就可以配置出来,但是我们不止如此,我们知道,麒麟v10操作系统软件包的开发是和deb开发方式一致的,通过dsc即可正常构建,如下是实现路径
为了支持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,我们需要继承我们的类,然后提供一个宏定义,由我们的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执行源码的编译动作