feat(axbuild): add standalone axloader command#1312
Conversation
There was a problem hiding this comment.
审查结论:APPROVE
变更概述
本 PR 将 axloader 的构建与 HTTP smoke 测试入口从 cargo axvisor loader ... 拆分为独立的顶层命令 cargo axloader,提供 build 和 test qemu 两个子命令。这是合理的职责边界拆分,使 axloader 与 ArceOS、StarryOS、Axvisor 并列。
实现逻辑
scripts/axbuild/src/axvisor/loader.rs迁移为scripts/axbuild/src/axloader/mod.rs,新增Axloader结构体和顶层Command枚举。lib.rs注册新的Axloader子命令,移除 axvisor 下的 loader 入口。ArgsTest改为子命令模式test qemu,HTTP smoke 不再是可选 flag,而是 qemu 子命令的默认行为。新增测试验证旧--http-smokeflag 被正确拒绝。- 固件环境变量切换为
AXLOADER_X86_64_UEFI_FIRMWARE,保留读取旧AXVISOR_X86_64_UEFI_FIRMWARE的 fallback,向后兼容。 - CI path filter 补充
bootloader/axloader/**,smoke 命令和环境变量同步更新。
验证结果
cargo fmt --check✅ 通过cargo clippy --manifest-path scripts/axbuild/Cargo.toml --all-features -- -D warnings✅ 通过cargo test --manifest-path scripts/axbuild/Cargo.toml --all-features:655 passed, 1 failed。失败用例build::tests::checked_in_build_configs_do_not_declare_default_dynamic_builds是 base 分支已有问题(已在origin/dev上复现),与本 PR 无关。
CI 状态
CI check runs 全部显示 skipped,这是因为 PR 来自 fork(ZR233/tgoskits),self-hosted runner 检查存在 limit_to_owner: rcore-os 限制。这是仓库 CI 配置的预期行为,非 PR 引入的问题。
重复/重叠分析
已检查当前所有 open PR,未发现与 axloader 命令拆分相关的重叠或冲突 PR。base 分支上 scripts/axbuild/src/axvisor/loader.rs 的唯一相关历史是 PR #1148(引入 HTTP bootloader),本 PR 在此基础上进行了干净的模块拆分。
无阻塞问题
代码结构清晰,测试覆盖 CLI 解析和旧 flag 拒绝场景,固件 fallback 策略合理,CI 更新同步。未发现正确性、安全、重复或遗漏测试问题。
Powered by mimo-v2.5-pro
There was a problem hiding this comment.
审查结论:APPROVE
变更概述
本 PR 将 axloader 的构建与 HTTP smoke 测试入口从 cargo axvisor loader ... 拆分为独立的顶层命令 cargo axloader,提供 build 和 test qemu 两个子命令。这是合理的职责边界拆分,使 axloader 与 ArceOS、StarryOS、Axvisor 并列。
实现逻辑
scripts/axbuild/src/axvisor/loader.rs重命名为scripts/axbuild/src/axloader/mod.rs,新增Axloader结构体和顶层Command枚举,职责清晰。lib.rs注册新的Axloader子命令,移除 axvisor 下的 loader 入口。ArgsTest改为子命令模式test qemu,HTTP smoke 不再是可选 flag,而是 qemu 子命令的默认行为。新增测试验证旧--http-smokeflag 被正确拒绝。- 固件环境变量切换为
AXLOADER_X86_64_UEFI_FIRMWARE,保留读取旧AXVISOR_X86_64_UEFI_FIRMWARE的 fallback(通过LEGACY_X86_64_UEFI_FIRMWARE_ENV常量),向后兼容。 - CI path filter 补充
bootloader/axloader/**,smoke 命令和环境变量同步更新。 Command重命名为StdCommand以避免与clap::Subcommand的Command枚举冲突,命名合理。
验证结果
cargo fmt --check✅ 通过cargo clippy --manifest-path scripts/axbuild/Cargo.toml --all-features -- -D warnings✅ 通过(无 warning)cargo test --manifest-path scripts/axbuild/Cargo.toml --all-features:655 passed, 1 failed。失败用例build::tests::checked_in_build_configs_do_not_declare_default_dynamic_builds已在origin/dev上复现确认,与本 PR 无关。- 4 个新增 axloader 测试全部通过:
command_parses_build_default_target、command_parses_build_debug、command_parses_test_qemu、command_rejects_legacy_http_smoke_flag。
CI 状态
CI check runs 全部显示 skipped,这是因为 PR 来自 fork(ZR233/tgoskits),CI 中存在 limit_to_owner: rcore-os 限制。这是仓库 CI 配置的预期行为,非 PR 引入的问题。
重复/重叠分析
已检查当前所有 open PR(#1313–#1317 等),未发现与 axloader 命令拆分相关的重叠或冲突 PR。base 分支上 scripts/axbuild/src/axvisor/loader.rs 的历史来源是 axloader 模块最初作为 axvisor 子功能引入,本 PR 在此基础上进行了干净的模块拆分,与 base 无冲突。
上次 review 意见
已查看 mai-team-app[bot] 的 APPROVE review,同意其分析结论。无新增发现。
无阻塞问题
代码结构清晰,测试覆盖 CLI 解析和旧 flag 拒绝场景,固件 fallback 策略合理,CI 更新同步,无 [patch.crates-io] 引入,无正确性、安全或重复问题。
Powered by mimo-v2.5-pro
问题
axloader的构建和 HTTP smoke 测试入口目前挂在cargo axvisor loader ...下,和 ArceOS、StarryOS、Axvisor 这些顶层命令不并列。CI 中的 axloader smoke 也继续依赖 Axvisor 子命令,容易让 loader 自身的职责边界和 Axvisor 本体测试混在一起。修改
cargo axloaderalias,并在tg-xtask顶层增加axloader子命令。axvisor loader实现迁到独立的axloader模块,提供:cargo axloader buildcargo axloader test qemucargo axvisor loader ...旧入口,不保留 deprecated alias。AXLOADER_X86_64_UEFI_FIRMWARE,同时保留读取旧AXVISOR_X86_64_UEFI_FIRMWARE的 fallback,避免本地已有环境立即失效。bootloader/axloader/**到 CI path filter。bootloader/axloaderREADME 中的命令示例。方案逻辑
这次只拆分 axloader UEFI loader 自身的构建与 smoke 测试入口,不迁移现有 Axvisor QEMU/board 测试套件。因此
cargo xtask axvisor test qemu ...、UEFI NimbOS、VMX/SVM、board tests 等 Axvisor 本体 CI 保持不变;只有 loader HTTP smoke 切换到新的cargo axloader test qemu。本地验证
cargo fmtcargo test -p axbuild axloadercargo xtask clippy --package axbuildrustup target add x86_64-unknown-ueficargo axloader build --target x86_64-unknown-uefiAXLOADER_X86_64_UEFI_FIRMWARE=/usr/share/OVMF/OVMF_CODE_4M.fd cargo axloader test qemu --target x86_64-unknown-uefi