Merged
fix(build): validate complete Lua toolchains and cache inputs #1328
fix(build): validate complete Lua toolchains and cache inputs #1328
Merged
liuxingsenAdd on 25 days ago
liuxingsenCollaborators
25 days ago

当前PR是否有AI参与:

[x ] 否
[] 是
__1. AI Agent 平台:
__2. AI 模型:
__3. Prompt上下文 :

PR功能描述 / 为什么需要这个合入:

构建脚本此前仅凭 lua.h 判断 Lua 头文件可用。temp 中只有 lua.h 和库但缺少 lauxlib.h 等头文件时,会错误覆盖完整系统工具链并使编译失败;切换 Lua 来源还可能留下 LuaJIT/兼容头软链接,兼容头变化也未使预编译缓存失效。

修改方案:

  • 将 lua.h、lauxlib.h、lualib.h 和 luaconf.h 四个核心头文件作为完整性条件,应用到 Conan temp 探测、系统 Lua 选择及工具链激活。
  • 临时工具链不完整时成对选择系统头文件与库,保留完整 temp 的既有优先级。
  • 将 LuaJIT 和兼容头加入链接清理与缓存指纹范围,避免切换来源残留旧头或兼容头变化后继续使用旧缓存。
  • 扩展真实选择和微型编译回归,保留 scripts/test_smart_build_lua.py 作为统一测试文件的兼容转发入口。
  • 独立基于 main@e4db788734f0d222c48294256f8ea1aa3e339dbb;仅修改本地 smart_build.sh 与两个测试入口。正式 CI 使用 Bingo/Conan,未调用该脚本;mds/service.json 保持基线 1.2.530,CHANGELOG 无改动。

验证方案:

先将新增测试应用到主线脚本,确认预期失败;再应用修复,运行 scripts/tests 完整脚本套件、兼容入口和 shell 语法检查。测试使用临时小型工具链和微型编译工程,不安装依赖或启动完整 SDK 构建。

测试建议:

在正式 Bingo/Conan 包布局以及项目支持的 Lua/LuaJIT 配置下完成一次正常构建,并验证兼容头变化后缓存重建。本轮未执行完整组件或产品构建,不能把微型工程通过等同于正式固件构建通过。

自验证报告:

  • 当前提交 7a612fee85ee5f04476512118ad27fbe7a2bc3dd 恢复版本和 CHANGELOG 到基线;三个脚本文件与已验证提交 b0b41cbfff32fe5d1bfedff0a339c996a0a4c9e7 逐字节一致,保存了文件哈希核对。本次没有重新运行下面的 29 项套件,明确复用相同脚本源码的既有结果。
  • 原 RED 阶段在主线脚本上运行 24 个 Lua 用例,5 项按预期失败,覆盖核心头不完整、错误工具链选择、旧可选头残留及兼容头缓存未失效。
  • 已验证提交 b0b41cbfff32fe5d1bfedff0a339c996a0a4c9e7 的 python3 -B -m unittest discover -s scripts/tests -p 'test_*.py' -v:29/29 通过,失败和跳过均为 0,包含 24 项 Lua 测试及 5 项既有宿主包检测测试。
  • 同一已验证提交的兼容入口 python3 -B scripts/test_smart_build_lua.py -v:24/24 通过;属于相同 Lua 用例的转发入口验证,不计为另外 24 项独立覆盖。
  • 当前提交重新通过 bash -n scripts/smart_build.sh、git diff --check、原版上游文件头全树检查及全部适用仓库提交钩子;文件头检查器来自 openubmc-ci@6afb6f7。
  • 本地工具定位由 README、Bingo/Conan recipe 和 CI 构建入口交叉核实;本 PR 不改变正式构建链或服务功能。未执行全量 C++、目标板或 sanitizer 验证;旧 SHA 的远端成功不能替代新 SHA 的流水线检查。

该PR关联的issue

fixes #753

希望检视人员了解:

本 PR 是 !1307 按问题类型拆分的第 10/10 项,各主题独立针对同一 main 基线;本地辅助工具不升级服务版本,也不写入 CHANGELOG。现有脚本署名、许可证及入口均保留,新兼容入口按用户确认采用社区版权模板。未执行合入。

检视意见已对照本提交源码核查:

  • activate_lua_toolchain() 的 return 1 由脚本现有 set -e 处理;main() 和 setup_system_lua() 中的实际调用均为普通命令。使用实际脚本、缺失核心头文件及函数后续标记做探针,退出码为 1,后续标记未执行。若未来将调用改为忽略 errexit 的条件上下文,需要重新核对;本 PR 不改动已经生效的错误处理。
  • 四个必需头文件清单已集中在 lua_headers_complete()。conan_temp_lua_ready() 判断是否需要安装宿主依赖,main() 还需选出具体头目录,二者复用同一个完整性函数;目前未发现选择结果不一致,不为少量组合条件重复引入额外重构。
  • 集成测试缺少 Meson/Lua 5.4 开发包时使用带明确原因的 unittest.SkipTest,测试汇总会显示跳过数。前述已验证提交的 29 个用例实际执行且跳过为 0;缺依赖环境的跳过不算本次覆盖证据,因此未新增可选的强制运行开关。
likedislike
Pull Request has been successfully merged by openUBMC-robot.
(Thank you for liuxingsen's contribution.)
LliuxingsenCollaborators
25 days ago Created pull request, commit 58ec23f6
LliuxingsenCollaborators
25 days ago Associated issue: [任务]: 整合驱动内存边界和异步生命周期修复并完成回归验收,[任务]: 完整校验 Lua 核心头文件与库的配对关系,补齐兼容头缓存指纹并清理过期软链接
openUBMC-robotopenUBMC-robotCollaborators
25 days ago Added label: sig/sig-component-drivers
openUBMC-robot
openUBMC-robotCollaborators
25 days ago Comments:

欢迎来到 openUBMC 社区

Hey @xiaoxinglxs , 感谢你对社区的贡献.

机器人使用手册

有关指令的使用,可以点击 说明文档 或 论坛 查看详情。开发人员可以在每个PR或Issue下方评论特定指令来触发机器人任务。您可以自助配置此仓库的 PR 合并规则,更多详情,请参阅机器人自助配置使用手册。

联系指引

有疑问可以联系 SIG: sig-component-drivers ,
维护者是: @dongyushan, @net_swift_wangchen, @sam_h1973, @u012924942, @weixin_37569011, @xiaoxinglxs ,
优秀贡献者是: @adellonzzy, @avery-j, @changxingOpenUBMC, @chenshengfan, @dli_bmc, @huangjiapei, @leessential, @net_swift_tianwen, @xiapengc1, @yelvsub .

likedislike
openUBMC-robotopenUBMC-robotCollaborators
25 days ago Added label: ai-co-authored
46 messages are collapsed here。 See more
changdexingCollaborators
25 days ago Comments:

/check-pr

likedislike
openUBMC-robotopenUBMC-robotCollaborators
25 days ago Removed label: unresolved-reviews
openUBMC-robotopenUBMC-robotCollaborators
25 days ago Closed associated issue
openUBMC-robotopenUBMC-robotCollaborators
25 days ago Merged pull request, merge node SHA: 596f19ff52dff9058ac7cff4fdca8bb123d72b64
openUBMC-robot
openUBMC-robotCollaborators
25 days ago Comments:

合并PR失败

  • reason: {"message":"Pull Request 已合并或已关闭。"}
likedislike