logo
0
0
WeChat Login

rms-plugin-deb — RMS 插件 deb 包构建工具

将 robokit 插件动态库(.so)打包为标准 Debian 包(.deb)的自动化构建脚本。构建产物可直接通过 aptdpkg 安装到目标机器。


仓库结构

rms-deb/
├── build.sh              # 构建脚本(可执行)
├── config.env            # 包配置文件(每个插件独立维护此文件)
├── files/                # 待打包的 .so 文件放置目录
│   └── libXxx.so         # 实际库文件(不提交到 git)
├── resources/
│   └── common.func       # postinst/prerm 公共函数库(log、error_exit 等)
└── dist/                 # 构建产物输出目录(自动生成,已 gitignore)

快速开始

1. 配置 config.env

# 插件名,决定包名和默认主库名
PLUGIN_NAME="DSPChassis"

# 打包的 .so 白名单(空格分隔)
PLUGIN_SO_FILES="libDSPChassis.so libA.so libB.so"

# SDK 路径——目录名即为 SDK 版本号
SDK_PATH="/path/to/RBK_SDK/arm64/3.5.4.0008"

# 源码仓库路径——用于生成 changelog
SOURCE_REPO_PATH="/path/to/DSPChassis"

2. 将 .so 文件放入 files/

files/
├── libDSPChassis.so
├── libA.so
└── libB.so

3. 执行构建

./build.sh

产物路径:dist/plugin-robokit.dspchassis_<版本>_arm64.deb


版本号规则

版本号由脚本自动生成,不可手动指定

{SDK版本}.{git short hash}.{构建日期时间}

示例:

3.5.4.0008.a1b2c3d.202604011530
字段来源
SDK 版本SDK_PATH 最后一段目录名
git short hashSOURCE_REPO_PATHgit rev-parse --short HEAD
构建日期时间执行 build.sh 时的本地时间(YYYYMMDDHHmm

配置项说明

变量必填说明
PLUGIN_NAME插件名(大小写均可),决定 DEB_NAME 和默认 PLUGIN_SO_FILES
MAINTAINER维护者,格式:姓名 <邮箱>
ARCH目标架构:amd64 / arm64 / all
DESCRIPTION包的单行简短描述
SDK_PATHSDK 安装路径,目录名作为版本号
SDK_PKG_NAMESDK 的 deb 包名,生成 = <版本> 精确依赖
SOURCE_REPO_PATH源码 git 仓库路径,用于提取 commit hash 和 changelog
PLUGIN_SO_FILES打包的 .so 白名单,空格分隔(见下方白名单规则)
BASE_DEPENDS额外基础依赖,多个用 , 分隔
CHANGELOG_MAX_COMMITSchangelog 提取的最近 commit 数,默认 10
OUTPUT_DIR输出目录,默认 ./dist

.so 白名单规则

情况行为
白名单有、files/ 中也有正常打包
白名单有、files/ 中没有[WARN] 警告跳过,继续构建
files/ 中有、白名单没有[ERROR] 立即退出
白名单全部文件都不在 files/[ERROR] 立即退出

安装行为

安装时 postinst 执行:

/usr/share/<deb-name>/<lib>.so  →  cp  →  /opt/data/rbk/plugins/<lib>.so
                                   rm  ↑(删除包内暂存文件)

卸载时 prerm 执行:

rm -f /opt/data/rbk/plugins/<lib>.so   (遍历所有打包的 .so)

命令行选项

选项:
  -c, --config <file>     指定配置文件(默认 ./config.env)
  -a, --arch <arch>       覆盖目标架构(amd64 / arm64 / all)
  -s, --sdk <path>        覆盖 SDK_PATH
  -r, --repo <path>       覆盖 SOURCE_REPO_PATH
  -o, --output <dir>      覆盖 OUTPUT_DIR
  -h, --help              显示帮助

覆盖示例:

# 临时指定 SDK 和源码路径(不修改 config.env)
./build.sh --sdk /opt/RBK_SDK/arm64/3.6.0.0001 --repo /home/sr/DSPChassis

# 交叉构建:覆盖架构
./build.sh --arch amd64

# 输出到指定目录
./build.sh --output /tmp/pkgs

changelog 内容

生成的 changelog.Debian.gz 包含三部分:

  1. 当前分支名Branch: feature/xxx
  2. 最近 N 条 commitCHANGELOG_MAX_COMMITS 条,含 short hash)
  3. 完整 git diff(工作区未提交变更;若干净则取最近一次 commit 的 diff)

依赖要求

工具 / 文件用途
bash >= 4.0构建脚本运行环境(需要关联数组)
dpkg-deb打包 .deb
git提取版本 hash 和 changelog
gzip压缩 changelog
resources/common.funcpostinst / prerm 公共函数库,必须存在,否则构建报错退出

About

构建满足RMS规范的增量包

Language
Shell100%