microsoft/openvmm
Publicmirrored fromhttps://github.com/microsoft/openvmmAvailable
Guide/src/dev_guide/dev_tools.md
30lines · modecode
| 1 | # Dev Tools / Utilities |
| 2 | |
| 3 | While most tasks in the OpenVMM repo can be accomplished directly via standard |
| 4 | Rust tooling (i.e: `cargo run`, `cargo build`), there are many dev tasks that |
| 5 | don't neatly fall under the `cargo` umbrella. e.g: |
| 6 | |
| 7 | - running code formatters / linters |
| 8 | - orchestrating multi-stage, multi-component OpenHCL builds |
| 9 | - running different kinds of test suites |
| 10 | - building/downloading test images for VMM testing |
| 11 | - setting up git hooks |
| 12 | - etc... |
| 13 | |
| 14 | The following chapter discusses some of the various dev-facing tools / utilities |
| 15 | you may encounter and/or find useful when working on OpenVMM. |
| 16 | |
| 17 | ## Rust-based Tooling |
| 18 | |
| 19 | As with many projects, OpenVMM initially took the simple approach of spinning up |
| 20 | ad-hoc Bash/Python scripts, and hand-written YAML workflow automation. |
| 21 | |
| 22 | This worked for a while... but as the project continued to grow, our once small |
| 23 | and focused set of scripts evolved into a mass of interconnected dependencies, |
| 24 | magic strings, and global variables! |
| 25 | |
| 26 | To pay down mounting tech debt, and to foster a culture where all devs are |
| 27 | empowered to contribute and maintain OpenVMM's project tooling, we have adopted |
| 28 | a policy of migrating as much core tooling away from loosely-typed languages |
| 29 | (like Bash, Python, and hand-written Workflow YAML), and towards new |
| 30 | strongly-typed Rust-based tooling. |
| 31 | |