将 robokit 插件动态库(.so)打包为标准 Debian 包(.deb)的自动化构建脚本。构建产物可直接通过 apt 或 dpkg 安装到目标机器。
rms-deb/
├── build.sh # 构建脚本(可执行)
├── config.env # 包配置文件(每个插件独立维护此文件)
├── files/ # 待打包的 .so 文件放置目录
│ └── libXxx.so # 实际库文件(不提交到 git)
├── resources/
│ └── common.func # postinst/prerm 公共函数库(log、error_exit 等)
└── dist/ # 构建产物输出目录(自动生成,已 gitignore)
# 插件名,决定包名和默认主库名
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"
files/
├── libDSPChassis.so
├── libA.so
└── libB.so
./build.sh
产物路径:dist/plugin-robokit.dspchassis_<版本>_arm64.deb
版本号由脚本自动生成,不可手动指定:
{SDK版本}.{git short hash}.{构建日期时间}
示例:
3.5.4.0008.a1b2c3d.202604011530
| 字段 | 来源 |
|---|---|
| SDK 版本 | SDK_PATH 最后一段目录名 |
| git short hash | SOURCE_REPO_PATH 的 git rev-parse --short HEAD |
| 构建日期时间 | 执行 build.sh 时的本地时间(YYYYMMDDHHmm) |
| 变量 | 必填 | 说明 |
|---|---|---|
PLUGIN_NAME | ✓ | 插件名(大小写均可),决定 DEB_NAME 和默认 PLUGIN_SO_FILES |
MAINTAINER | ✓ | 维护者,格式:姓名 <邮箱> |
ARCH | ✓ | 目标架构:amd64 / arm64 / all |
DESCRIPTION | ✓ | 包的单行简短描述 |
SDK_PATH | ✓ | SDK 安装路径,目录名作为版本号 |
SDK_PKG_NAME | ✓ | SDK 的 deb 包名,生成 = <版本> 精确依赖 |
SOURCE_REPO_PATH | ✓ | 源码 git 仓库路径,用于提取 commit hash 和 changelog |
PLUGIN_SO_FILES | ✓ | 打包的 .so 白名单,空格分隔(见下方白名单规则) |
BASE_DEPENDS | — | 额外基础依赖,多个用 , 分隔 |
CHANGELOG_MAX_COMMITS | — | changelog 提取的最近 commit 数,默认 10 |
OUTPUT_DIR | — | 输出目录,默认 ./dist |
| 情况 | 行为 |
|---|---|
白名单有、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.Debian.gz 包含三部分:
Branch: feature/xxx)CHANGELOG_MAX_COMMITS 条,含 short hash)| 工具 / 文件 | 用途 |
|---|---|
bash >= 4.0 | 构建脚本运行环境(需要关联数组) |
dpkg-deb | 打包 .deb |
git | 提取版本 hash 和 changelog |
gzip | 压缩 changelog |
resources/common.func | postinst / prerm 公共函数库,必须存在,否则构建报错退出 |