Conversation
There was a problem hiding this comment.
审查摘要
本 PR(#1613)已合并,此为合并后审查。
PR 内容
PR 为 ArceOS 统一了 QEMU 配置布局,使其与 StarryOS 和 Axvisor 保持一致:
- 新增配置模板:在
os/arceos/configs/board/和os/arceos/configs/qemu/下为全部四个架构(x86_64、aarch64、riscv64、loongarch64)添加了qemu-{arch}.toml配置模板。 - 代码重构:将 FAT32 rootfs 磁盘镜像准备逻辑从
mod.rs移入rootfs.rs(prepare_default_qemu_fat32_rootfs),职责更清晰。 - 自动配置选择:添加
ensure_default_build_config_for_target,当arceos build/arceos qemu未指定显式配置时,自动从board/qemu-{arch}.toml选择匹配的默认配置。 - QEMU 配置发现:
load_qemu_config在未传--qemu-config时,回退到os/arceos/configs/qemu/qemu-{arch}.toml而非返回None。 - std 构建功能扩展:
std_build.rs中ax-std功能自动注入从仅std-compat扩展为同时注入irq、paging和std-compat,确保动态平台发现后的最小引导。 - Axvisor 快照重置:
write_defconfig现在会清除快照中的qemu_config和uboot_config。 - CLI 契约测试:新增
arceos_starry_and_axvisor_share_the_base_cli_contract验证三 OS 共享的基础 CLI 接口一致性。 - 文档更新:更新了 ArceOS 构建和运行文档以反映新的配置布局。
代码质量评估
- ✅ 重构干净:FAT32 逻辑独立成
rootfs.rs,配置选择逻辑独立成config.rs和board.rs - ✅ 测试覆盖良好:每个新函数都有对应的单元测试
- ✅ 设计与统一目标一致:布局与 StarryOS
os/StarryOS/configs/和 Axvisoros/axvisor/configs/保持一致 - ✅
cargo fmt --check通过 - ✅
cargo clippy -- -D warnings通过
发现的问题
编译错误(测试代码):scripts/axbuild/src/arceos/mod.rs 顶部移除了 use ostool::run::qemu::QemuConfig;,但 #[cfg(test)] mod tests 中的 standard_x86_64_and_loongarch64_qemu_configs_use_uefi_boot 和 standard_config_templates_cover_every_supported_qemu_target 两个测试仍直接使用 QemuConfig 类型。测试模块通过 use super::*; 导入外层命名空间,但由于外层不再导入 QemuConfig,cargo test 编译失败:
error[E0425]: cannot find type `QemuConfig` in this scope
--> scripts/axbuild/src/arceos/mod.rs:647:25
|
647 | let config: QemuConfig =
| ^^^^^^^^^^ not found in this scope
修复方向:在 mod.rs 的 #[cfg(test)] mod tests 块内添加 use ostool::run::qemu::QemuConfig;。
此问题未被 CI 捕获,因为 CI 中 Run clippy / run_container job 被 skip,而 cargo xtask arceos test qemu 路径不执行 axbuild 的单元测试。
CI 状态
Detect changed paths:successTest arceos x86_64 qemu / run_host:successTest axvisor loongarch64 qemu / run_container:successTest axvisor riscv64 qemu / run_host:success- 其余非相关 job(starry、board 等)均被路径过滤 skip,符合预期。
重复/重叠分析
- 搜索
repo:rcore-os/tgoskits type:pr arceos config layout unify未发现重复 PR - PR #1607 修复 axvisor 快速入门脚本,与本 PR 不重叠
总结
PR 整体质量良好,架构设计合理,测试覆盖充足。唯一的阻塞问题是测试代码中 QemuConfig 导入缺失导致 cargo test 编译失败。建议在后续 PR 中修复。
Powered by deepseek-v4-pro
|
|
||
| #[cfg(test)] | ||
| mod tests { | ||
| use clap::Parser; |
There was a problem hiding this comment.
#[cfg(test)] mod tests 通过 use super::*; 导入外层命名空间,但外层已移除 use ostool::run::qemu::QemuConfig;。请在测试模块内添加 use ostool::run::qemu::QemuConfig;,否则 cargo test 会因找不到 QemuConfig 类型而编译失败。
No description provided.