自由尋覓快樂別人從沒法感受

0%

OSPP之旅(二)

前言

开工的第一步当然是要搭建好工作环境。根据任务的描述,我们需要编译构建出libvirt 8.2.0RPM包,因此工作环境首先是要顺利完成源码编译的任务。因此本篇博客中,我们需要新建一个虚拟机,在虚拟机中安装openEuler 22.03 LTS,拉取libvirt库,根据libvirt的文档手动编译出8.2.0版本。

环境准备

以下是编译前需要准备的东西,由于过于简单,就不详细说明如何搭建的:

  • 操作系统:openEuler 22.03 LTS,在虚拟机中安装,流程几乎和CentOS一样
  • Mesonlibvirt 8.2.0的构建工具,可以使用命令sudo pip3 install meson安装
  • Ninjalibvirt 8.2.0的构建系统,可以使用命令sudo pip3 install ninja安装
  • ClangdLLVM推出的语法分析工具,使用compile_commands.json文件分析项目代码,配合VSCode的Clangd插件使用起来很舒服,照着官方文档安装即可,文档地址在这里
  • libvirt其他依赖:好像还有xml什么的依赖,meson build检查依赖的时候会有日志的,提示缺什么包用pip照着安装就行了

编译

准备源码

在Gitee上Forklibvirt仓库,地址在这里,并拉取到本地:

1
2
cd ~
git clone git@gitee.com:wengyu1/libvirt.git

8.2.0的Tag创建新的分支,命名为libvirt-8.2.0

1
2
cd libvirt
git branch libvirt-8.2.0 v8.2.0

编译

官方的编译文档在这里。由于我们不需要安装,因此我们直接编译构建即可,编译选项直接默认即可:

1
2
meson build
ninja -C build

顺利编译完成,速度还挺快的

编译完成

链接

build文件夹中的compile_commands.json链接到项目根目录,clangd就会自动分析项目代码:

1
ln -s `pwd`/build/compile_commands.json `pwd`

效果

验证下编译的效果:

1
2
cd build/tools
./virsh --version

效果如下图

运行效果

至此,libvirt的源码编译完成了,下一步可以编写RPM spec文件,使用rpmbuild工具构建RPM包