Step0-打包完整链路
# 1. 生命周期全貌与主干代码解析
Bigtop 自动打包体系下,执行如 gradle redis-pkg ...
这类命令时,实际是串联了一整套标准化、自动化的打包生命周期。无论在
rpm 还是 deb 系统,整个链路始终闭环,且各环节都有清晰的代码支撑。
# 1.1 流程图直观展示
如下图所示,生命周期覆盖参数准备、类型识别、任务生成、依赖递归、源码管理、补丁处理、产包归档等全流程:
# 1.2 代码主干直观映射
下图为 packages.gradle
主体框架代码,体现了自动识别/任务动态生成/依赖链递归/产物归档等关键实现:
# 1.3 源码与流程节点对应关系
阶段 | 关键源码/位置 | 主要逻辑与说明 |
---|---|---|
参数与BOM注入 | ConfigSlurper().parse(new URL("file:$BOM")) | 解析命令行参数与 BOM,初始化各组件变量与全局路径 |
路径全局配置 | builddir/outputdir/distdir/dldir 路径组装 | 保证各环节产物有专属目录,便于产物追踪与多组件隔离 |
系统类型自动识别 | nativePackaging = {...dpkg-query...rpm -qf...} | 动态判断 rpm 还是 deb,决定打包分支与后续任务链 |
动态任务生成 | genTasks(target) 与 project.afterEvaluate{...} | 根据 BOM 和系统类型,动态注入下载/解包/打包/归档等 gradle 任务 |
依赖递归管理 | if (buildDependencies) ... | BOM 文件声明依赖,buildwithdeps=true 时递归拉起依赖组件打包 |
源码包获取与校验 | ${target}-download 任务 | 支持 git clone/http 下载+本地校验,源码包一处复用多阶段 |
解包及补丁归集 | ${target}-tar 任务 | 解压源码、收集补丁、脚本、LICENSE 等资源,保证二次开发和集成可控 |
源码归档(sdeb/srpm) | ${target}-sdeb 、${target}-srpm 任务 | 针对 deb/rpm 体系,标准化归档源码包、合规分发 |
二进制产包与归档 | ${target}-deb 、${target}-rpm 及产物 copy 语句 | 调用底层打包工具产出 deb/rpm,全部产物归集到 output 目录 |
源码解读建议
- 代码与流程图一一映射,任意节点出错都能通过日志和产物定位到对应 task 和阶段。
- 系统类型识别(deb/rpm)始终动态探测,任务链高度自动化,命令始终“无感切换”。
- 每个阶段的代码和任务,都是标准 gradle 任务,不会有硬编码分支和重复。
- 01
- bigtop-select 打包缺 compat 报错修复 deb07-16
- 02
- bigtop-select 打包缺 control 文件报错修复 deb07-16
- 03
- 首次编译-环境初始化 必装07-16