Skip to content

feat(openvmm): onboard OpenVMM to Azure Linux 4.0 - #18703

Draft
Ben Hillis (benhillis) wants to merge 2 commits into
microsoft:4.0from
benhillis:users/benhill/openvmm-4.0
Draft

feat(openvmm): onboard OpenVMM to Azure Linux 4.0#18703
Ben Hillis (benhillis) wants to merge 2 commits into
microsoft:4.0from
benhillis:users/benhill/openvmm-4.0

Conversation

@benhillis

Copy link
Copy Markdown
Member

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 in base/comps/rust/rust.comp.toml to Fedora 43 at commit b431103e (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.0 touches the toolchain. Fedora rawhide is at 1.98.0, so the fix is likely a repin of upstream-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

  • 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.
  • Built for both x86_64 and aarch64. Both arches build and pass %check on 3.0 (validated there on real ARM hardware), so the same set is enabled here.
  • %check runs unit tests for a representative subset of the binary's dependency closure — the crates whose tests need no live VM — plus a --version smoke test.
  • specs/ and locks/ were regenerated with azldev component render / azldev component update at 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 %check on 3.0 for both arches (buddy builds 1195079 and 1195659).

Copilot AI balanced review requested due to automatic review settings September 3, 2026 18:29
@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines:
There may be pipelines that require an authorized user to comment /azp run to run.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 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.

Comment thread base/comps/openvmm/openvmm.spec
Comment thread base/comps/openvmm/openvmm.comp.toml
Copilot AI review requested due to automatic review settings September 3, 2026 20:17

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 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_sqlite by default, and its 0.1.0 openvmm_resources manifest enables rusqlite's bundled feature on Linux, so this binary includes SQLite code. License: MIT omits SQLite's blessing license, and the spec also lacks the Provides: bundled(sqlite) used by repository packages such as specs/d/doxygen/doxygen.spec:134. Either force system SQLite (as specs/r/rust/rust.spec:823-829 does) 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

Comment thread base/comps/openvmm/openvmm.spec
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>
Copilot AI review requested due to automatic review settings September 3, 2026 20:29

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 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

Comment on lines +42 to +44
# Link against the system OpenSSL rather than building a bundled copy.
export OPENSSL_NO_VENDOR=1
%cargo_build -- --locked -p %{name}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants