feat(openvmm): onboard OpenVMM to Azure Linux 4.0 - #18703
feat(openvmm): onboard OpenVMM to Azure Linux 4.0#18703Ben Hillis (benhillis) wants to merge 2 commits into
Conversation
|
Azure Pipelines: There may be pipelines that require an authorized user to comment /azp run to run. |
There was a problem hiding this comment.
🟡 Changes recommended
Rust 1.95 remains unavailable, and the license and release metadata findings require resolution before build and smoke-test validation.
Once you've addressed the issues Copilot identified, you can request another Copilot review.
Pull request overview
Onboards the OpenVMM host binary to Azure Linux 4.0 using an offline Rust build.
Changes:
- Adds the local RPM spec and component definition.
- Pins upstream source and vendor archives.
- Adds unit tests and a version smoke test.
File summaries
| File | Description |
|---|---|
base/comps/openvmm/openvmm.comp.toml |
Defines the component and sources. |
base/comps/openvmm/openvmm.spec |
Provides the source RPM specification. |
locks/openvmm.lock |
Records the component fingerprint. |
specs/o/openvmm/openvmm.spec |
Contains the rendered specification. |
specs/o/openvmm/sources |
Records rendered source checksums. |
Review details
- Files reviewed: 4/5 changed files
- Comments generated: 2
- Review effort level: Balanced
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
a620028 to
2d61c38
Compare
There was a problem hiding this comment.
🟡 Changes recommended
Bundled SQLite metadata is incomplete, the manifest pipeline can conceal failures, and the required 4.0 toolchain is unavailable.
Once you've addressed the issues Copilot identified, you can request another Copilot review.
Review details
Suppressed comments (1)
base/comps/openvmm/openvmm.spec:6
- OpenVMM enables
disklayer_sqliteby default, and its 0.1.0openvmm_resourcesmanifest enables rusqlite'sbundledfeature on Linux, so this binary includes SQLite code.License: MITomits SQLite'sblessinglicense, and the spec also lacks theProvides: bundled(sqlite)used by repository packages such asspecs/d/doxygen/doxygen.spec:134. Either force system SQLite (asspecs/r/rust/rust.spec:823-829does) or account for the bundled copy and regenerate the complete dependency license expression.
License: MIT
- Files reviewed: 4/5 changed files
- Comments generated: 1
- Review effort level: Balanced
OpenVMM is a modular, cross-platform virtual machine monitor written in Rust. This packages the host binary, which runs virtual machines on Linux via KVM or the Microsoft Hypervisor. The build is fully offline: upstream publishes a vendor archive as a release asset alongside the tag archive, and the cargo_config shipped in that archive maps the workspace's git dependencies into the vendor tree. Requires a Rust toolchain of 1.95.0 or newer. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 50ad1e94-a714-4445-bf61-acec0dec4d22
Azure Linux 3.0 builds and validates this package on aarch64, so enable the same architecture here. The spec needs no other change: %cargo_build and target/rpm are already arch-agnostic. Also run a representative subset of the dependency closure's unit tests in %check rather than only invoking --version. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2d61c38 to
532879d
Compare
There was a problem hiding this comment.
🟡 Changes recommended
The build needs the system PROTOC override, and Azure Linux 4.0 still lacks the required Rust toolchain.
Once you've addressed the issues Copilot identified, you can request another Copilot review.
Review details
- Files reviewed: 4/5 changed files
- Comments generated: 1
- Review effort level: Balanced
| # Link against the system OpenSSL rather than building a bundled copy. | ||
| export OPENSSL_NO_VENDOR=1 | ||
| %cargo_build -- --locked -p %{name} |
OpenVMM is a modular, cross-platform virtual machine monitor written in Rust. This packages the host binary, which runs virtual machines on Linux via KVM or the Microsoft Hypervisor.
The equivalent package was recently merged for Azure Linux 3.0 in #18444, so this brings 4.0 to parity.
Blocked: needs a Rust >= 1.95 toolchain
This is a draft because 4.0 cannot currently build it. The OpenVMM workspace declares
rust-version = 1.95, and Cargo refuses to build when the toolchain is older. 4.0 currently ships Rust 1.94.1, pinned inbase/comps/rust/rust.comp.tomlto Fedora 43 at commitb431103e(see "fix(rust): pin rust to a version available on fedora repo", April 2026).As far as I can tell nobody is working on a bump right now — no open PR against
4.0touches the toolchain. Fedora rawhide is at 1.98.0, so the fix is likely a repin ofupstream-commit, but that affects every Rust package in 4.0 and isn't mine to make unilaterally.I'm happy to file that repin myself if maintainers think it's reasonable, or to wait if a bump is already planned. Guidance welcome. Once Rust >= 1.95 is available in 4.0 I'll mark this ready for review.
Notes
cargo_configshipped in that archive maps the workspace's git dependencies into the vendor tree.x86_64andaarch64. Both arches build and pass%checkon 3.0 (validated there on real ARM hardware), so the same set is enabled here.%checkruns unit tests for a representative subset of the binary's dependency closure — the crates whose tests need no live VM — plus a--versionsmoke test.specs/andlocks/were regenerated withazldev component render/azldev component updateat the pinned azldev version; re-rendering is clean.Testing
Rendering and lock resolution were verified locally. The package itself has not been built on 4.0, since the toolchain gap above prevents it. The same spec content builds and passes
%checkon 3.0 for both arches (buddy builds 1195079 and 1195659).