VPP打包及自定义插件打包

VPP版本 20.01stable

1.VPP打包及安装概述

  随后,在vpp/build-root/目录中,可以看到已经打包好的文件;

  通过yum install *.rpm命令安装所有包后,分析如下

  1. vpp安装的位置 /bin

  2. startup.conf的位置(配置文件自动安装到 /etc/vpp/startup.conf)

  3. vpp.service的安装位置(以服务形式启动vpp的 xxx.service文件安装到 /usr/lib/systemd/system/vpp.service )

  4. json文件的安装位置(如果开发中用到python api时,这些json文件是必要的。有时间的话会讲下vpp框架下 基于python api 使用和开发)

  5. 动态库文件安装位置(可能是/lib,/lib64,/usr/lib,/usr/lib64下,本文环境路径是/usr/lib64/目录下)

2.VPP打包配置

  本文以rpm为例,进行说明。在VPP首级目录中,Makefile文件中定义了make pkg-rpm命令。

  其中首先执行dist部分代码,然后执行vpp-20.01/extras/rpm目录中的Makefile。最后通过rpmbuild 执行spec文件vpp-20.01/extras/rpm/vpp.spec,也可以根据需要,来修改这个vpp.spec文件,满足新开发需求。
  通过如上代码可知,在执行dist部分代码时首先通过git archive 获取最新版本的vpp源码tar包文件,然后压缩为xz格式,放入vpp-20.01/build-root/目录中,然后在vpp-20.01/extras/rpm/Makefile文件中创建软连接vpp-latest.tar.xz,如下图所示:

  最后会解压缩它,并创建目录vpp-20.01/build-root/rpmbuild,放入其中的vpp20.01,里面包含了src,extra等全新的一套从vpp github源下载的最新代码。

3.生成自定义vpp rpm包

  如果读者新开发某些代码,会发现你的代码没打包进去,原因就在vpp-lastest.tar.xz中。它是从git arcchive自动获取的代码压缩包,里面并没有包含自定义插件。

  • 第一次失败尝试:
      按正常思考,在build-root中压缩并替换其软连接的真实连接,在buildroot/中,并注释掉makefile文件中pkg-rpm部分对dist的引用即可,但是其中有版本依赖关系,直接注释掉仍会报错。很可能是因为在Makefile的dist步骤中,添加了隐藏文件.version,其中包含版本信息用于控制。所以导致后表面报错。此步骤没再深入调研。

错误排查

  • 第二次成功尝试
    它默认从本地源最新git版本获取并压缩为tar文件,因此本文采用最简单方法,直接提交源码到本地git源,并直接运行命令make pkg-rpm打包成功,通过/root/vpp/build-root/rpmbuild/vpp-20.01/src/plugins/查看到本文自定义插件,并能够打包进入。
赞赏

微信赞赏支付宝赞赏

发表评论

邮箱地址不会被公开。 必填项已用*标注