把编译流程变成一张地图,开发才跑得快

本周主线

从」理解」正式进入」开发」:跑通编译测试流程,完成首批表达式开发。

  1. 梳理 930 分支从依赖安装到产物生成的完整编译流程。
  2. 结合源码和文档理解项目架构,明确开发需求。
  3. 首批表达式开发:ISNULL 完成,LEFT / RIGHT 提 PR。
  4. 固化」构建 → 测试」的个人开发流,沉淀构建优化 skill。

深入:把编译流程变成一张地图

OmniStream 的编译依赖几十个库:JDK、BoostKit、LLVM、rocksdb、rdkafka、jemalloc、snappy、abseil 等,还有 OmniOperator 的多个 so 文件。每一步装错,后面全链失败。

解法是 分步固化,形成一张」编译地图」:

flowchart TD
    A[准备 /opt/buildtools] --> B[下载依赖仓库]
    B --> C[install_base / install_patch]
    C --> D[逐个安装依赖库]
    D --> E[构建 OmniOperator]
    E --> F[构建 OmniAdaptor]
    F --> G[构建 OmniStream]
    G --> H[记录产物路径与运行时依赖]

关键步骤:先 install_base / install_patch,再逐个装依赖,最后按顺序构建 OmniOperator → OmniAdaptor → OmniStream。同时记录各模块的产物路径和运行时依赖,让」依赖 → 安装脚本 → 产物 → 运行时依赖」这条链完全可复现。

再配上测试链路」改代码 → 构建 → 跑测试」,以及看构建状态的小技巧(pgrep -a maketop),开发验证就完整了。

其他要点

  • 首批表达式:ISNULL 完成,LEFT / RIGHT 提 PR,说明」设计 → 实现 → 提 PR」链路已跑通。
  • 开发流固化:构建、测试、监控手段齐备,重复动作沉淀成 skill。

沉淀与下一步

三点经验:编译流程是开发验证的地基;先理解、再开发,方向才不容易偏;重复动作沉淀成 skill,上手成本大幅下降。

下一步:推进 LEFT / RIGHT 的 PR 评审,进入 BETWEEN、NOT LIKE 等表达式的密集开发期。

参考资料